openGL及GLSL的小知识

  • GLSL的变量的限定符的作用

uniform

表明是外部程序传递给顶点着色器和片段着色器的变量

attribute

表明是只能在顶点着色器使用的变量,用来表示顶点坐标,法线,纹理坐标

varying

表明是用于顶点着色器和片段着色器之间传递数据之用

  • openGL中纹理参数的设定
当我们绘制一个三角形时,只需要指定三个顶点的颜色。三角形中其它各点的颜色不需要我们指定,这些点的颜色是OpenGL自己通过计算得到的。 在我们学习OpneGL光照时,法线向量、材质的指定,都是只需要在顶点处指定一下就可以了,其它地方的法线向量和材质都是OpenGL自己通过计算去获得。 纹理的使用方法也与此类似。只要指定每一个顶点在纹理图象中所对应的像素位置,OpenGL就会自动计算顶点以外的其它点在纹理图象中所对应的像素位置。而纹理参数就是设定怎样把几何图元上除顶点以外的点对应到纹理贴图上。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

指当纹理图象被使用到一个大于它的曲面上时(即:有可能纹理图象中的一个像素会被应用到实际绘制时的多个像素。例如将一幅256*256的纹理图象应用到一个512*512的正方形),把纹理图像拉伸到和曲面一样大,并盖上去,使用最接近的一个纹素的颜色(即覆盖此像素的纹素颜色)作为需要贴图的像素颜色。这种方式速度快,视觉效果差,可以用来产生shadow map。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

指当纹理图象被使用到一个大于它的曲面上时(即:有可能纹理图象中的一个像素会被应用到实际绘制时的多个像素。例如将一幅256*256的纹理图象应用到一个512*512的正方形),把纹理图像拉伸到和曲面一样大,并盖上去,使用纹理中坐标最接近的若干个颜色(即覆盖此像素的纹素颜色及其周围的纹素颜色),通过加权平均算法得到需要绘制的像素颜色。这种方式速度慢,但视觉效果好。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

指当纹理图象被使用到一个小于它的曲面上时(即:有可能纹理图象中的一个像素会被应用到实际绘制时的多个像素。例如将一幅256*256的纹理图象应用到一个512*512的正方形),把纹理图像拉伸到和曲面一样大,并盖上去,使用最接近的一个纹素的颜色(即覆盖此像素面积最大的纹素颜色)作为需要贴图的像素颜色。这种方式速度快,视觉效果差,可以用来产生shadow map。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

指当纹理图象被使用到一个小于它的曲面上时(即:有可能纹理图象中的一个像素会被应用到实际绘制时的多个像素。例如将一幅256*256的纹理图象应用到一个512*512的正方形),把纹理图像缩小到和曲面一样大,并盖上去,使用纹理中坐标最接近的若干个颜色(即覆盖此像素的几个纹素颜色),通过加权平均算法得到需要绘制的像素颜色。这种方式速度慢,但视觉效果好。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);//设定纹理坐标的第一个分量
 
 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);//设定纹理坐标的第二分量
 
 

指当纹理坐标的第一维坐标值大于1.0或小于0.0时,应该“截断”,即超过1.0的按1.0处理,不足0.0的按0.0处理。例如:某二维纹理,在绘制某形状时,一像素需要得到纹理中坐标为(3.5, 0.5)的像素的颜色,其中第一维的坐标值3.5超过了1.0,则在GL_CLAMP方式中将被转化为(1.0, 0.5)。如果不指定这个参数,则默认为GL_REPEAT。

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);//设定纹理坐标的第一个分量
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);//设定纹理坐标的第二分量
指当纹理坐标的第一维坐标值大于1.0或小于0.0时,应该 “重复”,即对坐标值加上一个合适的整数(可以是正数或负数),得到一个在[0.0, 1.0]范围内的值,然后用这个值作为新的纹理坐标。例如:某二维纹理,在绘制某形状时,一像素需要得到纹理中坐标为(3.5, 0.5)的像素的颜色,其中第一维的坐标值3.5超过了1.0,在GL_REPEAT方式中将被转化为(0.5, 0.5)。如果不指定这个参数,则默认为GL_REPEAT。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值