Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SVO渲染:OpenGL还是自定义渲染器?_Opengl_Cuda_Opencl_Render_Voxel - Fatal编程技术网

SVO渲染:OpenGL还是自定义渲染器?

SVO渲染:OpenGL还是自定义渲染器?,opengl,cuda,opencl,render,voxel,Opengl,Cuda,Opencl,Render,Voxel,我正计划创建一个Sparce体素八叉树(SVO)引擎,在使用openGL渲染每个小立方体或用汇编和c编写自己的渲染器之间左右为难。如果我要做后者,我不确定如何在屏幕上绘制像素(我在Mac上,10.8)。什么样的图形上下文/窗口系统将是这方面的首选方法(不是X,我的Mac上有X的问题) 另外,引擎需要能够绘制至少50000个立方体(我将使用opencl/cuda来帮助并行处理立方体)。我只是想知道通过一个特别设计的渲染器进行绘制是否会更有效 API OpenGL(在一定程度上)是最具可移植性的渲染

我正计划创建一个Sparce体素八叉树(SVO)引擎,在使用openGL渲染每个小立方体或用汇编和c编写自己的渲染器之间左右为难。如果我要做后者,我不确定如何在屏幕上绘制像素(我在Mac上,10.8)。什么样的图形上下文/窗口系统将是这方面的首选方法(不是X,我的Mac上有X的问题)

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

API

OpenGL(在一定程度上)是最具可移植性的渲染API,您至少有机会了解当前图形硬件功能的最新情况,尽管这也经常让它感到沮丧。如果您为PC编写代码,则可以使用DirectX10/11,它或多或少提供相同的功能。DirectX的驱动程序开销稍小,而OpenGL是一个状态机,对程序员隐藏了很多东西。我不确定您如何看待在assembler中做同样的事情,因为这样做会减少挫折感,除非“asm”指的是编写glsl或hlsl着色器:)

Svo

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

互操作

openGL和openCL之间的互操作非常简单,CUDA也可以很好地与openGL缓冲区集成。我在同一个代码库中使用了这两种设置。第三种选择是使用计算着色器(opengl 4.3+),因此您甚至不需要openCL或CUDA来处理多维数据集


您是否计划通过svo发送光线,或者简单地渲染背面剔除的轮廓,或者做一些额外的事情?

如果您不想使用CGL,则使用AGL(苹果图形库)或Cocoa(API)appkit是您的选择。@ocluser我知道我可以使用哪些OpenGL库,我想知道我可以使用什么样的窗口系统,或者我可以用其他方式在屏幕上绘制。只是为了好玩,我使用了实例渲染。同一场景现在以56fps的速度渲染;也就是说:每个实例都有一个独特的mvp和颜色属性。更多的优化(着色器、不推荐的opengl函数、框架、虚拟现实等)将其提升到了惊人的80fps。仍然是一个动态场景,每个mvp都会更新每一帧!