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