diff --git a/shaders/texture_loading/glsl/bg.frag.spv b/shaders/texture_loading/glsl/bg.frag.spv index 2c12da6..1a968cf 100644 Binary files a/shaders/texture_loading/glsl/bg.frag.spv and b/shaders/texture_loading/glsl/bg.frag.spv differ diff --git a/shaders/texture_loading/glsl/bg.vert b/shaders/texture_loading/glsl/bg.vert index 335ebdc..9e096f3 100644 --- a/shaders/texture_loading/glsl/bg.vert +++ b/shaders/texture_loading/glsl/bg.vert @@ -1,29 +1,14 @@ #version 450 -// 在没有顶点缓冲区的情况下,通过顶点ID生成全屏 quad -// 顶点ID: 0=(-1,-1), 1=(1,-1), 2=(-1,1), 3=(1,1) -out gl_PerVertex { - vec4 gl_Position; -}; - -layout(location = 0) out vec2 outUV; +layout(location = 0) out vec2 uv; void main() { - vec2 pos; - vec2 uv; - if (gl_VertexIndex == 0) { - pos = vec2(-1.0, -1.0); - uv = vec2(0.0, 0.0); - } else if (gl_VertexIndex == 1) { - pos = vec2(1.0, -1.0); - uv = vec2(1.0, 0.0); - } else if (gl_VertexIndex == 2) { - pos = vec2(-1.0, 1.0); - uv = vec2(0.0, 1.0); - } else { // gl_VertexIndex == 3 - pos = vec2(1.0, 1.0); - uv = vec2(1.0, 1.0); - } - gl_Position = vec4(pos, 0.0, 1.0); - outUV = uv; + // 使用NDC坐标(-1到1),并为四个顶点分配位置 + vec2 positions[4] = vec2[]( + vec2(-1.0, -1.0), vec2(1.0, -1.0), + vec2(-1.0, 1.0), vec2(1.0, 1.0) + ); + + uv = positions[gl_VertexIndex].xy * 0.5 + 0.5; + gl_Position = vec4(positions[gl_VertexIndex], 0.0, 1.0); } \ No newline at end of file diff --git a/shaders/texture_loading/glsl/bg.vert.spv b/shaders/texture_loading/glsl/bg.vert.spv index fb7e2bc..7271ea0 100644 Binary files a/shaders/texture_loading/glsl/bg.vert.spv and b/shaders/texture_loading/glsl/bg.vert.spv differ