+
+
+def GLindexBuffer(countExpr, typeExpr):
+ # Indices arguments are polymorphic:
+ # - offsets when element array buffer is bound
+ # - or a blob otherwise.
+ sizeExpr = '%s*_gl_type_size(%s)' % (countExpr, typeExpr)
+ return Polymorphic('_element_array_buffer_binding()', [
+ ('0', Blob(Const(GLvoid), sizeExpr)),
+ ],
+ IntPointer("const GLvoid *"),
+ contextLess=False,
+ )
+
+# Polymorphic object name
+def GLname(targetExpr):
+ return Polymorphic(targetExpr, [
+ ('GL_BUFFER', GLbuffer),
+ ('GL_SHADER', GLshader),
+ ('GL_PROGRAM', GLprogram),
+ ('GL_VERTEX_ARRAY', GLarray),
+ ('GL_QUERY', GLquery),
+ ('GL_PROGRAM_PIPELINE', GLpipeline),
+ ('GL_TRANSFORM_FEEDBACK', GLuint),
+ ('GL_SAMPLER', GLsampler),
+ ('GL_TEXTURE', GLtexture),
+ ('GL_TEXTURE_1D', GLtexture),
+ ('GL_TEXTURE_1D_ARRAY', GLtexture),
+ ('GL_TEXTURE_2D', GLtexture),
+ ('GL_TEXTURE_2D_MULTISAMPLE', GLtexture),
+ ('GL_TEXTURE_2D_ARRAY', GLtexture),
+ ('GL_TEXTURE_RECTANGLE', GLtexture),
+ ('GL_TEXTURE_CUBE_MAP', GLtexture),
+ ('GL_TEXTURE_CUBE_MAP_POSITIVE_X', GLtexture),
+ ('GL_TEXTURE_CUBE_MAP_NEGATIVE_X', GLtexture),
+ ('GL_TEXTURE_CUBE_MAP_POSITIVE_Y', GLtexture),
+ ('GL_TEXTURE_CUBE_MAP_NEGATIVE_Y', GLtexture),
+ ('GL_TEXTURE_CUBE_MAP_POSITIVE_Z', GLtexture),
+ ('GL_TEXTURE_CUBE_MAP_NEGATIVE_Z', GLtexture),
+ ('GL_TEXTURE_CUBE_MAP_ARRAY', GLtexture),
+ ('GL_TEXTURE_3D', GLtexture),
+ ('GL_RENDERBUFFER', GLrenderbuffer),
+ ('GL_FRAMEBUFFER', GLframebuffer),
+ ('GL_DISPLAY_LIST', GLlist),
+ ('GL_FENCE_APPLE', GLfence),
+ ('GL_DRAW_PIXELS_APPLE', GLuint), # GL_APPLE_fence
+ ], GLuint)
+
+
+# GL_AMD_performance_monitor
+GLperfMonitorCounterInfoAMD = Polymorphic('pname', [
+ ('GL_COUNTER_TYPE_AMD', Pointer(GLenum)),
+ ('GL_PERCENTAGE_AMD', Pointer(Float)),
+ ('GL_COUNTER_RANGE_AMD', Array(Float, 2)),
+ ],
+ OpaquePointer(GLvoid),
+)