我试图通过单击一个角点,然后根据用户提供的尺寸将其延伸,然后绕任意轴旋转来绘制一个3D长方体。但是,我不确定如何在鼠标单击后指定(x,y,z)元组,因为输出窗口是2D的。而且,我不知道如何延伸该点以形成长方体。
uttx8gqw1#
您需要的是所谓的3D拾取。通常,这是使用光线投射完成的。但是,有一个简单的解决方案(具有可接受的性能),该解决方案涉及在帧缓冲区中渲染屏幕外的场景,其中R/G/B值为32位浮点。在着色器中,您可以使用该像素的x、y和z坐标作为颜色值。然后,当用户单击某个位置时,您只需读出该像素的颜色以获得其位置。
1条答案
按热度按时间uttx8gqw1#
您需要的是所谓的3D拾取。通常,这是使用光线投射完成的。
但是,有一个简单的解决方案(具有可接受的性能),该解决方案涉及在帧缓冲区中渲染屏幕外的场景,其中R/G/B值为32位浮点。
在着色器中,您可以使用该像素的x、y和z坐标作为颜色值。
然后,当用户单击某个位置时,您只需读出该像素的颜色以获得其位置。