[swift-users] Here's a multi-platform OpenGL loader for Swift.
David Turnbull
dturnbull at gmail.com
Sat Dec 12 15:39:15 CST 2015
It's looking like the Epoxy requirement for SwiftGL is going away real soon
now. I was able to lookup the OpenGL symbols from pure Swift code. No
compiled C code is needed at all. What follows is roughly how I will do it.
It lazily loads the pointer the first time you use it. The Linux version is
only slightly different.
Does anyone know a way to do this without the unsafeBitCast?
import Darwin
let handle = dlopen(
"/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL",
RTLD_LAZY)
func DLOADglGetIntegerv(a:GLenum, _ b:UnsafeMutablePointer<GLint>) -> Void {
glGetIntegerv = unsafeBitCast(dlsym(handle, "glGetIntegerv"),
glGetIntegerv.dynamicType)
glGetIntegerv(a,b)
}
public var glGetIntegerv:@convention(c) (GLenum, UnsafeMutablePointer<GLint>)
-> Void = { DLOADglGetIntegerv($0,$1) }
On Thu, Dec 10, 2015 at 9:22 PM, David Turnbull <dturnbull at gmail.com> wrote:
> If you tried using OpenGL with something other than Apple's framework then
> you probably didn't get very far. The header files of GLEW and Epoxy aren't
> fully understood by Swift. So I wrote some Swift code that generates some
> Swift code using the XML file from Khronos. Now everything you usually get
> from the headers is Swift code.
>
> https://github.com/AE9RB/SwiftGL
>
> The Demo folder contains an OpenGL equivalent of hello world. This is also
> a good example to look at if you want to learn more about C bindings.
>
> https://github.com/AE9RB/SwiftGL/tree/master/Demo
>
> -david
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20151212/d1c25416/attachment.html>
More information about the swift-users
mailing list