You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何OpenGL 4.3中glDrawArrays可用GL_QUADS模式?文档未提及却可渲染

为什么OpenGL 4.3中glDrawArrays(GL_QUADS)还能正常工作?

其实这事儿的核心原因是你当前使用的OpenGL上下文是兼容配置文件(Compatibility Profile),而非核心配置文件(Core Profile),具体细节如下:

  • 配置文件的差异:OpenGL 3.2版本引入了配置文件的概念,核心配置文件(Core Profile)移除了一批被标记为“废弃”的旧特性,其中就包括GL_QUADS、GL_QUAD_STRIP这类图元类型;而兼容配置文件则保留了所有旧特性,专门用于向下兼容遗留的OpenGL代码。
  • 默认上下文的行为:很多OpenGL驱动在创建上下文时,如果没有明确指定使用核心模式,默认会创建兼容模式上下文。你的PC虽然支持OpenGL 4.3,但只要上下文是兼容模式,GL_QUADS这类旧图元就依然可以正常调用并渲染。
  • 官方文档的指向性:你查看的glDrawArrays官方文档是针对核心配置文件的,所以不会提及GL_QUADS这类已被移除的特性。如果查看兼容模式的文档或者OpenGL 3.1及更早版本的文档,就能找到GL_QUADS作为mode参数的支持说明。
  • 不推荐继续使用GL_QUADS:虽然现在能正常运行,但核心配置文件是OpenGL的发展趋势,兼容模式只是过渡方案。建议改用GL_TRIANGLES(比如用两个三角形拼接成矩形),这样你的代码可以在核心模式下正常工作,兼容性和未来适配性更好。

内容的提问来源于stack exchange,提问作者Ryuhei Irie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:22:43