Помощь в написании студенческих работ
Антистрессовый сервис

Работа c OpenGL через библиотеку Qt

РефератПомощь в написанииУзнать стоимостьмоей работы

Первый из этих методов вызывается всего один раз и служит для настройки OpenGL. Туда следует поместить различные настройки, загрузки текстур и т. п. Метод paintGL вызывается каждый раз, когда необходимо осуществить рендеринг. Он также полностью аналогичен соответствующему обработчику в GLUT. GlTexlmage2D (GL_TEXTURE_2D, 0, GL_RGBA, t. width (), t. heightO,. GITexParameteri (GL_TEXTURE_2D… Читать ещё >

Работа c OpenGL через библиотеку Qt (реферат, курсовая, диплом, контрольная)

Кроссплатформенная библиотека 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);

Показать весь текст
Заполнить форму текущей работой