Estoy agregando soporte OpenGL a un juego basado en Qt 3 (política de oficina). Lo básico (QGLWidget, etc.) funciona bien.Qt en conflicto con GLee
Para llegar a las extensiones de OpenGL, elegí arbitrariamente a GLee (compilado de fábrica, GLew no lo hizo).
GLee.h y qgl.h no funcionan bien juntos. AFAICT, cada uno debe estar incluido antes que el otro.
Quité las comprobaciones de preprocesamiento [que aseguran que se incluyen primero] fuera de GLee.h, inserté las directivas de preprocesamiento que usa antes de incluir los encabezados de OpenGL, y luego incluí qgl.h primero. En Linux, que se reduce a:
#define __glext_h_ /* prevent glext.h from being included */
#define __glxext_h_ /* prevent glxext.h from being included */
#define GLX_GLXEXT_PROTOTYPES
#include <qgl.h>
#include "GLee.h" // my hacked version
que construye (ni idea de si mi código funcionarán realmente sin embargo ... preventiva de esta pregunta [es decir, estoy de dilatar]), pero parece horrible kludge. Google ha encontrado a mucha gente haciendo esta pregunta básica (aunque la mayoría de ellos no se han molestado en descifrar los falsos errores del compilador para que puedan ver el problema raíz), pero no he visto ninguna respuesta real.
¿Existe alguna forma mejor (más elegante, portátil, robusta, etc.) para hacer esto?
Esto suena sospechoso. ¿Qué te hace creer que cada encabezado debe estar incluido antes que el otro? ¿Cuáles son los errores que obtienes? –
GLee.h tiene comprobaciones de precompilador, por lo que debe incluirse primero (que es lo que saqué para que se construya este truco). Cuando incluyo el GLee.h estándar primero, obtengo errores de qevent.h (y en ocasiones qnamespace.h) sobre las constantes numéricas y 'friend' utilizado fuera de clase (junto con otros que implican que falta alguno). http://www.qtcentre.org/forum/f-general-programming-9/t-problems-with-q-object-and-subclassing-823.html tiene una buena lista de errores, pero esa corrección no ayudó yo. – James
¿Alguna de las respuestas resolvió su problema? ¿Puedes marcar uno como aceptado entonces? –