【问题标题】:With OpenTK and VB.NET, how to use GLControl with OpenGL 3.x features?使用 OpenTK 和 VB.NET,如何使用具有 OpenGL 3.x 功能的 GLControl?
【发布时间】:2014-10-14 08:30:11
【问题描述】:

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

通过 OpenGL 3.x 功能,我的意思是整个“glTranslate”模型是不可访问的,唯一的渲染或翻译等是通过着色器使用并传递模型/视图/投影矩阵。

【问题讨论】:

  • 您的问题是什么?您想学习如何使用 OpenGL 3.x 吗?或者您想知道如何使用 GLControl 创建 OpenGL 3.x 上下文?
  • 我已经知道如何使用并且以前使用过OpenGL 3.x,并且熟悉它们的工作原理。

标签: vb.net opengl opentk


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多