一个纯 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? |