<div dir="ltr">It&#39;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.<div><br></div><div><div>Does anyone know a way to do this without the unsafeBitCast?<br></div><div><div><br></div><div><p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo"><span style="color:rgb(187,44,162)">import</span> Darwin</p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo;color:rgb(209,47,27)"><span style="color:rgb(187,44,162)">let</span><span style="color:rgb(0,0,0)"> handle = </span><span style="color:rgb(61,29,129)">dlopen</span><span style="color:rgb(0,0,0)">(</span>&quot;/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL&quot;<span style="color:rgb(0,0,0)">, </span><span style="color:rgb(112,61,170)">RTLD_LAZY</span><span style="color:rgb(0,0,0)">)</span></p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo"><span style="color:rgb(187,44,162)">func</span> DLOADglGetIntegerv(a:<span style="color:rgb(79,129,135)">GLenum</span>, <span style="color:rgb(187,44,162)">_</span> b:<span style="color:rgb(112,61,170)">UnsafeMutablePointer</span>&lt;<span style="color:rgb(79,129,135)">GLint</span>&gt;) -&gt; <span style="color:rgb(112,61,170)">Void</span> {</p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo;color:rgb(79,129,135)"><span style="color:rgb(0,0,0)">    </span>glGetIntegerv<span style="color:rgb(0,0,0)"> = </span><span style="color:rgb(61,29,129)">unsafeBitCast</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(61,29,129)">dlsym</span><span style="color:rgb(0,0,0)">(</span>handle<span style="color:rgb(0,0,0)">, </span><span style="color:rgb(209,47,27)">&quot;glGetIntegerv&quot;</span><span style="color:rgb(0,0,0)">), </span>glGetIntegerv<span style="color:rgb(0,0,0)">.</span><span style="color:rgb(187,44,162)">dynamicType</span><span style="color:rgb(0,0,0)">)</span></p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo;color:rgb(79,129,135)"><span style="color:rgb(0,0,0)">    </span>glGetIntegerv<span style="color:rgb(0,0,0)">(a,b)</span></p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo">}</p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo;min-height:14px"><br></p>
<p style="margin:0px;font-size:12px;line-height:normal;font-family:Menlo"><span style="color:rgb(187,44,162)">public</span> <span style="color:rgb(187,44,162)">var</span> glGetIntegerv:<span style="color:rgb(187,44,162)">@convention</span>(c) (<span style="color:rgb(79,129,135)">GLenum</span>, <span style="color:rgb(112,61,170)">UnsafeMutablePointer</span>&lt;<span style="color:rgb(79,129,135)">GLint</span>&gt;) -&gt; <span style="color:rgb(112,61,170)">Void</span> = { <span style="color:rgb(49,89,93)">DLOADglGetIntegerv</span>($0,$1) }</p></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 10, 2015 at 9:22 PM, David Turnbull <span dir="ltr">&lt;<a href="mailto:dturnbull@gmail.com" target="_blank">dturnbull@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>If you tried using OpenGL with something other than Apple&#39;s framework then you probably didn&#39;t get very far. The header files of GLEW and Epoxy aren&#39;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.<br></div><div><br></div><div><a href="https://github.com/AE9RB/SwiftGL" target="_blank">https://github.com/AE9RB/SwiftGL</a></div><div><br></div><div>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.</div><div><br></div><div><a href="https://github.com/AE9RB/SwiftGL/tree/master/Demo" target="_blank">https://github.com/AE9RB/SwiftGL/tree/master/Demo</a></div><span class="HOEnZb"><font color="#888888"><div><br></div><div>-david</div></font></span></div>
</blockquote></div><br></div></div>