Использование текстуры RGBA32F с ошибкой кадрового буфера INVALID_ENUM

0

Я пытаюсь использовать текстуру 32F на канал, прикрепленную к буфере кадров, чтобы сделать визуализацию текстуры. Я сделал это правильно с нормальной текстурой без знака RGBA, но мне нужно больше разрешения в каждом канале.

Я изменил внутренний формат текстуры, но, добавив приложение, я выбрал ошибку INVALID_ENUM. Я читал, что можно прикрепить текстуры с помощью этой ссылки для ссылки на формат. Таким образом, ошибка может быть в другом месте.

Вот фрагменты кода:

glGenTextures(1, &mTexId);
glBindTexture(GL_TEXTURE_2D, mTexId);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, _width, _height, 0, GL_RGBA32F , GL_UNSIGNED_BYTE, nullptr);

glBindFramebuffer(GL_FRAMEBUFFER, mBufferId);
glFramebufferTexture(GL_DRAW_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, mTexId, 0);

checkErrors();      // <<--- Here I check the possible errors and it where i got the INVALID_ENUM

Может ли кто-нибудь мне помочь? Большое спасибо.

Теги:
opengl
opengl-es
textures
framebuffer

1 ответ

2
Лучший ответ

Ваш вызов glTexImage2D недействителен.

GL_RGBA32F является допустимым внутренним форматом, но не допустимым перечислением формата клиентской стороны. Поскольку вы создаете текстуру без копирования данных из клиентской памяти, формат, который вы там указываете, даже не имеет значения, но он должен оставаться в силе.

использование

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F, _width, _height, 0, GL_RGBA, GL_FLOAT, nullptr);

вместо.

  • 0
    Ой! Я пропустил этот параметр, он работает сейчас. Большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню