NVGcontext* nvgCreate(int edgeaa, unsigned char _viewId, termite::GfxDriverApi* driver, termite::GfxApi_v0* gfxApi, bx::AllocatorI* _allocator) { if (NULL == _allocator) { #if BX_CONFIG_ALLOCATOR_CRT static bx::CrtAllocator allocator; _allocator = &allocator; #else BX_CHECK(false, "No allocator has been passed to nvgCreate(). Either specify a bx::AllocatorI instance or enable BX_CONFIG_ALLOCATOR_CRT directive."); return NULL; #endif // BX_CONFIG_ALLOCATOR_CRT } struct NVGparams params; struct NVGcontext* ctx = NULL; struct GLNVGcontext* gl = (struct GLNVGcontext*)BX_ALLOC(_allocator, sizeof(struct GLNVGcontext) ); if (gl == NULL) goto error; memset(gl, 0, sizeof(struct GLNVGcontext) ); gl->driver = driver; gl->gfxApi = gfxApi; memset(¶ms, 0, sizeof(params) ); params.renderCreate = nvgRenderCreate; params.renderCreateTexture = nvgRenderCreateTexture; params.renderDeleteTexture = nvgRenderDeleteTexture; params.renderUpdateTexture = nvgRenderUpdateTexture; params.renderGetTextureSize = nvgRenderGetTextureSize; params.renderViewport = nvgRenderViewport; params.renderFlush = nvgRenderFlush; params.renderFill = nvgRenderFill; params.renderStroke = nvgRenderStroke; params.renderTriangles = nvgRenderTriangles; params.renderDelete = nvgRenderDelete; params.userPtr = gl; params.edgeAntiAlias = edgeaa; gl->m_allocator = _allocator; gl->edgeAntiAlias = edgeaa; gl->m_viewId = uint8_t(_viewId); ctx = nvgCreateInternal(¶ms); if (ctx == NULL) goto error; return ctx; error: // 'gl' is freed by nvgDeleteInternal. if (ctx != NULL) { nvgDeleteInternal(ctx); } return NULL; }
NVGcontext* nvgCreate(int32_t _edgeaa, bgfx::ViewId _viewId, bx::AllocatorI* _allocator) { if (NULL == _allocator) { static bx::DefaultAllocator allocator; _allocator = &allocator; } struct NVGparams params; struct NVGcontext* ctx = NULL; struct GLNVGcontext* gl = (struct GLNVGcontext*)BX_ALLOC(_allocator, sizeof(struct GLNVGcontext) ); if (gl == NULL) { goto error; } bx::memSet(gl, 0, sizeof(struct GLNVGcontext) ); bx::memSet(¶ms, 0, sizeof(params) ); params.renderCreate = nvgRenderCreate; params.renderCreateTexture = nvgRenderCreateTexture; params.renderDeleteTexture = nvgRenderDeleteTexture; params.renderUpdateTexture = nvgRenderUpdateTexture; params.renderGetTextureSize = nvgRenderGetTextureSize; params.renderViewport = nvgRenderViewport; params.renderFlush = nvgRenderFlush; params.renderFill = nvgRenderFill; params.renderStroke = nvgRenderStroke; params.renderTriangles = nvgRenderTriangles; params.renderDelete = nvgRenderDelete; params.userPtr = gl; params.edgeAntiAlias = _edgeaa; gl->allocator = _allocator; gl->edgeAntiAlias = _edgeaa; gl->viewId = _viewId; ctx = nvgCreateInternal(¶ms); if (ctx == NULL) goto error; return ctx; error: // 'gl' is freed by nvgDeleteInternal. if (ctx != NULL) { nvgDeleteInternal(ctx); } return NULL; }
NVGcontext* nvgCreate(int edgeaa, unsigned char viewid) { struct NVGparams params; struct NVGcontext* ctx = NULL; struct GLNVGcontext* gl = (struct GLNVGcontext*)malloc(sizeof(struct GLNVGcontext) ); if (gl == NULL) goto error; memset(gl, 0, sizeof(struct GLNVGcontext) ); memset(¶ms, 0, sizeof(params) ); params.renderCreate = nvgRenderCreate; params.renderCreateTexture = nvgRenderCreateTexture; params.renderDeleteTexture = nvgRenderDeleteTexture; params.renderUpdateTexture = nvgRenderUpdateTexture; params.renderGetTextureSize = nvgRenderGetTextureSize; params.renderViewport = nvgRenderViewport; params.renderFlush = nvgRenderFlush; params.renderFill = nvgRenderFill; params.renderStroke = nvgRenderStroke; params.renderTriangles = nvgRenderTriangles; params.renderDelete = nvgRenderDelete; params.userPtr = gl; params.edgeAntiAlias = edgeaa; gl->edgeAntiAlias = edgeaa; gl->viewid = uint8_t(viewid); ctx = nvgCreateInternal(¶ms); if (ctx == NULL) goto error; return ctx; error: // 'gl' is freed by nvgDeleteInternal. if (ctx != NULL) { nvgDeleteInternal(ctx); } return NULL; }
NVGcontext* nvgCreateGL3(int flags) { NVGparams params; NVGcontext* ctx = NULL; GLNVGcontext* gl = (GLNVGcontext*)malloc(sizeof(GLNVGcontext)); if (gl == NULL) goto error; mem_zero(gl); mem_zero(¶ms); params.renderCreate = glnvg__renderCreate; params.renderCreateTexture = glnvg__renderCreateTexture; params.renderDeleteTexture = glnvg__renderDeleteTexture; params.renderUpdateTexture = glnvg__renderUpdateTexture; params.renderGetTextureSize = glnvg__renderGetTextureSize; params.renderViewport = glnvg__renderViewport; params.renderCancel = glnvg__renderCancel; params.renderFlush = glnvg__renderFlush; params.renderFill = glnvg__renderFill; params.renderStroke = glnvg__renderStroke; params.renderTriangles = glnvg__renderTriangles; params.renderDelete = glnvg__renderDelete; params.userPtr = gl; params.edgeAntiAlias = flags & NVG_ANTIALIAS ? 1 : 0; gl->flags = flags; ctx = nvgCreateInternal(¶ms); if (ctx == NULL) goto error; return ctx; error: // 'gl' is freed by nvgDeleteInternal. if (ctx != NULL) nvgDeleteInternal(ctx); return NULL; }