设为首页 加入收藏

TOP

OpenGL超级宝典学习笔记——纹理映射(一)(二)
2015-02-25 22:43:07 来源: 作者: 【 】 浏览:52
Tags:OpenGL 超级 宝典 学习 笔记 纹理 映射
zei width, GLsizei height);


这些参数与上面解释过的是一样的意义。注意没有glCopyTexImage3D函数,但是我们仍可以用glTexSubImage3D函数把2维的颜色缓冲区中的数据,应用到3维纹理的一个平面中。


要把纹理映射到几何图元中,我们需要告诉OpenGL如何映射这些纹理。纹理元素不是根据内存中的位置来放置的(与像素不同)。纹理用更抽象的纹理坐标来确定纹理元素放置的位置。纹理坐标包含s、t、r和q坐标轴类似于顶点坐标的x、y、z和w,以此来支持1维到3维的纹理。q用来缩放纹理坐标,即纹理坐标归一化后的坐标值为s/q、t/q、r/q,默认为1.0。纹理坐标值为浮点数,范围为[0.0,1.0]。下图解释纹理坐标如何放置纹理元素的:


image


我们可以通过glTexCoord函数来设置纹理坐标,这类似于设置顶点坐标。下面是3个常用的glTexCoord变型:


void glTexCoord1f(GLfloat s);


void glTexCoord2f(GLfloat s, GLfloat t);


void glTexCoord3f(GLfloat s, GLfloat t, GLfloat r);


注意纹理坐标像表面法线,和颜色值一样要在设置顶点之前进行设置。用上面的这些函数为每个顶点设置纹理坐标。然后OpenGL会根据需要对纹理进行缩放后映射到几何图元中(其中应用到纹理过滤,后面再解释)。下图是把2维的纹理映射到一个四方形GL_QUADE图元中,注意纹理的四个角与四方形的四个角是一一对应的。


image


当然我们还可以把一个四方形的纹理图映射到一个三角形的几何图元中:


image


纹理坐标也可以通过纹理矩阵来进行变换。纹理矩阵的工作方式与投影矩阵,模型视图矩阵类似。通过glMatrixMode(GL_TEXTURE):来开启纹理矩阵模式,在此函数调用后面的矩阵变换将被应用于纹理坐标。纹理坐标可以进行移动、缩放、旋转。纹理矩阵的栈最多只能容纳两个纹理矩阵。通过glPushMatrix 和glPopMatrix来进行栈操作。


下面的例子是一个金字塔,我把每个面设置成不同的颜色,然后再进行纹理坐标映射,并使用定时器让金字塔旋转。


纹理图如下:


image


pyramid代码如下:


效果图如下:


image


image


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇OpenGL超级宝典学习笔记——操作.. 下一篇OpenGL超级宝典学习笔记——纹理..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: