本文共 2170 字,大约阅读时间需要 7 分钟。
可以让OpenGL自动生成纹理坐标,而不是使用glTexCoord*()函数显示地分配纹理坐标
void glTexGeni (GLenum coord, GLenum pname, GLint param);coord | pname | param | ||||||
{GL_S,GL_T}或{GL_R,GL_Q} | GL_TEXTURE_GEN_MODE | GL_OBJECT_LINEAR GL_EYE_LINEAR GL_SPHERE_MAP GL_NORMAL_MAP GL_REFLECTION_MAP | ||||||
GL_OBJECT_PLANE | 浮点型数值 | |||||||
GL_EYE_PLANE | 浮点型数值 |
GL_OBJECT_LINEAR:物体模式,纹理会跟随物体的转动而转动(左图)
GL_EYE_LINEAR:视觉模式,纹理部会跟随物体的转动而转动,始终保持原状(右图)GL_SPHERE_MAP:环境纹理(球体贴图)具有很好的反射效果
GL_REFLECTION_MAP:环境纹理(反射纹理)可替换GL_SPHERE_MAP GL_NORMAL_MAP:常用于立方体贴图,或者散射与反射的场景GL_NORMAL_MAP球体贴图 GL_REFLECTION_MAP球体贴图
纹理贴图做法
1设置纹理环绕模式 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 2.设置纹理生成模式 glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR); glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR); 3.启用自动生成纹理 glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T);立方图纹理
立方图纹理是一种比较特殊的纹理技术,它用6幅二维图像构成一个以原点为中心的纹理立方体,对于每个片段,纹理坐标(S,T,R)被当做方向向量看待,每个纹理单元都表示从原点所看到的纹理立方体上的图像 可以调用glTexImage2D函数6次,分别使用他target参数表示立方体的各个面(+X,-X,+Y,-Y,+Z,-Z)从而创建一个立方体glTexParameteri(GL_TEXTURE_CUBE_MAP_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST);glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT, 0, GL_RGBA, imageSize,imageSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, image1);glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT, 0, GL_RGBA, imageSize,imageSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, image4);glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT, 0, GL_RGBA, imageSize,imageSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, image2);glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT, 0, GL_RGBA, imageSize,imageSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, image5);glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT, 0, GL_RGBA, imageSize,imageSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, image3);glTexImage2D(GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT, 0, GL_RGBA, imageSize,imageSize, 0, GL_RGBA, GL_UNSIGNED_BYTE, image6);glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_EXT);glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_EXT);glTexGeni(GL_R, GL_TEXTURE_GEN_MODE, GL_NORMAL_MAP_EXT);
coord | pname | param | ||||||
{GL_S,GL_T}或{GL_R,GL_Q} | GL_TEXTURE_GEN_MODE | GL_OBJECT_LINEAR GL_EYE_LINEAR GL_SPHERE_MAP GL_NORMAL_MAP GL_REFLECTION_MAP | ||||||
GL_OBJECT_PLANE | 浮点型数值 | |||||||
GL_EYE_PLANE | 浮点型数值 |
转载地址:http://wfumi.baihongyu.com/