Я пытаюсь нарисовать данные сцены для нескольких текстур. Текстуры содержат диффузное, нормальное и положение в цветовой форме. Когда сцена отображается, нарисована только одна из текстур. Gl_FragData [0] заканчивается текстурой с приложением GL_COLOR_ATTACHMENT2. Если я переключу gl_FragData [0] на диффузный, обычный. или положение текстуры GL_COLOR_ATTACHMENT2 имеет правильные данные, поэтому я знаю, что данные верны в шейдере, но первые две текстуры заканчиваются пустым.OpenGL Рисование для нескольких текстур
int fbo = glGenFramebuffer();
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
addTextureAttachment(GL_COLOR_ATTACHMENT0);
addTextureAttachment(GL_COLOR_ATTACHMENT1);
addTextureAttachment(GL_COLOR_ATTACHMENT2);
Material.unbindAllTextures();
public void addTextureAttachment(int attachment) {
int id = glGenTextures();
glBindTexture(GL_TEXTURE_2D, id);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, (ByteBuffer)null);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glFramebufferTexture2D(GL_FRAMEBUFFER, attachment, GL_TEXTURE_2D, id, 0);
textures.add(new Texture(id, width, height));
}
Я называю это перед визуализацией
public void bindAsRenderTarget() {
glBindTexture(GL_TEXTURE_2D, 0);
glBindFramebuffer(GL_FRAMEBUFFER, fbo);
glViewport(0, 0, width, height);
glDrawBuffers(GL_COLOR_ATTACHMENT0);
glDrawBuffers(GL_COLOR_ATTACHMENT1);
glDrawBuffers(GL_COLOR_ATTACHMENT2);
}
Там в разделе об оказании MRT: HTTP://www.gamedev.net/page/resources/_/technical/opengl/opengl-frame-buffer-object-201-r2333 –