1 #pragma once 2 3 #include <jsi/jsi.h> 4 #include <unordered_map> 5 #include "EXGLNativeApi.h" 6 7 namespace expo { 8 namespace gl_cpp { 9 10 struct glesContext { 11 int32_t viewportWidth; 12 int32_t viewportHeight; 13 }; 14 15 namespace jsi = facebook::jsi; 16 17 class EXGLContext; 18 19 enum class EXWebGLClass { 20 WebGLRenderingContext, 21 WebGL2RenderingContext, 22 WebGLObject, 23 WebGLBuffer, 24 WebGLFramebuffer, 25 WebGLProgram, 26 WebGLRenderbuffer, 27 WebGLShader, 28 WebGLTexture, 29 WebGLUniformLocation, 30 WebGLActiveInfo, 31 WebGLShaderPrecisionFormat, 32 WebGLQuery, 33 WebGLSampler, 34 WebGLSync, 35 WebGLTransformFeedback, 36 WebGLVertexArrayObject, 37 }; 38 39 void ensurePrototypes(jsi::Runtime &runtime); 40 void createWebGLRenderer(jsi::Runtime &runtime, EXGLContext *, glesContext, jsi::Object&& global); 41 jsi::Value createWebGLObject( 42 jsi::Runtime &runtime, 43 EXWebGLClass webglClass, 44 std::initializer_list<jsi::Value> &&args); 45 std::string getConstructorName(EXWebGLClass value); 46 47 } // namespace gl_cpp 48 } // namespace expo 49