一个纯 Swift 编写的 OpenGL 函数加载器。要使用它,请在你的 Swift 文件中 import GL
。
OpenGL 是一个函数加载器,允许你从 Swift 程序中调用 OpenGL GPU 函数。这些函数在运行时由 OpenGL 惰性加载。OpenGL 还可以诊断由于函数在特定 GPU 和 OpenGL 版本上不可用而导致的无效 OpenGL 函数调用。OpenGL 可以加载高达 OpenGL 4.5 的任何 OpenGL 函数。
OpenGL 在 Linux 上可用;它在 Mac OSX 上未经测试,但没有理由不能工作。
OpenGL 提供带有标签和无标签参数的 OpenGL 函数访问。 这可以帮助你避免常见的参数排序错误。
glClearColor(0.15, 0.15, 0.15, 1)
glClearColor(red: 0.15, green: 0.15, blue: 0.15, alpha: 1)
函数名称与 OpenGL C 规范相同,参数标签与 C 规范中的参数名称相同,但有两个例外:`in`:
已重命名为 input:
,`func`:
已重命名为 f:
,以避免与 Swift 关键字冲突。
OpenGL 在 GL
作用域下导入 OpenGL 常量。除非这样做会导致常量的名称以数字开头,否则将删除常量中多余的 GL_
前缀。
glBlendFunc(GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA)
注意:
GL
作用域与也称为GL
的模块作用域不同。 OpenGL 枚举或 OpenGL 类型的完整限定名称是GL.GL.__symbolname__
。 OpenGL 函数的完整限定名称仅为GL.__functionname__
。
所有 OpenGL 常量都是以下类型之一:GL.Enum
、GL.Bitfield
或 GL.UInt64
。(分别为 Int32
、UInt32
或 UInt64
。)
OpenGL 为 OpenGL 类型提供类型别名定义。 这些类型别名被赋予 Swifty 名称,并且也限定于 GL
。
var tex_id:GL.UInt = 0
OpenGL C 类型 | OpenGL Swift 类型别名 | OpenGL Swift 类型 |
---|---|---|
GLboolean | GL.Bool | Bool |
GLdouble | GL.Double | Double |
GLclampd | GL.ClampDouble | Double |
GLfloat | GL.Float | Float |
GLclampf | GL.ClampFloat | Float |
GLbyte | GL.Byte | Int8 |
GLchar | GL.Char | Int8 |
GLcharARB | GL.CharARB | Int8 |
GLshort | GL.Short | Int16 |
GLint | GL.Int | Int32 |
GLsizei | GL.Size | Int32 |
GLenum | GL.Enum | Int32 |
GLfixed | GL.Fixed | Int32 |
GLclampx | GL.ClampX | Int32 |
GLint64 | GL.Int64 | Int64 |
GLint64EXT | GL.Int64EXT | Int64 |
GLintptr | GL.IntPointer | Int |
GLintptrARB | GL.IntPointerARB | Int |
GLsizeiptr | GL.SizePointer | Int |
GLsizeiptrARB | GL.SizePointerARB | Int |
GLvdpauSurfaceNV | GL.VdpauSurfaceNV | Int |
GLubyte | GL.UByte | UInt8 |
GLushort | GL.UShort | UInt16 |
GLhalfNV | GL.HalfNV | UInt16 |
GLuint | GL.UInt | UInt32 |
GLbitfield | GL.Bitfield | UInt32 |
GLuint64 | GL.UInt64 | UInt64 |
GLuint64EXT | GL.UInt64EXT | UInt64 |
GLhandleARB | GL.HandleARB | UnsafeMutableRawPointer? |
GLeglImageOES | GL.EGLImageOES | UnsafeMutableRawPointer? |
GLsync | GL.Sync | OpaquePointer? |