使用立方体贴图时的OpenGL清除缓冲区

问题描述

我正在使用nvidia nsight图形来检查使用立方体贴图清除帧缓冲区时会发生什么。

我无法确定清理是否会影响所有六个面,或者在清除之前必须指定要渲染到的面。

我实际上需要知道如何正确清除立方体贴图。每脸或通过帧缓冲区。

编辑:

这是通话记录:

Issues (324)    Event   Description CPU ms  GPU ms
563 "void glBindFramebuffer(GLenum target = GL_FRAMEBUFFER,GLuint framebuffer = '4')"  0.02    -

Issues (324)    Event   Description CPU ms  GPU ms
565 "void glViewport(GLint x = 0,GLint y = 0,GLsizei width = 256,GLsizei height = 256)"  <0.01   -

Issues (324)    Event   Description CPU ms  GPU ms
566 "void glClearNamedFramebufferfv(GLuint framebuffer = '4',GLenum buffer = GL_DEPTH,GLint drawbuffer = 0,GLfloat* value = {1})"    0.03    <0.01

Issues (324)    Event   Description CPU ms  GPU ms
567 "void glNamedFramebufferTextureLayer(GLuint framebuffer = '4',GLenum attachment = GL_DEPTH_ATTACHMENT,GLuint texture = '59',GLint level = 0,GLint layer = 0)"   0.01    -

Issues (324)    Event   Description CPU ms  GPU ms
570 void glUseProgram(GLuint program = '616')   <0.01   -

一些图纸(我没有报告程序和图纸日志), 我看到nvidia软件中的原始数据撞击了帧缓冲区,而没有写任何警告,所以我认为帧缓冲区是有效的。

下一张脸:

Issues (324)    Event   Description CPU ms  GPU ms
914 "void glNamedFramebufferTextureLayer(GLuint framebuffer = '4',GLint layer = 1)"   0.02    -

... 我什么都没清除,然后重新开始以新的矩阵方向绘制,直到渲染了6个面。

EDIT2,这是创建阴影立方体贴图的方法:

glCreateTextures(
    GL_TEXTURE_CUBE_MAP,1,&m_identifier
);

glEnable(GL_TEXTURE_CUBE_MAP_SEAMLESS);

glTextureStorage2D(
    m_identifier,GL_DEPTH_COMPONENT32F,256,256
);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)