就教程而言,我会推荐this one。
- 相反采样2D纹理通过使UV 坐标和获取当前的像素的颜色在纹理UV位置 工作简单。
- 虽然立方贴图使用从 中心立方体的开始,直到它碰到侧 允许它从采样该侧的像素在该特定纹理中的一个沿行进的3D方向矢量。
为天空盒设置单独着色器的原因可能很方便。您可能希望在未来某个时候进行特殊修改。但是我们也可以这样做:pos.xyww;
忽略写入深度缓冲区。
现在注意在顶点着色器中我们设置纹理方向矢量(texDirection)等于当前顶点的位置。请记住,所有向量在到达片段着色器时都会进行插值,因此,将从多维数据集的一侧向另一侧插入它自己,四处走动。
顶点着色器:
in vec3 position;
out vec3 texDirection;
uniform mat4 projection;
uniform mat4 view;
void main() {
vec4 pos = projection * view * vec4(position, 1.0);
gl_Position = pos.xyww; // We ignore the depth buffer here
texDirection = position; // Let it interpolate
}
里面的片段着色器,我们在我们可爱的方向拍摄品尝来自天空盒像素插值texDirection。它碰到其中一边并返回一个颜色,我们将其存储在输出变量颜色中。
片段着色器:
in vec3 texDirection;
out vec4 color;
uniform samplerCube skybox; // The cubemap is a uniform!
void main() {
color = texture(skybox, texDirection); // Get the pixel in direction of texDirection!
}