OpenGL 我正在更改我的 z 值,但什么也没发生

OpenGL I'm changing my z value but nothing is happening

本文关键字:什么 我的 OpenGL      更新时间:2023-10-16

我有一个 2D 矩形,我正在将所有顶点的顶点着色器中的 z 分量更改相同的数量 k(这是我用箭头键控制的统一

(
#version 330
layout (location = 0) in vec3 aPos; //vertex shader
layout (location = 1) in vec2 aTexCoord;
out vec3 OurColor;
out vec2 TexCoord;
uniform float k;
void main(){
gl_Position = vec4(aPos.x, aPos.y, aPos.z + k, 1.0f);
TexCoord = aTexCoord;
}
#version 330 core
out vec4 FragColor; //fragment shader
in vec2 TexCoord;
uniform sampler2D texture1;
uniform sampler2D texture2;
void main(){
FragColor = mix(texture(texture1, TexCoord), texture(texture2, TexCoord),     0.5);
}

什么也没发生,矩形似乎没有变远或更近,只有当我使 Z 分量大于 1.0 或小于 -1.0 时,它才会消失。我尝试更改第四个组件,它使对象变得越来越大,就像您期望的 Z 组件一样。

我试图在网上找到解释,但它们都使用预制的数学库,没有人处理底层数学。有人可以解释一下 Z 和 W 的行为方式吗?

顶点着色器(除其他事项外(应该执行ModelViewProjecting矩阵在固定函数管道中执行的操作:将几何图形转换为视图坐标并将其投影为投影坐标。这意味着您应该将投影(通常除以z(合并到顶点着色器输出中。