mirror of
https://github.com/citra-emu/citra.git
synced 2024-12-24 03:40:08 +00:00
Downgrade GLSL version to 1.50 (compatible with GL 3.2)
This commit is contained in:
parent
1a7bbe2569
commit
9d172ab550
@ -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;
|
||||
|
@ -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++;
|
||||
}
|
||||
|
@ -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]; }
|
||||
|
Loading…
Reference in New Issue
Block a user