#version 450 // 硬编码的顶点数据 - 4个顶点组成三角形带覆盖整个屏幕 // const vec2 positions[6] = vec2[6]( // vec2( 1.0, 1.0), // 右上 - 三角形1 // vec2(-1.0, 1.0), // 左上 - 三角形1 // vec2(-1.0, -1.0), // 左下 - 三角形1 // vec2(-1.0, -1.0), // 左下 - 三角形2 // vec2( 1.0, -1.0), // 右下 - 三角形2 // vec2( 1.0, 1.0) // 右上 - 三角形2 // ); const float offset = (640-480)/(480.0); const vec2 positions[6] = vec2[6]( vec2( 1.0, -1.0 -offset), // 右下 vec2(1.0, 1.0 + offset), // 右上 - 三角形1 vec2(-1.0, 1.0 + offset), // 左上 - 三角形1 vec2(-1.0, 1.0 + offset), // 左上 - 三角形2 vec2( -1.0, -1.0-offset), // 左下 - 三角形2 vec2( 1.0, -1.0-offset) // 右下 - 三角形2 ); //const float offset = (640-480)/(640.0*2); // 假设宽高比为4:3 // const float offset = 0; // const vec2 positions[6] = vec2[6]( // vec2( -1.0 - offset, 1.0), // 右上 -> 左上 // vec2(-1.0 - offset, -1.0), // 左上 - 左下 // vec2(1.0 + offset, -1.0), // 左下 - 右下 // vec2(1.0 + offset, -1.0), // 左下 - 右下 // vec2( 1.0 + offset, 1.0), // 右下 - 右上 // vec2( -1.0 - offset, 1.0) // 右上 - 左上 // ); const vec2 texCoords[6] = vec2[6]( vec2(1.0, 1.0), // 右上 vec2(0.0, 1.0), // 左上 vec2(0.0, 0.0), // 左下 vec2(0.0, 0.0), // 左下 vec2(1.0, 0.0), // 右下 vec2(1.0, 1.0) // 右上 ); // 输出变量 layout(location = 0) out vec2 outTexCoord; void main() { // 获取顶点位置 vec2 position = positions[gl_VertexIndex]; // 设置输出位置(Vulkan使用不同的坐标系) gl_Position = vec4(position, 0.0, 1.0); // 输出纹理坐标 outTexCoord = texCoords[gl_VertexIndex]; }