mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-11-04 20:44:02 +08: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 {
 | 
			
		||||
 | 
			
		||||
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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user