Browse Source

gl_shader_gen: Use explicit locations for vertex shader attributes.

nce_cpp
bunnei 10 years ago
parent
commit
b7b11eb5e7
  1. 18
      src/video_core/renderer_opengl/gl_shader_gen.cpp
  2. 6
      src/video_core/renderer_opengl/gl_shader_util.cpp

18
src/video_core/renderer_opengl/gl_shader_gen.cpp

@ -362,15 +362,14 @@ out vec4 color;
} }
std::string GenerateVertexShader() { std::string GenerateVertexShader() {
static const std::string out = R"(
#version 330
in vec4 vert_position;
in vec4 vert_color;
in vec2 vert_texcoord0;
in vec2 vert_texcoord1;
in vec2 vert_texcoord2;
std::string out = "#version 330\n";
out += "layout(location = " + std::to_string((int)ATTRIBUTE_POSITION) + ") in vec4 vert_position;\n";
out += "layout(location = " + std::to_string((int)ATTRIBUTE_COLOR) + ") in vec4 vert_color;\n";
out += "layout(location = " + std::to_string((int)ATTRIBUTE_TEXCOORD0) + ") in vec2 vert_texcoord0;\n";
out += "layout(location = " + std::to_string((int)ATTRIBUTE_TEXCOORD1) + ") in vec2 vert_texcoord1;\n";
out += "layout(location = " + std::to_string((int)ATTRIBUTE_TEXCOORD2) + ") in vec2 vert_texcoord2;\n";
out += R"(
out vec4 primary_color; out vec4 primary_color;
out vec2 texcoord[3]; out vec2 texcoord[3];
@ -382,6 +381,7 @@ void main() {
gl_Position = vec4(vert_position.x, -vert_position.y, -vert_position.z, vert_position.w); gl_Position = vec4(vert_position.x, -vert_position.y, -vert_position.z, vert_position.w);
} }
)"; )";
return out; return out;
} }

6
src/video_core/renderer_opengl/gl_shader_util.cpp

@ -66,12 +66,6 @@ GLuint LoadProgram(const char* vertex_shader, const char* fragment_shader) {
glAttachShader(program_id, vertex_shader_id); glAttachShader(program_id, vertex_shader_id);
glAttachShader(program_id, fragment_shader_id); glAttachShader(program_id, fragment_shader_id);
glBindAttribLocation(program_id, Attributes::ATTRIBUTE_POSITION, "vert_position");
glBindAttribLocation(program_id, Attributes::ATTRIBUTE_COLOR, "vert_color");
glBindAttribLocation(program_id, Attributes::ATTRIBUTE_TEXCOORD0, "vert_texcoord0");
glBindAttribLocation(program_id, Attributes::ATTRIBUTE_TEXCOORD1, "vert_texcoord1");
glBindAttribLocation(program_id, Attributes::ATTRIBUTE_TEXCOORD2, "vert_texcoord2");
glLinkProgram(program_id); glLinkProgram(program_id);
// Check the program // Check the program

Loading…
Cancel
Save