PNG Texture OpenGL es 2.0 Android NDK

PNG Texture OpenGL es 2.0 Android NDK

本文关键字:Android NDK es Texture OpenGL PNG      更新时间:2023-10-16

我正在开发一款游戏,实际上是我的第一款游戏,所以我是这个世界上的新手,我使用OpenGL和NDK以及C++作为渲染部分,我用JNI从java调用它。我被纹理主题卡住了,因为我需要使用PNG和alpha通道,并对一些文本使用TTF。

我可以包含libpng,但由于我使用的是实验性的gradle puglin,我不知道如何添加库和使用它,我看到库可以预编译和添加,但从我看到的情况来看,只有一种架构,我不确定我是否错了,但我认为如果我添加库的源代码并用程序编译它,我认为,它将被编译为我需要的架构(MIPS,64位ARM,x86,64位x86,ARM),所以这就是其中之一,我想在原始RGBA中预转换png,并直接与opengl一起使用该向量,但我不知道如何做到这一点。

关于TTF问题,我一无所知,如果你对此有任何建议,我将不胜感激。

谢谢你的帮助。

您可以将整个FreeType引擎构建到代码中,也可以只使用Android的一部分:使用Canvas将字形渲染到位图。你可以在Android Breakout中找到一个这样的例子。游戏是用Java而不是C++编写的,但Java语言GLES代码只是对本地内容的一个薄薄的包装,所以它非常相似。

这里有一篇关于Android上GLES文本的不错的博客文章。

类似的是,您的应用程序中已经有了libpng的副本。您可以通过位图API调用以使用它。

如果你的目标是创建一个完全独立的本地应用程序,那么调用Canvas/Bitmap的方法是不可行的。然而,我不认为这是一个特别有用的目标。您最好将"游戏引擎"与游戏逻辑分离,例如,具有特定于平台的"解码PNG"answers"将这堆RGBA像素传递到glTexImage2D()"功能,以及与平台无关的"使用纹理N"。

更进一步,你最好的方法是使用现有的图形引擎或游戏引擎,并专注于创建游戏,而不是编写引擎。通过编写引擎来学习引擎是一项值得的努力,但如果你的实际目标是编写游戏,那么你应该专注于游戏本身。