第三十九章 几何着色器总结

下面看下几何着色器:是顶点和片段着色器之间的着色器。
输入是一个图元(点或者三角形)的一组顶点,在顶点发送到下一阶段着色器之前可以随意变换,能够将这组顶点变换为完全不同的图元,并且生成比原来更多的顶点。
举例:
#version 330 core
layout (points) in;————需要声明从顶点着色器输入的图元类型。这需要在in关键字前声明一个布局修饰符
layout (line_strip, max_vertices = 2) out;————指定几何着色器输出的图元类型。输出一条线,并将最大顶点数设置为2

void main() {
gl_Position = gl_in[0].gl_Position + vec4(-0.1, 0.0, 0.0, 0.0);
EmitVertex();

gl_Position = gl_in[0].gl_Position + vec4( 0.1, 0.0, 0.0, 0.0);
EmitVertex();

EndPrimitive();

}
上述的布局修饰符可以是任何一个图元值:
points:绘制GL_POINTS图元时(1)。
lines:绘制GL_LINES或GL_LINE_STRIP时(2)
lines_adjacency:GL_LINES_ADJACENCY或GL_LINE_STRIP_ADJACENCY(4)
triangles:GL_TRIANGLES、GL_TRIANGLE_STRIP或GL_TRIANGLE_FAN(3)
triangles_adjacency:GL_TRIANGLES_ADJACE

你可能感兴趣的:(OPGENGL,着色器,算法)