Я добавляю поддержку OpenGL в игру, основанную на Qt 3 (офисная политика). Основы (QGLWidget и т. Д.) Работают нормально.Qt противоречит GLee
Чтобы получить расширения OpenGL, я произвольно выбрал GLee (он скомпилирован из коробки, GLew - нет).
GLee.h и qgl.h не играют хорошо вместе. AFAICT, каждый должен быть включен перед другим.
Я проверил проверки предварительной обработки [убедитесь, что он включен в первый раз] из GLee.h, вставил в него препроцессорные директивы, прежде чем включать заголовки OpenGL, а затем включил qgl.h в первую очередь. В Linux, это сводится к тому:
#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
Это не строит (не знаю, будет ли мой код на самом деле запустить еще ... упреждающий на этот вопрос в [т.е. я проволочки]), но это, кажется, как попало ляп. В Googling появилось много людей, которые задавали этот основной вопрос (хотя большинство из них не потрудились выяснить ошибки фальшивых компиляторов, чтобы они могли увидеть проблему с корнем), но я не видел никаких реальных ответов.
Есть ли лучший (более элегантный, портативный, надежный и т. Д.) Способ сделать это?
Это звучит подозрительно. Что заставляет вас думать, что каждый заголовок должен быть включен перед другим? Какие ошибки вы получаете? –
GLee.h имеет предварительные проверки, поэтому он должен быть включен первым (это то, что я вытащил, чтобы получить этот хак для сборки). Когда я включаю стандартный GLee.h, я получаю ошибки от qevent.h (а иногда и qnamespace.h) о числовых константах и «другом», используемых вне класса (наряду с другими, которые подразумевают отсутствие) где-то). http://www.qtcentre.org/forum/f-general-programming-9/t-problems-with-q-object-and-subclassing-823.html имеет хороший список ошибок, но это исправление не помогло меня. – James
Помогла ли одна из ваших проблем решить вашу проблему? Можете ли вы пометить один, как принято тогда? –