github.com/thommil/tge-mobile@v0.0.0-20190308225214-66a08abd51aa/gl/work.h (about) 1 // Copyright 2015 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 #ifdef os_android 6 // TODO(crawshaw): We could include <android/api-level.h> and 7 // condition on __ANDROID_API__ to get GLES3 headers. However 8 // we also need to add -lGLESv3 to LDFLAGS, which we cannot do 9 // from inside an ifdef. 10 #include <GLES3/gl3.h> 11 #elif os_linux 12 #include <GLES3/gl3.h> // install on Ubuntu with: sudo apt-get install libegl1-mesa-dev libgles2-mesa-dev libx11-dev 13 #elif os_openbsd 14 #include <GLES3/gl3.h> 15 #endif 16 17 #ifdef os_ios 18 #include <OpenGLES/ES2/glext.h> 19 #endif 20 21 #ifdef os_osx 22 #include <OpenGL/gl3.h> 23 #define GL_ES_VERSION_3_0 1 24 #endif 25 26 #if defined(GL_ES_VERSION_3_0) && GL_ES_VERSION_3_0 27 #define GLES_VERSION "GL_ES_3_0" 28 #else 29 #define GLES_VERSION "GL_ES_2_0" 30 #endif 31 32 #include <stdint.h> 33 #include <stdlib.h> 34 35 // TODO: generate this enum from fn.go. 36 typedef enum { 37 glfnUNDEFINED, 38 39 glfnActiveTexture, 40 glfnAttachShader, 41 glfnBindAttribLocation, 42 glfnBindBuffer, 43 glfnBindFramebuffer, 44 glfnBindRenderbuffer, 45 glfnBindTexture, 46 glfnBindVertexArray, 47 glfnBlendColor, 48 glfnBlendEquation, 49 glfnBlendEquationSeparate, 50 glfnBlendFunc, 51 glfnBlendFuncSeparate, 52 glfnBufferData, 53 glfnBufferSubData, 54 glfnCheckFramebufferStatus, 55 glfnClear, 56 glfnClearColor, 57 glfnClearDepthf, 58 glfnClearStencil, 59 glfnColorMask, 60 glfnCompileShader, 61 glfnCompressedTexImage2D, 62 glfnCompressedTexSubImage2D, 63 glfnCopyTexImage2D, 64 glfnCopyTexSubImage2D, 65 glfnCreateProgram, 66 glfnCreateShader, 67 glfnCullFace, 68 glfnDeleteBuffer, 69 glfnDeleteFramebuffer, 70 glfnDeleteProgram, 71 glfnDeleteRenderbuffer, 72 glfnDeleteShader, 73 glfnDeleteTexture, 74 glfnDeleteVertexArray, 75 glfnDepthFunc, 76 glfnDepthRangef, 77 glfnDepthMask, 78 glfnDetachShader, 79 glfnDisable, 80 glfnDisableVertexAttribArray, 81 glfnDrawArrays, 82 glfnDrawElements, 83 glfnEnable, 84 glfnEnableVertexAttribArray, 85 glfnFinish, 86 glfnFlush, 87 glfnFramebufferRenderbuffer, 88 glfnFramebufferTexture2D, 89 glfnFrontFace, 90 glfnGenBuffer, 91 glfnGenFramebuffer, 92 glfnGenRenderbuffer, 93 glfnGenTexture, 94 glfnGenVertexArray, 95 glfnGenerateMipmap, 96 glfnGetActiveAttrib, 97 glfnGetActiveUniform, 98 glfnGetAttachedShaders, 99 glfnGetAttribLocation, 100 glfnGetBooleanv, 101 glfnGetBufferParameteri, 102 glfnGetError, 103 glfnGetFloatv, 104 glfnGetFramebufferAttachmentParameteriv, 105 glfnGetIntegerv, 106 glfnGetProgramInfoLog, 107 glfnGetProgramiv, 108 glfnGetRenderbufferParameteriv, 109 glfnGetShaderInfoLog, 110 glfnGetShaderPrecisionFormat, 111 glfnGetShaderSource, 112 glfnGetShaderiv, 113 glfnGetString, 114 glfnGetTexParameterfv, 115 glfnGetTexParameteriv, 116 glfnGetUniformLocation, 117 glfnGetUniformfv, 118 glfnGetUniformiv, 119 glfnGetVertexAttribfv, 120 glfnGetVertexAttribiv, 121 glfnHint, 122 glfnIsBuffer, 123 glfnIsEnabled, 124 glfnIsFramebuffer, 125 glfnIsProgram, 126 glfnIsRenderbuffer, 127 glfnIsShader, 128 glfnIsTexture, 129 glfnLineWidth, 130 glfnLinkProgram, 131 glfnPixelStorei, 132 glfnPolygonOffset, 133 glfnReadPixels, 134 glfnReleaseShaderCompiler, 135 glfnRenderbufferStorage, 136 glfnSampleCoverage, 137 glfnScissor, 138 glfnShaderSource, 139 glfnStencilFunc, 140 glfnStencilFuncSeparate, 141 glfnStencilMask, 142 glfnStencilMaskSeparate, 143 glfnStencilOp, 144 glfnStencilOpSeparate, 145 glfnTexImage2D, 146 glfnTexParameterf, 147 glfnTexParameterfv, 148 glfnTexParameteri, 149 glfnTexParameteriv, 150 glfnTexSubImage2D, 151 glfnUniform1f, 152 glfnUniform1fv, 153 glfnUniform1fvP, 154 glfnUniform1fvUP, 155 glfnUniform1i, 156 glfnUniform1iv, 157 glfnUniform1ivP, 158 glfnUniform1ivUP, 159 glfnUniform2f, 160 glfnUniform2fv, 161 glfnUniform2fvP, 162 glfnUniform2fvUP, 163 glfnUniform2i, 164 glfnUniform2iv, 165 glfnUniform2ivP, 166 glfnUniform2ivUP, 167 glfnUniform3f, 168 glfnUniform3fv, 169 glfnUniform3fvP, 170 glfnUniform3fvUP, 171 glfnUniform3i, 172 glfnUniform3iv, 173 glfnUniform3ivP, 174 glfnUniform3ivUP, 175 glfnUniform4f, 176 glfnUniform4fv, 177 glfnUniform4fvP, 178 glfnUniform4fvUP, 179 glfnUniform4i, 180 glfnUniform4iv, 181 glfnUniform4ivP, 182 glfnUniform4ivUP, 183 glfnUniformMatrix2fv, 184 glfnUniformMatrix2fvP, 185 glfnUniformMatrix2fvUP, 186 glfnUniformMatrix3fv, 187 glfnUniformMatrix3fvP, 188 glfnUniformMatrix3fvUP, 189 glfnUniformMatrix4fv, 190 glfnUniformMatrix4fvP, 191 glfnUniformMatrix4fvUP, 192 glfnUseProgram, 193 glfnValidateProgram, 194 glfnVertexAttrib1f, 195 glfnVertexAttrib1fv, 196 glfnVertexAttrib2f, 197 glfnVertexAttrib2fv, 198 glfnVertexAttrib3f, 199 glfnVertexAttrib3fv, 200 glfnVertexAttrib4f, 201 glfnVertexAttrib4fv, 202 glfnVertexAttribPointer, 203 glfnViewport, 204 205 // ES 3.0 functions 206 glfnUniformMatrix2x3fv, 207 glfnUniformMatrix3x2fv, 208 glfnUniformMatrix2x4fv, 209 glfnUniformMatrix4x2fv, 210 glfnUniformMatrix3x4fv, 211 glfnUniformMatrix4x3fv, 212 glfnBlitFramebuffer, 213 glfnUniform1ui, 214 glfnUniform2ui, 215 glfnUniform3ui, 216 glfnUniform4ui, 217 glfnUniform1uiv, 218 glfnUniform2uiv, 219 glfnUniform3uiv, 220 glfnUniform4uiv, 221 } glfn; 222 223 // TODO: generate this type from fn.go. 224 struct fnargs { 225 glfn fn; 226 227 uintptr_t a0; 228 uintptr_t a1; 229 uintptr_t a2; 230 uintptr_t a3; 231 uintptr_t a4; 232 uintptr_t a5; 233 uintptr_t a6; 234 uintptr_t a7; 235 uintptr_t a8; 236 uintptr_t a9; 237 }; 238 239 extern uintptr_t processFn(struct fnargs* args, char* parg);