1

我正计划创建一个 Sparce Voxel Octree (SVO) 引擎,并且在使用 openGL 渲染每个小立方体或在汇编和 c 中编写我自己的渲染器之间陷入困境。如果我要做后者,我不确定如何在屏幕上绘制像素(我在 Mac 上,10.8)。什么图形上下文/窗口系统将是首选的方法(不是 X,我在我的 Mac 上遇到了 X 的问题)。

PS 引擎需要能够绘制至少 50.000 个立方体(我将使用 opencl/cuda 来帮助并行处理立方体)。我只是想知道通过专门设计的渲染器进行绘制是否更有效。

4

1 回答 1

3

API

OpenGL 是(在一定程度上)最便携的渲染 API,你至少有机会跟上当前的图形硬件功能,尽管这也经常会造成相当大的挫败感。如果您为 PC 编写代码,您可以使用 DirectX10/11,它提供或多或少相同的功能。DirectX 的驱动程序开销要少一些,而 OpenGL 是一个状态机,对程序员隐藏了很多东西。我不确定你是如何看待在汇编器中做同样的事情的,除非你所说的“asm”是指编写 glsl 或 hlsl 着色器:)

Svo

我编写了一个 OpenGL SVO 可视化器,目前在 GTX780 上以 30 fps 渲染 62.000 个体素立方体,尽管我的设置不是最佳的,即它尚未使用实例渲染或三条或四边形,或基于几何着色器的方法,您只发送在盒子的中心坐标中并完全在着色器中生成视觉效果。OpenGL 确实提供了一整套优化渲染的方法,并且它是硬件加速的。

互操作

openGL 和 openCL 之间的互操作是微不足道的,而且 CUDA 也很好地与 openGL 缓冲区集成。我让这两种设置都在同一个代码库中工作。第三种选择是使用计算着色器(opengl 4.3+),所以你甚至不需要 openCL 或 CUDA 来处理你的立方体。

您是否打算通过 svo 发送光线,或者只是将轮廓背面剔除,或者做一些额外的事情?

于 2014-09-16T11:59:26.547 回答