【发布时间】:2015-04-01 16:11:13
【问题描述】:
我正在创建使用正交视图 (2D) 的游戏。我试图了解顶点着色器中gl_Position 的值。
据我了解x 和y 坐标转换为-1 到1 范围内的屏幕位置,但我对z 和w 的作用感到很困惑,我只知道w 值应设置为1.0
目前我只使用gl_Position.xyw = vec3(Position, 1.0);,其中Position 是二维顶点位置
我使用 OpenGL 3.2。
【问题讨论】:
我正在创建使用正交视图 (2D) 的游戏。我试图了解顶点着色器中gl_Position 的值。
据我了解x 和y 坐标转换为-1 到1 范围内的屏幕位置,但我对z 和w 的作用感到很困惑,我只知道w 值应设置为1.0
目前我只使用gl_Position.xyw = vec3(Position, 1.0);,其中Position 是二维顶点位置
我使用 OpenGL 3.2。
【问题讨论】:
请记住,openGL 也必须适用于 3D,公开 3D 细节比为仅 2D 创建新界面更容易。
Z 组件用于设置顶点的深度,-1,1 之外的点(透视分割后)将不会被绘制,对于 -1,1 之间的值,它将根据深度缓冲区检查是否该片段位于某个先前绘制的三角形后面,如果应该隐藏,则不要绘制它。
w 组件用于透视划分,并允许 GPU 以正确的透视方式插入值。否则纹理看起来很奇怪。
【讨论】: