«Недопустимый перечислитель» при создании 16-битной текстуры - PullRequest
1 голос
/ 20 февраля 2012

Я пытаюсь создать 16-битную текстуру для хранения карты высот для моих участков местности, но оба из следующих возвращают ошибки «недопустимый перечислитель». Макрос CHECK_GL_ERROR () показывает gluErrorString как сообщение и прерывается, если glGetError возвращает что-то отличное от GL_NO_ERROR.

CHECK_GL_ERROR( glTexImage2D( GL_TEXTURE_2D, 0, GL_LUMINANCE16, width_, depth_, 0, GL_LUMINANCE, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/ ) );
CHECK_GL_ERROR( glTexImage2D( GL_TEXTURE_2D, 0, GL_ALPHA16, width_, depth_, 0, GL_ALPHA, GL_UNSIGNED_SHORT, 0 /*data_.raw_data()*/ ) );

У меня есть созданная текстура, связанная с целью GL_TEXTURE_2D, и у меня та же ошибка с и без:

glPixelStorei( GL_UNPACK_ALIGNMENT, 2 );

Я использую контекст OpenGL 3.2, драйверы разработчика NVIDIA CUDA 286.16 на GTX 560Ti. Кто-нибудь может увидеть, что я делаю не так?

Приветствия

1 Ответ

3 голосов
/ 20 февраля 2012

Если вы используете базовый контекст , то этого следует ожидать. Больше нет GL_LUMINANCE или GL_ALPHA форматов изображений .

Если вы хотите эмулировать их эффект, вам нужно создать одноканальный формат изображения. Так что GL_R16 должен быть вашим внутренним форматом. Затем настройте текстурную маску изгиба на объекте текстуры, чтобы один красный канал транслировался либо в RGB, либо в альфа-канал, как вы считаете нужным.

Так действительно лучше.

...