3d OpenGL ES/WebGL中是否有glPolygonMode的替代品?

3d OpenGL ES/WebGL中是否有glPolygonMode的替代品?,3d,opengl-es,wireframe,webgl,3d,Opengl Es,Wireframe,Webgl,我想在线框模式下创建一个游戏,但是如果没有glPolygoneMode命令,我不知道该怎么做。这是我可以用可用的东西自己编码的东西吗?我对opengl完全陌生。如果有人已经这样做了,并且有代码片段,我很乐意看到它。非常感谢您的帮助。可以想象您可以使用GL_线渲染整个场景不幸的是,您可能需要实际地将几何体完全转换为线基本体,并使用GL_线进行渲染。但是,在绘制调用中,当然不能简单地将GL_三角形(或其他)替换为GL_线,您必须完全重新排列顶点以适应新的基本体模式。这要求您至少在glDrawElem

我想在线框模式下创建一个游戏,但是如果没有glPolygoneMode命令,我不知道该怎么做。这是我可以用可用的东西自己编码的东西吗?我对opengl完全陌生。如果有人已经这样做了,并且有代码片段,我很乐意看到它。非常感谢您的帮助。

可以想象您可以使用GL_线渲染整个场景

不幸的是,您可能需要实际地将几何体完全转换为线基本体,并使用
GL_线
进行渲染。但是,在绘制调用中,当然不能简单地将
GL_三角形
(或其他)替换为
GL_线
,您必须完全重新排列顶点以适应新的基本体模式。这要求您至少在
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();
    }
}
中的布局(三角形);
布局(线带,最大顶点=4)输出;
void main()
{

对于(int i=0;它…有点简洁,考虑到仅仅用
GL_线
替换
GL_三角形
肯定不会奏效,而且它比这要复杂一些。堆栈溢出应该有一种机制将其标记为正确答案。