我可以在一个渲染窗口中同时使用不推荐的OpenGL和现代OpenGL吗?

我可以在一个渲染窗口中同时使用不推荐的OpenGL和现代OpenGL吗?,opengl,opentk,Opengl,Opentk,我正在通过OpenTK使用现代OpenGL开发一个项目。我想在我的项目中使用Gwen.net GUI库。不幸的是,Gwen.net使用旧的OpenGL进行小部件渲染。我曾尝试合并现代OpenGL和Gwen.net,但到目前为止都没有成功。在我浪费时间调试代码之前,我想知道,是否可以合并旧OpenGL和现代OpenGL?如果创建兼容配置文件上下文,它应该支持所有遗留功能。从,1.2.4: 旧一代的图形硬件无法使用着色器进行编程, 虽然它们可以通过设置状态来配置,控制它们的特定细节 活动OpenGL

我正在通过OpenTK使用现代OpenGL开发一个项目。我想在我的项目中使用Gwen.net GUI库。不幸的是,Gwen.net使用旧的OpenGL进行小部件渲染。我曾尝试合并现代OpenGL和Gwen.net,但到目前为止都没有成功。在我浪费时间调试代码之前,我想知道,是否可以合并旧OpenGL和现代OpenGL?

如果创建兼容配置文件上下文,它应该支持所有遗留功能。从,1.2.4:

旧一代的图形硬件无法使用着色器进行编程, 虽然它们可以通过设置状态来配置,控制它们的特定细节 活动OpenGL的兼容性配置文件继续支持传统的 为这种固定功能硬件开发的OpenGL命令,尽管 通常通过编写着色器来实现,该着色器再现 这样的硬件。描述了固定函数OpenGL命令和操作 作为替代接口,请遵循相应着色器阶段的描述。
如今,最好避免混合使用旧样式和新样式的OpenGL。在微软的Windows和Linux上你可以,但奇怪的事情往往会发生

对于MacOS,苹果已经声明他们根本不支持兼容上下文,所以你不能混用


由于您一直使用GUI工具包,我将尝试在单独的上下文中隔离所有新样式的OpenGL代码,并将其渲染到屏幕外目标,然后将其blit到主显示。

OpenTK render for GWEN是一个单独的类。用现代的方式重写它。这没问题

苹果的OpenGL编程指南另有规定:*():"... 包括KCGLGLPVersion_遗留常量。旧配置文件提供与早期版本的OS X相同的功能,没有任何更改。它继续支持旧的扩展以及不推荐使用的像素和缓冲区格式属性。在未来版本的OS X中,不会向旧配置文件添加新功能。“@MuertoExcobito他表示4.0兼容不可用,而4.0核心和2.0兼容可用。@MuertoExcobito是的,甚至3.x兼容在Mac上也不可用。您可以选择2.1或3.x/4.x核心配置文件。但是,有一个兼容性上下文,苹果是否会将其删除是值得怀疑的,否则所有传统GL应用程序将停止工作(例如,苹果“声明”它们不支持兼容性上下文=不正确)。OSX 2.1兼容性上下文通过扩展提供了相当多的“现代”GL功能。正如他们的文档所述,他们可能只是不会将其扩展到它支持的扩展列表中。@MuertoExcobito:我认为这是一个术语问题。OSX根本不支持兼容配置文件(因此也不支持兼容上下文)。OpenGL在3.2版中引入了核心和兼容配置文件,因此“OpenGL 2.1兼容上下文”不存在。在此之前的GL版本现在被称为“遗留”。