我在opengl中将圆形纹理渲染到三角形上。这很好。
我启用GL_BLEND,设置我想要的颜色,然后我将glBlendFunc与GL_ONE和GL_ONE_MINUS_SRC_ALPHA一起使用。
glEnable(GL_BLEND);
glBlendFunc(GL_ONE,GL_ONE_MINUS_SRC_ALPHA);
glColor4(0x0,0xCC,0x0,0xFF);
在我的主平台(Linux)上,我得到了我想要的结果,其中渲染一个圆圈没有方形背景,并且彼此旁边的渲染圆圈看起来像预期的那样。
但是如果我改变平台,在这种情况下改为Windows 10,我怀疑这可能不仅仅是一个windows-linux问题,而且还有硬件依赖?我得到了这些结果
相反,圆形纹理使用看似半透明的白色背景进行渲染。因此,在彼此之上渲染圆圈会产生奇怪的结果。
如果我使用GL_SRC_ALPHA作为我的第一个blendfunc参数,我就删除了这个问题,但是在平台之间再次出现问题时,纹理边缘会出现灰色。
答案 0 :(得分:0)
这种不一致最终变成了每个平台的图像加载器的实现差异,但有趣的是,我没有通过更改图像加载器来解决它。
我实际上只是改变了保存图像的方式。在gimp中,过程是:导出图像(作为png) - >禁用“保存背景颜色” - >禁用“从透明像素保存颜色值”,现在不再出现问题。