OpenGL / GLSL:渲染到立方体贴图?
我试图弄清楚如何将场景渲染为立方体贴图。我在这个问题上停留了一段时间,以为我会向你们寻求帮助。我是OpenGL的新手,这是我第一次使用FBO。 我目前有一个使用cubemap bmp文件的工作示例,片段着色器中的samplerCube样本类型附加到GL_TEXTURE1。我根本没有更改着色器代码。我只是改变了一个事实,即我不会调用正在加载cubemap bmp文件的函数,而是尝试使用以下代码来渲染到cubemap。 您可以在下面看到我还将纹理再次附加到GL_TEXTURE1。在设置制服时是这样的: glUniform1i(getUniLoc(myProg, "Cubemap"), 1); 它可以通过在我的片段着色器中访问它uniform samplerCube Cubemap。 我这样调用以下函数: cubeMapTexture = renderToCubeMap(150, GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE); 现在,我意识到在下面的绘制循环中,我没有更改视图方向来向下看+ x,-x,+ y,-y,+ z,-z轴。我真的只是想在实现之前先看到一些东西。我认为我至少应该像现在的代码一样在对象上看到一些东西。 我什么也没看见,只是黑色。我将背景设为白色,但物体仍为黑色。我删除了照明和着色,仅对立方体贴图纹理进行采样,并且仍然为黑色。 我认为问题可能是设置纹理时的格式类型,即GL_RGB8,GL_RGBA,但我也尝试过: GL_RGBA,GL_RGBA GL_RGB,GL_RGB 我认为这是标准的,因为我们正在渲染附加到帧缓冲区的纹理,但是我看到了使用不同枚举值的不同示例。 我还尝试在每个要使用立方体贴图的绘制调用中绑定立方体贴图纹理: glBindTexture(GL_TEXTURE_CUBE_MAP, cubeMapTexture); 另外,我没有为大多数示例中看到的FBO创建深度缓冲区,因为我只想为我的立方体贴图使用颜色缓冲区。我实际上添加了一个,看是否是问题所在,但仍然得到了相同的结果。当我尝试时,我可能会捏造出来。 可以为我指明正确方向的任何帮助将不胜感激。 GLuint renderToCubeMap(int size, GLenum InternalFormat, GLenum Format, GLenum Type) { // color cube map GLuint textureObject; int face; …