10

我想以线框模式创建游戏,但是没有 glPolygoneMode 命令我不知道该怎么做。我可以用可用的东西自己编码吗?我对opengl完全陌生。如果有人这样做并且有代码片段,我很乐意看到它。任何帮助表示赞赏。

4

2 回答 2

12

不幸的是,您实际上可能必须将几何图形完全转换为线图元并使用GL_LINES. 然而,这当然不是通过在你的绘制调用中简单地替换GL_TRIANGLES(或其他)来GL_LINES完成的,你必须完全重新排列你的顶点以适应新的原始模式。这要求您至少在glDrawElements...调用中使用不同的索引数组,或者对于非索引渲染 ( glDrawArrays...),完全使用不同的顶点数组(但是,如果您真的选择这样做,这可能是切换到索引绘图的正确时机)。

但是,如果您有可用的几何着色器(尽管似乎 WebGL 不支持它们,OpenGL ES 应该从 3.2 开始,就像 desptop GL 一样,但glPolygonMode无论如何它已经很老了)并且还没有将它们用于其他事情,事情变得更容易。在这种情况下,您可以在顶点和片段处理之间安装一个相当简单的几何着色器,该着色器采用三角形并为每个三角形输出 3 行:

layout(triangles) in;
layout(line_strip, max_vertices=4) out;

void main()
{
    for(int i=0; i<4; ++i)
    {
        // and whatever other attributes of course
        gl_Position = gl_in[i%3].gl_Position;
        EmitVertex();
    }
}

如果您使用正确的基于块的着色器接口,您应该能够将现有的顶点和片段着色器用于其余部分,只需将几何着色器连接在它们之间,以便为基于三角形的图元进行各种线框渲染。

于 2019-01-13T18:12:10.983 回答
2

可以想象,您可以使用 GL_LINES 渲染整个场景

于 2010-08-22T01:56:46.920 回答