我目前正在 Android 上使用 OpenGL ES 2.0,我发现它是一个相当昂贵的解决方案(在我的例子中)来存储每个顶点甚至每个 fragment 的法线向量。我想确定 fragment 着色器中三角形的朝向,仅具有顶点的位置属性(以及 UV 坐标,如果有帮助的话)。 有办法实现吗?据我所知,OpenGL 知道三角形的缠绕顺序并在渲染时利用它,但是,我没有找到任何解决方案来接收此信息。
最佳答案
是的,有一个内置变量可以实现这一点。它名为 gl_FrontFacing
,类型为 bool
。
例如,如果您想将正面三角形着色为黄色,将背面三角形着色为青色,则可以在 fragment 着色器中使用以下内容:
if (gl_FrontFacing) {
gl_FragColor = vec4(1.0, 1.0, 0.0, 1.0);
} else {
gl_FragColor = vec4(0.0, 1.0, 1.0, 1.0);
}
关于android - 是否可以在 fragment 着色器中获取缠绕顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31415178/