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 PFNGLCOPYBUFFERSUBDATAPROC glCopyBufferSubData;
91extern PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
92extern PFNGLCOPYNAMEDBUFFERSUBDATAPROC glCopyNamedBufferSubData;
93extern PFNGLCOPYTEXSUBIMAGE2DPROC glCopyTexSubImage2D;
94extern PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
95extern PFNGLCREATEPROGRAMPROC glCreateProgram;
96extern PFNGLCREATESHADERPROC glCreateShader;
97extern PFNGLCULLFACEPROC glCullFace;
98extern PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
99extern PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
100extern PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
101extern PFNGLDELETEBUFFERSPROC glDeleteBuffers;
102extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
103extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
104extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
105extern PFNGLDELETESAMPLERSPROC glDeleteSamplers;
106extern PFNGLDELETESHADERPROC glDeleteShader;
107extern PFNGLDELETESYNCPROC glDeleteSync;
108extern PFNGLDELETETEXTURESPROC glDeleteTextures;
109extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
110extern PFNGLDEPTHFUNCPROC glDepthFunc;
111extern PFNGLDEPTHMASKPROC glDepthMask;
112extern PFNGLDISABLEIPROC glDisablei;
113extern PFNGLDISABLEPROC glDisable;
114extern PFNGLDISABLEVERTEXARRAYATTRIBPROC glDisableVertexArrayAttrib;
115extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
116extern PFNGLDISPATCHCOMPUTEPROC glDispatchCompute;
117extern PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEPROC glDrawArraysInstancedBaseInstance;
118extern PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
119extern PFNGLDRAWARRAYSPROC glDrawArrays;
120extern PFNGLDRAWBUFFERPROC glDrawBuffer;
121extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
122extern PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
123extern PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEPROC glDrawElementsInstancedBaseInstance;
124extern PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
125extern PFNGLDRAWELEMENTSPROC glDrawElements;
126extern PFNGLENABLEIPROC glEnablei;
127extern PFNGLENABLEPROC glEnable;
128extern PFNGLENABLEVERTEXARRAYATTRIBPROC glEnableVertexArrayAttrib;
129extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
130extern PFNGLFENCESYNCPROC glFenceSync;
131extern PFNGLFINISHPROC glFinish;
132extern PFNGLFLUSHPROC glFlush;
133extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
134extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
135extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
136extern PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC glFramebufferTextureMultiviewOVR;
137extern PFNGLFRONTFACEPROC glFrontFace;
138extern PFNGLGENBUFFERSPROC glGenBuffers;
139extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
140extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
141extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
142extern PFNGLGENSAMPLERSPROC glGenSamplers;
143extern PFNGLGENTEXTURESPROC glGenTextures;
144extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
145extern PFNGLGETACTIVEATOMICCOUNTERBUFFERIVPROC glGetActiveAtomicCounterBufferiv;
146extern PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
147extern PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
148extern PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
149extern PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
150extern PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
151extern PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
152extern PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
153extern PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
154extern PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
155extern PFNGLGETERRORPROC glGetError;
156extern PFNGLGETFLOATVPROC glGetFloatv;
157extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
158extern PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
159extern PFNGLGETINTEGERVPROC glGetIntegerv;
160extern PFNGLGETINTERNALFORMATIVPROC glGetInternalformativ;
161extern PFNGLGETNAMEDBUFFERSUBDATAPROC glGetNamedBufferSubData;
162extern PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
163extern PFNGLGETPROGRAMIVPROC glGetProgramiv;
164extern PFNGLGETPROGRAMRESOURCEINDEXPROC glGetProgramResourceIndex;
165extern PFNGLGETPROGRAMRESOURCEIVPROC glGetProgramResourceiv;
166extern PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
167extern PFNGLGETSHADERIVPROC glGetShaderiv;
168extern PFNGLGETSHADERSOURCEPROC glGetShaderSource;
169extern PFNGLGETSTRINGIPROC glGetStringi;
170extern PFNGLGETSTRINGPROC glGetString;
171extern PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
172extern PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
173extern PFNGLINVALIDATEFRAMEBUFFERPROC glInvalidateFramebuffer;
174extern PFNGLISENABLEDPROC glIsEnabled;
175extern PFNGLLINKPROGRAMPROC glLinkProgram;
176extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
177extern PFNGLMEMORYBARRIERPROC glMemoryBarrier;
178extern PFNGLNAMEDBUFFERDATAPROC glNamedBufferData;
179extern PFNGLNAMEDFRAMEBUFFERDRAWBUFFERPROC glNamedFramebufferDrawBuffer;
180extern PFNGLOBJECTLABELPROC glObjectLabel;
181extern PFNGLPIXELSTOREIPROC glPixelStorei;
182extern PFNGLPOLYGONMODEPROC glPolygonMode;
183extern PFNGLPOLYGONOFFSETPROC glPolygonOffset;
184extern PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
185extern PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
186extern PFNGLREADBUFFERPROC glReadBuffer;
187extern PFNGLREADPIXELSPROC glReadPixels;
188extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
189extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
190extern PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
191extern PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
192extern PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
193extern PFNGLSCISSORPROC glScissor;
194extern PFNGLSHADERSOURCEPROC glShaderSource;
195extern PFNGLTEXIMAGE2DPROC glTexImage2D;
196extern PFNGLTEXPARAMETERIPROC glTexParameteri;
197extern PFNGLTEXSTORAGE1DPROC glTexStorage1D;
198extern PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
199extern PFNGLTEXSTORAGE2DPROC glTexStorage2D;
200extern PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
201extern PFNGLTEXSTORAGE3DPROC glTexStorage3D;
202extern PFNGLTEXSUBIMAGE1DPROC glTexSubImage1D;
203extern PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D;
204extern PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
205extern PFNGLTEXTUREVIEWPROC glTextureView;
206extern PFNGLUNIFORM1FPROC glUniform1f;
207extern PFNGLUNIFORM1FVPROC glUniform1fv;
208extern PFNGLUNIFORM1IPROC glUniform1i;
209extern PFNGLUNIFORM1IVPROC glUniform1iv;
210extern PFNGLUNIFORM2FVPROC glUniform2fv;
211extern PFNGLUNIFORM3FVPROC glUniform3fv;
212extern PFNGLUNIFORM4FVPROC glUniform4fv;
213extern PFNGLUNIFORM4IVPROC glUniform4iv;
214extern PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
215extern PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
216extern PFNGLUNMAPBUFFERPROC glUnmapBuffer;
217extern PFNGLUSEPROGRAMPROC glUseProgram;
218extern PFNGLVERTEXATTRIBDIVISORPROC glVertexAttribDivisor;
219extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
220extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
221extern PFNGLVIEWPORTPROC glViewport;
222extern PFNGLWAITSYNCPROC glWaitSync;
224#if defined(COGS_OPENGLES30)
225extern PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC glFramebufferTextureMultisampleMultiviewOVR;
227extern PFNGLDEBUGMESSAGECALLBACKKHRPROC glDebugMessageCallbackKHR;
228extern PFNGLDEBUGMESSAGECONTROLKHRPROC glDebugMessageControlKHR;
229extern PFNGLDEBUGMESSAGEINSERTKHRPROC glDebugMessageInsertKHR;
230extern PFNGLOBJECTLABELKHRPROC glObjectLabelKHR;