|
|
@@ -269,9 +269,7 @@ struct GLNVGcontext { |
|
|
|
GLNVGblend blendFunc; |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef __EMSCRIPTEN__ |
|
|
|
int dummyTex; |
|
|
|
#endif |
|
|
|
}; |
|
|
|
typedef struct GLNVGcontext GLNVGcontext; |
|
|
|
|
|
|
@@ -504,6 +502,8 @@ static void glnvg__getUniforms(GLNVGshader* shader) |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
static int glnvg__renderCreateTexture(void* uptr, int type, int w, int h, int imageFlags, const unsigned char* data); |
|
|
|
|
|
|
|
static int glnvg__renderCreate(void* uptr) |
|
|
|
{ |
|
|
|
GLNVGcontext* gl = (GLNVGcontext*)uptr; |
|
|
@@ -704,9 +704,9 @@ static int glnvg__renderCreate(void* uptr) |
|
|
|
#endif |
|
|
|
gl->fragSize = sizeof(GLNVGfragUniforms) + align - sizeof(GLNVGfragUniforms) % align; |
|
|
|
|
|
|
|
#ifdef __EMSCRIPTEN__ |
|
|
|
gl->dummyTex = glnvg__renderCreateTexture(&gl, NVG_TEXTURE_ALPHA, 1, 1, 0, NULL); |
|
|
|
#endif |
|
|
|
// Some platforms does not allow to have samples to unset textures. |
|
|
|
// Create empty one which is bound when there's no texture specified. |
|
|
|
gl->dummyTex = glnvg__renderCreateTexture(gl, NVG_TEXTURE_ALPHA, 1, 1, 0, NULL); |
|
|
|
|
|
|
|
glnvg__checkError(gl, "create done"); |
|
|
|
|
|
|
@@ -981,6 +981,7 @@ static GLNVGfragUniforms* nvg__fragUniformPtr(GLNVGcontext* gl, int i); |
|
|
|
|
|
|
|
static void glnvg__setUniforms(GLNVGcontext* gl, int uniformOffset, int image) |
|
|
|
{ |
|
|
|
GLNVGtexture* tex = NULL; |
|
|
|
#if NANOVG_GL_USE_UNIFORMBUFFER |
|
|
|
glBindBufferRange(GL_UNIFORM_BUFFER, GLNVG_FRAG_BINDING, gl->fragBuf, uniformOffset, sizeof(GLNVGfragUniforms)); |
|
|
|
#else |
|
|
@@ -989,17 +990,14 @@ static void glnvg__setUniforms(GLNVGcontext* gl, int uniformOffset, int image) |
|
|
|
#endif |
|
|
|
|
|
|
|
if (image != 0) { |
|
|
|
GLNVGtexture* tex = glnvg__findTexture(gl, image); |
|
|
|
glnvg__bindTexture(gl, tex != NULL ? tex->tex : 0); |
|
|
|
glnvg__checkError(gl, "tex paint tex"); |
|
|
|
} else { |
|
|
|
#ifdef __EMSCRIPTEN__ |
|
|
|
GLNVGtexture* tex = glnvg__findTexture(gl, gl->dummyTex); |
|
|
|
glnvg__bindTexture(gl, tex->tex); |
|
|
|
#else |
|
|
|
glnvg__bindTexture(gl, 0); |
|
|
|
#endif |
|
|
|
tex = glnvg__findTexture(gl, image); |
|
|
|
} |
|
|
|
// If no image is set, use empty texture |
|
|
|
if (tex == NULL) { |
|
|
|
tex = glnvg__findTexture(gl, gl->dummyTex); |
|
|
|
} |
|
|
|
glnvg__bindTexture(gl, tex != NULL ? tex->tex : 0); |
|
|
|
glnvg__checkError(gl, "tex paint tex"); |
|
|
|
} |
|
|
|
|
|
|
|
static void glnvg__renderViewport(void* uptr, float width, float height, float devicePixelRatio) |
|
|
|