嘿,我正在尝试将恒定颜色绘制到帧缓冲区,并使用 RGBA 纹理中的 Alpha 通道将其混合。我一直在研究 glBlendFunc 和 glBlendColor,但似乎无法找到忽略纹理中的 RGB 值的方法。我想我必须自己提取 alpha 值并使用 GL_ALPHA 制作第二个纹理。有一个更好的方法吗?
Thanks!
我正在使用颜色编码挑选。这是我正在使用的代码,以便不会选取纹理四边形的透明区域:
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_TEXTURE_2D);
glEnable(GL_ALPHA_TEST);
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, GL_PREVIOUS);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_REPLACE);
glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, GL_TEXTURE);
glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
glAlphaFunc(GL_GREATER, 0.5f);
glColor3ub(myColor[0], myColor[1], myColor[2]);
drawTexturedQuad();
本质上我是说我希望 RGB 在应用纹理之前是任何颜色(这将是 myColor),并且我希望从纹理中获取 ALPHA。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)