1
2
我立刻想到的是,你正在拖延GPU管道。GPU可以有一个管道,它比您发出的命令滞后几帧。 因此,如果您发出命令在纹理上设置数据,而GPU当前正在使用该纹理渲染旧帧,则它必须完成所有渲染,然后才能接受新的纹理数据。所以它在等待,扼杀你的表现。 解决方法可能是在双(甚至三或四)缓冲区排列中使用几个纹理。不要试图写入刚刚用于渲染的纹理。 此外,您可以从渲染线程以外的线程写入纹理。这可能会派上用场,尤其是在清除纹理时。
正如你似乎已经发现的那样,实际上
此外,从原始性能的角度来看,创建纹理要比重用纹理慢得多(如果忽略我刚才描述的管道效果);所以重复使用该纹理。 值得一提的是,“像素精灵”每像素向GPU发送的数据可能是纹理的30倍。 另请参阅 this answer ,如果你想更深入的话,它有更多的细节和一些深入的链接。 |
Ruslan · 如何在单游戏中使用或制作“效果”? 6 年前 |
MyNameIsGuzse · 找不到C#静态类 7 年前 |
John Tran · 有人能告诉我为什么这样不行吗?C#XNA 7 年前 |
PÅemysl Novák · 单博弈-等距图块,大地图上的低FPS 7 年前 |
TS1997 · 带有winforms的单游戏 8 年前 |
Joe Smith · 旋转固定在精灵上的Vector2 8 年前 |
jacksparrow · C#XNA-遍历项目并绘制它们 9 年前 |
user2056166 · 在xna上绘制圆段 9 年前 |