0
我有这个问题一段时间了,我找不到解决方案。FBO在OSX中无法正常工作
在这里,我初始化帧缓冲区:
//Initialize buffers
glGenBuffers(1, &primaryBuffer);
glBindBuffer(GL_FRAMEBUFFER, primaryBuffer);
glGenRenderbuffers(1, &depthBuffer);
glBindBuffer(GL_RENDERBUFFER, depthBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT, Statics::ScreenWidth, Statics::ScreenHeight);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);
glGenTextures(1, &colorTexture);
glBindTexture(GL_TEXTURE_2D, colorTexture);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, Statics::ScreenWidth, Statics::ScreenHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glGenTextures(1, &depthTexture);
glBindTexture(GL_TEXTURE_2D, depthTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT32, Statics::ScreenWidth, Statics::ScreenHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, NULL);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthBuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorTexture, 0);
int res = glCheckFramebufferStatus(GL_FRAMEBUFFER);
if (res == GL_FRAMEBUFFER_COMPLETE)
{
printf("GOOD!\n");
}
glBindFramebuffer(GL_FRAMEBUFFER, 0);
我用它在渲染功能是这样的:
glBindFramebuffer(GL_FRAMEBUFFER, primaryBuffer);
glViewport(0, 0, Statics::ScreenWidth, Statics::ScreenHeight);
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
SetCamera();
DrawScene1();
glBindFramebuffer(GL_FRAMEBUFFER, 0);
glViewport(0, 0, Statics::ScreenWidth, Statics::ScreenHeight);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
SetCamera();
DrawScene2();
什么应该发生在这里的是,“SCENE1”的附加帧缓冲区呈现质地。屏幕上应显示“scene2”。 “SCENE2”确实在屏幕显示出来,但是当我使用的渲染帧缓冲区的质感,这是看到了什么:
谁能告诉我有什么不对?
如果您正在使用渲染缓冲区而不是深度缓冲区的纹理,那么'depthTexture'的重点是什么? –
你没有说明究竟是什么问题。结果应该是什么样子?问题是纹理中的正方形吗?哦,不要在FBO中使用'GL_GENERATE_MIPMAP'; FBO扩展引入'glGenerateMipmaps'函数是有原因的。 –
输出应该是门内的门。 – user686776