gpt4 book ai didi

iphone - 从 OpenGL ES 1.1 过渡到 OpenGL ES 2.0

转载 作者:行者123 更新时间:2023-12-03 18:34:37 27 4
gpt4 key购买 nike

iPhone 3GS 面世已经有一段时间了,现在支持 OpenGL ES 2.0 的设备可能有足够的市场份额来保证在其中进行开发。

但情况是很多开发人员可能已经在 OpenGL ES 1.1 中拥有庞大的代码库

如何从 ES 1.1 过渡到 ES 2.0?我想需要处理矩阵,以及像 GL_FOG、GL_CULL 这样的东西?

是否可以为这些函数编写“替代品”,例如您自己的 glTranslatef、glPushmatrix 等?这是否意味着性能会受到影响?

过渡到 ES 2.0 还有哪些其他考虑因素?使用其中任何一个都有什么优点和缺点(除了明显的设备支持问题之外)?

看看 stackoverflow 中 es 2.0 标签与标准 es 标签的数量相比,看起来现在还不是 2.0 的时候。

最佳答案

在尝试确定是否使用 OpenGL ES 2.0 时,不要仅仅根据 Stack Overflow 上标签中的事件进行判断。一方面,并​​不是每个 2.0 或着色器相关的问题都被标记为这样。此外,在 iPhone SDK 发布时或发布后不久,出现了大量有关 OpenGL ES 1.1 的信息,因此人们对该 API 更加熟悉。显然,人们对 OpenGL ES 2.0 很感兴趣,这一点可以从我关于该主题的一节课是迄今为止最受欢迎的 my course videos 中得到证明。 .

在大多数情况下,1.1 和 2.0 之间处理几何体的方式以及帧缓冲区等内容都是相同的,但其他一切都从由内置函数确定转变为您自己的着色器。您将必须编写一些代码来复制简单的功能,例如使用模型 View 矩阵或纹理,但这些往往只需要着色器中的几行。例如,使用模型 View 矩阵来调整顶点就像在顶点着色器中放置这样的线一样简单:

vec4 transformedPosition = modelViewProjMatrix * position;

我个人替换了glRotate()等函数a long while ago using the Core Animation helper functions有效地操纵模型 View 矩阵。这使得将该代码转移到 OpenGL ES 2.0 变得非常简单。

Jeff LaMarche 在他的文章 here 中还有一个非常有用的帮助程序类,用于包装大部分着色器程序设置代码。 .

有关过渡到 OpenGL ES 1.1 的重要指南,请参阅“从 OpenGL ES 1.0 迁移到 OpenGL ES 2.0”文章,该文章是本书 GPU Pro 中的一章。可以在免费 PowerVR SDK 随附的文档中找到.

我在之前的回答 here 中解释了 OpenGL ES 2.0 的优点。和 here ,但也许演示一下新 API 可以为您提供什么的前后对比会很有用。

OpenGL ES 1.1:

OpenGL ES 1.1

OpenGL ES 2.0:

OpenGL ES 2.0

希望您能够看到用着色器替换某些内置函数的返回。

关于iphone - 从 OpenGL ES 1.1 过渡到 OpenGL ES 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5866256/

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