2015-09-19 9 views
3

Я использовал старые методы Qt OpenGl, но пришло время переключиться на более новые.QOpenGLTexture (Qt) из необработанных данных (freeimage)

быть растровый FIBITMAP *

инициализирован

glTexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8, ширина, высота, 0, GL_BGRA, GL_UNSIGNED_BYTE (недействительными *) FreeImage_GetBits (pImage));

работал как очарование для меня.

Но теперь в новых методах предпочтительно использовать QOpenGLTexture

Unfortunatly мои попытки были безуспешными есть.

QOpenGLTexture * qtexture = новый QOpenGLTexture (QOpenGLTexture :: Target2D);

texture-> SetData (QOpenGLTexture :: PixelFormat :: RGBA, QOpenGLTexture :: PixelType :: INT8, FreeImage_GetBits (растровый));

, что код возвращает 1x1 текстуру, но и если заставить размер, как с помощью

qtexture-> SetSize (ширина, высота, 4);

qtexture имеет правильный размер, но это совершенно черное, и я пыталась найти в Qt/FreeImage форумах и т.д., но ничего, связанное с несчастливо все не использует QImage кормить QOpenGLTexture но несчастливо я должен поддерживать некоторые «странный» такие как .hdr или .exr, которые не поддерживаются самой Qt.

Заранее благодарю за ваше время!

ответ

0

qtexture-> allocateStorage();

был ключ!

+0

Да, это также отмечается в документах класса. – peppe

+0

В чем преимущество использования объекта QOpenGLTexture вместо чистого OpenGL? – Pietrko

+0

Это оболочка Qt, которая проще в использовании с виджетами Qt OpenGL –

 Смежные вопросы

  • Нет связанных вопросов^_^