好的,这是一个相对简单的问题,我想知道在屏幕空间中,刚刚绘制了一个特定的网格。然后我计划将该信息存储在某种数据存储中,这样当我与屏幕空间中的某些东西交互时,我可以在寄存器中查找并找到对象,即单击屏幕上绘制的宇宙飞船,然后选择目标等等
我找不到任何方法来找出网格被绘制到的像素...
或者,如果我遗漏了一些关于我想要做什么的明显内容,请告诉我!
没有简单的方法可以做到这一点。但是您可以使用另一个纹理作为渲染目标,并使用独特的颜色渲染这些网格。
因此,例如,您将 #FF0000 提供给网格 A,并将其也绘制到具有该颜色的第二个渲染目标。现在,当您从第二个渲染目标中选择一个像素并查看该颜色时,如果它是#FF0000,您可以理解,该像素是网格 A 的一部分。因此,您可以在单击时轻松选择在某个像素上绘制的网格这些像素之一。
为什么不将屏幕空间坐标解投影到 3D 空间中?我遇到的唯一问题是我会留下一架飞机,我可以检查网格是否与那架飞机相交,但我经常有多个“选择”候选者。
查看 Google 的 DirectX Unproject 并且有各种文章讨论它。有时对某些人来说实现起来很复杂,但做得好实际上很漂亮;不要被网上那些说它不起作用的人推迟,它确实有效!