2

我正在使用 OpenGL 渲染在给定平面中旋转对称的对象模型,并且我希望用户能够滚动模型(可能在旋转、缩放等之后)并确定世界坐标鼠标当前指向的模型。

我提到对称性的原因是我使用单个组件的VBO构建模型以便于使用。与我正在做的事情的类比是自行车车轮 - 我将有一个 VBO 用于辐条,一个用于轮毂,一个用于车轮/轮胎,我会多次重复使用辐条 VBO(之后合适的平移和旋转)。我的第一个问题是,这种安排是否有利于我正在尝试做的那种挑选?例如,我希望生成的模型中的每个人都可以“挑选”。我是否需要为网格中的每个四边形/三角形使用单独的 VBO 来进行我想要做的那种选择?我真的希望不是这样...

另外,最好的挑选算法是什么?我只听说过关于 OpenGL 内置选择模式的负面消息。提前致谢!

4

1 回答 1

3

关于您关于 VBO 的问题,很少有 VBO 并重用它们并没有错。事实上,您可以在一个 VBO 中拥有所有内容,并且只对其进行索引。对于您的自行车车轮类比,辐条顶点之后可以是轮胎顶点,您可以多次绘制辐条的顶点(甚至可以使用实例化,请参阅glMultiDrawElements),然后从相同的 VBO 绘制,但从不同的索引开始,轮胎。

关于您的选择问题,在鼠标下获取模型上点的世界坐标的一种简单方法是读回深度值(glReadPixels在 1x1 矩形上,最好在最后一帧的数据上使用像素缓冲区对象,这样您隐藏传输延迟)。然后调用gluUnproject获取世界坐标。

于 2011-04-04T20:47:07.990 回答