使用天空盒时常遇到缝隙无法消除的问题,最简单的方法是使用边缘截取
(
GL_CLAMP_TO_EDGE
):总是忽略边界。处于纹理边缘或者靠近纹理边缘的纹理单元都
用作纹理计算,但是不包括边界上的纹理单元。
但这一参数只出现在
OpenGL1.2
及其后续版本中,而我们使用的
VC
中的
opengl
开发包仅
为
1.1,
所以编译时
VC
会报错
:GL_CLAMP_TO_EDGE
没有声明。
事实上由于我们目前系统中使用的
opengl
库文件均为最新版本,
只是
VC
附带开发包为
1.1
,
而
GL_CLAMP_TO_EDGE
本质上仅为一个宏定义,所以我们可以在代码中不使用该宏定义
而直接使用数值
0x812F
来替代,同样可以设置成边缘截取的这一个功能。
即使用:
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,0x812F);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,0x812F);
作为如下代码的替代品。
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP_TO_EDGE);