mirror of
https://github.com/citra-emu/citra.git
synced 2024-11-23 02:40:09 +00:00
Merge pull request #81 from yuriks/downgrade-shader
Downgrade GLSL version to 1.50 (compatible with GL 3.2)
This commit is contained in:
commit
7122c46937
@ -7,9 +7,9 @@
|
|||||||
namespace GLShaders {
|
namespace GLShaders {
|
||||||
|
|
||||||
static const char g_vertex_shader[] = R"(
|
static const char g_vertex_shader[] = R"(
|
||||||
#version 330 core
|
#version 150 core
|
||||||
layout(location = 0) in vec3 position;
|
in vec3 position;
|
||||||
layout(location = 1) in vec2 texCoord;
|
in vec2 texCoord;
|
||||||
|
|
||||||
out vec2 UV;
|
out vec2 UV;
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ void main() {
|
|||||||
})";
|
})";
|
||||||
|
|
||||||
static const char g_fragment_shader[] = R"(
|
static const char g_fragment_shader[] = R"(
|
||||||
#version 330 core
|
#version 150 core
|
||||||
in vec2 UV;
|
in vec2 UV;
|
||||||
out vec3 color;
|
out vec3 color;
|
||||||
uniform sampler2D sampler;
|
uniform sampler2D sampler;
|
||||||
|
@ -155,6 +155,8 @@ void RendererOpenGL::RenderXFB(const common::Rect& src_rect, const common::Rect&
|
|||||||
void RendererOpenGL::InitFramebuffer() {
|
void RendererOpenGL::InitFramebuffer() {
|
||||||
program_id = ShaderUtil::LoadShaders(GLShaders::g_vertex_shader, GLShaders::g_fragment_shader);
|
program_id = ShaderUtil::LoadShaders(GLShaders::g_vertex_shader, GLShaders::g_fragment_shader);
|
||||||
sampler_id = glGetUniformLocation(program_id, "sampler");
|
sampler_id = glGetUniformLocation(program_id, "sampler");
|
||||||
|
attrib_position = glGetAttribLocation(program_id, "position");
|
||||||
|
attrib_texcoord = glGetAttribLocation(program_id, "texCoord");
|
||||||
|
|
||||||
// Generate vertex buffers for both screens
|
// Generate vertex buffers for both screens
|
||||||
glGenBuffers(1, &screen_info.Top().vertex_buffer_id);
|
glGenBuffers(1, &screen_info.Top().vertex_buffer_id);
|
||||||
@ -197,8 +199,8 @@ void RendererOpenGL::RenderFramebuffer() {
|
|||||||
// Bind texture in Texture Unit 0
|
// Bind texture in Texture Unit 0
|
||||||
glActiveTexture(GL_TEXTURE0);
|
glActiveTexture(GL_TEXTURE0);
|
||||||
|
|
||||||
glEnableVertexAttribArray(0);
|
glEnableVertexAttribArray(attrib_position);
|
||||||
glEnableVertexAttribArray(1);
|
glEnableVertexAttribArray(attrib_texcoord);
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
|
|
||||||
@ -216,15 +218,15 @@ void RendererOpenGL::RenderFramebuffer() {
|
|||||||
const GLvoid* uv_offset = (const GLvoid*)(3 * sizeof(GLfloat));
|
const GLvoid* uv_offset = (const GLvoid*)(3 * sizeof(GLfloat));
|
||||||
|
|
||||||
// Configure vertex buffer
|
// Configure vertex buffer
|
||||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, stride, NULL);
|
glVertexAttribPointer(attrib_position, 3, GL_FLOAT, GL_FALSE, stride, NULL);
|
||||||
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, stride, uv_offset);
|
glVertexAttribPointer(attrib_texcoord, 2, GL_FLOAT, GL_FALSE, stride, uv_offset);
|
||||||
|
|
||||||
// Draw screen
|
// Draw screen
|
||||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
glDisableVertexAttribArray(0);
|
glDisableVertexAttribArray(attrib_position);
|
||||||
glDisableVertexAttribArray(1);
|
glDisableVertexAttribArray(attrib_texcoord);
|
||||||
|
|
||||||
m_current_frame++;
|
m_current_frame++;
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,9 @@ private:
|
|||||||
GLuint vertex_array_id;
|
GLuint vertex_array_id;
|
||||||
GLuint program_id;
|
GLuint program_id;
|
||||||
GLuint sampler_id;
|
GLuint sampler_id;
|
||||||
|
// Shader attribute input indices
|
||||||
|
GLuint attrib_position;
|
||||||
|
GLuint attrib_texcoord;
|
||||||
|
|
||||||
struct : std::array<ScreenInfo, 2> {
|
struct : std::array<ScreenInfo, 2> {
|
||||||
ScreenInfo& Top() { return (*this)[0]; }
|
ScreenInfo& Top() { return (*this)[0]; }
|
||||||
|
Loading…
Reference in New Issue
Block a user