Кроссплатформенная библиотека Qt поддерживает работу с OpenGL и может быть использована вместо библиотеки GLUT при создании кода для рендеринга и обработки ввода от клавиатуры и мыши. Для этого в Qt имеется класс QGLWidget. Для создания виджета для работы с OpenGL необходимо создать класс, наследованный QGLWidget, и переопределить в нем следующие виртуальные методы — initialized, resized и paintGL:
protected:
void initializeGLO; void paintGLO;
void resizeGL (int width, int height);
Первый из этих методов вызывается всего один раз и служит для настройки OpenGL. Туда следует поместить различные настройки, загрузки текстур и т. п.
Метод resizeGL вызывается при каждом изменении размера виджета и получает на вход новый размер виджета в пикселах. Этот метод полностью аналогичен обработчику изменения размера окна в GLUT.
Метод paintGL вызывается каждый раз, когда необходимо осуществить рендеринг. Он также полностью аналогичен соответствующему обработчику в GLUT.
Кроме всего перечисленного, библиотеку Qt можно использовать для загрузки изображений (вместо SOIL или DevIL). Ниже приводится фрагмент кода, создающий двухмерную текстуру и загружающий в нее изображение из заданного файла:
Qlmage b;
if (!b.load («font.png»)) return -1;
Qlmage t = QGLWidget: convertToGLFormat (b);
gIGenTextures (1, &tex);
gIBindTexture (GL_TEXTURE_2D, tex);
gITexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
gITexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexlmage2D (GL_TEXTURE_2D, 0, GL_RGBA, t. width (), t. heightO,.
0, GL_RGBA, GL_UNSIGNED_BYTE, t. bitsO);
gIBindTexture (GL_TEXTURE_2D, 0);