【发布时间】:2026-01-04 15:40:01
【问题描述】:
对于落沙游戏我需要锁定一个表面,然后根据一组规则修改像素,然后解锁它。纹理的大小为 800x500,格式为 A8R8G8B8。
纹理声明
texture = new Texture(device, 800, 500, 1, Usage.Dynamic, Format.A8R8G8B8, Pool.Default);
更新方法(理想情况下应该称为大约 40/s)
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 中是否有更快的方法来直接更改表面的像素?
【问题讨论】: