blob: 3901797be92c3824634403bd0f56f0cca571c4d3 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
bsalomon@google.comf987d1b2011-04-04 17:13:52 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2011 Google Inc.
4 *
5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
bsalomon@google.comf987d1b2011-04-04 17:13:52 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
bsalomon@google.comf987d1b2011-04-04 17:13:52 +000010#include "GrGLInterface.h"
11
12#include <OpenGL/gl.h>
13#include <OpenGL/glext.h>
14
bsalomon@google.com0b77d682011-08-19 13:28:54 +000015void GrGLInitializeDefaultGLInterface() {
16 GrGLInterface* defaultInterface = new GrGLInterface;
17 defaultInterface->fBindingsExported = kDesktop_GrGLBinding;
18 defaultInterface->fActiveTexture = glActiveTexture;
19 defaultInterface->fAttachShader = glAttachShader;
20 defaultInterface->fBindAttribLocation = glBindAttribLocation;
21 defaultInterface->fBindBuffer = glBindBuffer;
22 defaultInterface->fBindTexture = glBindTexture;
23 defaultInterface->fBlendColor = glBlendColor;
24 defaultInterface->fBlendFunc = glBlendFunc;
25 defaultInterface->fBufferData = glBufferData;
26 defaultInterface->fBufferSubData = glBufferSubData;
27 defaultInterface->fClear = glClear;
28 defaultInterface->fClearColor = glClearColor;
29 defaultInterface->fClearStencil = glClearStencil;
30 defaultInterface->fClientActiveTexture = glClientActiveTexture;
31 defaultInterface->fColorMask = glColorMask;
32 defaultInterface->fColorPointer = glColorPointer;
33 defaultInterface->fColor4ub = glColor4ub;
34 defaultInterface->fCompileShader = glCompileShader;
35 defaultInterface->fCompressedTexImage2D = glCompressedTexImage2D;
36 defaultInterface->fCreateProgram = glCreateProgram;
37 defaultInterface->fCreateShader = glCreateShader;
38 defaultInterface->fCullFace = glCullFace;
39 defaultInterface->fDeleteBuffers = glDeleteBuffers;
40 defaultInterface->fDeleteProgram = glDeleteProgram;
41 defaultInterface->fDeleteShader = glDeleteShader;
42 defaultInterface->fDeleteTextures = glDeleteTextures;
43 defaultInterface->fDepthMask = glDepthMask;
44 defaultInterface->fDisable = glDisable;
45 defaultInterface->fDisableClientState = glDisableClientState;
46 defaultInterface->fDisableVertexAttribArray =
47 glDisableVertexAttribArray;
48 defaultInterface->fDrawArrays = glDrawArrays;
49 defaultInterface->fDrawBuffer = glDrawBuffer;
50 defaultInterface->fDrawBuffers = glDrawBuffers;
51 defaultInterface->fDrawElements = glDrawElements;
52 defaultInterface->fEnable = glEnable;
53 defaultInterface->fEnableClientState = glEnableClientState;
54 defaultInterface->fEnableVertexAttribArray = glEnableVertexAttribArray;
55 defaultInterface->fFrontFace = glFrontFace;
56 defaultInterface->fGenBuffers = glGenBuffers;
57 defaultInterface->fGetBufferParameteriv = glGetBufferParameteriv;
58 defaultInterface->fGetError = glGetError;
59 defaultInterface->fGetIntegerv = glGetIntegerv;
60 defaultInterface->fGetProgramInfoLog = glGetProgramInfoLog;
61 defaultInterface->fGetProgramiv = glGetProgramiv;
62 defaultInterface->fGetShaderInfoLog = glGetShaderInfoLog;
63 defaultInterface->fGetShaderiv = glGetShaderiv;
64 defaultInterface->fGetString = glGetString;
65 defaultInterface->fGetTexLevelParameteriv = glGetTexLevelParameteriv;
66 defaultInterface->fGenTextures = glGenTextures;
67 defaultInterface->fGetUniformLocation = glGetUniformLocation;
68 defaultInterface->fLineWidth = glLineWidth;
69 defaultInterface->fLinkProgram = glLinkProgram;
70 defaultInterface->fLoadMatrixf = glLoadMatrixf;
71 defaultInterface->fMapBuffer = glMapBuffer;
72 defaultInterface->fMatrixMode = glMatrixMode;
73 defaultInterface->fPointSize = glPointSize;
74 defaultInterface->fPixelStorei = glPixelStorei;
75 defaultInterface->fReadBuffer = glReadBuffer;
76 defaultInterface->fReadPixels = glReadPixels;
77 defaultInterface->fScissor = glScissor;
78 defaultInterface->fShadeModel = glShadeModel;
79 defaultInterface->fShaderSource = glShaderSource;
80 defaultInterface->fStencilFunc = glStencilFunc;
81 defaultInterface->fStencilFuncSeparate = glStencilFuncSeparate;
82 defaultInterface->fStencilMask = glStencilMask;
83 defaultInterface->fStencilMaskSeparate = glStencilMaskSeparate;
84 defaultInterface->fStencilOp = glStencilOp;
85 defaultInterface->fStencilOpSeparate = glStencilOpSeparate;
86 defaultInterface->fTexCoordPointer = glTexCoordPointer;
87 defaultInterface->fTexEnvi = glTexEnvi;
88 // mac uses GLenum for internalFormat param (non-standard)
89 // amounts to int vs. uint.
90 defaultInterface->fTexImage2D = (GrGLTexImage2DProc)glTexImage2D;
91 defaultInterface->fTexParameteri = glTexParameteri;
92 defaultInterface->fTexSubImage2D = glTexSubImage2D;
93 defaultInterface->fUniform1f = glUniform1f;
94 defaultInterface->fUniform1i = glUniform1i;
95 defaultInterface->fUniform1fv = glUniform1fv;
96 defaultInterface->fUniform1iv = glUniform1iv;
97 defaultInterface->fUniform2f = glUniform2f;
98 defaultInterface->fUniform2i = glUniform2i;
99 defaultInterface->fUniform2fv = glUniform2fv;
100 defaultInterface->fUniform2iv = glUniform2iv;
101 defaultInterface->fUniform3f = glUniform3f;
102 defaultInterface->fUniform3i = glUniform3i;
103 defaultInterface->fUniform3fv = glUniform3fv;
104 defaultInterface->fUniform3iv = glUniform3iv;
105 defaultInterface->fUniform4f = glUniform4f;
106 defaultInterface->fUniform4i = glUniform4i;
107 defaultInterface->fUniform4fv = glUniform4fv;
108 defaultInterface->fUniform4iv = glUniform4iv;
109 defaultInterface->fUniform4fv = glUniform4fv;
110 defaultInterface->fUniformMatrix2fv = glUniformMatrix2fv;
111 defaultInterface->fUniformMatrix3fv = glUniformMatrix3fv;
112 defaultInterface->fUniformMatrix4fv = glUniformMatrix4fv;
113 defaultInterface->fUnmapBuffer = glUnmapBuffer;
114 defaultInterface->fUseProgram = glUseProgram;
115 defaultInterface->fVertexAttrib4fv = glVertexAttrib4fv;
116 defaultInterface->fVertexAttribPointer = glVertexAttribPointer;
117 defaultInterface->fVertexPointer = glVertexPointer;
118 defaultInterface->fViewport = glViewport;
bsalomon@google.comf987d1b2011-04-04 17:13:52 +0000119
120#if GL_ARB_framebuffer_object
bsalomon@google.com0b77d682011-08-19 13:28:54 +0000121 defaultInterface->fGenFramebuffers = glGenFramebuffers;
122 defaultInterface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachmentParameteriv;
123 defaultInterface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv;
124 defaultInterface->fBindFramebuffer = glBindFramebuffer;
125 defaultInterface->fFramebufferTexture2D = glFramebufferTexture2D;
126 defaultInterface->fCheckFramebufferStatus = glCheckFramebufferStatus;
127 defaultInterface->fDeleteFramebuffers = glDeleteFramebuffers;
128 defaultInterface->fRenderbufferStorage = glRenderbufferStorage;
129 defaultInterface->fGenRenderbuffers = glGenRenderbuffers;
130 defaultInterface->fDeleteRenderbuffers = glDeleteRenderbuffers;
131 defaultInterface->fFramebufferRenderbuffer = glFramebufferRenderbuffer;
132 defaultInterface->fBindRenderbuffer = glBindRenderbuffer;
133 defaultInterface->fRenderbufferStorageMultisample =
134 glRenderbufferStorageMultisample;
135 defaultInterface->fBlitFramebuffer = glBlitFramebuffer;
bsalomon@google.comf987d1b2011-04-04 17:13:52 +0000136#elif GL_EXT_framebuffer_object
bsalomon@google.com0b77d682011-08-19 13:28:54 +0000137 defaultInterface->fGenFramebuffers = glGenFramebuffersEXT;
138 defaultInterface->fGetFramebufferAttachmentivParameter = glGetFramebufferAttachmentParameterivEXT;
139 defaultInterface->fGLGetRenderbufferParameteriv = glGetRenderbufferParameterivEXT;
140 defaultInterface->fBindFramebuffer = glBindFramebufferEXT;
141 defaultInterface->fFramebufferTexture2D = glFramebufferTexture2DEXT;
142 defaultInterface->fCheckFramebufferStatus = glCheckFramebufferStatusEXT;
143 defaultInterface->fDeleteFramebuffers = glDeleteFramebuffersEXT;
144 defaultInterface->fRenderbufferStorage = glRenderbufferStorageEXT;
145 defaultInterface->fGenRenderbuffers = glGenRenderbuffersEXT;
146 defaultInterface->fDeleteRenderbuffers = glDeleteRenderbuffers;
147 defaultInterface->fFramebufferRenderbuffer =
148 glFramebufferRenderbufferEXT;
149 defaultInterface->fBindRenderbuffer = glBindRenderbufferEXT;
150#if GL_EXT_framebuffer_multisample
151 defaultInterface->fRenderbufferStorageMultisample =
152 glRenderbufferStorageMultisampleEXT;
bsalomon@google.comf987d1b2011-04-04 17:13:52 +0000153#endif
bsalomon@google.com0b77d682011-08-19 13:28:54 +0000154#if GL_EXT_framebuffer_blit
155 defaultInterface->fBlitFramebuffer = glBlitFramebufferEXT;
156#endif
157#endif
158 defaultInterface->fBindFragDataLocationIndexed = NULL;
bsalomon@google.com271cffc2011-05-20 14:13:56 +0000159
bsalomon@google.com0b77d682011-08-19 13:28:54 +0000160 defaultInterface->fBindingsExported = kDesktop_GrGLBinding;
bsalomon@google.comf987d1b2011-04-04 17:13:52 +0000161
bsalomon@google.com0b77d682011-08-19 13:28:54 +0000162 GrGLSetDefaultGLInterface(defaultInterface)->unref();
bsalomon@google.comf987d1b2011-04-04 17:13:52 +0000163}