Я хочу иметь возможность устанавливать отдельные пиксели заднего буфера в моей программе эффективным способом. Это то, что я называю в моей функции рендеринга:
void render_frame(void)
{
d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 40, 100), 1.0f, 0);
d3ddev->BeginScene();
d3ddev->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &surface);
D3DLOCKED_RECT locked;
surface->LockRect(&locked, NULL, 0);
*(BYTE*)locked.pBits=42;
surface->UnlockRect();
surface->Release();
d3ddev->EndScene();
d3ddev->Present(NULL, NULL, NULL, NULL);
}
Однако всегда происходит сбой. Если я закомментирую часть, где я назначаю первый байт 42, он не падает. Так что же я делаю не так, я не могу назначить значения буферу, указанному bPits, так как поверхность заблокирована?
Только что обнаружил, что locked.pBits - это нулевой указатель. Тогда почему LockRect потерпел неудачу?