在OpenCL中存储顶点数据

在OpenCL中存储顶点数据,opencl,raytracing,vertex,Opencl,Raytracing,Vertex,我正在尝试使用OpenCL创建一个实时光线跟踪器。我想提供一个选项,在OpenGL中创建类似于VBO的东西,然后使用不同的转换、材质等渲染它们。为了实现这一点,我需要存储这些数据并添加新模型。经过深思熟虑,我决定这样组织一切:所有型号都有一个缓冲区(全局字符*) 每个模型都是该缓冲区的一部分,由球体、三角形和纹理坐标组成(如果不需要纹理,则其计数为0)。 当我们想要在主机上创建模型时,我们使用适当的偏移量调用clEnqueueWriteBuffer。 现在,当我们要渲染场景时,我们填充另一个缓

我正在尝试使用OpenCL创建一个实时光线跟踪器。我想提供一个选项,在OpenGL中创建类似于VBO的东西,然后使用不同的转换、材质等渲染它们。为了实现这一点,我需要存储这些数据并添加新模型。经过深思熟虑,我决定这样组织一切:所有型号都有一个缓冲区
(全局字符*)

每个模型都是该缓冲区的一部分,由球体、三角形和纹理坐标组成(如果不需要纹理,则其计数为0)。 当我们想要在主机上创建模型时,我们使用适当的偏移量调用
clEnqueueWriteBuffer
。 现在,当我们要渲染场景时,我们填充另一个缓冲区,称为“渲染列表”。该缓冲区的每个条目都包含一个指向模型(模型数组中的偏移)、材质信息和变换(平移和旋转)的指针。渲染列表在每帧之前被清除(或覆盖)。 根据所有这些信息,我们现在可以在内核中渲染场景。但这个解决方案似乎太混乱、太复杂。
这是实现灵活光线跟踪器的好方法吗?在OpenCL中有没有一些常见的做法可以做一些更好的事情

查看其他光线跟踪器,例如查看其他光线跟踪器,例如