2014-10-29 54 views
0

在swift中創建OpenGL-es應用程序時,必須將所有參數轉換爲它們的gl等價物。例如...Swift OpenGL類型轉換

func createCamera(screenWidth:Int, screenHeight:Int){ 
    glViewport(GLint(0), GLint(0), GLsizei(screenWidth), GLsizei(screenHeight)); 

} 

正如你可以看到我有每glViewPort()的參數轉換成OpenGL的喜歡的數據類型,如角閃爍。有沒有更有效的方法來做到這一點?我覺得自己一直在做的就是包裝一切。

回答

1

這是這樣的。 (現在,至少?一如既往,file a bug如果你想看到蘋果改變的事情)。Swift和OpenGL都不是真的圍繞彼此友好而設計的 - OpenGL是一個C API,Swift的API橋接似乎是更多以ObjC API及其約定爲中心。

你或許可以做一些類型的擴展和函數重載,使得從Swift中使用GL更加平滑一些。例如,如果您明智地實現了extension GLint : IntegerLiteralConvertible,那麼您將能夠將整數文字傳遞給GL API,而不必在GLint()轉換中包裝每個文字。使用Swift類型的GL函數將是一個更高的順序,但只是由於它們的數量而不是它們的複雜性。例如:

func glViewport(x: Int, y: Int, width: Int, height: Int) { 
    GL.glViewport(GLint(x), GLint(y), GLsizei(width), GLsizei(height) 
} 

我也不會感到驚訝,如果有人已經在做這樣的事情,並出版一本圖書館,但我還沒有聽說有這樣的努力呢。

+0

好的謝謝。我想在事情的宏偉計劃中它並不那麼糟糕。 – NJGUY 2014-10-29 18:50:13