首页 > 解决方案 > 如何在 OpenTK.Graphics.OpenGL4 中使用平面着色?

问题描述

我需要在 OpenTK 中使用平面着色。

我知道 OpenGL (c++) 中有一个名为 的函数glShadeModel,它在名为 ( GL.)ShadeModel的 OpenTK 中,但它只在 OpenTK.Graphics.ES11 中,而且它已经很老了。

我如何使用 OpenTK.Graphics.OpenGL4 来做到这一点?

标签: c#opengl3dglslopentk

解决方案


glShadeModel已被Interpolation qualifiers取代。

但是glShadeModel,如果您使用的是兼容性配置文件OpenGL 上下文并且未使用着色器程序,则在“桌面”OpenGL 中仍然支持。这意味着您需要使用立即模式,并且必须通过glBegin/glEnd序列或固定函数属性进行绘制,而无需着色器程序。

如果您正在使用核心配置文件 OpenGL 上下文和/或着色器程序并且想要实现“平面”着色,则必须对顶点着色器输出变量使用flat 插值限定符。例如:

顶点着色器

#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);
}

推荐阅读