着色器
GLSL
顶点着色器:用来接收顶点的输入,在其中我们可以规定接受输入类型的位置比如在0位置,在1位置等等。而这里所说的位置就是为了方便我们在主程序中进行数据的链接。
片段着色器:我们可以将顶点着色器的输出传到片段着色器的输入,进而进行一些控制。
uniform::这种类型的数据是将数据从CPU传送到GPU的着色器的一种方式。这个变量是全局变量,所以说,所有的着色器程序在生命这个的时候名字一定不能一样,这样可以区分不同的uniform变量。此外我们可以在任意阶段使用他。目前来说我们并没有给每个顶点都不同的颜色,但是我们可以通过这个全局变量来控制颜色,难道我们需要给每个顶点都需要写一个uniform变量吗?当然不是,我们只需要在顶点数据中加入一些顶点颜色数据就可以了啊
纹理
为啥要有纹理? 虽然说我们可以给图形的每个顶点传送上对应的颜色值,这就需要我们进行大量的数据传送,这不是我们所希望看到的。于是我们可以找来一张照片贴在图形上,只需要将纹理的坐标对应到不同的部分就可以了。采样 这个概念就是从纹理上提取出对应的颜色就是采样。我理解的纹理贴在对应的图形上的流程是这样的,纹理有纹理坐标,我们通过纹理坐标,利用采样,采到对应这个坐标的颜色信息,然后将这个颜色信息富于相应的坐标点就可以了,然而一般情况下,纹理坐标的范围是在这个0-1,如果超出了比如纹理坐标是10怎魔搞,那就将从1-10这个中间用对应的环绕,镜像重复等办法填充进来,然后再采样信息
理解一下:纹理放大放小的时候情况,纹理放大,像素块被放大,会出现啥情况呢?就是在一个块里可能对应多个纹理坐标,如果此时我才用线性过滤的办法,那我这多个纹理坐标是不是都要取这块像素的颜色值作为这个最终的颜色,所以我们可以用临近做插值的方式进行计算。如果是纹理缩小的话是不是,纹理像素块更小了,然后每一个位置对应的是不是就更加准确了,此时就选最近的那一块像素块的值就可以了。
纹理的一些问题
下图是关于纹理的两种临近和线性的方式。