Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL-glBlendFunc_Opengl_Glblendfunc - Fatal编程技术网

OpenGL-glBlendFunc

OpenGL-glBlendFunc,opengl,glblendfunc,Opengl,Glblendfunc,我一直在努力寻找glBlendFunc内部工作背后的一些具体数学 我只想澄清一下,我知道混合方程是: SRCConnels*srcFactor+DSTConnels*dstFactor=channelsRendered 我的问题是,SRCConnels、DSTConnels和channels是用3向量(r,g,b)表示还是用4向量(r,g,b,a)表示 因为(0.2,0.2,0.2,1.0)和(1.0,1.0,1.0,0.2)看起来应该是一样的,所以这里可能存在歧义。glBlendFunc适用于

我一直在努力寻找glBlendFunc内部工作背后的一些具体数学

我只想澄清一下,我知道混合方程是:

SRCConnels*srcFactor+DSTConnels*dstFactor=channelsRendered

我的问题是,SRCConnels、DSTConnels和channels是用3向量(r,g,b)表示还是用4向量(r,g,b,a)表示


因为(0.2,0.2,0.2,1.0)和(1.0,1.0,1.0,0.2)看起来应该是一样的,所以这里可能存在歧义。

glBlendFunc
适用于所有四个频道
glBlendFuncSeparate
将RGB与alpha分开


描述了所有不同的混合模式以及应用于不同通道的操作。同样包括alpha通道上的操作。

此外,openGL如何将完全透明的像素解释为来自png文件?(0,0,0,0)或(1,1,1,0)?我发现openGL将完全透明的像素解释为(1,1,1,0),这是为什么?有没有办法让它将它们解释为(0,0,0,0)?@MattPeck:“openGL是如何将一个完全透明的像素解释为来自png文件的?”;OpenGL不解释PNG文件。您可以为OpenGL提供任意像素数据;OpenGL不知道也不关心它是否来自PNG文件。是PNG解压器决定了“透明”像素的外观,而不是OpenGL。@MattPeck你的问题毫无意义。透明像素由于具有零alpha分量而透明。因此,如果该像素是源颜色,并且您使用的是
GL\u SRC\u ALPHA
片段的颜色是无关的。然而,我不认为这是你真正想要的。如果问题是PNG文件在需要黑色时使用白色,则可以在着色器中重新映射该文件,或者如果要使用史前图像,则可以使用
glPixelMap
(如果要使用史前图像,请使用着色器)。这样做的原因是在混合片段之前执行片段着色器。