From 8cb6eea35872a812b2960271e95cf5785a1e036a Mon Sep 17 00:00:00 2001 From: Mikko Mononen Date: Fri, 14 Feb 2014 18:27:26 +0200 Subject: [PATCH] Tweaks to GL ES - use nvgCreateGLES2() instead of nvgCreateGL2() when NANOVG_GLES2 is specified (ditto for gl3) - use GL_RED instead of GL_LUMINANCE in ES3 --- example/example_gles2.c | 4 ++-- example/example_gles3.c | 4 ++-- src/nanovg_gl2.h | 18 ++++++++++++++++++ src/nanovg_gl3.h | 25 +++++++++++++++++-------- 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/example/example_gles2.c b/example/example_gles2.c index c57feff..00e929b 100644 --- a/example/example_gles2.c +++ b/example/example_gles2.c @@ -73,7 +73,7 @@ int main() glfwMakeContextCurrent(window); - vg = nvgCreateGL2(512, 512, NVG_ANTIALIAS); + vg = nvgCreateGLES2(512, 512, NVG_ANTIALIAS); if (vg == NULL) { printf("Could not init nanovg.\n"); return -1; @@ -122,7 +122,7 @@ int main() freeDemoData(vg, &data); - nvgDeleteGL2(vg); + nvgDeleteGLES2(vg); glfwTerminate(); return 0; diff --git a/example/example_gles3.c b/example/example_gles3.c index 94d26d9..8d29a39 100644 --- a/example/example_gles3.c +++ b/example/example_gles3.c @@ -73,7 +73,7 @@ int main() glfwMakeContextCurrent(window); - vg = nvgCreateGL3(512, 512, NVG_ANTIALIAS); + vg = nvgCreateGLES3(512, 512, NVG_ANTIALIAS); if (vg == NULL) { printf("Could not init nanovg.\n"); return -1; @@ -122,7 +122,7 @@ int main() freeDemoData(vg, &data); - nvgDeleteGL3(vg); + nvgDeleteGLES3(vg); glfwTerminate(); return 0; diff --git a/src/nanovg_gl2.h b/src/nanovg_gl2.h index d0194f8..942ec93 100644 --- a/src/nanovg_gl2.h +++ b/src/nanovg_gl2.h @@ -24,9 +24,19 @@ extern "C" { #define NVG_ANTIALIAS 1 +#ifdef NANOVG_GLES2 + +struct NVGcontext* nvgCreateGLES2(int atlasw, int atlash, int edgeaa); +void nvgDeleteGLES2(struct NVGcontext* ctx); + +#else + struct NVGcontext* nvgCreateGL2(int atlasw, int atlash, int edgeaa); void nvgDeleteGL2(struct NVGcontext* ctx); +#endif + + #ifdef __cplusplus } #endif @@ -854,7 +864,11 @@ static void glnvg__renderDelete(void* uptr) } +#ifdef NANOVG_GLES2 +struct NVGcontext* nvgCreateGLES2(int atlasw, int atlash, int edgeaa) +#else struct NVGcontext* nvgCreateGL2(int atlasw, int atlash, int edgeaa) +#endif { struct NVGparams params; struct NVGcontext* ctx = NULL; @@ -891,7 +905,11 @@ error: return NULL; } +#ifdef NANOVG_GLES2 +void nvgDeleteGLES2(struct NVGcontext* ctx) +#else void nvgDeleteGL2(struct NVGcontext* ctx) +#endif { nvgDeleteInternal(ctx); } diff --git a/src/nanovg_gl3.h b/src/nanovg_gl3.h index 811b261..e5e7952 100644 --- a/src/nanovg_gl3.h +++ b/src/nanovg_gl3.h @@ -24,9 +24,18 @@ extern "C" { #define NVG_ANTIALIAS 1 +#ifdef NANOVG_GLES3 + +struct NVGcontext* nvgCreateGLES3(int atlasw, int atlash, int edgeaa); +void nvgDeleteGLES3(struct NVGcontext* ctx); + +#else + struct NVGcontext* nvgCreateGL3(int atlasw, int atlash, int edgeaa); void nvgDeleteGL3(struct NVGcontext* ctx); +#endif + #ifdef __cplusplus } #endif @@ -444,11 +453,7 @@ static int glnvg__renderCreateTexture(void* uptr, int type, int w, int h, const if (type == NVG_TEXTURE_RGBA) glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); else -#ifdef NANOVG_GLES3 - glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, w, h, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, data); -#else glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, w, h, 0, GL_RED, GL_UNSIGNED_BYTE, data); -#endif glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); @@ -481,11 +486,7 @@ static int glnvg__renderUpdateTexture(void* uptr, int image, int x, int y, int w if (tex->type == NVG_TEXTURE_RGBA) glTexSubImage2D(GL_TEXTURE_2D, 0, x,y, w,h, GL_RGBA, GL_UNSIGNED_BYTE, data); else -#ifdef NANOVG_GLES3 - glTexSubImage2D(GL_TEXTURE_2D, 0, x,y, w,h, GL_LUMINANCE, GL_UNSIGNED_BYTE, data); -#else glTexSubImage2D(GL_TEXTURE_2D, 0, x,y, w,h, GL_RED, GL_UNSIGNED_BYTE, data); -#endif return 1; } @@ -869,7 +870,11 @@ static void glnvg__renderDelete(void* uptr) } +#ifdef NANOVG_GLES3 +struct NVGcontext* nvgCreateGLES3(int atlasw, int atlash, int edgeaa) +#else struct NVGcontext* nvgCreateGL3(int atlasw, int atlash, int edgeaa) +#endif { struct NVGparams params; struct NVGcontext* ctx = NULL; @@ -906,7 +911,11 @@ error: return NULL; } +#ifdef NANOVG_GLES3 +void nvgDeleteGLES3(struct NVGcontext* ctx) +#else void nvgDeleteGL3(struct NVGcontext* ctx) +#endif { nvgDeleteInternal(ctx); }