citra-emu
/
citra
Archived
1
0
Fork 0

Merge pull request #81 from yuriks/downgrade-shader

Downgrade GLSL version to 1.50 (compatible with GL 3.2)
This commit is contained in:
bunnei 2014-08-28 12:10:40 -04:00
commit 7122c46937
3 changed files with 15 additions and 10 deletions

View File

@ -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;

View File

@ -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++;
}

View File

@ -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]; }