使用OpenTK和VB.NET,如何使用GLControl和OpenGL 3.x功能?

时间:2014-10-14 08:30:11

标签: vb.net opengl opentk

我正在使用OpenTK通过GLControl进行渲染。但是,我在互联网上找不到任何例子或弄清楚如何使用OpenGL 3.x功能(忽略OpenTK常见问题中的简短提及,这并没有太大帮助)。

通过OpenGL 3.x功能,我的意思是整个'glTranslate'模型是无法访问的,并且唯一的渲染或翻译等通过着色器使用并绕过模型/视图/投影矩阵。

1 个答案:

答案 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)
    { }
}

然后,您可以将其拖放到表单上。