OpenGL 三维纹理

一直对OpenGL三维纹理的纹理坐标(s,t,r,q)不是很理解得清楚。今天查了一下资料,算是有点眉目。


首先,其中的q是一个缩放因子,相当于顶点坐标中的w。实际应用在纹理读取中的坐标应该是s/q,t/q,r/q。默认情况下,q是1.0。通常情况下貌似没什么用,但是在一些产生纹理坐标的高级算法比如阴影贴图中,比较有用。


另外一个问题就是s、t、r三个坐标的方向问题,他们分别究竟代表哪个方向上的坐标呢?在做光线投射体绘制的时候,先将CT图像序列逐个读入,然后用函数glTexImage3D指定三维纹理的时候,对于width、height、depth分别所指的三个方向十分模糊。看图一。

                                                          

图一 通过三维纹理坐标访问体数据


可以看出,s、t、r分别相当于普通坐标系中的x、y、z三个方向。分别对应glTexImage3D中的参数width、height、depth。

void glTexImage3D(GLenum  target,

GLint  level,

GLint  internalFormat,

GLsizei  width,

GLsizei  height,

GLsizei  depth,

GLint  border,

GLenum  format,

GLenum  type,

const GLvoid *  data);


这样在指定三维纹理数据的时候,对于体数据在GPU memory中的排列以及今后的存取就有比较明确的认识了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值