java– 从OpenGL ES 1.0切换到2.0

java– 从OpenGL ES 1.0切换到2.0,第1张

概述我使用OpenGL1.0开发了一个Android应用程序很长一段时间使用一种天真的渲染方法,基本上每个帧都使用FloatBuffers调用glColor4f(…)和glDrawArrays(…).当我添加更多UI元素并且绘制调用的数量增加时,我正在达到图形成为巨大瓶颈的程度.所以我现在正在寻找将所有这些调用分组为一

我使用OpenGL 1.0开发了一个Android应用程序很长一段时间使用一种天真的渲染方法,基本上每个帧都使用floatBuffers调用glcolor4f(…)和glDrawArrays(…).当我添加更多UI元素并且绘制调用的数量增加时,我正在达到图形成为巨大瓶颈的程度.

所以我现在正在寻找将所有这些调用分组为一个(或两个或三个)绘制调用的最佳方法.看起来最干净,最有效和规范的方法是使用OpenGL ES 2.0提供的VBO对象.但是,这需要我的巨大重构才能将我的整个图形后端从ES 1.0切换到ES 2.0.我不确定这是否是一个好的决定,或者是否有可接受的方法将我的绘图调用分组为1.0,对于相对简单的2D数据(正方形,圆角矩形TRIANGLE_FAN等),或者如果真的可能是值得咬紧牙关并进行转换.我还可以提一下,我对ES 1.0的固定管道非常依赖翻译和缩放.

环顾四周,我很惊讶地发现我的位置几乎没有人,谈论这种转换的权衡和手头的复杂性.任何想法?

解决方法:

I have a HEAVY reliance on translation and scaling

请注意,如果在drawcalls之间更改模型视图矩阵,则无法批处理任何内容. (ES2并没有改变这一点).

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

您可以创建一个具有世界空间几何的大型VBO(=解析缩放和使用cpu进行转换)并绘制它.即使你根据我的经验更新了每个帧的vbo,它也足够快.发送数以千计的小抽查几乎总是最慢的.

从固定的pipline移动到完整的顶点/片段着色器pipline并不容易.它需要3d中的大量知识.小心.先写一个原型. (世界空间或物体空间照明?如何改变法线?…)

费雯丽

总结

以上是内存溢出为你收集整理的java – 从OpenGL ES 1.0切换到2.0全部内容,希望文章能够帮你解决java – 从OpenGL ES 1.0切换到2.0所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116984.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存