OpenGL几何着色器(geometry shader)

OpenGL几何着色器(geometry shader)

除了顶点着色器(vertex shader)和片元着色器(fragment shader).

OpenGL还提供了一个可选的几何着色器(geometry shader). 其位于顶点着色器和几何着色器之间.

  • 如没有使用几何着色器,则顶点着色器输出到片元着色器.
  • 若使用几何着色器,顶点着色器输出组成一个基础图元的顶点信息到几何着色器,经过几何着色器处理后,再输出到片元着色器. 几何着色器能够产生0个以上的基础图元(Primitive),它能起到一定的裁剪作用.同时也能产生比顶点着色器输入更多的基础图元.

几何着色器的基本概念

几何着色器在启用后,它将获得顶点着色器以组成一个基础图元为一组的顶点输入,通过对输入的顶点进行处理,几何着色器将决定输出的图元类型和个数.

在几何着色器中in和out分别指示了输入的图元,和输出的图元等参数.

几何着色器输入模式 顶点着色器输入 顶点最少个数
points GL_POINTS 1
lines GL_LINES, GL_LINE_LOOP, GL_LINE_STRIP 2
triangles GL_TRIANGLES, GL_TRIANGLE_FAN, GL_TRIANGLE_STRIP 3
lines_adjacency GL_LINES_ADJACENCY,GL_LINE_STRIP_ADJACENCY 4
triangles_adjacency GL_TRIANGLES_ADJACENCY,GL_TRIANGLE_STRIP_ADJACENCY 6

同时从几何着色器输出模式,则有3种:

  • points
  • line_strip
  • triangle_strip

这3种模式基本包含了所有绘图类型,例如triangle_strip就包含了triangle这种特例。max_vertices表示从几何着色器最多输出顶点数目,如果超过设定的这个数目,OpenGL不会输出多余的顶点。

几何着色器中EmitVertex表示输出一个顶点,EndPrimitive表示结束一个图元的输出,这是一对命令

参考文献

OpenGL几何着色器

猜你喜欢

转载自blog.csdn.net/qjh5606/article/details/86759487