首先,我正在编写一个游戏。目前在渲染函数中有两个调用两个不同的函数。一个渲染一些文本,一个渲染 Sprite 。
在我的电脑上(AMD Phenom(tm) II X4 955 处理器(4 个 CPU),~3.2GHz,4096MB RAM DDR2,NVIDIA GeForce GTX 285)当渲染大约 200 个 Sprite 和大约渲染约 14,500 时为 100 FPS。
我正在使用一个 vector 来存储我正在渲染的每个对象的信息,并使用一个带有许多绘制调用的 Sprite 。
VS2008 Release模式,对 C++ 进行了全面优化。我知道我听说过 left 和 right 不会过早优化,但在这一点上,它对我来说运行得很好,但在某些计算机上却不太好。
我无法想象将 vector 换成数组,因为我每帧都在以一种不确定的方法从 vector 中推拉东西。几乎是随机的。
我已经尝试过 float 和 double,速度没有什么不同。
使用 DirectDraw 而不是 DirectX 和 Sprite Render 方法会有所不同吗?因为我不知道 DirectDraw 和 DirectX 之间的区别,所以我不是 100% 应该考虑的。
这款游戏在普通电脑上运行良好,但我将我的游戏与东方进行比较。东方在我试过的最弱的电脑上以 60 FPS 运行,但我的游戏运行速度不会超过 36~42 FPS。作为 DirectX 和 C++ 的新手,我无法想象自己做错了什么。
在这件事上的任何帮助都会很好,不幸的是我暂时不会在附近添加信息或回答问题。
最佳答案
你需要一个分析器。
响应中有一些很好的性能建议,但这并不重要。尝试在没有分析器的情况下优化程序就像尝试在没有编译器的情况下编写程序一样。不要猜测,测量。
话虽如此,分析图形代码是一个臭名昭著的难题,并且(据我所知)没有任何好的免费工具可以帮助解决这个问题。所以暂时不用担心:从一个普通的 CPU 分析器开始,找出您的哪些调用真正占用了您所有的时间。
关于c++ - DirectX9、DirectDraw、优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282735/