可以使用OpenGL将实值三角形绘制到缓冲区中吗?

use*_*100 2 c++ opengl gpu

我需要实现图像重建,其涉及在表示图像中的像素的缓冲区中绘制三角形.为这些三角形分配一些要填充的浮点值.如果绘制三角形使得它们重叠,则必须将重叠区域的值相加.

是否可以使用OpenGL实现这一目标?我想利用栅格化三角形是一个可以在显卡上加速的基本图形任务这一事实.我已经有了这个算法的仅cpu实现,但是对于我的目的来说它还不够快.这是由于需要绘制大量三角形.

具体来说我的问题是:

  1. 我可以使用openGL绘制具有实际值的三角形吗?(或者我可以想出一个使用颜色等的黑客?)
  2. OpenGL可以添加三角形重叠的值吗?(再次,我可以处理黑客,如混色)
  3. 我可以恢复像素的实际值作为浮点数或类似的数组进行进一步处理吗?
  4. 我对使用OpenGL绘图 - >使用GPU绘制 - >可能更快执行的想法有误解吗?

另外,我想在虚拟机上运行此代码,因此,据我所知,加速使用OpenGL比在Cuda中使用Cuda这样的实现更可行.这是真的?

编辑:累积缓冲区是一个选项吗?

bam*_*s53 8

  1. 如果32位浮点数足够,那么看起来答案是肯定的:http://www.opengl.org/wiki/Image_Format#Required_formats
  2. 即使在旧的固定管道下,您也可以使用混合模式和功能GL_FUNC_ADD,但我确信片段着色器现在可以更轻松地完成.
  3. glReadPixels() 绘图后会将数据从缓冲区中恢复出来.
  4. 有OpenGL的软件实现,但您可以在设置上下文时进行选择.使用GPU应该比CPU快得多.
  5. 不知道.我从来没有在VM上使用过OpenGL或CUDA.我从来没有使用过CUDA.