diff options
author | Joe Crayne <joe@jerkface.net> | 2019-04-08 04:49:42 -0400 |
---|---|---|
committer | Joe Crayne <joe@jerkface.net> | 2019-04-08 04:49:42 -0400 |
commit | cc72127ea0bd416174cdc2aca7c8cc978e106aed (patch) | |
tree | dcc87e3b1c5c253175c0c20fef098f4e6ecb1be6 /GL.hs | |
parent | b52fd6c61ec7bec3ff4eea80e7a24bff53a30425 (diff) |
GL instrumented debug wrapper.
Diffstat (limited to 'GL.hs')
-rw-r--r-- | GL.hs | 241 |
1 files changed, 241 insertions, 0 deletions
@@ -0,0 +1,241 @@ | |||
1 | {-# LANGUAGE PatternSynonyms #-} | ||
2 | module GL | ||
3 | ( C.GLboolean | ||
4 | , C.GLenum | ||
5 | , C.GLint | ||
6 | , C.GLuint | ||
7 | , pattern C.GL_ARRAY_BUFFER | ||
8 | , pattern C.GL_BACK | ||
9 | , pattern C.GL_BACK_LEFT | ||
10 | , pattern C.GL_BLEND | ||
11 | , pattern C.GL_COLOR | ||
12 | , pattern C.GL_COLOR_ATTACHMENT0 | ||
13 | , pattern C.GL_COLOR_BUFFER_BIT | ||
14 | , pattern C.GL_COLOR_LOGIC_OP | ||
15 | , pattern C.GL_CULL_FACE | ||
16 | , pattern C.GL_DEPTH_ATTACHMENT | ||
17 | , pattern C.GL_DEPTH_BUFFER_BIT | ||
18 | , pattern C.GL_DEPTH_TEST | ||
19 | , pattern C.GL_DRAW_FRAMEBUFFER | ||
20 | , pattern C.GL_ELEMENT_ARRAY_BUFFER | ||
21 | , pattern C.GL_FALSE | ||
22 | , pattern C.GL_FILL | ||
23 | , pattern C.GL_FIRST_VERTEX_CONVENTION | ||
24 | , pattern C.GL_FRAGMENT_SHADER | ||
25 | , pattern C.GL_FRONT | ||
26 | , pattern C.GL_FRONT_AND_BACK | ||
27 | , pattern C.GL_GEOMETRY_SHADER | ||
28 | , pattern C.GL_LAST_VERTEX_CONVENTION | ||
29 | , pattern C.GL_LINE | ||
30 | , pattern C.GL_LOWER_LEFT | ||
31 | , pattern C.GL_NONE | ||
32 | , pattern C.GL_POINT | ||
33 | , pattern C.GL_POINT_FADE_THRESHOLD_SIZE | ||
34 | , pattern C.GL_POINT_SPRITE_COORD_ORIGIN | ||
35 | , pattern C.GL_POLYGON_OFFSET_FILL | ||
36 | , pattern C.GL_POLYGON_OFFSET_LINE | ||
37 | , pattern C.GL_POLYGON_OFFSET_POINT | ||
38 | , pattern C.GL_PROGRAM_POINT_SIZE | ||
39 | , pattern C.GL_STENCIL_BUFFER_BIT | ||
40 | , pattern C.GL_STENCIL_TEST | ||
41 | , pattern C.GL_TEXTURE0 | ||
42 | , pattern C.GL_TRUE | ||
43 | , pattern C.GL_UPPER_LEFT | ||
44 | , pattern C.GL_VERTEX_SHADER | ||
45 | , pattern C.GL_LINK_STATUS | ||
46 | , pattern C.GL_CW | ||
47 | , pattern C.GL_CCW | ||
48 | , module GL | ||
49 | ) where | ||
50 | |||
51 | import Control.Monad.IO.Class | ||
52 | import qualified Graphics.GL.Core33 as C | ||
53 | import Foreign.Ptr | ||
54 | |||
55 | ind0 :: a -> a | ||
56 | ind0 = id | ||
57 | |||
58 | ind1 :: (t1 -> t2) -> t1 -> t2 | ||
59 | ind1 f a = f a | ||
60 | |||
61 | ind2 :: (t1 -> t2 -> t3) -> t1 -> t2 -> t3 | ||
62 | ind2 f a b = f a b | ||
63 | |||
64 | ind3 :: (t1 -> t2 -> t3 -> t4) -> t1 -> t2 -> t3 -> t4 | ||
65 | ind3 f a b c = f a b c | ||
66 | |||
67 | ind4 :: (t1 -> t2 -> t3 -> t4 -> t5) -> t1 -> t2 -> t3 -> t4 -> t5 | ||
68 | ind4 f a b c d = f a b c d | ||
69 | |||
70 | ind5 :: (t1 -> t2 -> t3 -> t4 -> t5 -> t6) | ||
71 | -> t1 -> t2 -> t3 -> t4 -> t5 -> t6 | ||
72 | ind5 f a b c d e = f a b c d e | ||
73 | |||
74 | glCreateProgram :: MonadIO m => m C.GLuint | ||
75 | glCreateProgram = ind0 C.glCreateProgram | ||
76 | |||
77 | glActiveTexture :: MonadIO m => | ||
78 | C.GLenum -> m () | ||
79 | glActiveTexture = ind1 C.glActiveTexture | ||
80 | glBindVertexArray :: MonadIO m => | ||
81 | C.GLuint -> m () | ||
82 | glBindVertexArray = ind1 C.glBindVertexArray | ||
83 | glClearDepth :: MonadIO m => | ||
84 | C.GLdouble -> m () | ||
85 | glClearDepth = ind1 C.glClearDepth | ||
86 | glClear :: MonadIO m => C.GLbitfield -> m () | ||
87 | glClear = ind1 C.glClear | ||
88 | glClearStencil :: MonadIO m => | ||
89 | C.GLint -> m () | ||
90 | glClearStencil = ind1 C.glClearStencil | ||
91 | glCreateShader :: MonadIO m => | ||
92 | C.GLenum -> m C.GLuint | ||
93 | glCreateShader = ind1 C.glCreateShader | ||
94 | glCullFace :: MonadIO m => C.GLenum -> m () | ||
95 | glCullFace = ind1 C.glCullFace | ||
96 | glDeleteProgram :: MonadIO m => | ||
97 | C.GLuint -> m () | ||
98 | glDeleteProgram = ind1 C.glDeleteProgram | ||
99 | glDeleteShader :: MonadIO m => | ||
100 | C.GLuint -> m () | ||
101 | glDeleteShader = ind1 C.glDeleteShader | ||
102 | glDepthFunc :: MonadIO m => C.GLenum -> m () | ||
103 | glDepthFunc = ind1 C.glDepthFunc | ||
104 | glDepthMask :: MonadIO m => | ||
105 | C.GLboolean -> m () | ||
106 | glDepthMask = ind1 C.glDepthMask | ||
107 | glDisable :: MonadIO m => C.GLenum -> m () | ||
108 | glDisable = ind1 C.glDisable | ||
109 | glEnable :: MonadIO m => C.GLenum -> m () | ||
110 | glEnable = ind1 C.glEnable | ||
111 | glEnableVertexAttribArray :: MonadIO m => | ||
112 | C.GLuint -> m () | ||
113 | glEnableVertexAttribArray = ind1 C.glEnableVertexAttribArray | ||
114 | glFrontFace :: MonadIO m => C.GLenum -> m () | ||
115 | glFrontFace = ind1 C.glFrontFace | ||
116 | glLineWidth :: MonadIO m => | ||
117 | C.GLfloat -> m () | ||
118 | glLineWidth = ind1 C.glLineWidth | ||
119 | glLinkProgram :: MonadIO m => | ||
120 | C.GLuint -> m () | ||
121 | glLinkProgram = ind1 C.glLinkProgram | ||
122 | glLogicOp :: MonadIO m => C.GLenum -> m () | ||
123 | glLogicOp = ind1 C.glLogicOp | ||
124 | glPointSize :: MonadIO m => | ||
125 | C.GLfloat -> m () | ||
126 | glPointSize = ind1 C.glPointSize | ||
127 | glProvokingVertex :: MonadIO m => | ||
128 | C.GLenum -> m () | ||
129 | glProvokingVertex = ind1 C.glProvokingVertex | ||
130 | glUseProgram :: MonadIO m => | ||
131 | C.GLuint -> m () | ||
132 | glUseProgram = ind1 C.glUseProgram | ||
133 | |||
134 | glAttachShader :: MonadIO m => | ||
135 | C.GLuint -> C.GLuint -> m () | ||
136 | glAttachShader = ind2 C.glAttachShader | ||
137 | glBindBuffer :: MonadIO m => | ||
138 | C.GLenum -> C.GLuint -> m () | ||
139 | glBindBuffer = ind2 C.glBindBuffer | ||
140 | glBindSampler :: MonadIO m => | ||
141 | C.GLuint -> C.GLuint -> m () | ||
142 | glBindSampler = ind2 C.glBindSampler | ||
143 | glBindTexture :: MonadIO m => | ||
144 | C.GLenum -> C.GLuint -> m () | ||
145 | glBindTexture = ind2 C.glBindTexture | ||
146 | glPolygonMode :: MonadIO m => | ||
147 | C.GLenum -> C.GLenum -> m () | ||
148 | glPolygonMode = ind2 C.glPolygonMode | ||
149 | |||
150 | |||
151 | |||
152 | glDisableVertexAttribArray :: MonadIO m => C.GLuint -> m () | ||
153 | glDisableVertexAttribArray = ind1 C.glDisableVertexAttribArray | ||
154 | |||
155 | glBindFramebuffer :: MonadIO m => C.GLenum -> C.GLuint -> m () | ||
156 | glBindFramebuffer = ind2 C.glBindFramebuffer | ||
157 | glBlendEquationSeparate :: MonadIO m => | ||
158 | C.GLenum -> C.GLenum -> m () | ||
159 | glBlendEquationSeparate = ind2 C.glBlendEquationSeparate | ||
160 | glDeleteFramebuffers :: MonadIO m => | ||
161 | C.GLsizei -> Ptr C.GLuint -> m () | ||
162 | glDeleteFramebuffers = ind2 C.glDeleteFramebuffers | ||
163 | glDeleteSamplers :: MonadIO m => | ||
164 | C.GLsizei -> Ptr C.GLuint -> m () | ||
165 | glDeleteSamplers = ind2 C.glDeleteSamplers | ||
166 | glDeleteTextures :: MonadIO m => | ||
167 | C.GLsizei -> Ptr C.GLuint -> m () | ||
168 | glDeleteTextures = ind2 C.glDeleteTextures | ||
169 | glDeleteVertexArrays :: MonadIO m => | ||
170 | C.GLsizei -> Ptr C.GLuint -> m () | ||
171 | glDeleteVertexArrays = ind2 C.glDeleteVertexArrays | ||
172 | glDrawBuffers :: MonadIO m => | ||
173 | C.GLsizei -> Ptr C.GLenum -> m () | ||
174 | glDrawBuffers = ind2 C.glDrawBuffers | ||
175 | glGenFramebuffers :: MonadIO m => | ||
176 | C.GLsizei -> Ptr C.GLuint -> m () | ||
177 | glGenFramebuffers = ind2 C.glGenFramebuffers | ||
178 | glGenVertexArrays :: MonadIO m => | ||
179 | C.GLsizei -> Ptr C.GLuint -> m () | ||
180 | glGenVertexArrays = ind2 C.glGenVertexArrays | ||
181 | glPointParameterf :: MonadIO m => C.GLenum -> C.GLfloat -> m () | ||
182 | glPointParameterf = ind2 C.glPointParameterf | ||
183 | glPolygonOffset :: MonadIO m => C.GLfloat -> C.GLfloat -> m () | ||
184 | glPolygonOffset = ind2 C.glPolygonOffset | ||
185 | glUniform1i :: MonadIO m => C.GLint -> C.GLint -> m () | ||
186 | glUniform1i = ind2 C.glUniform1i | ||
187 | |||
188 | glBindFragDataLocation :: MonadIO m => | ||
189 | C.GLuint -> C.GLuint -> Ptr C.GLchar -> m () | ||
190 | glBindFragDataLocation = ind3 C.glBindFragDataLocation | ||
191 | glClearBufferfv :: MonadIO m => | ||
192 | C.GLenum -> C.GLint -> Ptr C.GLfloat -> m () | ||
193 | glClearBufferfv = ind3 C.glClearBufferfv | ||
194 | glClearBufferiv :: MonadIO m => | ||
195 | C.GLenum -> C.GLint -> Ptr C.GLint -> m () | ||
196 | glClearBufferiv = ind3 C.glClearBufferiv | ||
197 | |||
198 | glClearColor :: MonadIO m => | ||
199 | C.GLfloat -> C.GLfloat -> C.GLfloat -> C.GLfloat -> m () | ||
200 | glClearColor = ind4 C.glClearColor | ||
201 | glColorMask :: MonadIO m => | ||
202 | C.GLboolean -> C.GLboolean -> C.GLboolean -> C.GLboolean -> m () | ||
203 | glColorMask = ind4 C.glColorMask | ||
204 | glFramebufferTexture :: MonadIO m => | ||
205 | C.GLenum -> C.GLenum -> C.GLuint -> C.GLint -> m () | ||
206 | glFramebufferTexture = ind4 C.glFramebufferTexture | ||
207 | glViewport :: MonadIO m => | ||
208 | C.GLint -> C.GLint -> C.GLsizei -> C.GLsizei -> m () | ||
209 | glViewport = ind4 C.glViewport | ||
210 | glBlendColor :: MonadIO m => | ||
211 | C.GLfloat -> C.GLfloat -> C.GLfloat -> C.GLfloat -> m () | ||
212 | glBlendColor = ind4 C.glBlendColor | ||
213 | |||
214 | glVertexAttribPointer :: MonadIO m => | ||
215 | C.GLuint | ||
216 | -> C.GLint -> C.GLenum -> C.GLboolean -> C.GLsizei -> Ptr a -> m () | ||
217 | glVertexAttribPointer = ind0 C.glVertexAttribPointer | ||
218 | |||
219 | glDrawArrays :: MonadIO m => | ||
220 | C.GLenum -> C.GLint -> C.GLsizei -> m () | ||
221 | glDrawArrays = ind3 C.glDrawArrays | ||
222 | |||
223 | glBlendFuncSeparate :: MonadIO m => | ||
224 | C.GLenum -> C.GLenum -> C.GLenum -> C.GLenum -> m () | ||
225 | glBlendFuncSeparate = ind4 C.glBlendFuncSeparate | ||
226 | glDrawElements :: MonadIO m => | ||
227 | C.GLenum -> C.GLsizei -> C.GLenum -> Ptr a -> m () | ||
228 | glDrawElements = ind4 C.glDrawElements | ||
229 | |||
230 | glVertexAttribIPointer :: MonadIO m => | ||
231 | C.GLuint -> C.GLint -> C.GLenum -> C.GLsizei -> Ptr a -> m () | ||
232 | glVertexAttribIPointer = ind5 C.glVertexAttribIPointer | ||
233 | glFramebufferTexture1D :: MonadIO m => | ||
234 | C.GLenum -> C.GLenum -> C.GLenum -> C.GLuint -> C.GLint -> m () | ||
235 | glFramebufferTexture1D = ind5 C.glFramebufferTexture1D | ||
236 | glFramebufferTexture2D :: MonadIO m => | ||
237 | C.GLenum -> C.GLenum -> C.GLenum -> C.GLuint -> C.GLint -> m () | ||
238 | glFramebufferTexture2D = ind5 C.glFramebufferTexture2D | ||
239 | glFramebufferTextureLayer :: MonadIO m => | ||
240 | C.GLenum -> C.GLenum -> C.GLuint -> C.GLint -> C.GLint -> m () | ||
241 | glFramebufferTextureLayer = ind5 C.glFramebufferTextureLayer | ||