Chr*_*ris 55 android textures opengl-es
我需要一些帮助来查找如何使用Android纹理压缩的信息(或示例).我现在有很多PNG,我需要减少他们占用的内存量.我在看PVR压缩,但我无法弄清楚如何在OpenGL中使用它.
有些人可能指出我正确的方向或提供一些例子,因为我找不到任何东西.
ger*_*lez 84
Android上主要支持四种纹理压缩类型:
简而言之,如果您的纹理没有alpha,则可以使用ETC1.如果它们确实具有alpha,并且您希望支持所有设备,则必须将纹理压缩为其他三种类型并根据设备加载它们.
如何使用:
压缩您的png文件(您可以根据纹理类型使用ETC-Pack,PVRTexTool,ATI Compressonator,Nvidia Texure Tools等工具)并添加到项目资产中.
如果您不使用ETC1,请确定设备中可用的扩展名:
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
String s = gl.glGetString(GL10.GL_EXTENSIONS);
if (s.contains("GL_IMG_texture_compression_pvrtc")){
//Use PVR compressed textures
}else if (s.contains("GL_AMD_compressed_ATC_texture") ||
s.contains("GL_ATI_texture_compression_atitc")){
//Load ATI Textures
}else if (s.contains("GL_OES_texture_compression_S3TC") ||
s.contains("GL_EXT_texture_compression_s3tc")){
//Use DTX Textures
}else{
//Handle no texture compression founded.
}
}
Run Code Online (Sandbox Code Playgroud)将压缩纹理加载为原始数据.
使用glCompressedTexImage2D而不是glTexImage2D:
public void onDrawFrame(GL10 gl) {
....
gl.glCompressedTexImage2D(GL10.GL_TEXTURE_2D, level, internalformat, width,
height, border, imageSize, data);
}
Run Code Online (Sandbox Code Playgroud)小智 5
这是一个ol线程,所以我想我会用http://devtools.ericsson.com/etc上提供的信息更新它 .在Khronos标准OpenGL ES 3.0和OpenGL 4.3中,ETC2是强制性的.
归档时间: |
|
查看次数: |
46825 次 |
最近记录: |