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);