Opengl 如何使用VAOs实现光线跟踪

Opengl 如何使用VAOs实现光线跟踪,opengl,shader,Opengl,Shader,假设我有一个单一的VAO创建一个棋盘 它由法线、顶点和索引组成,使用一个简单的着色器,通过在坐标上使用模函数交替为电路板着色 我将如何实施拣选 我从这里的其他线程中发现光线跟踪是一条可行之路,但这正是我很难实现的地方 数据由顶点和法线的矢量3和索引的uint组成。如果实现光线相交方法,则使用VAO或VBO是完全不相关的,因为您不打算使用OpenGL进行此操作。您可以手动并在CPU上进行计算。如果您实现了光线相交方法,那么使用VAO或VBO是完全不相关的,因为您不打算使用OpenGL进行计算。您可

假设我有一个单一的VAO创建一个棋盘

它由法线、顶点和索引组成,使用一个简单的着色器,通过在坐标上使用模函数交替为电路板着色

我将如何实施拣选

我从这里的其他线程中发现光线跟踪是一条可行之路,但这正是我很难实现的地方


数据由顶点和法线的矢量3和索引的uint组成。

如果实现光线相交方法,则使用VAO或VBO是完全不相关的,因为您不打算使用OpenGL进行此操作。您可以手动并在CPU上进行计算。

如果您实现了光线相交方法,那么使用VAO或VBO是完全不相关的,因为您不打算使用OpenGL进行计算。您可以在CPU上手动计算。

长话短说,我想在瓷砖周围画一个绿色框架,我的鼠标在上面。因为我不使用2D,所以有一个可以改变的视角。到目前为止,我所了解的是,它再次使用名称返回我的点击,但是我需要做什么来创建瓷砖周围的绿色边框呢?既然全部存储在一个VAO中,我怎么知道绿色框架需要放在哪里?或者我可以检索交叉点的XYZ吗?它不是全部存储在VAO上,您也可以在普通内存中保存一个副本,并使用CPU算法和通常(如果有大量数据)3D空间分区方案从那里进行光线拾取。然后,您可以添加额外的几何体来绘制灰度(?)帧,或者修改VAO的内容以在着色器中触发不同的帧颜色。这一切都取决于您的实现,但首先您应该关注正确的选择。@CSharpie:您所指的选择模式在大多数OpenGL实现中都不受支持,而且速度非常慢。此外,它不是光线测试,只是测试绘图命令是否会在屏幕的给定区域产生输出。这里有一些好的建议:远离OpenGL选择模式!好的,谢谢你们,我想这已经足够了,我需要占用几天的时间。长话短说,我想在瓷砖周围画一个绿色框架,我的鼠标结束了。因为我不使用2D,所以有一个可以改变的视角。到目前为止,我所了解的是,它再次使用名称返回我的点击,但是我需要做什么来创建瓷砖周围的绿色边框呢?既然全部存储在一个VAO中,我怎么知道绿色框架需要放在哪里?或者我可以检索交叉点的XYZ吗?它不是全部存储在VAO上,您也可以在普通内存中保存一个副本,并使用CPU算法和通常(如果有大量数据)3D空间分区方案从那里进行光线拾取。然后,您可以添加额外的几何体来绘制灰度(?)帧,或者修改VAO的内容以在着色器中触发不同的帧颜色。这一切都取决于您的实现,但首先您应该关注正确的选择。@CSharpie:您所指的选择模式在大多数OpenGL实现中都不受支持,而且速度非常慢。此外,它不是光线测试,只是测试绘图命令是否会在屏幕的给定区域产生输出。这里有一些好的建议:远离OpenGL选择模式!好的,谢谢你们,我想这已经足够了,我需要占用几天的时间。