我目前正在Android上使用OpenGL ES 2.0,我发现它是一个非常昂贵的解决方案(在我的例子中),为每个顶点或甚至每个片段存储一个法向量。我想确定碎片着色器中三角形的面向方向,只有顶点的位置属性(如果有帮助的话,还有UV坐标)。 有没有办法实现这个?据我所知,OpenGL知道三角形的缠绕顺序并在渲染时利用它,但是,我没有找到任何解决方案来接收这些信息。
答案 0 :(得分:0)
OpenGL使用缠绕顺序来确定三角形的面向,这样在启用面部剔除时,隐形面根本不会被光栅化。但是,您的顶点着色器是针对每个顶点运行的,并且由于GPU的并行特性,您无法访问其他顶点。
使用几何着色器可以访问同一基元中的其他顶点。如果我没弄错的话,它可以作为OpenGL ES 3.1的扩展,但之前没有。