Sign in to follow this  
KuroKage

How to plot a pixel in Direct3D 9 ?

Recommended Posts

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:
// 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!!

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this