我计划创建一个Sparce Voxel八叉树(SVO)引擎,并且在使用openGL渲染每个小立方体或在程序集和c中编写我自己的渲染器之间陷入困境。如果我打算做后者,我不确定如何在屏幕上绘制像素(我在Mac上,10.8)。什么图形上下文/窗口系统将是首选的方法(不是X,我在我的Mac上有我的X问题的分享)。
P.S。引擎需要能够绘制至少50.000个立方体(我将使用opencl / cuda来帮助并行处理多维数据集)。我只是想知道通过专门设计的渲染器绘制是否更有效。
答案 0 :(得分:3)
<强> API 强>
OpenGL是(在某种程度上)最便携的渲染API,你至少有机会保持最新的当前图形硬件功能,虽然这也经常造成它的挫败感。如果您为PC编码,则可以使用提供或多或少相同功能的DirectX10 / 11。 DirectX的驱动程序开销要少一些,而OpenGL是一个状态机,它隐藏了程序员的很多东西。我不确定你是如何看待在汇编程序中做同样的挫折,除非通过“asm&#39;你的意思是写glsl或hlsl着色器:)
<强> SVO 强>
我写了一个OpenGL SVO可视化工具,目前在GTX780上以30 fps渲染62.000个体素立方体,虽然我的设置不是最优的,即它还没有使用实例渲染或三条带或四边形,或基于几何着色器的方法,其中您只需发送框的中心坐标并在着色器中完全生成视觉效果。 OpenGL确实提供了一整套优化渲染的方法,并且它的硬件加速了。
<强>互操作强>
openGL和openCL之间的互操作是微不足道的,而且CUDA也可以很好地与openGL缓冲区集成。我有这两个设置在相同的代码库中工作。第三种方法是使用计算着色器(opengl 4.3+),因此你甚至不需要openCL或CUDA来处理你的立方体。
你打算通过svo发送光线,还是简单地渲染背面剔除,或做些额外的事情?