Для игры с падающим песком Мне нужно заблокировать поверхность , , затем изменить пиксели в соответствии с набором правил, а затем разблокировать он . Текстура имеет размер 800x500 и имеет формат A8R8G8B8 .
ДЕКЛАРАЦИЯ ТЕКСТУРЫ
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);
}
У меня более мощная видеокарта, и этот простой цикл снижает частоту кадров до 10-13.
Есть ли более быстрый способ в DirectX напрямую изменять пиксели поверхности?