使用现代 OpenGL 上下文是不是合理?

Posted

技术标签:

【中文标题】使用现代 OpenGL 上下文是不是合理?【英文标题】:Is it reasonable to use modern OpenGL context?使用现代 OpenGL 上下文是否合理? 【发布时间】:2012-12-20 12:06:23 【问题描述】:

最近我使用了一些需要现代 OpenGL 上下文的功能(特别是 ARB_debug_output 需要通过 wglCreateContextAttribs 使用 WGL_CONTEXT_DEBUG_BIT_ARB 创建上下文)并遇到了一些影响(glew 无法收集具有现代上下文的扩展,我遇到了一些集成新上下文的影响进入 wx 小部件)。所以出现了明显的问题:

使用现代 opengl 上下文是否合理? 是否有许多功能无法通过扩展与旧上下文一起使用? 现代语境更快吗?

【问题讨论】:

【参考方案1】:

以下只是我在使用 OpenGL 3.3 核心配置文件上下文一段时间后的考虑:


使用现代 opengl 上下文是否合理?

这取决于。有许多库和中间件仍然不支持 wglCreateContextAttribs 等,但有些是开放的/足够小的,您可以直接访问代码并更改您需要的内容。

我个人认为没有“弃用”功能是一件幸事,因为人们可以专注于我们这个时代多汁的 gpu 硬件功能。

如果您正在编写一种中间件,您必须在其中支持大部分 OpenGL 功能,那么使用“现代”上下文不仅仅是一种祝福:它是一种救命稻草。


是否有许多功能无法通过扩展与旧上下文一起使用?

几乎没有,只要硬件相同。然而,扩展的数量如此之多,以至于可能有很多极端情况。


现代语境是否更快

当然不能再慢了。

【讨论】:

以上是关于使用现代 OpenGL 上下文是不是合理?的主要内容,如果未能解决你的问题,请参考以下文章

glVertexAttribPointer 问题(OpenGL 3.x 前向兼容上下文)

如何使用 fltk 1.3 创建 opengl 3.x 或 4.x 上下文?

不同的opengl上下文是不是有不同的opengl扩展?

我是不是需要分别为每个 opengl 上下文加载函数?

您可以同时创建多少个 OpenGL 渲染上下文是不是有限制?

您可以同时创建多少个 OpenGL 渲染上下文是不是有限制?