elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No se ejecuta el modo gráfico de una aplicación con SDL/GL
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No se ejecuta el modo gráfico de una aplicación con SDL/GL  (Leído 2,608 veces)
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
No se ejecuta el modo gráfico de una aplicación con SDL/GL
« en: 4 Septiembre 2013, 21:03 pm »

Buenas, acabo de instalar las librerias SDL/GL en xubuntu y (para testear las librerías) lo primero que hice fue crear una sencilla aplicación que muestra un fondo negro y se acaba cuando el usuario pulsa la tecla ESCAPE.

La compilación funciona perfectamente, y la ejecución desde Codeblocks también, el problema llega cuando tengo que ejecutar el ejecutable que se ha generado, simplemente no se muestra la ventana.

Es decir, no funciona el modo gráfico cuando ejecuto el programa. No se muy bien si tengo que instalar algo adicional o cual es el problema, aunque estoy casi 100% seguro de que este no está en el código.

Un saludo y gracias de antemano


En línea

Stereo

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: No se ejecuta el modo gráfico de una aplicación con SDL/GL
« Respuesta #1 en: 4 Septiembre 2013, 22:35 pm »

Asegúrate de que SDL_Init y SDL_SetVideoMode no retornan error y te digo mis  Compiler and Debugger Settings:

Linker settings>Other linker options:
-lmingw32 -lSDLmain -lSDL

Search Directories>Compiler:
C:\...\SDL\include

Search Directories>Linker:
C:\...\SDL\lib


En línea

SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: No se ejecuta el modo gráfico de una aplicación con SDL/GL
« Respuesta #2 en: 4 Septiembre 2013, 22:44 pm »

Devuelve este error
Código:
cannot find -lmingw32

Ahora me he dado cuenta de que es un problema de código pues tampoco se ejecuta desde el Codeblocks.
Esta es la función que utilizo para inicializar, puede que algo este mal aquí:

Código
  1. bool init(int w, int h, std::string title)
  2. {
  3.    SDL_Init(SDL_INIT_EVERYTHING);
  4.  
  5.    SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
  6.    SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
  7.    SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
  8.    SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 32);
  9.    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
  10.    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
  11.  
  12.    SDL_WM_SetCaption(title.c_str(), title.c_str());
  13.  
  14.    SDL_SetVideoMode(w, h, 32, SDL_OPENGL);
  15.  
  16.    glShadeModel(GL_SMOOTH);
  17.  
  18.    glClearColor(0,0,0,1);
  19.  
  20.    glViewport(0, 0, w, h);
  21.  
  22.    glMatrixMode(GL_PROJECTION);
  23.    glLoadIdentity();
  24.  
  25.    glDisable(GL_DEPTH_TEST);
  26.  
  27.    return true;
  28. }
Si no es eso no se me ocurre nada más, porque he probado a compilar los ejemplos de Codeblocks (que inicializan de otra manera) y no hay ningún problema.

Recuerda que estoy usando linux (lo digo porque alomejor la configuración del compilador tiene que ser distinta)

Un saludo y muchas gracias por todo  ;)
En línea

Stereo

Desconectado Desconectado

Mensajes: 25


Ver Perfil
Re: No se ejecuta el modo gráfico de una aplicación con SDL/GL
« Respuesta #3 en: 4 Septiembre 2013, 22:53 pm »

Si, puede ser distinta, yo lo uso en windows y lo de -lmingw32 la verdad no tengo ni idea de que es.

Como te dije antes, mira qué retorna SDL_Init y SDL_SetVideoMode
En línea

SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: No se ejecuta el modo gráfico de una aplicación con SDL/GL
« Respuesta #4 en: 4 Septiembre 2013, 23:11 pm »

Ya está solucionado. El problema estaba en la función init() en la parte en la que se asigna los tamaños de memoria. Me faltaba un parametro, además uno de ellos estaba mal. Es así:
Código
  1.    bool init(int w, int h, std::string title)
  2.    {
  3.       SDL_Init(SDL_INIT_EVERYTHING);
  4.  
  5.       SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
  6.       SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
  7.       SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
  8.       SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
  9.       SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 32);
  10.       SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
  11.       SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
  12.  
  13.       SDL_WM_SetCaption(title.c_str(), title.c_str());
  14.  
  15.       SDL_SetVideoMode(w, h, 32, SDL_OPENGL);
  16.  
  17.       glShadeModel(GL_SMOOTH);
  18.  
  19.       glClearColor(0,0,0,1);
  20.  
  21.       glViewport(0, 0, w, h);
  22.  
  23.       glMatrixMode(GL_PROJECTION);
  24.       glLoadIdentity();
  25.  
  26.       glDisable(GL_DEPTH_TEST);
  27.  
  28.       return true;
  29.    }

Un saludo y muchas gracias por la ayuda  ;)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines