java - Android:OpenGL ES:无法处理太宽的纹理?

标签 java graphics opengl-es android

我有一个 OpenGL ES 游戏应用程序,它使用一个带有 27 个水平帧的 PNG Sprite 来表示一个动画怪物。因此,我的 PNG 目前的宽度为 27 * 96 像素,高度为 96 像素。

我最近添加了新的动画,所以它变成了 57 帧,现在它是 57 * 96,比 5000 px 宽一点。现在我的纹理只是显示为白色方 block !?

我用不同的图像、大小(以 KB 为单位)和分辨率对其进行了测试,我发现任何宽度超过 4000 像素的纹理都会得到这个白色方 block ,无论文件大小如何。

是内存问题吗?
您有解决这个问题的任何想法吗?

我正在 HTC Desire 上进行测试,我相信它可以与 Adreno 200 GPU 一起运行。

最佳答案

OpenGL 实现具有最大纹理宽度和高度,无论是桌面还是移动设备。你应该做的是,当动画纹理变得太宽时,只需开始一个新行。如果您将 glEnvironment 与 GL_MAX_TEXTURE_SIZE 一起使用,您可以找到设备的最大纹理大小:opengl.org/wiki/Textures_-_more .

请注意,它取决于硬件,因此对于您的 HTC 来说可能是 4096(实际上它大得惊人),但对于大多数其他手机 - 尤其是较旧的手机来说肯定较小。

关于java - Android:OpenGL ES:无法处理太宽的纹理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10970292/

相关文章:

java - thread.sleep(long millis) 在 Android 中不起作用

java - OpenGL:关闭除我指定的以外的所有照明?

.net - Windows 窗体 .NET 2.0 : How to draw a PNG icon?

javascript - 我们如何在 three.js 中创建海龟几何图形?

Android GLES20.glDrawArrays(GLES20.GL_LINE_LOOP ...)

java - 旋转平面,使其法线与另一个平面的法线方向相同

java - Java中如何在不使用线程的情况下定期调度任务?

algorithm - 如何在保持曲线整体形状的同时减少曲线中的点数?

android - 在 MALI 400 上让 SurfaceTexture 与 Android Videoplayer 一起工作时出现问题

java - 如何在windows上获得透明的jframe?