gpt4 book ai didi

c++ - 使用离屏渲染鼠标拾取?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:55:47 25 4
gpt4 key购买 nike

我的 3d 场景中有很多简单的物体(可能数量很多),所以我认为使用光线追踪通过鼠标拾取物体并不是一个好主意。

我想做这样的事情:

  1. 将所有这些对象渲染到某个 opengl 屏幕外缓冲区,使用指向当前对象的指针而不是他的颜色

  2. 使用真实颜色将同一场景渲染到屏幕上

  3. 当用户选择一个具有 (x,y) 屏幕坐标的点时,我从屏幕外缓冲区(从相应位置)获取值并有一个指向对象的指针

这可能吗?如果是 - 我可以选择什么类型的缓冲区来“用指针绘图”?

最佳答案

我想你可以分两次渲染。首先是您需要拾取的缓冲区或纹理数据,然后在第二次传递显示的数据。我不太熟悉 OGL,但在 DirectX 中你可以这样做:http://www.two-kings.de/tutorials/dxgraphics/dxgraphics16.html .然后您可以找到一种分析纹理的方法。请记住,您正在渲染数据两次,这不一定会使您的渲染时间加倍(因为您不需要应用所有着色器和效果)但它会增加很多。同样,对于每一帧,您基本上从 GPU 向 CPU 发送至少 2MB 的数据(如果您在 2K 显示器上每像素 1 字节),但如果屏幕上有超过 256 个对象,这可能会改变。

编辑:尽管我无法验证教程是否正确,但这里是如何使用 OGL 执行相同操作:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/ (如果你在谷歌上四处看看,还有更多)

关于c++ - 使用离屏渲染鼠标拾取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19460496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com