Opengl es 用GLCompressedEximage2D分割断层

Opengl es 用GLCompressedEximage2D分割断层,opengl-es,textures,Opengl Es,Textures,我正在一台支持GL_OES_texture_compression_astc扩展的设备上运行OpenGL ES应用程序。我有一个3000x2000像素的纹理,当我调用glTexImage2D时,一切都正常 为了压缩图像,我下载了并执行了以下命令: ./astcenc.exe-c player.png player.astc 6x5-中等 但当我在GLCompressedEximage2D中使用player.astc时,该函数会导致分段错误。这是我的密码: GlactiveTextureRegl_

我正在一台支持GL_OES_texture_compression_astc扩展的设备上运行OpenGL ES应用程序。我有一个3000x2000像素的纹理,当我调用glTexImage2D时,一切都正常

为了压缩图像,我下载了并执行了以下命令:

./astcenc.exe-c player.png player.astc 6x5-中等

但当我在GLCompressedEximage2D中使用player.astc时,该函数会导致分段错误。这是我的密码:

GlactiveTextureRegl_TEXTURE0; glBindTextureGL_纹理_2D,tids[0]; GLCompressedEximage2DGL_纹理_2D,0,GL_压缩_RGBA_ASTC_6x5_KHR,3000,2000,0,大小,数据; GLTEX参数化GLU纹理2D,GLU纹理MIN过滤器,GLU线性; GLTEX参数化GLU纹理2D,GLU纹理MAG滤波器,GLU线性; GLBindTextureGLU纹理2D,0


我检查了尺寸和数据,它们看起来很好。我能做些什么来解决这个问题吗?

马里OpenGL ES SDK中有一个使用ASTC纹理的示例:


您说大小的值很好,但如果您得到的是segfault错误,而不是呈现损坏,那么这很可能就是问题所在。那么您传递的大小值是多少?根据我对算法的理解,压缩大小应该是3000/6*2000/5*16=3200000。压缩文件的大小为320016字节,接近。我想我可以使用文件大小作为压缩图像的大小,但我错了。它必须精确设置为3200000。坦率地说,这有点令人沮丧。是的,压缩器添加了一个元数据头,所以我认为您需要停止。