Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Profundidades De Color/stencil/etc.. En Win32

Iniciado por Tei, 18 de Julio de 2003, 02:26:48 PM

« anterior - próximo »

Tei

Tengo este codigo para poner modo graficos:


BOOL bSetupPixelFormat(HDC hDC)
{
   static PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), // size of this pfd
1,    // version number
PFD_DRAW_TO_WINDOW   // support window
|  PFD_SUPPORT_OPENGL  // support OpenGL
|  PFD_DOUBLEBUFFER , // double buffered
PFD_TYPE_RGBA,   // RGBA type
24,    // 24-bit color depth
//32,    // Tei: 24-bit color depth stencil
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,    // accum bits ignored
//32,    // 32-bit z-buffer
24,    // Tei 24-bit z-buffer  (help stencil)
8,    // Tei stencil buffer
//0,    // no stencil buffer
0,    // no auxiliary buffer
PFD_MAIN_PLANE,   // main layer
0,    // reserved
0, 0, 0    // layer masks ignored
   };
   int pixelformat;

   if ( (pixelformat = ChoosePixelFormat(hDC, &pfd)) == 0 )
   {
       MessageBox(NULL, "ChoosePixelFormat failed", "Error", MB_OK);
       return FALSE;
   }

   if (SetPixelFormat(hDC, pixelformat, &pfd) == FALSE)
   {
       MessageBox(NULL, "SetPixelFormat failed", "Error", MB_OK);
       return FALSE;
   }

//Tei stencil
if ( pfd.cStencilBits )
{
 Con_Printf(" * Stencil buffer Ok.\n");
 gl_stencil = true;
}
else
{
 Con_Printf(" * Can´t force stencil buffer\n");
 gl_stencil = false;
}
//Tei stencil

if (qwglGetExtensionsStringARB)
 Con_Printf(" * Other data '%s'\n", qwglGetExtensionsStringARB(hDC));

   return TRUE;
}


Tengo una tarjeta GeForce4MX y aveces me coge el 640x480 "encogido" al estilo 16x9, como mi vieja commodore 64(que tenia los pixeles mas gordos que altos).
Sin embargo otros motores 3D, algunos tambien de Quake, me cogen bien esto y no me dan este formato tan desagradable. ¿Tendra que ver con el modo que estoy pidiendo? ¿Me dan algun consejo sobre el codigo? ¿Puedo pedir 32 bits de Zbuffer alegremente? Segun he leido por ahi puedes pedir "lo que te de la gana" que windows/tarjeta te daran lo que mas se acerque... ¿es asi?.. ¿Que les parece el codigo?. Blah?

Espera.. me parece que meti la pata en la estructura.. ¿o no?.

BeRSeRKeR

 Según las MSDN:

CitarRemarks
You must ensure that the pixel format matched by the ChoosePixelFormat function satisfies your requirements. For example, if you request a pixel format with a 24-bit RGB color buffer but the device context offers only 8-bit RGB color buffers, the function returns a pixel format with an 8-bit RGB color buffer.

O sea que efectivamente, si estás solicitando un formato de pixel no soportado, ChoosePixelFormat te devolverá el que más se acerque a tus exigencias.

Por otra parte la inicialización que haces es la estándar así que no sé que podría estar fallando (¿podría ser problema de drivers?)...

Saludos
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.