opengl - 如何在四边形的正面和背面设置不同的颜色

标签 opengl

实际上,我的问题在标题中。我使用带有着色器和缓冲区的“现代 opengl”方法,我想知道是否存在任何方法可以在一个四边形的两侧获得不同的颜色。

期望的结果(背面和正面)

enter image description here enter image description here

最佳答案

GLSL 提供内置的 gl_FrontFacing 变量,用于确定片段是正面片段还是背面片段(如果正面则为 true),例如如果它是四边形正面的片段或四边形背面的片段。

在片段着色器中,您可以检查此变量并设置每个面方向相应的颜色:

if(gl_FrontFacing)
{
    outColor = color1;
}
else    // Fragment is back facing fragment
{
    outColor = color2;
}

关于opengl - 如何在四边形的正面和背面设置不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24903403/

相关文章:

objective-c - 在不同的NSWindow中的NSOpenGLView上绘制不同的形状

opengl - glEnable(GL_DEPTH_TEST) - 没有渲染

c++ - Qt5.2.1 : error: gl. h included before glew.h 未解决

c++ - 在纹理中存储 float 数组并使用纹理坐标从着色器访问 float

opengl - 什么样的几何体适合渲染 Twig

c++ - GL_DRAW/READ_FRAMEBUFFER 与 GL_FRAMEBUFFER?

java - 使用 glBufferSubData() 更新 VBO 数据

c++ - 程序特定的 OpenGL 运行时错误 : Multiple Input Buffers For Skinned Animation

c++ - glMultiDrawIndirect 和 DrawElementsIndirectCommands 不渲染所有对象

c++ - 三角扇有多少个顶点用opengl