• Miércoles 1 de Mayo de 2024, 14:33

Autor Tema:  En Mi Ordenador Falla Assert(......)!  (Leído 2187 veces)

Davinia

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
En Mi Ordenador Falla Assert(......)!
« en: Viernes 30 de Julio de 2004, 19:09 »
0
Hola,
estoy haciendo un programa en OpenGL con Visual C++ y MFC.
En un ordenador que tengo funciona todo bien aunque le ponga ASSERT(....) pero en otro que tengo y que es el que utilizo no funciona!
He hecho tan solo que dibuje una esfera, asi que tiene lo básico.


En OnCreate tengo:

   if (CView::OnCreate(lpCreateStruct) == -1)
      return -1;
   
   int pixelformat;
   m_hDC = ::GetDC(m_hWnd);

   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
        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
        0,                              // no stencil buffer
        0,                              // no auxiliary buffer
        PFD_MAIN_PLANE,                 // main layer
        0,                              // reserved
        0, 0, 0                         // layer masks ignored
    };
   
    if ( (pixelformat = ChoosePixelFormat(m_hDC, &pfd)) == 0 )
    {
        MessageBox("ChoosePixelFormat failed");
        return FALSE;
    }
//********AQUI FALLA SI HAGO:
   DWORD Error;
   Error=GetLastError();
   ASSERT(Error==0);


Gracias por adelantado.
Davinia.

Ruben3d

  • Moderador
  • ******
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: En Mi Ordenador Falla Assert(......)!
« Respuesta #1 en: Martes 3 de Agosto de 2004, 14:46 »
0
¿Qué error da? ¿Salta el ASSERT cuando no debería, o no reconoce la macro?

Davinia

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: En Mi Ordenador Falla Assert(......)!
« Respuesta #2 en: Miércoles 4 de Agosto de 2004, 09:17 »
0
Hola,
gracias por tu respuesta.

El ASSERT si que lo reconoce, pero se ve que otros ordenadores ocultan el error y el mio no porque por ejemplo, en las siguientes llamadas obtengo los siguientes errores (usando GetLastError()).

Por ejemplo, despues de ChoosePixelFormat, si saco el error obtengo el error que mas abajo muestro. Por tanto, cuando hago el ASSERT(Error==0), como ha habido un error, me sale la ventana de error con la opcion de debug (ya que para eso sirve el ASSERT)

ChoosePixelFormat(...,...) -> "no se puede hallar uno de los archivos de biblioteca necesarios
para ejecutar esta aplicacion"

SetPixelFormat(...,...,...) -> "La operacion se ha completado correctamente"
wglCreateContext(...) -> "el parametro no es correcto"
wglMakeCurrent(...,...) -> "esta funcion solo es valida en modo Win32"

Ruben3d

  • Moderador
  • ******
  • Mensajes: 710
  • Nacionalidad: es
    • Ver Perfil
    • Web personal
Re: En Mi Ordenador Falla Assert(......)!
« Respuesta #3 en: Miércoles 4 de Agosto de 2004, 12:27 »
0
Comprueba que hayas creado un proyecto de aplicación Win32 de ventanas, no de consola (lo digo por este mensaje "esta funcion solo es valida en modo Win32").

Además, si usas Win95 tal vez no tengas instalado OpenGL.

Por otro lado, asegurate de haber añadido al linker estas bibliotecas: opengl32.lib, glu32.lib y glaux.lib.

Por último, te diría que probaras un proyecto del link que te paso, que es seguro que funciona y así se descarta que sea fallo de tu código y se puede centrar la investigación en torno al entorno de desarrollo:
NeHe - Lesson: 03
En la parte de abajo de la página está el proyecto para muchos entornos y plataformas (entre ellos Visual C++ y Visual Studio .NET). Si esos proyectos te siguen fallando puedes descartar que falle tu código, y achacar la culpa al compilador.

Espero que esto te sirva de orientación.

Un saludo.

Ruben3d