Преобразование в Cinder gl :: Texture

Я пытаюсь создать объект gl :: Texture, используя данные изображения в качестве байта * с параметрами ниже.

FreeGLUT — я использую это, чтобы создать 2d текстуру и привязать ее к четырехугольнику.

 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, textureWidth, textureHeight, 0, GL_BGRA_EXT,   GL_UNSIGNED_BYTE, data);
glBindTexture(GL_TEXTURE_2D, 0); etc etc

Это работает нормально, однако я не могу найти способ создать объект gl :: Texture в Cinder.

 text = gl::Texture(loadImage(loadAsset("text.jpg"))); // works with images files
text = gl::Texture(data, GL_RGBA8, 640, 480); // BTYE * data This gives me a grey screen -

Это казалось наиболее вероятным, однако я понятия не имею, что делать с Format format = format ();

Texture (const unsigned char *data, int dataFormat, int aWidth, int aHeight, Format format=Format())

Я действительно не понимаю, как это работает, и не могу найти лучшие учебники в Интернете. Благодарю.

0

Решение

по-видимому dataFormat это параметр формата для glTexImage2D и должен быть что-то вроде GL_RGBA или же GL_RGB (или же GL_BGRA_EXT как в приведенном вами примере)

То, что вы хотите, это «внутренний формат», который устанавливается через Format структура. Итак, вы устанавливаете это как:

gl::Texture::Format fmt;
fmt.setInternalFormat(GL_RGBA8);
text = gl::Texture(data, GL_RGBA, 640, 480, fmt);

GL_UNSIGNED_BYTE Формат предварительно установлен в этом конструкторе оболочки Cinder

Иногда проще просто посмотреть на код, чем пытаться найти 100% применимую документацию

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector