gpt4 book ai didi

c++ - PNG 纹理 OpenGL es 2.0 Android NDK

转载 作者:行者123 更新时间:2023-11-30 02:31:58 24 4
gpt4 key购买 nike

我正在开发一款游戏,实际上是我的第一款游戏,所以我是这个世界的新手,我将 OpenGL 与 NDK 和 C++ 一起用于渲染部分,我使用 JNI 从 Java 调用它。我坚持使用纹理主题,因为我需要将 PNG 与 alpha channel 一起使用,并将 TTF 用于某些文本。

我可以包含 libpng,但由于我使用的是实验性 gradle puglin,我不知道如何添加和使用该库,我看到该库可以预编译和添加,但从我的角度来看看到,只针对一种架构,然后,我不知道我是否错了,但我认为如果我添加库的源代码并用程序编译它,我想,它会为那些架构编译我需要(MIPS、64 位 ARM、x86、64 位 x86、ARM),所以这就是一个,我想在原始 RGBA 中预转换 png 并直接使用该 vector 与 opengl 但同样,我不知道如何做到这一点。

关于 TTF 问题,我一头雾水,如果您对此有任何建议,我将不胜感激。

感谢您的帮助。

最佳答案

您可以将整个 FreeType 引擎构建到您的代码中,或者您可以只使用 Android 中已有的部分:使用 Canvas 将字形呈现为位图。您可以在 Android Breakout 中找到这方面的示例.该游戏是用 Java 而不是 C++ 编写的,但 Java 语言的 GLES 代码只是对原生内容的薄包装,因此非常相似。

有一篇关于 Android 上的 GLES 文本的非常好的博客文章 here .

类似地,您的应用程序中已有 libpng 的拷贝。您可以通过Bitmap API调用来使用它。

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

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

关于c++ - PNG 纹理 OpenGL es 2.0 Android NDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36964025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com