5#if defined(__EMSCRIPTEN__)
7 #include <GLES2/gl2ext.h>
9#define GL_LOWER_LEFT 0x8CA1
10#define GL_UPPER_LEFT 0x8CA2
11#define GL_NEGATIVE_ONE_TO_ONE 0x935E
12#define GL_ZERO_TO_ONE 0x935F
13#define GL_CLIP_ORIGIN 0x935C
14#define GL_CLIP_DEPTH_MODE 0x935D
17 void glClipControl(GLenum origin, GLenum depth);
19bool has_glClipControl();
21#elif defined(__APPLE__)
22 #define GL_GLEXT_PROTOTYPES 1
23 #include <GL/glcorearb.h>
30#define GL_GLES_PROTOTYPES 0
33#include <KHR/khrplatform.h>
34#include <GL/glcorearb.h>
39#if defined(COGS_OPENGLES30)
40#include <GLES3/gl3platform.h>
42#include <GLES2/gl2ext.h>
46#include <GLES3/gl3platform.h>
54extern PFNGLACTIVETEXTUREPROC glActiveTexture;
55extern PFNGLATTACHSHADERPROC glAttachShader;
56extern PFNGLBINDBUFFERBASEPROC glBindBufferBase;
57extern PFNGLBINDBUFFERPROC glBindBuffer;
58extern PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
59extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
60extern PFNGLBINDIMAGETEXTUREPROC glBindImageTexture;
61extern PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
62extern PFNGLBINDSAMPLERPROC glBindSampler;
63extern PFNGLBINDTEXTUREPROC glBindTexture;
64extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
65extern PFNGLBLENDCOLORPROC glBlendColor;
66extern PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
67extern PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
68extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
69extern PFNGLBUFFERDATAPROC glBufferData;
70extern PFNGLBUFFERSUBDATAPROC glBufferSubData;
71extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
72extern PFNGLCLEARBUFFERDATAPROC glClearBufferData;
73extern PFNGLCLEARBUFFERFVPROC glClearBufferfv;
74extern PFNGLCLEARBUFFERIVPROC glClearBufferiv;
75extern PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
76extern PFNGLCLEARCOLORPROC glClearColor;
77extern PFNGLCLEARDEPTHFPROC glClearDepthf;
78extern PFNGLCLEARDEPTHPROC glClearDepth;
79extern PFNGLCLEARNAMEDBUFFERDATAPROC glClearNamedBufferData;
80extern PFNGLCLEARPROC glClear;
81extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
82#if defined(COGS_OPENGLES30)
83extern PFNGLCLIPCONTROLEXTPROC glClipControl;
85extern PFNGLCLIPCONTROLPROC glClipControl;
87extern PFNGLCOMPILESHADERPROC glCompileShader;
88extern PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D;
89extern PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D;
90extern PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
91extern PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
92extern PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
93extern PFNGLCOPYNAMEDBUFFERSUBDATAPROC glCopyNamedBufferSubData;
94extern PFNGLCOPYTEXSUBIMAGE2DPROC glCopyTexSubImage2D;
95extern PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
96extern PFNGLCREATEPROGRAMPROC glCreateProgram;
97extern PFNGLCREATESHADERPROC glCreateShader;
98extern PFNGLCULLFACEPROC glCullFace;
99extern PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
100extern PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
101extern PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
102extern PFNGLDELETEBUFFERSPROC glDeleteBuffers;
103extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
104extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
105extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
106extern PFNGLDELETESAMPLERSPROC glDeleteSamplers;
107extern PFNGLDELETESHADERPROC glDeleteShader;
108extern PFNGLDELETESYNCPROC glDeleteSync;
109extern PFNGLDELETETEXTURESPROC glDeleteTextures;
110extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
111extern PFNGLDEPTHFUNCPROC glDepthFunc;
112extern PFNGLDEPTHMASKPROC glDepthMask;
113extern PFNGLDISABLEIPROC glDisablei;
114extern PFNGLDISABLEPROC glDisable;
115extern PFNGLDISABLEVERTEXARRAYATTRIBPROC glDisableVertexArrayAttrib;
116extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
117extern PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
118extern PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
119extern PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
120extern PFNGLDRAWARRAYSPROC glDrawArrays;
121extern PFNGLDRAWBUFFERPROC glDrawBuffer;
122extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
123extern PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
124extern PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
125extern PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
126extern PFNGLDRAWELEMENTSPROC glDrawElements;
127extern PFNGLENABLEIPROC glEnablei;
128extern PFNGLENABLEPROC glEnable;
129extern PFNGLENABLEVERTEXARRAYATTRIBPROC glEnableVertexArrayAttrib;
130extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
131extern PFNGLFENCESYNCPROC glFenceSync;
132extern PFNGLFINISHPROC glFinish;
133extern PFNGLFLUSHPROC glFlush;
134extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
135extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
136extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
137extern PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glFramebufferTextureMultiviewOVR;
138extern PFNGLFRONTFACEPROC glFrontFace;
139extern PFNGLGENBUFFERSPROC glGenBuffers;
140extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
141extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
142extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
143extern PFNGLGENSAMPLERSPROC glGenSamplers;
144extern PFNGLGENTEXTURESPROC glGenTextures;
145extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
146extern PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
147extern PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
148extern PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
149extern PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
150extern PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
151extern PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
152extern PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
153extern PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
154extern PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
155extern PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
156extern PFNGLGETERRORPROC glGetError;
157extern PFNGLGETFLOATVPROC glGetFloatv;
158extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
159extern PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
160extern PFNGLGETINTEGERVPROC glGetIntegerv;
161extern PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
162extern PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData;
163extern PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
164extern PFNGLGETPROGRAMIVPROC glGetProgramiv;
165extern PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
166extern PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
167extern PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
168extern PFNGLGETSHADERIVPROC glGetShaderiv;
169extern PFNGLGETSHADERSOURCEPROC glGetShaderSource;
170extern PFNGLGETSTRINGIPROC glGetStringi;
171extern PFNGLGETSTRINGPROC glGetString;
172extern PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
173extern PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
174extern PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
175extern PFNGLISENABLEDPROC glIsEnabled;
176extern PFNGLLINKPROGRAMPROC glLinkProgram;
177extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
178extern PFNGLMEMORYBARRIERPROC glMemoryBarrier;
179extern PFNGLNAMEDBUFFERDATAPROC glNamedBufferData;
180extern PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glNamedFramebufferDrawBuffer;
181extern PFNGLOBJECTLABELPROC glObjectLabel;
182extern PFNGLPIXELSTOREIPROC glPixelStorei;
183extern PFNGLPOLYGONMODEPROC glPolygonMode;
184extern PFNGLPOLYGONOFFSETPROC glPolygonOffset;
185extern PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
186extern PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
187extern PFNGLREADBUFFERPROC glReadBuffer;
188extern PFNGLREADPIXELSPROC glReadPixels;
189extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
190extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
191extern PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
192extern PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
193extern PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
194extern PFNGLSCISSORPROC glScissor;
195extern PFNGLSHADERSOURCEPROC glShaderSource;
196extern PFNGLTEXIMAGE2DPROC glTexImage2D;
197extern PFNGLTEXPARAMETERIPROC glTexParameteri;
198extern PFNGLTEXSTORAGE1DPROC glTexStorage1D;
199extern PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
200extern PFNGLTEXSTORAGE2DPROC glTexStorage2D;
201extern PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
202extern PFNGLTEXSTORAGE3DPROC glTexStorage3D;
203extern PFNGLTEXSUBIMAGE1DPROC glTexSubImage1D;
204extern PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D;
205extern PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
206extern PFNGLTEXTUREVIEWPROC glTextureView;
207extern PFNGLUNIFORM1FPROC glUniform1f;
208extern PFNGLUNIFORM1FVPROC glUniform1fv;
209extern PFNGLUNIFORM1IPROC glUniform1i;
210extern PFNGLUNIFORM1IVPROC glUniform1iv;
211extern PFNGLUNIFORM2FVPROC glUniform2fv;
212extern PFNGLUNIFORM3FVPROC glUniform3fv;
213extern PFNGLUNIFORM4FVPROC glUniform4fv;
214extern PFNGLUNIFORM4IVPROC glUniform4iv;
215extern PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
216extern PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
217extern PFNGLUNMAPBUFFERPROC glUnmapBuffer;
218extern PFNGLUSEPROGRAMPROC glUseProgram;
219extern PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
220extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
221extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
222extern PFNGLVIEWPORTPROC glViewport;
223extern PFNGLWAITSYNCPROC glWaitSync;
225#if defined(COGS_OPENGLES30)
226extern PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC glFramebufferTextureMultisampleMultiviewOVR;
228extern PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR;
229extern PFNGLDEBUGMESSAGECONTROLKHRPROC glDebugMessageControlKHR;
230extern PFNGLDEBUGMESSAGEINSERTKHRPROC glDebugMessageInsertKHR;
231extern PFNGLOBJECTLABELKHRPROC glObjectLabelKHR;