【发布时间】:2012-07-21 06:20:42
【问题描述】:
我一直在寻找答案,但没有找到任何具体的答案。
我想知道这两个示例中哪一个与速度和性能相关性更好。提前致谢!
我正在制作一个 2D 的 openGL ES 1.0 Android 游戏。对于动画角色,我使用不同的纹理。我对纹理有两种可能性:
第一个是将每个纹理放在一个 int 数组中,并根据帧更改选择哪个纹理:
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture[actual_id]);
另一方面,我们可以拥有一个包含所有图像的“大”纹理,并且只需修改纹理坐标。在这种情况下,而不是:
private float textures[] = {
// Mapping coordinates for the vertices
0.0f, 1.0f, // top left (V2)
0.0f, 0.0f, // bottom left (V1)
1.0f, 1.0f, // top right (V4)
1.0f, 0.0f // bottom right (V3)
};
(在第一种情况下将是那个)它将是:
private float textures[] = {
// Mapping coordinates for the vertices
0.0f, 0.5f, // top left (V2)
0.0f, 0.0f, // bottom left (V1)
0.5f, 0.5f, // top right (V4)
0.5f, 0.0f // bottom right (V3)
};
(使用 2x2 框)并且这些坐标应该在纹理周围移动。
我想知道哪个可能是最快的。另外,如果有第三个最好的方法,我很想知道。
感谢您的宝贵时间。如果我必须详细说明问题,请问我。
【问题讨论】:
-
您好,欢迎您。您可能想知道像这样的“偏好”问题通常被认为是不合适的(参见FAQ)。话虽如此,您可能想选择一个您最感兴趣的标准。我不相信一种方法比另一种“更好”(一种可能更快,另一种可能使用更少的内存),这很容易从一种设备更改为另一种设备。如果您可以选择一个重要标准并将您的问题重新表述为只问哪种方法使用更少的内存,那么它可能更合适。
-
感谢您的快速答复。我想知道哪个比使用内存最快。我要修改问题,谢谢你的建议!
标签: android opengl-es textures