非常基本的体渲染使用OpenGL函数(用于教学目的)
Very basic volume rendering using OpenGL functions (for teaching purposes)
我有一些学生在做一个关于体渲染的项目。我试图设计一个最基本的例子来帮助他们入门。我想做的是有一个窗口,并根据底层体数据集的光线投射,独立设置窗口中的每个像素。例如,这可以很容易地通过Windows API函数实现。但是我们想用OpenGL
我有两个想法:
- 使用glut创建一个窗口
- 使用OpenGL函数手动设置窗口中的每个像素
或者,稍微复杂一点…
- 使用glut创建一个窗口
- 创建与窗口大小相同的屏幕外纹理
- 根据光线投射的结果,单独设置纹理中的每个像素。
- 将纹理翻转到窗口内容。
所以我的问题是双重的:有没有比这些选择更好的方法?有人能告诉我相关的OpenGL函数来完成这些方法吗?
第一个选项,逐像素会真的慢!我建议你创建一个与窗口大小相同的RGB缓冲区,并使用glDrawPixels来绘制它。
编辑:unsigned char * buffer = new unsigned char [width * height * 3];
glRasterPos(0,0);
glDrawPixels(width,height,GL_RGB,GL_UNSIGNED_BYTE,buffer);
delete [] buffer;
看看这些光线投射的例子,并选择一个适合您的需要:
http://www.daimi.au.dk/~特里尔/? page_id = 98
http://cumbia.informatik.uni-stuttgart.de/ger/research/fields/current/spvolren/
使用opengl进行体渲染的最简单方法是创建一个3D纹理并绘制一组垂直于您的观看方向的透明平面,并通过您的3D体纹理图切片。
通过对切片应用混合,您可以看到体积
相关文章:
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- cv2有什么区别.StereoSGBM_create() 和 cv2.StereoBM_create() 函数用于 Op
- 模板 ctor 类型推导不起作用(没有匹配的构造函数用于初始化 ...)与函数<>参数
- Qt中是否有QLabel::setScaledContent等效函数用于QGraphicsScene?
- 递归函数用于计算 n 个数字之和的意外输出
- 替换(或重新实现?)std::函数用于某些统计和测试
- 如何将成员函数用于同一类的不同对象
- 为什么lambda函数用于stl函数,例如sort(),c 中的max_element()函数以两个参数为输入
- 如何在 Cython 中将C++中的模板化函数用于两种类型
- 编译库的C 挂钩函数用于调试
- 在已发布的结构中添加构造函数(用于 memcpy)是否安全?
- 没有匹配的构造函数用于初始化模板化类的构造函数
- C 无匹配函数用于呼叫错误(默认为参考通过)
- 没有匹配函数用于调用 std::transform,未解析的重载函数类型
- 函数用于随机数(C++11)
- 是否有一个函数用于遍历POSIX环境变量
- “没有匹配的构造函数用于初始化”与矢量
- 函数用于C样式字符串和C++std::string
- 有选择地内联函数(用于调试目的)
- 两个模板函数用于两种标准类型