|  |  | @ -890,41 +890,46 @@ void ui_draw(UIState *s) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #ifdef NANOVG_GL3_IMPLEMENTATION | 
			
		
	
		
		
			
				
					
					|  |  |  | static const char frame_vertex_shader[] = |  |  |  | static const char frame_vertex_shader[] = | 
			
		
	
		
		
			
				
					
					|  |  |  |   "attribute vec4 aPosition;\n" |  |  |  |   "#version 150 core\n" | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |   "attribute vec4 aTexCoord;\n" |  |  |  |   "in vec4 aPosition;\n" | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   "in vec4 aTexCoord;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "uniform mat4 uTransform;\n" |  |  |  |   "uniform mat4 uTransform;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "varying vec4 vTexCoord;\n" |  |  |  |   "out vec4 vTexCoord;\n" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "void main() {\n" |  |  |  |   "void main() {\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "  gl_Position = uTransform * aPosition;\n" |  |  |  |   "  gl_Position = uTransform * aPosition;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "  vTexCoord = aTexCoord;\n" |  |  |  |   "  vTexCoord = aTexCoord;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "}\n"; |  |  |  |   "}\n"; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static const char frame_fragment_shader[] = |  |  |  | static const char frame_fragment_shader[] = | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   "#version 150 core\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "precision mediump float;\n" |  |  |  |   "precision mediump float;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "uniform sampler2D uTexture;\n" |  |  |  |   "uniform sampler2D uTexture;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "varying vec4 vTexCoord;\n" |  |  |  |   "out vec4 vTexCoord;\n" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |   "out vec4 outColor;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "void main() {\n" |  |  |  |   "void main() {\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "  gl_FragColor = texture2D(uTexture, vTexCoord.xy);\n" |  |  |  |   "  outColor = texture(uTexture, vTexCoord.xy);\n" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "}\n"; |  |  |  |   "}\n"; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | #else | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | static const char line_vertex_shader[] = |  |  |  | static const char frame_vertex_shader[] = | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "attribute vec4 aPosition;\n" |  |  |  |   "attribute vec4 aPosition;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "attribute vec4 aColor;\n" |  |  |  |   "attribute vec4 aTexCoord;\n" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "uniform mat4 uTransform;\n" |  |  |  |   "uniform mat4 uTransform;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "varying vec4 vColor;\n" |  |  |  |   "varying vec4 vTexCoord;\n" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "void main() {\n" |  |  |  |   "void main() {\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "  gl_Position = uTransform * aPosition;\n" |  |  |  |   "  gl_Position = uTransform * aPosition;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "  vColor = aColor;\n" |  |  |  |   "  vTexCoord = aTexCoord;\n" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "}\n"; |  |  |  |   "}\n"; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static const char line_fragment_shader[] = |  |  |  | static const char frame_fragment_shader[] = | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "precision mediump float;\n" |  |  |  |   "precision mediump float;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "uniform sampler2D uTexture;\n" |  |  |  |   "uniform sampler2D uTexture;\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "varying vec4 vColor;\n" |  |  |  |   "varying vec4 vTexCoord;\n" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "void main() {\n" |  |  |  |   "void main() {\n" | 
			
		
	
		
		
			
				
					
					|  |  |  |   "  gl_FragColor = vColor;\n" |  |  |  |   "  gl_FragColor = texture2D(uTexture, vTexCoord.xy);\n" | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   "}\n"; |  |  |  |   "}\n"; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | #endif | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | static const mat4 device_transform = {{ |  |  |  | static const mat4 device_transform = {{ | 
			
		
	
		
		
			
				
					
					|  |  |  |   1.0,  0.0, 0.0, 0.0, |  |  |  |   1.0,  0.0, 0.0, 0.0, | 
			
		
	
	
		
		
			
				
					|  |  | @ -985,13 +990,6 @@ void ui_nvg_init(UIState *s) { | 
			
		
	
		
		
			
				
					
					|  |  |  |   s->frame_texture_loc = glGetUniformLocation(s->frame_program, "uTexture"); |  |  |  |   s->frame_texture_loc = glGetUniformLocation(s->frame_program, "uTexture"); | 
			
		
	
		
		
			
				
					
					|  |  |  |   s->frame_transform_loc = glGetUniformLocation(s->frame_program, "uTransform"); |  |  |  |   s->frame_transform_loc = glGetUniformLocation(s->frame_program, "uTransform"); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   s->line_program = load_program(line_vertex_shader, line_fragment_shader); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   assert(s->line_program); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   s->line_pos_loc = glGetAttribLocation(s->line_program, "aPosition"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   s->line_color_loc = glGetAttribLocation(s->line_program, "aColor"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   s->line_transform_loc = glGetUniformLocation(s->line_program, "uTransform"); |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   glViewport(0, 0, s->fb_w, s->fb_h); |  |  |  |   glViewport(0, 0, s->fb_w, s->fb_h); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |   glDisable(GL_DEPTH_TEST); |  |  |  |   glDisable(GL_DEPTH_TEST); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |