Android中OpenGL ES贴图无法显示问题的可能原因

最近在Android中使用OpenGL时遇到了这样的问题:一切代码没有问题,模拟器上也运行正常,但是在实机上就会出现贴图错误,纹理无法显示,只有灰白的底色。

对于这个问题找了很久的解决方法,都没有成功。最后发现其实是文件夹名称的问题。贴图文件原来是保存于drawable文件夹下的,并没有根据Dpi而建立多个文件夹,以为这样就会默认使用drawable文件夹内的资源。对于模拟器而言确实如此,但是对于实机就会出现问题。解决方法是建立drawable-nodpi文件夹,至少对我的情况来说问题就得到了解决。

另外看到的其他的可能原因还有贴图本身的问题,比如说文件尺寸过大、边长不是2的n次方等。我在自己的X10上测试了一下,边长确实有着前述的限制,不过即使是1024依旧可以正确显示,可见对文件大小的要求并不严苛。经测试1024×1024分辨率32位的PNG没有问题。