android - 是否可以在 fragment 着色器中获取缠绕顺序?

标签 android opengl-es fragment-shader glsles

我目前正在 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/

相关文章:

iphone - 任何人都知道绘制思维导图/visio/gra 等图表的 iOS 库或示例

iphone - GLSL pow 函数?

c++ - OpenGL 和 GLSL : Greyscale texture not showing

java - 错误: constructor for a xyz class is not defined

android - 在适用于 Android 的 OpenGL ES 应用程序的开头显示加载图标

将 UIImage 转换为 OpenGL 的 CGImage 时,iOS PNG Alpha channel 是稳定的

c++ - 如何使用opengl将颜色应用于三角形

java - AsyncTask 回调不调用

java - 从 httppost 响应中解析 xml

android - RecyclerView 项中的背景选择器