我正在创建一个体素引擎。除了一些简单的单纯噪声集成之外,我还创建了块生成,但由于每个四边形的所有面都被绘制,即使是您看不到的面,也非常滞后。光线投射,以避免绘制看不见的面孔
根据我的理解,这通常是使用光线投射处理的,其中我了解基本理论:从相机中画出若干光线并检查碰撞,如果未发现碰撞,则脸部不在视线内,因此应该不被渲染。即使我理解了它的理论,但由于缺乏先验知识以及我在互联网上发现的缺乏知识,所以我还没有能够实现它,即它们给出了代码而不是知识。
我能想象我需要采取的步骤如下:
- 了解OpenCL的(虽然我以前没有使用过它我的理解它可以让你通过更好地利用你的显卡使用我在心智上与OpenGL着色器关联的'内核')。
- 了解光线投射背后的理论和数学。我也听说过我认为具有不同用途的光线追踪。
- 了解如何使用此信息不呈现隐藏的面孔。假设我得到了一个工作实现,我该如何去告诉OpenGL不要渲染隐藏的面部?立方体是一个对象,据我所知,没有办法在OpenGL中只操作顶点的对象的面。 OpenCL如何与OpenGL进行通信? OpenCL不是图形api,因此它不能绘制光线。
任何人都可以指向正确的方向吗?我也相信也有纯粹的OpenGL实现,但我想保留OpenCL方面,因为这是一种学习体验。
在此期间,我想我可以开始在GUI上工作 – SemperAmbroscus