> 文章列表 > 第三十五章 混合总结

第三十五章 混合总结

第三十五章 混合总结

混合:实现物体透明度的一种技术。令物体的颜色是物体本身的颜色和背后其他物体的颜色的不同强度的结合。
物体的透明度是通过颜色的alpha值决定的,该值是颜色向量的第四个分量,如果第四分量是1,则透明度为0,如果第四分量为0,则透明度为 全透明
纹理一般来说有三个颜色分量,但一些材质会有一个内嵌的alpha通道,对每个纹素,英文:Texel,都包含了一个alpha值。能准确告诉我们纹理各个部分的
透明度。

下面学习一下,怎么让某些图片不透明,或者完全透明。
举例:丢弃一个图片中除去中间部分,其他的空白的片段要全部丢弃。相当于要透视其他空白部分,不将这些片段存储到颜色缓冲中。

需要学习如何加载一个透明的纹理。
首先加载有alpha值的纹理,stb_image在纹理有alpha通道的时候会自动加载,但是我们最好告诉OpenGL,纹理现在在使用alpha通道:
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
保证在片段着色器中获取纹理的全部4个颜色分量,而不仅仅是RGB分量:
FragColor = texture(texture1, TexCoords);

下面举例在场景中加入几颗草的物体:
首先创建一个vector,向里面添加几个glm::vec3变量代表草的位置:
vectorglm::vec3 vegetation;
vegetation.push_back(glm::vec3(-1.5f, 0.0f, -0.48f));
vegetation.push_back(glm::vec3( 1