對於落砂遊戲我需要鎖定表面,然後根據一組規則修改像素,然後解鎖。紋理的尺寸爲800x500並具有格式A8R8G8B8。C#的DirectX性能
TEXTURE聲明
texture = new Texture(device, 800, 500, 1, Usage.Dynamic, Format.A8R8G8B8, Pool.Default);
上的更新方法(理想情況下應該被稱爲約40張/秒)
public new void Update()
{
count++;
byte[] data = (byte[])texture.LockRectangle(typeof(byte), 0, LockFlags.None, 800 * 500 * 4);
for (int i = 0; i < 1600000; i++)
{
data[i] = 255;
}
texture.UnlockRectangle(0);
}
我有一個高端圖形卡,這種簡單的循環降低了我的FPS率10-13。
DirectX中有更快的方法來直接更改曲面的像素嗎?
我首先查看了着色器,但是我的問題是,我需要知道何時例如一個像素落入一個杯子(然後該杯子的計數器減少一個......),你能解釋怎麼做與着色器或鏈接到一個教程? – Blaxx 2011-05-14 14:40:12
我真的不知道。我對圖形編程的知識是有限的。但通常這種事情需要完全不同的方法來解決問題,需要大量的經驗和反覆試驗。 – Euphoric 2011-05-14 14:44:06