http://GameProgrammer.Com

Programming

GP Mailing List
     Thread Index
     Date Index

ATXGPSIG List
     Thread Index
     Date Index

Google
>

Home

Wise2Food



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

several, sorry this is so big



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