summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/video_core/renderer_opengl/gl_shaders.h8
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.cpp14
-rw-r--r--src/video_core/renderer_opengl/renderer_opengl.h3
3 files changed, 15 insertions, 10 deletions
diff --git a/src/video_core/renderer_opengl/gl_shaders.h b/src/video_core/renderer_opengl/gl_shaders.h
index f84424c47..380648f45 100644
--- a/src/video_core/renderer_opengl/gl_shaders.h
+++ b/src/video_core/renderer_opengl/gl_shaders.h
@@ -7,9 +7,9 @@
namespace GLShaders {
static const char g_vertex_shader[] = R"(
-#version 330 core
-layout(location = 0) in vec3 position;
-layout(location = 1) in vec2 texCoord;
+#version 150 core
+in vec3 position;
+in vec2 texCoord;
out vec2 UV;
@@ -27,7 +27,7 @@ void main() {
})";
static const char g_fragment_shader[] = R"(
-#version 330 core
+#version 150 core
in vec2 UV;
out vec3 color;
uniform sampler2D sampler;
diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp
index 6470245e6..ce90a9754 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.cpp
+++ b/src/video_core/renderer_opengl/renderer_opengl.cpp
@@ -155,6 +155,8 @@ void RendererOpenGL::RenderXFB(const common::Rect& src_rect, const common::Rect&
void RendererOpenGL::InitFramebuffer() {
program_id = ShaderUtil::LoadShaders(GLShaders::g_vertex_shader, GLShaders::g_fragment_shader);
sampler_id = glGetUniformLocation(program_id, "sampler");
+ attrib_position = glGetAttribLocation(program_id, "position");
+ attrib_texcoord = glGetAttribLocation(program_id, "texCoord");
// Generate vertex buffers for both screens
glGenBuffers(1, &screen_info.Top().vertex_buffer_id);
@@ -197,8 +199,8 @@ void RendererOpenGL::RenderFramebuffer() {
// Bind texture in Texture Unit 0
glActiveTexture(GL_TEXTURE0);
- glEnableVertexAttribArray(0);
- glEnableVertexAttribArray(1);
+ glEnableVertexAttribArray(attrib_position);
+ glEnableVertexAttribArray(attrib_texcoord);
for (int i = 0; i < 2; i++) {
@@ -216,15 +218,15 @@ void RendererOpenGL::RenderFramebuffer() {
const GLvoid* uv_offset = (const GLvoid*)(3 * sizeof(GLfloat));
// Configure vertex buffer
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, stride, NULL);
- glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, stride, uv_offset);
+ glVertexAttribPointer(attrib_position, 3, GL_FLOAT, GL_FALSE, stride, NULL);
+ glVertexAttribPointer(attrib_texcoord, 2, GL_FLOAT, GL_FALSE, stride, uv_offset);
// Draw screen
glDrawArrays(GL_TRIANGLES, 0, 6);
}
- glDisableVertexAttribArray(0);
- glDisableVertexAttribArray(1);
+ glDisableVertexAttribArray(attrib_position);
+ glDisableVertexAttribArray(attrib_texcoord);
m_current_frame++;
}
diff --git a/src/video_core/renderer_opengl/renderer_opengl.h b/src/video_core/renderer_opengl/renderer_opengl.h
index 423467e4c..e90fa0c77 100644
--- a/src/video_core/renderer_opengl/renderer_opengl.h
+++ b/src/video_core/renderer_opengl/renderer_opengl.h
@@ -85,6 +85,9 @@ private:
GLuint vertex_array_id;
GLuint program_id;
GLuint sampler_id;
+ // Shader attribute input indices
+ GLuint attrib_position;
+ GLuint attrib_texcoord;
struct : std::array<ScreenInfo, 2> {
ScreenInfo& Top() { return (*this)[0]; }