c++ - Opengl 在 2d 或 3d 中显示顶点

标签 c++ opengl 3d

我有问题。 是否可以有两个顶点着色器。一个将以 2D 形式查看顶点,第二个将以 3D 形式查看顶点。 目前我的程序有 2D View 。 2d 和 3d 顶点之间的唯一区别是 3d 中的 vec2(x,y) 将变为 vec3(x,y,z)。所以我正在考虑发送到 gpu vec3 并设置 gl_Position.z=0;

我最大的问题是我为 glm:lookat 和 glm::perspective 选择了魔数(Magic Number)。如果我看到某些东西,则表示它有效。所以当我有 2d 和 3d View 时,一切看起来都很糟糕。 我可以移动相机,所以只做 3d 和改变相机的位置是行不通的。

最佳答案

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

My biggest problem is that i choose magic numbers for glm:lookat and glm::perspective.

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

关于c++ - Opengl 在 2d 或 3d 中显示顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21076376/

相关文章:

c++ - 将 mem_fun 存储在标准容器中

c++ - 单文件程序的未定义虚表

c++ - 实现 pimpl 友好的 unique_ptr

c++ - 如何加载纹理Opengl?

c - 为什么 GlutPostRedisplay 和 sleep 函数在此代码中不起作用?

javafx - 在JavaFX中,如何为网格的反面着色?

c++函数的返回类型是其输入的函数

c# - ILSurface 绘图参数

python - 移动 3D numpy 数组

OpenGL 是否足够稳定以支持 24/7 运行程序?