mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-30 21:30:04 +00:00 
			
		
		
		
	Downgrade GLSL version to 1.50 (compatible with GL 3.2)
This commit is contained in:
		
							parent
							
								
									1a7bbe2569
								
							
						
					
					
						commit
						9d172ab550
					
				
					 3 changed files with 15 additions and 10 deletions
				
			
		|  | @ -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…
	
	Add table
		Add a link
		
	
		Reference in a new issue