PNG Texture OpenGL es 2.0 Android NDK
PNG Texture OpenGL es 2.0 Android NDK
我正在开发一款游戏,实际上是我的第一款游戏,所以我是这个世界上的新手,我使用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"。
更进一步,你最好的方法是使用现有的图形引擎或游戏引擎,并专注于创建游戏,而不是编写引擎。通过编写引擎来学习引擎是一项值得的努力,但如果你的实际目标是编写游戏,那么你应该专注于游戏本身。
- Android NDK传感器向事件队列报告奇怪的间隔
- Android NDK 编译 LAME HAVE_MPGLIB > 'interface.h' 文件未找到
- Android NDK clang 编译器错误在 Windows 上显示'No such file or directory'
- 在 constexpr 构造函数 (c++17) 中赋值到 const char * 在使用 Android NDK 时
- 如何在 android ndk 上链接 C 和 C++ 代码,以及 C 和 C++ 运行时库(包括 STL)?
- Android NDK 未定义对ASensorEventQueue_registerSensor的引用
- 如何将 libjpeg-turbo Android NDK 添加为静态库
- 在 Flutter 应用程序中使用 Android NDK 中的 AssetManager 类
- Android NDK - 无法在 Visual Studio 2017 中调试
- 不再支持Android NDK APP_STL gnustl_shared
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 为 Android NDK 编译库
- 从文件问题加载纹理 Android NDK 和 OpenGL
- Android NDK - C++ 异常会导致第三方原生库崩溃
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- [android ndk]如何获取资产文件夹中文件的绝对路径?
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 如何在Android(NDK)中使用CPR库
- 使用 Android NDK 使用 clang++ 编译C++代码时对"_Unwind_Resume"的未定义引用
- 如何在 C/Android NDK 中将字符串日期转换为毫秒