2014-01-12 142 views
0

我有问题。 是否有可能拥有两个顶点着色器。人们将在2D中查看顶点,在3D中查看顶点。 目前我的程序有2D视图。 2d和3d顶点之间唯一的区别是,3dc中的vec2(x,y)将会是vec3(x,y,z)。所以我想发送到GPU vec3并设置gl_Position.z = 0;Opengl在2D或3D中显示顶点

我最大的问题是我选glm的幻数:lookat和glm :: perspective。如果我看到它的意思就是说它有效。所以当我有2D和3D视图时,一切都看起来很糟糕。 我可以移动相机,这样做3d和相机的位置改变只会不会工作。

回答

1

不,这是不可能的。但是,您可以多次渲染相同的几何图形,但应用了不同的glViewport和投影矩阵。这是呈现3D编辑器的经典“顶部,正面,侧面,透视”视图的规范方式。

我最大的问题是我选glm的幻数:lookat和glm :: perspective。

那么,我会解决这个问题,而不是神奇的数字使用实际的数学来创造所需的效果。

+0

嗯,但我会有问题。因为如果添加hight(z)。即使我在放大地图前设置视图,我会看到这不是2D。 – Luffy

+0

@Luffy:你可以随时切换到正射投影,如果你需要一个。您可能将您的投影矩阵设置放置在重塑处理程序中。我建议你将调用glViewport和投影设置移动到显示处理程序。你可以多次打电话给他们。使用glViewport + glScissor将窗口变成多个窗格。 – datenwolf

+0

我没有重塑处理程序,但我会尝试阅读关于此。我正在以简单的方式做这件事,我计算x,y绘制它们。我只使用本教程中的内容http://www.opengl-tutorial.org/beginners-tutorials/tutorial-6-keyboard-and-mouse/ – Luffy