Java 如何将形状投影到环境/VBO上?

Java 如何将形状投影到环境/VBO上?,java,opengl,lwjgl,Java,Opengl,Lwjgl,我正在做一个实时战略游戏,我需要在基于立方体体素的地形上绘制选择矩形,我怎么做?我知道有些RTS只是简单的2d/hud/gui/屏幕方法,但我真的很喜欢魔兽争霸3在地形上的表现 伙计们,这不是关于拾取,这是关于在多个不同块的不平表面上渲染一个矩形。类似于魔兽争霸3:世界编辑器中网格的渲染方式! 听起来您想找到所选3d空间的屏幕空间 如果是这种情况,则“拾取”将找到您单击的3d点,然后执行普通的MVP*拾取点进入剪辑空间,除以w,最后乘以您的窗口宽度和高度,即: vec4 clipSpacePt

我正在做一个实时战略游戏,我需要在基于立方体体素的地形上绘制选择矩形,我怎么做?我知道有些RTS只是简单的2d/hud/gui/屏幕方法,但我真的很喜欢魔兽争霸3在地形上的表现

伙计们,这不是关于拾取,这是关于在多个不同块的不平表面上渲染一个矩形。类似于魔兽争霸3:世界编辑器中网格的渲染方式!

听起来您想找到所选3d空间的屏幕空间

如果是这种情况,则“拾取”将找到您单击的3d点,然后执行普通的
MVP*拾取点
进入剪辑空间,除以
w
,最后乘以您的窗口宽度和高度,即:

vec4 clipSpacePt = ModelviewProjection * pickedPoint
clipSpacePt.xyz /= clipSpacePt.w;

vec2 windowSpacePt;
windowSpacePt.x = clipSpacePt.x * windowWidth;
windowSpacePt.y = clipSpacePt.y * windowHeight;

对第一个拾取点以及光标所在位置执行此操作,以获得“投影选择矩形”

谷歌搜索“3d拾取”。@GregPrisament:拾取与将物体投影到地形上无关。@Nicolas:我同意有多种方法可以实现这一点,拾取可能不是最好的,但我确实认为这是可能的。以下是我的想法:您可能会使用拾取来确定“点击”地形单元以及“鼠标悬停”地形单元。然后以不同的颜色渲染由这两个单元格包围的矩形区域,或者其他任何颜色。我已经可以为长方体的两个角拾取2个点,但我不知道如何渲染它!而且我刚刚意识到魔兽世界没有这个,它的世界编辑器有though@NeHatchickVerma当前位置我不确定我是否理解这个问题。您是说您知道如何渲染三维地形,并且知道您选择的地形栅格单元边界?在这种情况下,只需以不同的方式渲染所选内容中的单元格,它们就会看起来“已选定”。如果我遗漏了什么,请澄清。