OLD | NEW |
1 | 1 |
2 /* | 2 /* |
3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
4 * | 4 * |
5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
7 */ | 7 */ |
8 | 8 |
9 | 9 |
10 #include "gl/GrGLInterface.h" | 10 #include "gl/GrGLInterface.h" |
11 | 11 |
12 #import <OpenGLES/ES2/gl.h> | 12 #import <OpenGLES/ES2/gl.h> |
13 #import <OpenGLES/ES2/glext.h> | 13 #import <OpenGLES/ES2/glext.h> |
14 | 14 |
15 const GrGLInterface* GrGLCreateNativeInterface() { | 15 const GrGLInterface* GrGLCreateNativeInterface() { |
16 GrGLInterface* interface = SkNEW(GrGLInterface); | 16 GrGLInterface* interface = SkNEW(GrGLInterface); |
17 | 17 |
18 interface->fActiveTexture = glActiveTexture; | 18 functions->fActiveTexture = glActiveTexture; |
19 interface->fAttachShader = glAttachShader; | 19 functions->fAttachShader = glAttachShader; |
20 interface->fBindAttribLocation = glBindAttribLocation; | 20 functions->fBindAttribLocation = glBindAttribLocation; |
21 interface->fBindBuffer = glBindBuffer; | 21 functions->fBindBuffer = glBindBuffer; |
22 interface->fBindTexture = glBindTexture; | 22 functions->fBindTexture = glBindTexture; |
23 interface->fBlendColor = glBlendColor; | 23 functions->fBlendColor = glBlendColor; |
24 interface->fBlendFunc = glBlendFunc; | 24 functions->fBlendFunc = glBlendFunc; |
25 interface->fBufferData = (GrGLBufferDataProc)glBufferData; | 25 functions->fBufferData = (GrGLBufferDataProc)glBufferData; |
26 interface->fBufferSubData = (GrGLBufferSubDataProc)glBufferSubData; | 26 functions->fBufferSubData = (GrGLBufferSubDataProc)glBufferSubData; |
27 interface->fClear = glClear; | 27 functions->fClear = glClear; |
28 interface->fClearColor = glClearColor; | 28 functions->fClearColor = glClearColor; |
29 interface->fClearStencil = glClearStencil; | 29 functions->fClearStencil = glClearStencil; |
30 interface->fColorMask = glColorMask; | 30 functions->fColorMask = glColorMask; |
31 interface->fCompileShader = glCompileShader; | 31 functions->fCompileShader = glCompileShader; |
32 interface->fCompressedTexImage2D = glCompressedTexImage2D; | 32 functions->fCompressedTexImage2D = glCompressedTexImage2D; |
33 interface->fCopyTexSubImage2D = glCopyTexSubImage2D; | 33 functions->fCopyTexSubImage2D = glCopyTexSubImage2D; |
34 interface->fCreateProgram = glCreateProgram; | 34 functions->fCreateProgram = glCreateProgram; |
35 interface->fCreateShader = glCreateShader; | 35 functions->fCreateShader = glCreateShader; |
36 interface->fCullFace = glCullFace; | 36 functions->fCullFace = glCullFace; |
37 interface->fDeleteBuffers = glDeleteBuffers; | 37 functions->fDeleteBuffers = glDeleteBuffers; |
38 interface->fDeleteProgram = glDeleteProgram; | 38 functions->fDeleteProgram = glDeleteProgram; |
39 interface->fDeleteShader = glDeleteShader; | 39 functions->fDeleteShader = glDeleteShader; |
40 interface->fDeleteTextures = glDeleteTextures; | 40 functions->fDeleteTextures = glDeleteTextures; |
41 interface->fDepthMask = glDepthMask; | 41 functions->fDepthMask = glDepthMask; |
42 interface->fDisable = glDisable; | 42 functions->fDisable = glDisable; |
43 interface->fDisableVertexAttribArray = glDisableVertexAttribArray; | 43 functions->fDisableVertexAttribArray = glDisableVertexAttribArray; |
44 interface->fDrawArrays = glDrawArrays; | 44 functions->fDrawArrays = glDrawArrays; |
45 interface->fDrawBuffer = NULL; | 45 functions->fDrawBuffer = NULL; |
46 interface->fDrawBuffers = NULL; | 46 functions->fDrawBuffers = NULL; |
47 interface->fDrawElements = glDrawElements; | 47 functions->fDrawElements = glDrawElements; |
48 interface->fEnable = glEnable; | 48 functions->fEnable = glEnable; |
49 interface->fEnableVertexAttribArray = glEnableVertexAttribArray; | 49 functions->fEnableVertexAttribArray = glEnableVertexAttribArray; |
50 interface->fFinish = glFinish; | 50 functions->fFinish = glFinish; |
51 interface->fFlush = glFlush; | 51 functions->fFlush = glFlush; |
52 interface->fFrontFace = glFrontFace; | 52 functions->fFrontFace = glFrontFace; |
53 interface->fGenBuffers = glGenBuffers; | 53 functions->fGenBuffers = glGenBuffers; |
54 interface->fGenerateMipmap = glGenerateMipmap; | 54 functions->fGenerateMipmap = glGenerateMipmap; |
55 interface->fGetBufferParameteriv = glGetBufferParameteriv; | 55 functions->fGetBufferParameteriv = glGetBufferParameteriv; |
56 interface->fGetError = glGetError; | 56 functions->fGetError = glGetError; |
57 interface->fGetIntegerv = glGetIntegerv; | 57 functions->fGetIntegerv = glGetIntegerv; |
58 interface->fGetProgramInfoLog = glGetProgramInfoLog; | 58 functions->fGetProgramInfoLog = glGetProgramInfoLog; |
59 interface->fGetProgramiv = glGetProgramiv; | 59 functions->fGetProgramiv = glGetProgramiv; |
60 interface->fGetShaderInfoLog = glGetShaderInfoLog; | 60 functions->fGetShaderInfoLog = glGetShaderInfoLog; |
61 interface->fGetShaderiv = glGetShaderiv; | 61 functions->fGetShaderiv = glGetShaderiv; |
62 interface->fGetString = glGetString; | 62 functions->fGetString = glGetString; |
63 interface->fGenTextures = glGenTextures; | 63 functions->fGenTextures = glGenTextures; |
64 interface->fGetUniformLocation = glGetUniformLocation; | 64 functions->fGetUniformLocation = glGetUniformLocation; |
65 interface->fLineWidth = glLineWidth; | 65 functions->fLineWidth = glLineWidth; |
66 interface->fLinkProgram = glLinkProgram; | 66 functions->fLinkProgram = glLinkProgram; |
67 interface->fPixelStorei = glPixelStorei; | 67 functions->fPixelStorei = glPixelStorei; |
68 interface->fReadBuffer = NULL; | 68 functions->fReadBuffer = NULL; |
69 interface->fReadPixels = glReadPixels; | 69 functions->fReadPixels = glReadPixels; |
70 interface->fScissor = glScissor; | 70 functions->fScissor = glScissor; |
71 interface->fShaderSource = glShaderSource; | 71 functions->fShaderSource = glShaderSource; |
72 interface->fStencilFunc = glStencilFunc; | 72 functions->fStencilFunc = glStencilFunc; |
73 interface->fStencilFuncSeparate = glStencilFuncSeparate; | 73 functions->fStencilFuncSeparate = glStencilFuncSeparate; |
74 interface->fStencilMask = glStencilMask; | 74 functions->fStencilMask = glStencilMask; |
75 interface->fStencilMaskSeparate = glStencilMaskSeparate; | 75 functions->fStencilMaskSeparate = glStencilMaskSeparate; |
76 interface->fStencilOp = glStencilOp; | 76 functions->fStencilOp = glStencilOp; |
77 interface->fStencilOpSeparate = glStencilOpSeparate; | 77 functions->fStencilOpSeparate = glStencilOpSeparate; |
78 // mac uses GLenum for internalFormat param (non-standard) | 78 // mac uses GLenum for internalFormat param (non-standard) |
79 // amounts to int vs. uint. | 79 // amounts to int vs. uint. |
80 interface->fTexImage2D = (GrGLTexImage2DProc)glTexImage2D; | 80 functions->fTexImage2D = (GrGLTexImage2DProc)glTexImage2D; |
81 #if GL_ARB_texture_storage | 81 #if GL_ARB_texture_storage |
82 interface->fTexStorage2D = glTexStorage2D; | 82 functions->fTexStorage2D = glTexStorage2D; |
83 #elif GL_EXT_texture_storage | 83 #elif GL_EXT_texture_storage |
84 interface->fTexStorage2D = glTexStorage2DEXT; | 84 functions->fTexStorage2D = glTexStorage2DEXT; |
85 #endif | 85 #endif |
86 #if GL_EXT_discard_framebuffer | 86 #if GL_EXT_discard_framebuffer |
87 interface->fDiscardFramebuffer = glDiscardFramebufferEXT; | 87 functions->fDiscardFramebuffer = glDiscardFramebufferEXT; |
88 #endif | 88 #endif |
89 interface->fTexParameteri = glTexParameteri; | 89 functions->fTexParameteri = glTexParameteri; |
90 interface->fTexParameteriv = glTexParameteriv; | 90 functions->fTexParameteriv = glTexParameteriv; |
91 interface->fTexSubImage2D = glTexSubImage2D; | 91 functions->fTexSubImage2D = glTexSubImage2D; |
92 interface->fUniform1f = glUniform1f; | 92 functions->fUniform1f = glUniform1f; |
93 interface->fUniform1i = glUniform1i; | 93 functions->fUniform1i = glUniform1i; |
94 interface->fUniform1fv = glUniform1fv; | 94 functions->fUniform1fv = glUniform1fv; |
95 interface->fUniform1iv = glUniform1iv; | 95 functions->fUniform1iv = glUniform1iv; |
96 interface->fUniform2f = glUniform2f; | 96 functions->fUniform2f = glUniform2f; |
97 interface->fUniform2i = glUniform2i; | 97 functions->fUniform2i = glUniform2i; |
98 interface->fUniform2fv = glUniform2fv; | 98 functions->fUniform2fv = glUniform2fv; |
99 interface->fUniform2iv = glUniform2iv; | 99 functions->fUniform2iv = glUniform2iv; |
100 interface->fUniform3f = glUniform3f; | 100 functions->fUniform3f = glUniform3f; |
101 interface->fUniform3i = glUniform3i; | 101 functions->fUniform3i = glUniform3i; |
102 interface->fUniform3fv = glUniform3fv; | 102 functions->fUniform3fv = glUniform3fv; |
103 interface->fUniform3iv = glUniform3iv; | 103 functions->fUniform3iv = glUniform3iv; |
104 interface->fUniform4f = glUniform4f; | 104 functions->fUniform4f = glUniform4f; |
105 interface->fUniform4i = glUniform4i; | 105 functions->fUniform4i = glUniform4i; |
106 interface->fUniform4fv = glUniform4fv; | 106 functions->fUniform4fv = glUniform4fv; |
107 interface->fUniform4iv = glUniform4iv; | 107 functions->fUniform4iv = glUniform4iv; |
108 interface->fUniform4fv = glUniform4fv; | 108 functions->fUniform4fv = glUniform4fv; |
109 interface->fUniformMatrix2fv = glUniformMatrix2fv; | 109 functions->fUniformMatrix2fv = glUniformMatrix2fv; |
110 interface->fUniformMatrix3fv = glUniformMatrix3fv; | 110 functions->fUniformMatrix3fv = glUniformMatrix3fv; |
111 interface->fUniformMatrix4fv = glUniformMatrix4fv; | 111 functions->fUniformMatrix4fv = glUniformMatrix4fv; |
112 interface->fUseProgram = glUseProgram; | 112 functions->fUseProgram = glUseProgram; |
113 interface->fVertexAttrib4fv = glVertexAttrib4fv; | 113 functions->fVertexAttrib4fv = glVertexAttrib4fv; |
114 interface->fVertexAttribPointer = glVertexAttribPointer; | 114 functions->fVertexAttribPointer = glVertexAttribPointer; |
115 interface->fViewport = glViewport; | 115 functions->fViewport = glViewport; |
116 interface->fGenFramebuffers = glGenFramebuffers; | 116 functions->fGenFramebuffers = glGenFramebuffers; |
117 interface->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachment
Parameteriv; | 117 functions->fGetFramebufferAttachmentParameteriv = glGetFramebufferAttachment
Parameteriv; |
118 interface->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; | 118 functions->fGetRenderbufferParameteriv = glGetRenderbufferParameteriv; |
119 interface->fBindFramebuffer = glBindFramebuffer; | 119 functions->fBindFramebuffer = glBindFramebuffer; |
120 interface->fFramebufferTexture2D = glFramebufferTexture2D; | 120 functions->fFramebufferTexture2D = glFramebufferTexture2D; |
121 interface->fCheckFramebufferStatus = glCheckFramebufferStatus; | 121 functions->fCheckFramebufferStatus = glCheckFramebufferStatus; |
122 interface->fDeleteFramebuffers = glDeleteFramebuffers; | 122 functions->fDeleteFramebuffers = glDeleteFramebuffers; |
123 interface->fRenderbufferStorage = glRenderbufferStorage; | 123 functions->fRenderbufferStorage = glRenderbufferStorage; |
124 interface->fGenRenderbuffers = glGenRenderbuffers; | 124 functions->fGenRenderbuffers = glGenRenderbuffers; |
125 interface->fDeleteRenderbuffers = glDeleteRenderbuffers; | 125 functions->fDeleteRenderbuffers = glDeleteRenderbuffers; |
126 interface->fFramebufferRenderbuffer = glFramebufferRenderbuffer; | 126 functions->fFramebufferRenderbuffer = glFramebufferRenderbuffer; |
127 interface->fBindRenderbuffer = glBindRenderbuffer; | 127 functions->fBindRenderbuffer = glBindRenderbuffer; |
128 | 128 |
129 #if GL_OES_mapbuffer | 129 #if GL_OES_mapbuffer |
130 interface->fMapBuffer = glMapBufferOES; | 130 functions->fMapBuffer = glMapBufferOES; |
131 interface->fUnmapBuffer = glUnmapBufferOES; | 131 functions->fUnmapBuffer = glUnmapBufferOES; |
132 #endif | 132 #endif |
133 | 133 |
134 #if GL_APPLE_framebuffer_multisample | 134 #if GL_APPLE_framebuffer_multisample |
135 interface->fRenderbufferStorageMultisample = glRenderbufferStorageMultisampl
eAPPLE; | 135 functions->fRenderbufferStorageMultisample = glRenderbufferStorageMultisampl
eAPPLE; |
136 interface->fResolveMultisampleFramebuffer = glResolveMultisampleFramebufferA
PPLE; | 136 functions->fResolveMultisampleFramebuffer = glResolveMultisampleFramebufferA
PPLE; |
137 #endif | 137 #endif |
138 | 138 |
139 #if GL_OES_vertex_array_object | 139 #if GL_OES_vertex_array_object |
140 interface->fBindVertexArray = glBindVertexArrayOES; | 140 functions->fBindVertexArray = glBindVertexArrayOES; |
141 interface->fDeleteVertexArrays = glDeleteVertexArraysOES; | 141 functions->fDeleteVertexArrays = glDeleteVertexArraysOES; |
142 interface->fGenVertexArrays = glGenVertexArraysOES; | 142 functions->fGenVertexArrays = glGenVertexArraysOES; |
143 #endif | 143 #endif |
144 | 144 |
145 interface->fStandard = kGLES_GrGLStandard; | 145 interface->fStandard = kGLES_GrGLStandard; |
146 interface->fExtensions.init(kGLES_GrGLStandard, glGetString, NULL, glGetInte
gerv); | 146 interface->fExtensions.init(kGLES_GrGLStandard, glGetString, NULL, glGetInte
gerv); |
147 return interface; | 147 return interface; |
148 } | 148 } |
OLD | NEW |