首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓设备上缺少DXT5纹理中的α通道

安卓设备上缺少DXT5纹理中的α通道
EN

Stack Overflow用户
提问于 2013-07-01 13:05:26
回答 1查看 959关注 0票数 2

我正在将移动游戏移植到Android,并希望在OpenGL中使用压缩纹理,就像在iOS上使用PVR纹理一样。

我已经设法转换我的纹理从PNG到DXT,并运行在GalaxyTab10.1与Nvidia Tegra 2芯片组的游戏。然而,在我的DXT5格式的纹理中没有平滑的α。它们看起来像1位α的DXT1 1纹理。

我已经阅读并运行了这里的示例:http://software.intel.com/en-us/articles/android-texture-compression

我试过这个很好的图书馆:Library

但结果是一样的。没有阿尔法通道。请帮我解决这个问题。我真的被困住了。

谢谢。

详细信息:

  1. 我使用了带有标志"-nomips -bc3 -alpha“的nvcompress工具版本2.1.0 (当然有很多变化,但没有成功)。
  2. 我正在使用OpenGL ES1库。
  3. 我的openGL代码: 整数宽度=//.整数高度=//.无符号字符* textureData =//.int numMipMaps =//.int格式=//.GLuint纹理= 0;glGenTextures(1,&织构);glBindTexture(GL_TEXTURE_2D,纹理);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);int blockSize;GLuint格式;开关(格式)( case S3TC_DXT1: format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT;blockSize = 8;break;大小写S3TC_DXT3: GL_COMPRESSED_RGBA_S3TC_DXT3_EXT= GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;blockSize = 16;blockSize;S3TC_DXT5: format = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;blockSize = 16;blockSize;case ATC: format = GL_ATC_RGBA_EXPLICIT_ALPHA_AMD;blockSize= 16;blockSize;default: //Error.中断;} int偏移量= 0;for(int i= 0;i< numMipMaps;i++) { int size =((宽度+ 3) / 4) *(高度+ 3) / 4) * blockSize;glCompressedTexImage2D(GL_TEXTURE_2D,i,格式,宽度,高度,0,大小,textureData +偏移量);偏移量+=大小;//缩放下一个级别。宽度/= 2;高度/= 2;}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-01 07:53:22

终于发现了问题。我的游戏中的OpenGL状态被配置为与前置α通道一起工作。我在我的构建系统中添加了特殊的“预乘”步骤,并得到了适当的结果。

混合功能设置:

代码语言:javascript
复制
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17405188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档