如何在 OpenTK.Graphics.OpenGL4 中使用平面着色?
How to use flat shading in OpenTK.Graphics.OpenGL4?
我需要在 OpenTK 中使用平面着色。
我知道 OpenGL (c++) 中有一个名为 glShadeModel
的函数,它在 OpenTK 中名为 (GL.
)ShadeModel
,但仅在 OpenTK.Graphics 中].ES11,它已经很老了。
如何使用 OpenTK.Graphics.OpenGL4 实现?
glShadeModel
已替换为 Interpolation qualifiers。
但是 glShadeModel
is still supportend in "desktop" OpenGL if you are using compatibility profile OpenGL Context 并没有使用着色器程序。这意味着您需要使用即时模式,并且必须在没有着色器程序的情况下通过 glBegin
/glEnd
序列或固定函数属性进行绘制。
如果您正在使用核心配置文件 OpenGL 上下文 and/or 着色器程序并且您想要实现“平坦”着色,则必须使用 flat
Interpolation qualifier 作为顶点着色器输出变量。例如:
顶点着色器
#version 460
// [...]
in vec3 aColor;
flat out vec3 vColor;
void main()
{
vColor = aColor;
// [...]
}
片段着色器
#version 460
flat in vec3 vColor;
out vec4 fragColor;
void main()
{
fragColor = vec4(vColor, 1.0);
}
我需要在 OpenTK 中使用平面着色。
我知道 OpenGL (c++) 中有一个名为 glShadeModel
的函数,它在 OpenTK 中名为 (GL.
)ShadeModel
,但仅在 OpenTK.Graphics 中].ES11,它已经很老了。
如何使用 OpenTK.Graphics.OpenGL4 实现?
glShadeModel
已替换为 Interpolation qualifiers。
但是 glShadeModel
is still supportend in "desktop" OpenGL if you are using compatibility profile OpenGL Context 并没有使用着色器程序。这意味着您需要使用即时模式,并且必须在没有着色器程序的情况下通过 glBegin
/glEnd
序列或固定函数属性进行绘制。
如果您正在使用核心配置文件 OpenGL 上下文 and/or 着色器程序并且您想要实现“平坦”着色,则必须使用 flat
Interpolation qualifier 作为顶点着色器输出变量。例如:
顶点着色器
#version 460
// [...]
in vec3 aColor;
flat out vec3 vColor;
void main()
{
vColor = aColor;
// [...]
}
片段着色器
#version 460
flat in vec3 vColor;
out vec4 fragColor;
void main()
{
fragColor = vec4(vColor, 1.0);
}