gpt4 book ai didi

java - 从 OpenGL ES 1.0 切换到 2.0

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:38 25 4
gpt4 key购买 nike

我使用 OpenGL 1.0 开发 Android 应用程序已经有一段时间了,使用一种简单的渲染方法,基本上是每帧调用 glColor4f(...) 和 glDrawArrays(...) 并使用 FloatBuffers。随着我添加更多 UI 元素和绘制调用次数的增加,我遇到了图形成为巨大瓶颈的地步。

所以我现在正在寻找将所有这些调用分组为一个(或两个或三个)绘制调用的最佳方法。看起来最干净、最有效和规范的方法是使用 VBO 对象,从 OpenGL ES 2.0 开始可用。但是,这需要我进行大量重构,才能将我的整个图形后端从 ES 1.0 切换到 ES 2.0。我不确定这是否是一个好的决定,或者是否有可接受的方法在 1.0 中对我的绘图调用进行分组,该方法适用于相对简单的 2D 数据(正方形、圆角矩形 TRIANGLE_FAN 等),或者它是否真的可以值得硬着头皮做出改变。我可能还会提到我非常依赖转换和缩放,这对于 ES 1.0 的固定管道来说非常方便。

环顾四周,我惊讶地发现几乎没有人处于我的位置,谈论这种转变的权衡和复杂性。有什么想法吗?

最佳答案

I have a HEAVY reliance on translation and scaling

请注意,如果您在绘制调用之间更改模型 View 矩阵,则无法批处理任何内容。 (ES2 没有改变这一点)。

Vbo 可从 opengl ES 1.1 获得。它们可能适用于您的目标设备。 Even for ES1.0 (ARB_vertex_buffer_object)

您可以创建一个具有世界空间几何结构(=使用 CPU 解决缩放和平移)的大型 VBO 并绘制它。即使你每帧更新这个 vbo,根据我的经验,它也足够快。发送数千个小型绘图调用几乎总是最慢的。

从固定管线迁移到完整的顶点/fragment 着色器管线一点也不容易。它需要大量的 3d 知识。小心。先写一个原型(prototype)。 (世界空间或对象空间照明?如何变换法线?...)

薇薇安

关于java - 从 OpenGL ES 1.0 切换到 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846863/

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