我正在使用OpenTK通过GLControl进行渲染。但是,我在互联网上找不到任何例子或弄清楚如何使用OpenGL 3.x功能(忽略OpenTK常见问题中的简短提及,这并没有太大帮助)。
通过OpenGL 3.x功能,我的意思是整个'glTranslate'模型是无法访问的,并且唯一的渲染或翻译等通过着色器使用并绕过模型/视图/投影矩阵。
答案 0 :(得分:0)
默认情况下,GLControl会创建一个兼容性上下文,其中包含驱动程序支持的最大版本。例如,如果您最近有一张带有最新驱动程序的Nvidia卡,GLControl将为您提供OpenGL 4.5兼容性上下文。
请注意,在Linux和Mac OS X上,兼容性上下文仅限于OpenGL 2.1。要访问更高版本,您需要创建核心上下文:
var glControl = new GLControl(GraphicsMode.Default, 4, 0, GraphicsContextFlags.ForwardCompatible);
不推荐使用的函数,例如glTranslate,在核心上下文中不可用。
如果您使用的是WinForms UI设计器,则可以通过从GLControl派生自定义控件并在其构造函数中指定所需(最小)版本来实现相同的结果:
class CoreGLControl : GLControl
{
public CoreGLControl() : base(GraphicsMode.Default, 3, 0, GraphicsContextFlags.ForwardCompatible)
{ }
}
然后,您可以将其拖放到表单上。