繁体   English   中英

使用屏幕外渲染进行鼠标拾取?

[英]Mouse-picking using off-screen rendering?

我有很多简单对象的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/如果您在Google上四处看看,也会发现更多)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM