c# - 如何在 OpenTK.Graphics.OpenGL4 中使用平面着色?
问题描述
我需要在 OpenTK 中使用平面着色。
我知道 OpenGL (c++) 中有一个名为 的函数glShadeModel
,它在名为 ( GL.
)ShadeModel
的 OpenTK 中,但它只在 OpenTK.Graphics.ES11 中,而且它已经很老了。
我如何使用 OpenTK.Graphics.OpenGL4 来做到这一点?
解决方案
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);
}
推荐阅读
- reactjs - 在反应中使用 FormData() 不断返回 null
- editor - 使用 Atom 运行 C 程序
- docker - 使用容器的 Azure DevOps 作业步骤
- sql - 将多行串联成单列,最大行数限制为 1000
- heroku - 在heroku中运行时有什么方法可以获取应用程序名称吗?
- css - 添加 svg 作为伪元素
- angular - 错误:无法解析 ProductsEffects 的所有参数:(?, ?)
- django - Django 获取 OneToMany 字段的外键模型类型
- javascript - 显示时如何解决:flex不起作用
- python - Pandas 按持续时间删除行