gpt4 book ai didi

opengl - 说 OpenGL 3.2+ 核心配置文件基于 "retained mode"模式是否正确?

转载 作者:行者123 更新时间:2023-12-05 01:56:34 28 4
gpt4 key购买 nike

我目前正在通过 this resource 学习 OpenGL “核心配置文件与即时模式”一章让我对下一个问题感到困惑。

如果旧的 OpenGL 版本 (< 3.0) 使用即时模式让用户(应用程序)描述场景的构建,而较新的版本 (>= 3.0) 试图通过使用 VBO 和着色器作为唯一方法从中抽象出来为了描述图形,OpenGL 3.2+ 中的 core-profile 使 OpenGL 库基于保留模式模式是否正确,因为 VBO 数据不是由用户(应用程序)存储的,其中不让描述如何搭建场景?

我也无法理解 - 在 OpenGL 1.4(也许是 1.5,我还不确定)中添加 VBO 是否会使这些规范基于保留模式?

因此,在 OpenGL 3.2+ 中,核心配置文件基于保留模式,而兼容性配置文件是即时模式和保留模式功能的混合,这样说是否正确?

我对立即模式和保留模式定义的理解:

  • 立即模式是一种API设计模式,其特点是直接从应用程序调用渲染函数,并且其上显示对象的每一帧都是从用户传递给渲染器的数据中重新绘制的.

  • Retained mode是一种API设计模式,其特点是应用程序描述场景中应该渲染的对象,而不直接调用渲染函数——图形库负责显示和转换显示的数据对象。

请随时指出任何不准确或含糊之处。

最佳答案

根据您所说的这些定义,OpenGL 不是“保留模式”。您的定义要求在“保留的”渲染器中“不直接调用渲染函数”进行渲染。但是 OpenGL 本身不渲染任何东西;您必须在每一帧中直接调用渲染命令才能进行渲染。

缓冲区对象只是一种将数据存储在 GPU 直接可访问的内存中的方法。它们并没有真正改变用户与渲染概念交互方式的本质。如果你想渲染那些缓冲区代表的对象,你仍然必须告诉 OpenGL 使用一些缓冲区缓冲区来渲染。

应该注意的是,OpenGL 社区专门使用术语“立即模式”,并且仅指使用基于glBegin/End 的顶点规范。它没有按照您定义的方式使用该术语。事实上,本教程花时间解释了该术语在 OpenGL 上下文中的含义:“使用 OpenGL 意味着在即时模式下进行开发(通常称为固定功能管道)”。

话虽这么说,即使教程在术语上也相当宽松,因为它声称“即时模式”是“固定功能管道”的同义词。它不是。固定功能可以使用存储在缓冲区对象中的数据;实际上,缓冲区对象是 added to OpenGL 之前 shaders .

所以最好不要对术语考虑太多。

关于opengl - 说 OpenGL 3.2+ 核心配置文件基于 "retained mode"模式是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69796270/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com