零基础学习OpenGL(五)--混合

        OpenGL中,混合用来实现物体透明度。透明就是说一个物体的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个物体的透明度是通过它颜色的aplha值来决定的。

        想加载有alpha值的纹理时,要在纹理生成过程中告诉OpenGL,我们的纹理现在使用alpha通道了:

        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

        保证你在片段着色器中获取了纹理的全部4个颜色分量,而不仅仅是RGB分量:

        // FragColor = vec4(vec3(texture(texture1, TexCoords)), 1.0);

        FragColor = texture(texture1, TexCoords);

                                                                                              丢弃

         OpenGL默认是不知道怎么处理alpha值的,更不知道什么时候应该丢弃片段。我们需要自己手动来弄。GLSL给了discard命令,一旦被调用,它就会保证片段不会被进一步处理,所以就不会进入颜色缓冲。有了这个指令,我们就能够在片段着色器中检测一个片段的alpha值是否低于某个阈值,如果是的话,则丢弃这个片段,就好像它不存在一样。

           vec4 texColor = texture(texture1, TexCoords);

           if(texColor.a < 0.1)

                  discar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值