【发布时间】:2009-05-06 14:10:23
【问题描述】:
我正在构建一个简单的实体建模应用程序。用户需要能够在正交视图和透视视图中操作对象。例如,当屏幕中有一个框并且用户单击它以选择它时,它需要在角落和中心获取“手柄”,以便用户可以将鼠标移动到这样的手柄上并将其拖动到放大或移动框。
有什么策略可以做到这一点,哪一个是最好的?我可以想到两个明显的:
1) 将手柄视为 3d 对象。 IE。对于一个盒子,将小盒子添加到“主”盒子角落的场景中。问题:这在透视图中不起作用,我需要确定相对于当前缩放级别的框的大小(无论用户放大/缩小多远,手柄都需要具有相同的大小)
2) 渲染场景后添加句柄。渲染到屏幕外缓冲区,以某种方式确定角的 2d 位置并使用常规 2d 绘图技术来绘制手柄。问题:我将如何进行命中测试?我还需要做一个两阶段的命中测试方法;如何在 3d 渲染图像上绘制 2d?回退到 GDI?
这两种方法可能存在更多问题。是否有解决此问题的行业标准方法?
我正在使用 OpenGL,如果这会有所不同的话。
【问题讨论】: