首先,您好抱歉这样询问。我想知道关于android中的openGL ES是否有任何详细的教程。我谷歌它,但我发现其中一些与直接项目,但我需要从基本水平知道任何人可以帮助我这个
答案 0 :(得分:1)
您将无法找到您正在寻找的内容。 openGL的实现非常困难,而且有很多事情可能会出错。大多数尝试学习它的人都希望能够在学习的第一天至少绘制一些东西,所以开始时的设置细节通常会被遗漏或在本教程的后面讨论。
您可能会找到一些书籍,其中包含几乎所有内容的详细信息,因此您可以搜索这些书籍。这些很快就会过时,在大多数情况下,教程,示例和解决方案(例如SO上的那些)的组合更合适。
因此,当您阅读教程时,如果您已经有一个项目,那么它很棒,因为您可能会开始改变现状并查看结果。如果你是初学者,你不应该试着去理解每一行,而是要关注你感兴趣的东西。
当你看一些例子时,你不应该太认真对待它们。代码结构通常远非易于管理,这些示例实际上是作为示例而且可能是您可以使用的内容。
您将看到openGL通常需要的主要部分是上下文和缓冲区。我认为你在Android中开箱即用,你可以通过初始化表面来设置大部分内容。您通常会找到一个默认或最常用的设置,您应该使用它,直到找到可以通过更改这些问题来修复的特定问题。
继续使用ES2(相信我不要去ES1)你需要创建一些程序(着色器)并编译它们。如果要添加一些图像,则需要查看纹理。然后,对于一个漂亮的3D立方体,您很可能需要一些矩阵来创建一个漂亮的投影。例如,如果您想要绘制一个在每个面上都有图像并且在周围旋转的立方体,则可能会快速达到1000行或更多代码。
这并不意味着您需要为您想要绘制的所有内容提供如此多的代码,但这意味着openGL非常灵活,您可以自行设计工具。因此,从图像中获取纹理应该在一个单独的类中,该类使用图像名称构造,并具有绑定纹理和删除它的公共方法;然后这个课程将完成,直到你使用FBO。一个着色器应该再次包装在一个类中,就像最好用一些源文件初始化它一样,这样你实际上可以对它们进行编码(有些只是将源字符串放在代码中),然后再次公开你可能需要的所有方法。一个立方体可以在某个“模型”类中,然后可以包含顶点数据或缓冲区,并且可能有额外的数据,如位置,旋转或简单的模型矩阵......
因此,一旦您在应用程序中找到了这一点,您就能够看到有关工作原理的更大图景,并开始寻找详细的答案和解决方案。但首先只需下载示例,阅读教程并继续使用代码。
我可以补充一点,我从未见过一个很好的openGL教程但是我再也没有写过。原因在于它太大了,无法为需要教程的人很好地构建它。因此,我们仍然应该感谢这些教程和示例,并尊重编写它们的人,将其修剪得如此之多,以至于您可以轻松阅读代码。我希望这清楚“是否有任何详细的教程”这个问题。