Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android OpenGL ES 2.0加载动态纹理_Android_Opengl Es_Loading_Opengl Es 2.0_Textures - Fatal编程技术网

Android OpenGL ES 2.0加载动态纹理

Android OpenGL ES 2.0加载动态纹理,android,opengl-es,loading,opengl-es-2.0,textures,Android,Opengl Es,Loading,Opengl Es 2.0,Textures,我有一个视图需要一次渲染多个图像,我有很多纹理要处理。 问题是,纹理正在改变,因为我在任何给定时间缓存有限数量的图像,所以我需要动态加载纹理,这会严重阻碍渲染。 我该如何解决这个问题?压缩实际上会阻碍您,因为您需要花时间执行压缩算法才能将图像转换为可用形式 您使用了多少种纹理以及它们的大小 如果纹理很小,可以尝试将多个纹理填充到一个大纹理中,并使用纹理坐标选择正确的纹理。这将减少使用glGenTexture和glBindTexture的次数。此外,如果对纹理的访问方式存在任何类型的模式,则可以利

我有一个视图需要一次渲染多个图像,我有很多纹理要处理。 问题是,纹理正在改变,因为我在任何给定时间缓存有限数量的图像,所以我需要动态加载纹理,这会严重阻碍渲染。
我该如何解决这个问题?

压缩实际上会阻碍您,因为您需要花时间执行压缩算法才能将图像转换为可用形式

您使用了多少种纹理以及它们的大小

如果纹理很小,可以尝试将多个纹理填充到一个大纹理中,并使用纹理坐标选择正确的纹理。这将减少使用glGenTexture和glBindTexture的次数。此外,如果对纹理的访问方式存在任何类型的模式,则可以利用该模式将纹理智能地分组到更大的纹理中


如果您可以提供有关纹理性质的其他信息,如其内容是否发生变化或其他任何情况,则您可能会得到更有用的答案。

您是否使用任何类型的压缩?我正在通过565配置中的MediaStore加载缩略图,如果这是您的意思。。。如何使用压缩?纹理是来自SD卡的图像,平均约500x500像素。它们以正方形图像的网格显示。它们由一个单独的加载线程按重要性顺序加载,然后传递给GL线程,以便加载到GL上下文中。我尝试将它们分组成行,以便每行都是GL纹理,但问题是我需要将从媒体存储加载的小位图绘制到保存行纹理的位图中,并且由于画布绘制速度较慢,我会重新绘制纹理加载时间,当新位图加入行纹理时,我还必须重新加载行纹理。如果我理解正确,那么对于每个行纹理,您需要通过Android的Canvas类覆盖一个较小的图像,例如媒体存储中的缩略图?如果是这种情况,为什么不让OpenGL绘制行纹理,然后在其顶部绘制缩略图呢。然后,您就不需要转到canvas类来将这两种纹理混合在一起。