- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
根据我的阅读,OpenGL ES 2.0 似乎与 OpenGL 2.1 不同任何,这是我之前的假设。
我很想知道 OpenGL 3 是否与 OpenGL ES 2.0 相当。换句话说,考虑到我要为桌面和 Android 制作游戏引擎,我应该特别注意 OpenGL 3.x+ 和 OpenGL ES 2.0 之间的差异吗?
这也可以包括 OpenGL 4.x 版本。
例如,如果我开始阅读 this书,如果我打算将引擎移植到 Android(当然使用 NDK ;)),我是在浪费时间吗?
最佳答案
From what I've read, it appears that OpenGL ES 2.0 isn't anything like OpenGL 2.1, which is what I assumed from before.
定义“完全不像”它。 Desktop GL 2.1 有一堆 ES 2.0 没有的功能。但是两者中有一个最常见的子集适用于两者(尽管您必须为纹理图像加载捏造一些东西,因为那里存在一些显着差异)。
Desktop GL 3.x 提供了许多未扩展的 ES 2.0 根本没有的功能。 Framebuffer 对象是 3.x 中的核心,而它们是 2.0 中的扩展(即便如此,您只能获得一个目标图像而没有另一个扩展)。有变换反馈、整数纹理、统一缓冲对象和几何着色器。这些都是特定的硬件功能,要么在 ES 2.0 中不可用,要么只能通过扩展获得。其中一些可能是特定于平台的。
但是在桌面 GL 3.x 上也有一些很好的 API 便利功能。显式属性位置(layout(location=#)
)、VAO 等
For example, if I start reading this book, am I wasting my time if I plan to port the engine to Android (using NDK of course ;) )?
这取决于您打算做多少工作以及您准备做什么才能让它发挥作用。至少,您应该了解 OpenGL ES 2.0 的功能,以便了解它与桌面 GL 的不同之处。
很容易避开实际的硬件功能。渲染到纹理(或多个纹理)是您的算法所要求的。与变换反馈、几何着色器等一样。所以您需要多少取决于您尝试做什么,并且可能有替代方案取决于算法。
您更有可能被捕获的是桌面 GL 3.x 的便利特性。例如:
layout(location = 0) in vec4 position;
这在 ES 2.0 中是不可能的。类似的定义是:
attribute vec4 position;
这在 ES 2.0 中可行,但它不会导致 position
属性与属性索引 0 相关联。这必须通过代码完成,使用glBindAttribLocation
在程序链接之前。 Desktop GL 也允许这样做,但是您链接到的书不会这样做。出于显而易见的原因(这是一本基于 3.3 的书,而不是一本试图保持与旧 GL 版本的兼容性的书)。
统一缓冲区是另一个。本书对它们进行了自由使用,尤其是对于共享透视矩阵。这是一种简单有效的技术。但是 ES 2.0 没有这个功能;它只有每个程序的制服。
同样,您可以根据需要对公共(public)子集进行编码。也就是说,您可以故意放弃使用显式属性位置、统一缓冲区、顶点数组对象等。但那本书也不能完全帮助你做到这一点。
会不会浪费你的时间?好吧,那本书不是用来教你 OpenGL 3.3 API 的(它确实这样做了,但这不是重点)。本书教你图形编程;它恰好使用了 3.3 API。您在那里学到的技能(除了那些基于硬件的技能)可以转移到您正在使用的涉及着色器的任何 API 或系统。
这么说吧:如果你对图形编程不是很了解,用什么API来学习都无所谓。掌握这些概念后,您可以阅读各种文档并了解如何轻松地将这些概念应用到任何新 API。
关于android - OpenGL ES 2.0 与 OpenGL 3 - 异同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9629897/
我是 iOS 开发新手。我想弄清楚这些事情。 iPhone 和 iPad 中的一个项目。两者有什么相同之处(编码、图形或 UI)? 应用的设计模式相同还是不同? 等待答复谢谢:) 最佳答案 就我个人而
灵感来自 Learning Python from Ruby; Differences and Similarities . 我正好相反——我非常精通 Python,但我需要尽快开始学习 Ruby(稍
我非常了解鲁比。我相信我现在可能需要学习 Python。两者都知道的 friend ,请问两者有什么概念相似,有什么不同? 我正在寻找一个类似于我为 Learning Lua for JavaScri
根据我的阅读,OpenGL ES 2.0 似乎与 OpenGL 2.1 不同任何,这是我之前的假设。 我很想知道 OpenGL 3 是否与 OpenGL ES 2.0 相当。换句话说,考虑到我要为桌面
我是一名优秀的程序员,十分优秀!