Archived

This topic is now archived and is closed to further replies.

filling a pixel... sure, SOUNDS easy.

This topic is 6706 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Guest Anonymous Poster
Funkymunky sounds like a nice chap
could you do a quick DDraw example?
the SDK is giving me a freakin headache...

just a fullscreen 640*480 or sumthing with lots of comments and how to put a single pixel. Thanks on beforehand.

Share this post


Link to post
Share on other sites
Now that I have that info, I still can't get the book for another 4 or 5 weeks. I have to buy some pics from my sisters wedding and get new shoes, a new wallet, some other things, and I really need a TNT2 ultra if I get the $ :P Anyway, I'm gonna try and get the book before the TNT2 and after the rest if I have the $ on that paycheck.. but if i go from $0 to $260 then the TNT2U it is :p Even if I get it ASAP, I have a dilemma. I have like weeks to kill before then. I love C++, I have learned tons about it, but can't use it really without any kind of graphics. I want to start writing my own game - can someone help me with a way, using basic C++ and VC++6 standard edition, to fill a pixel? I was told at first I could just write to a000:0000, but then they said that I couldn't, they being some friends of mine, and I don't know how to write to a specific location like that anyway. (sigh). If you can help me I would greatly appreciate it.

xProwler

Share this post


Link to post
Share on other sites
OK, sure, here's an example of putting a pixel to the primary buffer (the screen that you see). I hope this helps.

I won't cover any windows that is not completely necessary, because it is a pain in the ass.

[CODE]
// Include DirectDraw thrash
#include

// * Gasp! global variables! *
LPDIRECTDRAW lpdd;
LPDIRECTDRAWSURFACE primary;

// Later down in the code, in the main loop
// (i'm assuming you put this stuff in a
// separate function

// Create Direct Draw Object
if(DirectDrawCreate(NULL,&lpdd,NULL)!=DD_OK)
return(0);
// Now set cooperative level
if(lpdd->SetCooperativeLevel(window_handle, DDSCL_FULLSCREEN | DDSCL_EXLCUSIVE | DDSCL_ALLOWREBOOT)!=DD_OK)
return(0);
// Now set the display mode
if(lpdd->SetDisplayMode(640,480,16)!=DD_OK)
return(0);

// Now set up the primary surface
DDSURFACEDESC ddsd;
// Fill the big happy house to 0
memset(&ddsd,0,sizeof(DDSURFACEDESC));
// Set data fields
ddsd.dwSize=sizeof(ddsd);
ddsd.dwFlags=DDSD_CAPS;
ddsd.ddsCaps=dwCaps=DDSCAPS_PRIMARYSURFACE;

// create the primary surface
if(lpdd->CreateSurface(&ddsd,&primary,NULL)!=DD_OK)
return(0);

// Now get the video pointer
USHORT *vidmem_ptr;

// Lock the primary surface
primary->Lock(NULL,&ddsd,DDLOCK_SURFACEMEMORYPTR | DDLOCK_WAIT, NULL);

// Now get the address of the memory and stuff it into the pointer
vidmem_ptr=(USHORT *)ddsd.lpSurface;
// Now set up where you want the pixel to go
int x=320,y=240,col=40;
// Now plot the pixel
vidmem_ptr[x+(y*ddsd.lPitch >> 1)] =col;

// Unlock the display memory
primary->Unlock(NULL);

Whew! Now here's how to shut down DirectX:

lpdd->Release();
primary->Release();


Hope that helps!

------------------
That's how you do it, but that's just the opinion of a MADMAN!!! BWAHAHAAHAHA! :D :D :D

Share this post


Link to post
Share on other sites