|
|
1
2
我立刻想到的是,你正在拖延GPU管道。GPU可以有一个管道,它比您发出的命令滞后几帧。 因此,如果您发出命令在纹理上设置数据,而GPU当前正在使用该纹理渲染旧帧,则它必须完成所有渲染,然后才能接受新的纹理数据。所以它在等待,扼杀你的表现。 解决方法可能是在双(甚至三或四)缓冲区排列中使用几个纹理。不要试图写入刚刚用于渲染的纹理。 此外,您可以从渲染线程以外的线程写入纹理。这可能会派上用场,尤其是在清除纹理时。
正如你似乎已经发现的那样,实际上
此外,从原始性能的角度来看,创建纹理要比重用纹理慢得多(如果忽略我刚才描述的管道效果);所以重复使用该纹理。 值得一提的是,“像素精灵”每像素向GPU发送的数据可能是纹理的30倍。 另请参阅 this answer ,如果你想更深入的话,它有更多的细节和一些深入的链接。 |