我有很多简单对象的3d场景(可能是很多它们),所以我认为使用光线跟踪来通过鼠标拾取对象并不是一个好主意。
我想做这样的事情:
将所有这些对象渲染到一些opengl离屏缓冲区中,使用指向当前对象的指针而不是他的颜色
使用真实颜色将相同的场景渲染到屏幕上
有可能吗?如果是 - 我可以选择哪种类型的缓冲区“用指针绘图”?
答案 0 :(得分:0)
我想你可以两次渲染。首先是您需要的缓冲区或纹理数据,然后在第二次传递显示的数据。我对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,还有更多内容)