小编Jak*_*ake的帖子

Android OpenGL ES 2.0仅限于内存中的16个纹理?

基本上当我使用OpenGL ES 2.0在Android Studio中开发应用程序时,遇到了一个我无法解决的大问题,而且它已经困扰了我一周左右.

因此,任何时候我在内存中加载超过16个,可能是17个任意大小的纹理,并尝试通过我在Genymotion中的模拟器或我的ASUS平板电脑在2D中显示它们,它开始显示的不同于我绑定的图像特定索引,或根本不显示.然而,如果我通过我的三星Galaxy S6运行它,它运行正常.但是,如果我加载16个或更少的纹理,它可以在我测试它的所有设备上运行,包括模拟器.

这让我尝试了一个小实验,看看它是否会显示字母图像az,每个字母为16x16 png,都在我的drawable文件夹中.显示每个字母时,屏幕上的尺寸为80x80,这样我就能看到它们.所以我试着通过"z"运行"a".在模拟器上,以及我的平板电脑,它只显示"a"到"o",在"p"结尾处有一个"z",并在那里停止.在我的三星Galaxy上,它实际上通过"z"显示了"a"并完成了它的设想.考虑到我在常量中将纹理数设置为27或甚至更高,这对于为什么它不能正确加载到其他设备上没有任何意义.我希望我能解释我的问题.而且我很确定他们都能够加载超过16个纹理,所以我必须对我的代码做错.我没有展示整个项目,而是向您展示问题所在的相关领域.任何帮助表示赞赏,并提前致谢.这是我的代码:

常量:

public class Constants
{
public static final int BYTES_PER_FLOAT = 4;
public static final int POSITION_COMPONENT_COUNT = 4;
public static final int NORMAL_COMPONENT_COUNT = 3;
public static final int COLOR_COMPONENT_COUNT = 4;
public static final int TEXTURE_COORDS_COMPONENT_COUNT = 2;

public static final String A_COLOR = "a_Color";
public static final String A_POSITION = "a_Position";
public static final String A_NORMAL = "a_Normal";
public static final String A_TEXTURECOORDS = "a_TextureCoords";
public static final String …
Run Code Online (Sandbox Code Playgroud)

java android opengl-es-2.0

5
推荐指数
1
解决办法
920
查看次数

标签 统计

android ×1

java ×1

opengl-es-2.0 ×1