我有一些关于 OpenGL 中的 3D 纹理和纹理映射的概念性问题,我正试图解决这些问题。问题与代码的实现有关,尤其是本教程中的 3D 纹理:http: //www.codeproject.com/Articles/352270/Getting-started-with-Volume-Rendering? fid=1807805&df=90&mpp=25&noise=3&prof =False&sort=位置&view=正常&spc=放松&select=4729498&fr=1#xx4738025xx
教程中使用的数据集的维度是256 x 256 x 109
(109 2D slices)
1.
该代码提供了一种通过将所有 2D 切片加载到单个数据数组中来将 2D 图像映射到 3D 纹理的方法。然后,它继续将数据映射到 3D 纹理,方法是fIndx
从-1.0f
到 以+1.0f
为步长递增0.003f
。为什么增量是0.003f
? 大约有 666.667 个增量,大约是 2D 切片总数(109 个切片)的 6.11 倍。
for ( float fIndx = -1.0f; fIndx <= 1.0f; fIndx+=0.003f )
{
glBegin(GL_QUADS);
MAP_3DTEXT( fIndx );
glEnd();
}
2.
我试图弄清楚如何使用 3D 纹理在渲染体积中移动。我正在尝试做的是类似于这个网站上的视频:http: //cvlab.epfl.ch/research/medical/em/synapses
当然,该网站中的数据必须是映射到 2D 纹理的 2D 图像。所以,让卷中的每一层都消失显然很容易(但是,我不知道该怎么做!)。我的数据看起来像这样:http ://ctrlv.in/292069
编辑
我的数据集中有 256 个切片,我想逐个浏览每个切片。我怎样才能像视频中一样逐个移动切片?