在几何着色器中应用转换

所以,我试图在opengl(3.3)中编程一种机器人。 这个想法是,我有一些简单的块代表他的身体(他的arm有4个矩形,一个是躯干,最后一个是头部)。 简化一个我的想法的一个坏的画面。

在这里输入图像说明

所以现在我想要做的是让他根据键盘命令移动他的arm。 这样做只是旋转每个arm的数量,你想要的(也翻译)。 但是我被困住了,因为我发现制作条纹矩形(只是边框)的唯一方法是使用几何着色器。 从我对opengl知之甚less,转换被应用在顶点着色器中,这对我的想法是行不通的。 在几何着色器上应用转换效率低下? (这是从我所知道的)。 如果是这样,是否有一个更容易的方法来绘制这些矩形?

编辑:好的,我可以简化很多这个问题。 问题是我想绘制这些“骨架”的矩形,但我知道如何做的唯一方法是使用几何着色器。 但是,由于这个问题的转变,所以我想避免这样做。 还有另一种方法来绘制这些骨骼形状?

看起来你对每种types着色器可以做什么都没有清楚的理解。 你不需要几何着色器来做到这一点,顶点着色器就足够了。

我建议你看看这个教程 ,展示如何在现代OpenGL中绘制三角形。 一旦你了解了如何绘制,使用函数void CGLRenderer::SetData() ,你可以在其中设置原始图元的实际顶点位置。 你可能想要做的是修改顶点缓冲区对象的内容取决于你按的键,这将改变形状的位置/方向/大小。

也许这是另一个很好的教程给你。 它展示了如何使用片段和顶点着色器在WebGL中创建一个旋转三角形。 在这里看到结果。