纹理过滤
纹理拉伸:重复拉伸和截取拉伸
用于指定纹理坐标超过(00.0,1.0)范围时所发生的行为,使用glTexParameterf函数指定,GL_TEXTURE_WRAP_S 定义 s 坐标超出范围[0.0, 1.0]的情况,GL_TEXTURE_WRAP_T 设定 t 坐标。
- GL_REPEAT 重复纹理,超过1的部分其实只看它的小数部分,也就是说比如纹理坐标为2.4,那么相当于取样0.4处的纹理值。
- GL_CLAMP_TO_EDGE 采样纹理边缘,不想要任何格式的重复,应该使用 GL_CLAMP_TO_EDGE,超过1的部分都当成1.
- GL_MIRRORED_REPEAT 重复纹理和镜像,在重复的基础上呈现镜像效果。
在立方体纹理的例子上,修改一下vertices数组,增加一个变量i
float vertices[] = new float[] {
// 顶点 颜色 纹理坐标
//前面
0, 0, 1, 1,1,1,0, 0.5f*i, 0.5f*i,
1, 1, 1, 1,0,0,0, 1.0f*i, 0.0f*i,
-1, 1, 1, 1,0,0,0, 0.0f*i, 0.0f*i,
0, 0, 1, 1,1,1,0, 0.5f*i, 0.5f*i,
-1, 1, 1, 1,0,0,0, 0.0f*i, 0.0f*i,
-1,-1, 1, 1,0,0,0, 0.0f*i, 1.0f*i,
0, 0, 1, 1,1,1,0, 0.5f*i, 0.5f*i,
-1,-1, 1, 1,0,0,0, 0.0f*i, 1.0f*i,
1,-1, 1, 1,0,0,0, 1.0f*i, 1.0f*i,
0, 0, 1, 1,1,1,0, 0.5f*i, 0.5f*i,
1,-1, 1, 1,0,0,0, 1.0f*i, 1.0f*i,
1, 1, 1, 1,0,0,0, 1.0f*i, 0.0f*i,
//后面
0, 0,-1, 1,1,1,0, 0.5f*i, 0.5f*i,
1, 1,-1, 1,0,0,0, 1.0f*i, 0.0f*i,
1,-1,-1, 1,0,0,0