我正在尝试实现射线拾取算法,用于绘制和选择块(因此,我需要相当数量的准确性)。最初,我使用了一个光线投射实现,但我觉得它不够准确(尽管故障可能与我的交叉测试有关)。无论如何,我决定尝试使用深度缓冲区来选择,并将鼠标坐标转换为世界坐标。执行情况如下:
glm::vec3 Renderer::getMouseLocation(glm::vec2 coordinates) {
float depth = deferredFBO->getDepth(coordinates);
// Calculate the width and height of the deferredFB