// Assume _surface is a pointer to an IDirect3DSurface9 interface.
// Assumes a 32-bit pixel format for each pixel.
// Get the surface description.
D3DSURFACE_DESC surfaceDesc;
_surface->GetDesc(&surfaceDesc);
// Get a pointer to the surface pixel data.
D3DLOCKED RECT lockedRect;
_surface->LockRect(
&lockedRect,// pointer to receive locked data
0, // lock entire surface
0); // no lock flags specified
// Iterate through each pixel in the surface and set it to red.
DWORD* imageData = (DWORD*)lockedRect.pBits;
for(int i = 0; i < surfaceDesc.Height; i++)
{
for(int j = 0; j < surfaceDesc.Width; j++)
{
// index into texture, note we use the pitch and divide by
// four since the pitch is given in bytes and there are
// 4 bytes per DWORD.
int index = i * lockedRect.Pitch / 4 + j;
imageData[index] = 0xffff0000; // red
}
}
_surface->UnlockRect();
My only problem here is the values of surfaceDesc's (D3DSURFACE_DESC) members.
When I ran my program (w/c has already an initialization code to set up a blank window), it goes back. I ran the debugger and there's a problem with:
_surface->GetDesc(&surfaceDesc);
I know that it's becuase surfaceDesc has not been set yet. Can anyone provide me the needed values for its members?
THANKS A LOT IN ADVANCE!!
How to plot a pixel in Direct3D 9 ?
Hi,
I'm currently reading Frank Luna's "Intro to DX9". I've already finished a few chapters but went back to Chapter I to test his pixel plotting code snippet as shown below:
Hi,
The problem with this approach is that you are trying to use D3D as DirectDraw. Thats a wrong approach as it stalls the pipeline.
Try using some transformed-lit vertices and render using the POINT primitive.
Luck!
Guimo
The problem with this approach is that you are trying to use D3D as DirectDraw. Thats a wrong approach as it stalls the pipeline.
Try using some transformed-lit vertices and render using the POINT primitive.
Luck!
Guimo
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement