|  | @@ -35,7 +35,7 @@ void nvgluDeleteFramebuffer(NVGcontext* ctx, NVGLUframebuffer* fb); | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | #ifdef NANOVG_GL_IMPLEMENTATION |  |  | #ifdef NANOVG_GL_IMPLEMENTATION | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | #if defined(NANOVG_GL3) |  |  |  | 
														
													
														
															
																|  |  |  |  |  | #if defined(NANOVG_GL3) || defined(NANOVG_GLES2) || defined(NANOVG_GLES3) | 
														
													
														
															
																|  |  | // FBO is core in OpenGL 3>. |  |  | // FBO is core in OpenGL 3>. | 
														
													
														
															
																|  |  | #	define NANOVG_FBO_VALID 1 |  |  | #	define NANOVG_FBO_VALID 1 | 
														
													
														
															
																|  |  | #elif defined(NANOVG_GL2) |  |  | #elif defined(NANOVG_GL2) | 
														
													
												
													
														
															
																|  | @@ -46,14 +46,21 @@ void nvgluDeleteFramebuffer(NVGcontext* ctx, NVGLUframebuffer* fb); | 
														
													
														
															
																|  |  | #	endif |  |  | #	endif | 
														
													
														
															
																|  |  | #endif |  |  | #endif | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  |  |  |  | static GLint defaultFBO = -1; | 
														
													
														
															
																|  |  |  |  |  | 
 | 
														
													
														
															
																|  |  | NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int w, int h, int imageFlags) |  |  | NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int w, int h, int imageFlags) | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | #ifdef NANOVG_FBO_VALID |  |  | #ifdef NANOVG_FBO_VALID | 
														
													
														
															
																|  |  |  |  |  | GLint defaultFBO; | 
														
													
														
															
																|  |  |  |  |  | GLint defaultRBO; | 
														
													
														
															
																|  |  | NVGLUframebuffer* fb = NULL; |  |  | NVGLUframebuffer* fb = NULL; | 
														
													
														
															
																|  |  | fb = (NVGLUframebuffer*)malloc(sizeof(NVGLUframebuffer)); |  |  | fb = (NVGLUframebuffer*)malloc(sizeof(NVGLUframebuffer)); | 
														
													
														
															
																|  |  | if (fb == NULL) goto error; |  |  | if (fb == NULL) goto error; | 
														
													
														
															
																|  |  | memset(fb, 0, sizeof(NVGLUframebuffer)); |  |  | memset(fb, 0, sizeof(NVGLUframebuffer)); | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  |  |  |  | glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFBO); | 
														
													
														
															
																|  |  |  |  |  | glGetIntegerv(GL_RENDERBUFFER_BINDING, &defaultRBO); | 
														
													
														
															
																|  |  |  |  |  | 
 | 
														
													
														
															
																|  |  | fb->image = nvgCreateImageRGBA(ctx, w, h, imageFlags | NVG_IMAGE_FLIPY | NVG_IMAGE_PREMULTIPLIED, NULL); |  |  | fb->image = nvgCreateImageRGBA(ctx, w, h, imageFlags | NVG_IMAGE_FLIPY | NVG_IMAGE_PREMULTIPLIED, NULL); | 
														
													
														
															
																|  |  | fb->texture = nvglImageHandle(ctx, fb->image); |  |  | fb->texture = nvglImageHandle(ctx, fb->image); | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
												
													
														
															
																|  | @@ -72,6 +79,8 @@ NVGLUframebuffer* nvgluCreateFramebuffer(NVGcontext* ctx, int w, int h, int imag | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  | if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) goto error; |  |  | if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) goto error; | 
														
													
														
															
																|  |  | 
 |  |  | 
 | 
														
													
														
															
																|  |  |  |  |  | glBindFramebuffer(GL_FRAMEBUFFER, defaultFBO); | 
														
													
														
															
																|  |  |  |  |  | glBindRenderbuffer(GL_RENDERBUFFER, defaultRBO); | 
														
													
														
															
																|  |  | return fb; |  |  | return fb; | 
														
													
														
															
																|  |  | error: |  |  | error: | 
														
													
														
															
																|  |  | nvgluDeleteFramebuffer(ctx, fb); |  |  | nvgluDeleteFramebuffer(ctx, fb); | 
														
													
												
													
														
															
																|  | @@ -88,7 +97,8 @@ error: | 
														
													
														
															
																|  |  | void nvgluBindFramebuffer(NVGLUframebuffer* fb) |  |  | void nvgluBindFramebuffer(NVGLUframebuffer* fb) | 
														
													
														
															
																|  |  | { |  |  | { | 
														
													
														
															
																|  |  | #ifdef NANOVG_FBO_VALID |  |  | #ifdef NANOVG_FBO_VALID | 
														
													
														
															
																|  |  | glBindFramebuffer(GL_FRAMEBUFFER, fb != NULL ? fb->fbo : 0); |  |  |  | 
														
													
														
															
																|  |  |  |  |  | if (defaultFBO == -1) glGetIntegerv(GL_FRAMEBUFFER_BINDING, &defaultFBO); | 
														
													
														
															
																|  |  |  |  |  | glBindFramebuffer(GL_FRAMEBUFFER, fb != NULL ? fb->fbo : defaultFBO); | 
														
													
														
															
																|  |  | #else |  |  | #else | 
														
													
														
															
																|  |  | NVG_NOTUSED(fb); |  |  | NVG_NOTUSED(fb); | 
														
													
														
															
																|  |  | #endif |  |  | #endif | 
														
													
												
													
														
															
																|  | 
 |