3
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);

我一直在尝试实施延迟渲染 2 周。但是我的测试程序中的所有网格都被反向剔除。上面的代码应该是渲染模型的正确方法。我看的每个例子都像这样绘制对象。但这是我使用 GL_BACK 作为剔除面时的结果:

GL_BACK

这是 GL_FRONT:

在此处输入图像描述

GL_FRONT 应该是我期望从 GL_BACK 得到的结果。奇怪的是,当我将 glFrontFace 设置为 GL_CW 时,一切都消失了。所以这个问题与缠绕无关。我整天都在搜索这方面的信息。我唯一发现的是关于深度缓冲区的东西。但我在创作中看不到任何问题。正是因为这个问题,我无法正确地为聚光灯渲染进行模板传递。我在几何通道中启用了 GL_DEPTH_TEST。这就是我作为深度缓冲区附加到我的 fbo 的内容

glGenRenderbuffers(1, &depthTexture);
glBindRenderbuffer(GL_RENDERBUFFER, depthTexture);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH32F_STENCIL8, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, depthTexture);

主要问题是,会导致反向背面剔除的可能性是什么?

4

0 回答 0