iphone – OpenGL纹理混合问题

iphone – OpenGL纹理混合问题,第1张

概述我正在使用OpenGL ES为iPad创建一个2D应用程序,并且有一些问题绘制透明图像. 我正在使用完全透明的png-24图像.我也在改变一些纹理的颜色,这些纹理是白色的,有些区域是透明的或半透明的.一切正常. 但是,当我尝试设置其中一个纹理的alpha值时,它的效果并不正常.颜色太饱和了,如果alpha值= 0,我会在浅灰色背景上留下白色而不是透明的图像.当这样的透明图像在暗图像上时,暗图像变为 我正在使用OpenGL ES为iPad创建一个2D应用程序,并且有一些问题绘制透明图像.

我正在使用完全透明的png-24图像.我也在改变一些纹理的颜色,这些纹理是白色的,有些区域是透明的或半透明的.一切正常.

但是,当我尝试设置其中一个纹理的Alpha值时,它的效果并不正常.颜色太饱和了,如果Alpha值= 0,我会在浅灰色背景上留下白色而不是透明的图像.当这样的透明图像在暗图像上时,暗图像变为与透明图像的颜色类似的颜色.

我已经尝试了glTexEnvi和glBlendFunc的许多参数组合但没有成功.

我对OpenGL不是很了解,所以如果有人有任何建议,那就太棒了.如果有任何细节可以帮助我,请告诉我.

谢谢.

这是OpenGL的初始化

    glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODulATE);    glClearcolor(1.0f,1.0f,1.0f);    gldisable(GL_DEPTH_TEST);    glEnableClIEntState(GL_VERTEX_ARRAY);    glEnableClIEntState(GL_color_ARRAY);    glEnable(GL_TEXTURE_2D);    glBlendFunc(GL_SRC_Alpha,GL_ONE_MINUS_SRC_Alpha);    glEnableClIEntState(GL_TEXTURE_COORD_ARRAY);    glEnable(GL_BLEND);
解决方法 听起来你告诉OpenGL你的纹理有预乘Alpha,但实际上并没有.

你使用什么参数glBlendFunc?

More explanation of pre-multiplied alpha

总结

以上是内存溢出为你收集整理的iphone – OpenGL纹理混合问题全部内容,希望文章能够帮你解决iphone – OpenGL纹理混合问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1078901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存