Несколько выходов в проблеме фрагментного шейдера - PullRequest
0 голосов
/ 08 октября 2018

Так что сейчас я пытаюсь визуализировать мою текущую сцену с 2 текстурами, связанными на FBO как GL_COLOR_ATTACHMENT (0 & 1).

В состоянии инициализации я прикрепил 2 текстуры и вызвал glDrawBuffers, чтобы указать 2расположение вывода для шейдера.

glBindFramebuffer(GL_FRAMEBUFFER, m_RendererID);

unsigned m_ColorBufferTexture;
glGenTextures(1, &m_ColorBufferTexture);
//...
unsigned m_AddtionalColorBufferTexture;
glGenTextures(1, &m_AdditionalColorBufferTexture);
//...

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 
GL_TEXTURE_2D, m_ColorBufferTexture, 0);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT1, 
GL_TEXTURE_2D, m_AdditionalColorBufferTexture, 0);

uint32_t drawBuffers[2] = {GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1};
glDrawBuffers(2, (GLenum*)drawBuffers);

А во фрагментном шейдере я просто указываю

layout(location = 0) out vec4 color;

layout(location = 1) out vec4 pseudo_color;

Проблема заключается в том, что я пытаюсь проверить, успешно ли записана m_AdditionalColorBufferTexture путем рендеринга этой текстурына экране это не удалось, и я получил черный экран.(теперь m_ColorBufferTexture может отображаться очень хорошо.)

Но если я переключу порядок COLOR_ATTACHMENTs в drawBuffers, а также переключу расположение вывода цвета и pseudo_color в шейдере, m_AdditionalColorBufferTexture можно будет отобразить на экране.

Кажется, у меня не работает glDrawBuffers.И что будет первым в списке drawBuffers, может получать только выходные данные от фрагментного шейдера?

Что не так с моим кодом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...