在cpp中生成3d矩阵的体积

时间:2015-03-27 22:20:08

标签: c++ opengl matrix 3d

我有一个生成带有灰度值的3d矩阵的函数(char值从0到255)。现在我想从这个矩阵中生成一个3d对象,例如我想将这些值显示为3d对象(在cpp中)。以平台为独立且尽可能快的最佳方式是什么? 我已经阅读了一些关于使用OGL的内容,但后来我遇到了以下问题:矩阵最多可以包含$ 4 \ cdot10 ^ 9 $值。当我想将完整的矩阵加载到RAM中时,它将崩溃。因此,从矩阵中直接抽取是不可能的。此外,我只找到了在OGL中绘制2d图像的功能。有没有办法在OGL中绘制三维像素?或者我应该使用另一种方法? 我不需要移动功能(至少目前不需要),我只想显示数据。

编辑2:缩小问题范围:有没有办法在3D空间中使用从3d矩阵中获取的OGL绘制像素?我找不到合适的功能,我只找到了2d功能。

1 个答案:

答案 0 :(得分:0)

您要做的事情称为体积渲染。有各种技术可以实现它,最终取决于你想要它的样子。

也没有简单的方法可以做到这一点。你不能只绘制3d像素。您可以使用GL_POINTS进行绘制,并将每个变换点光栅设置为1像素,但这对您来说可能完全不能令人满意,因为它只会在屏幕上绘制一些像素(您不会在大分辨率上看到任何内容)。

一般的解决方案是使用普通三角形为每个点渲染一个立方体。如果需要alpha混合,请将其排序回前方。如果您需要更具体的答案,则需要缩小您的要求。光线跟踪在体积渲染方面也具有优势。详细了解volume rendering