|
C-Robot
I've just downloaded the zip from this site and hope to try it
later. I finally found it in a search for crobot.
Dynamic arrays
here's a snippet that is from NeHe tutorials that demonstrates
a request for a certain pixel depth. I don't know the actual way of
getting the current setting though I do know it is possible, It's possibly in
the OpenGL SDK but it's more convoluted than the DirectX SDK.
You can find the full source code this is copied from here(http://nehe.gamedev.net/) in the tutorial
section, don't worry it's used in almost all of them.
/* This Code Creates Our OpenGL
Window. Parameters
Are: * * title -
Title To Appear At The Top Of The
Window * * width - Width
Of The GL Window Or Fullscreen
Mode * * height - Height
Of The GL Window Or Fullscreen
Mode * * bits - Number Of Bits
To Use For Color
(8/16/24/32) * * fullscreenflag - Use
Fullscreen Mode (true) Or Windowed Mode (false) */ BOOL
CreateGLWindow(char* title, int width, int height, int bits, bool
fullscreenflag) { GLuint PixelFormat;
// Holds The Results After Searching For A
Match HINSTANCE hInstance; // Holds The Instance Of The
Application WNDCLASS wc;
// Windows Class
Structure DWORD dwExStyle; // Window Extended
Style DWORD dwStyle; // Window Style
fullscreen=fullscreenflag; // Set The Global Fullscreen Flag
hInstance =
GetModuleHandle(NULL);
// Grab An Instance For Our
Window wc.style = CS_HREDRAW | CS_VREDRAW |
CS_OWNDC; // Redraw On Size, And Own DC For
Window. wc.lpfnWndProc = (WNDPROC)
WndProc;
// WndProc Handles
Messages wc.cbClsExtra =
0;
// No Extra Window
Data wc.cbWndExtra =
0;
// No Extra Window
Data wc.hInstance =
hInstance;
// Set The
Instance wc.hIcon = LoadIcon(NULL,
IDI_WINLOGO);
// Load The Default
Icon wc.hCursor = LoadCursor(NULL,
IDC_ARROW);
// Load The Arrow
Pointer wc.hbrBackground =
NULL;
// No Background Required For
GL wc.lpszMenuName =
NULL;
// We Don't Want A
Menu wc.lpszClassName =
"OpenGL";
// Set The Class
Name
if
(!RegisterClass(&wc)) // Attempt To Register The Window
Class { MessageBox(NULL,"Failed To Register The
Window Class.","ERROR",MB_OK|MB_ICONEXCLAMATION); return
false; // Return false } if
(fullscreen) // Attempt Fullscreen
Mode? { DEVMODE
dmScreenSettings;
// Device
Mode memset(&dmScreenSettings,0,sizeof(dmScreenSettings));
// Makes Sure Memory's
Cleared dmScreenSettings.dmSize=sizeof(dmScreenSettings);
// Size Of The Devmode
Structure dmScreenSettings.dmPelsWidth =
width;
// Selected Screen
Width dmScreenSettings.dmPelsHeight =
height;
// Selected Screen
Height dmScreenSettings.dmBitsPerPel =
bits;
// Selected Bits Per
Pixel dmScreenSettings.dmFields=DM_BITSPERPEL|DM_PELSWIDTH|DM_PELSHEIGHT;
// Try To Set Selected Mode
And Get Results. NOTE: CDS_FULLSCREEN Gets Rid Of Start
Bar. if
(ChangeDisplaySettings(&dmScreenSettings,CDS_FULLSCREEN)!=DISP_CHANGE_SUCCESSFUL) { // If The Mode Fails, Offer Two Options. Quit Or Use
Windowed Mode. if (MessageBox(NULL,"The Requested
Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode
Instead?","NeHe
GL",MB_YESNO|MB_ICONEXCLAMATION)==IDYES) { fullscreen=false; // Windowed Mode Selected. Fullscreen =
false } else { // Pop Up A Message Box Letting User Know The Program Is
Closing. MessageBox(NULL,"Program Will Now
Close.","ERROR",MB_OK|MB_ICONSTOP); return
false; // Return
false } } }
if
(fullscreen)
// Are We Still In Fullscreen
Mode? { dwExStyle=WS_EX_APPWINDOW; // Window Extended
Style dwStyle=WS_POPUP;
// Windows
Style ShowCursor(false);
// Hide Mouse
Pointer } else { dwExStyle=WS_EX_APPWINDOW
| WS_EX_WINDOWEDGE; // Window Extended
Style dwStyle=WS_OVERLAPPEDWINDOW;
// Windows Style }
// Create The Window if
(!(hWnd=CreateWindowEx( dwExStyle, //
Extended Style For The
Window "OpenGL",
// Class
Name title,
// Window
Title dwStyle
|
// Defined Window
Style WS_CLIPSIBLINGS
|
// Required Window
Style WS_CLIPCHILDREN,
// Required Window
Style 0,
0,
// Window
Position width,
height,
// Selected Width And
Height NULL,
// No Parent
Window NULL,
// No
Menu hInstance,
//
Instance NULL)))
// Don't Pass Anything To WM_CREATE
and this is a snippet that sets some of the
variables above
static PIXELFORMATDESCRIPTOR
pfd= // pfd Tells Windows How We Want
Things To
Be { sizeof(PIXELFORMATDESCRIPTOR),
// Size Of This Pixel Format
Descriptor 1, //
Version Number PFD_DRAW_TO_WINDOW
|
// Format Must Support
Window PFD_SUPPORT_OPENGL
|
// Format Must Support
OpenGL PFD_DOUBLEBUFFER, // Must Support Double
Buffering PFD_TYPE_RGBA,
// Request An RGBA
Format bits,
// Select Our Color
Depth 0, 0, 0, 0, 0,
0,
// Color Bits
Ignored 0,
// No Alpha
Buffer 0,
// Shift Bit
Ignored 0,
// No Accumulation
Buffer 0, 0, 0,
0,
// Accumulation
Bits
Ignored 16,
// 16Bit Z-Buffer (Depth Buffer)
0,
// No Stencil
Buffer 0,
// No Auxiliary
Buffer PFD_MAIN_PLANE,
// Main Drawing
Layer 0,
// Reserved 0, 0,
0
// Layer Masks
Ignored
|