我正计划创建一个稀疏的体素八叉树引擎,并且在使用openGL渲染每个小立方体和用c编写自己的渲染器之间左右为难。如果我打算做后者,我不确定如何在屏幕上绘制像素(我在Mac上,10.8)。哪种图形环境/窗口系统是解决这个问题的首选方法(不是X,我的Mac上也有X的问题)。
另外,引擎需要能够绘制至少50.000个立方体(我将使用opencl/cuda来帮助并行处理立方体)。我只想知道通过一个特别设计的渲染器来绘制是否会更有效率。
发布于 2014-09-16 19:59:27
接口
OpenGL (在某种程度上)是最可移植的渲染应用编程接口,你至少有机会跟上当前的图形硬件功能,尽管这也经常带来一些挫折。如果你为PC编写代码,你可以使用DirectX10/11,它提供了或多或少相同的功能。DirectX的驱动程序开销要少一点,而OpenGL是一个状态机,它对程序员隐藏了很多东西。我不确定你如何看待在汇编程序中做同样的事情,而不是更少的挫折感,除非你所说的“asm”是指编写glsl或hlsl着色器:)
Svo
我写了一个OpenGL SVO可视化工具,它目前在GTX780上以30 fps的速度渲染62.000个体素立方体,尽管我的设置并不是最优的,即它还没有使用实例化渲染或三条线或四元线,或者是基于几何着色器的方法,其中只发送长方体的中心坐标并完全在着色器中生成视觉效果。OpenGL确实提供了一整套优化渲染的方法,而且它的硬件加速。
互操作
openGL和openCL之间的互操作是微不足道的,而且CUDA还与openGL缓冲区很好地集成在一起。我让这两个设置在相同的代码库中工作。第三种选择是使用计算着色器(opengl ),所以你甚至不需要openCL或4.3+来处理你的立方体。
您是否计划通过svo发送光线,或者只是渲染背面剔除的轮廓,或者做一些额外的事情?
https://stackoverflow.com/questions/12207919
复制相似问题