D3DCREATE_SOFTWARE_VERTEXPROCESSING这个的意思是渲染过程,不用GPU而是用软件方式去模拟,当然慢了。 我说的对比都是基于D3DCREATE_HARDWARE_VERTEXPROCESSING的设置之下的。 不用测试了。 这在游戏界里是个常识性的东西。 调用一次DrawPrimitive俗称调用一次draw call,调用引发的同步是个很慢的事情。 还有涉及到设置显卡状态的其他函数也是很慢的。比如设置采样状态啊、混合状态啊、传递参数啊、深度开关啊什么的,一切需要和GPU通信的函数调用都很慢。 大多情况下,CPU告诉GPU要做一件事情所花的时间比GPU把这件事做完所花的时间要长很多倍。 对于游戏引擎研发来说,尽量减少需要和GPU做通信的函数调用,是个常识性的东西。
说一千道一万,还是测试数据说话。 你可以自己写一些代码测试效率就是了 这个本来就不是一个什么难处理的工作 测试结果会和你的电脑的具体的硬件环境有关, 不同的配置应该在不同的数量级上发生瓶颈 多次传输肯定会大幅度降低内存到显寸数据传输的工作效率, 毕竟pc是总线分时的架构
dxsdk里面不是例子几乎都是可以看到fps的,用不同的方法,看看fps的变化有多大吧
[quote=引用 4 楼 u010208053 的回复:] [quote=引用 3 楼 liuxingzdh 的回复:] DrawPrimitive的执行分两个部分,一个是CPU和GPU的通信、同步什么的,一个是GPU绘制图形。 很负责的告诉你,通信、同步上花费的时间远远比GPU绘制图形需要的时间要多的多。 一般的显卡,一秒你能调用几千次DrawPrimitive已经是逆天了。 但一般的显卡一秒绘制七八十帧,一帧几万个三角形那是很容易的事(前提是你优化做的好)。
[quote=引用 3 楼 liuxingzdh 的回复:] DrawPrimitive的执行分两个部分,一个是CPU和GPU的通信、同步什么的,一个是GPU绘制图形。 很负责的告诉你,通信、同步上花费的时间远远比GPU绘制图形需要的时间要多的多。 一般的显卡,一秒你能调用几千次DrawPrimitive已经是逆天了。 但一般的显卡一秒绘制七八十帧,一帧几万个三角形那是很容易的事(前提是你优化做的好)。
DrawPrimitive的执行分两个部分,一个是CPU和GPU的通信、同步什么的,一个是GPU绘制图形。 很负责的告诉你,通信、同步上花费的时间远远比GPU绘制图形需要的时间要多的多。 一般的显卡,一秒你能调用几千次DrawPrimitive已经是逆天了。 但一般的显卡一秒绘制七八十帧,一帧几万个三角形那是很容易的事(前提是你优化做的好)。
8,324
社区成员
23,684
社区内容
加载中
试试用AI创作助手写篇文章吧