繁体   English   中英

读取原始3D纹理和切片立方体

[英]Read raw 3D texture and slice cube

使用以下命令读取原始的3d(256x256x256个单元)纹理(8位):

f = fopen(file, "rb");
if (f == NULL) return;
int size = width * height * depth;
data = new unsigned char[size*3];
fread(data, 3, size, f);
image = reinterpret_cast<rgb *>(data);
fclose(f);

图像rgba在哪里

typedef unsigned char byte;

    typedef struct {
        byte r;
        byte g;
        byte b;
    } rgb;

我现在想在某个垂直方向上“切片”多维数据集,并使用以下命令显示数据:

glTexImage2D()

抓住这些切片的聪明方法是什么? 我试图弄清楚如何使用循环来获取数据,但是我不确定该如何组织数据,并且我认为这个循环并不简单。

我可以将数据映射为更简单的格式,以便使用直观的切片语法吗?

这只是一个3D阵列。 选择两个轴以标准2D访问模式进行扫描,并改变第三个以更改切片:

for( unsigned int slice = 0; i < numSlices; ++i )
{
    for( unsigned int x = 0; x < xSize; ++x )
    {
        for( unsigned int y = 0; y < ySize; ++y )
        {
            // XY slice
            output[x][y] = array[x][y][slice];

            // XZ slice
            output[x][y] = array[x][slice][y];

            // YZ slice
            output[x][y] = array[slice][x][y];
        }
    }
}

您可以通过Boost.MultiArray获得更Boost.MultiArray

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM