使用OpenGL功能进行非常基本的体积渲染(用于教学目的)

Dav*_*ave 5 c++ opengl rendering

我有一些学生正在进行体积渲染项目.我正在尝试设计最基本的可能示例来启动它们.我想要做的是有一个窗口,并根据通过底层体积数据集的光线投射独立设置窗口中的每个像素.例如,可以使用Windows API函数轻松完成此操作.但是我们想要使用OpenGL.

我有两个想法:

  1. 使用过剩来创建一个窗口.
  2. 使用一些OpenGL函数手动设置窗口中的每个像素.

或者,稍微复杂一点......

  1. 使用过剩来创建一个窗口.
  2. 创建与窗口大小相同的屏幕外纹理.
  3. 根据光线投射的结果,在纹理中单独设置每个像素.
  4. 将纹理翻转到窗口内容.

所以我的问题是双重的:有没有比这些选择更好的方法?有人能指出我相关的OpenGL函数来完成这些方法吗?

tib*_*bur 3

第一个选项,逐个像素会非常慢!我建议您创建一个与窗口大小相同的 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;
Run Code Online (Sandbox Code Playgroud)