就教程而言,我會推薦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!
}