//Setup EGL context, display, etc.
SkGraphics::Init();
const GrGLInterface* fInterface = GrGLCreateNativeInterface();
mSkContext = GrContext::Create(kOpenGL_GrBackend, (GrBackendContext) fInterface);
// Do other operations in OpenGL
mSkContext->resetContext();
GrTextureDesc texDesc;
texDesc.fFlags = kRenderTarget_GrTextureFlagBit;
texDesc.fWidth = aWidth;
texDesc.fHeight = aHeight;
texDesc.fConfig = kRGBA_8888_GrPixelConfig;
static uint64_t cacheNum = 0;
GrCacheID::Key cacheKey;
cacheKey.fData64[0] = cacheNum;
cacheKey.fData64[1] = 0;
GrCacheID cacheId(mSkDomain, cacheKey);
cacheNum++;
GrTexture* skTexture = mSkContext->createTexture(NULL, texDesc, cacheId, 0, 0);
GLuint texHandle = skTexture->getTextureHandle();
SkSurface* skSurface = SkSurface::NewRenderTargetDirect(skTexture->asRenderTarget());
SkCanvas* skCanvas = skSurface->getCanvas();
mSkContext->resetContext();
GrContext::AutoRenderTarget autoTarget(mSkContext, itr->second.skRenderTarget);
SkRect rect = SkRect::MakeWH(aWidth, aHeight);
itr->second.sk2DCanvas->clear(SK_ColorRED); // Red for debugging purposes
SkPaint paint;
paint.setStyle(SkPaint::kStroke_Style);
paint.setStrokeWidth(2);
paint.setColor(SK_ColorBLUE);
itr->second.sk2DCanvas->drawRect(rect, paint);
mSkContext->flush();
// Do other rendering in OpenGL
glBindTexture ( GL_TEXTURE_2D, texHandle );
// Use texture on rendered triangles