在swift中创建OpenGL-es应用程序时,必须将所有参数转换为gl等效网络。例如......
func createCamera(screenWidth:Int, screenHeight:Int){
glViewport(GLint(0), GLint(0), GLsizei(screenWidth), GLsizei(screenHeight));
}
如您所见,我必须将每个glViewPort()参数转换为OpenGL喜欢的数据类型,例如 Glint 。有更有效的方法吗?我觉得我一直在做的就是包装所有东西。
答案 0 :(得分:1)
就是这样。 (现在,至少?一如往常,file a bug如果你想看到Apple改变一切。)Swift和OpenGL都不是真正围绕彼此友好设计的--OpenGL是一个C API,以及Swift的API桥接似乎更多地围绕ObjC API及其惯例。
你可能会进行一些类型扩展和函数重载,以使得从Swift中使用GL变得更加平滑。例如,如果您明智地实现extension GLint : IntegerLiteralConvertible
,那么您将能够将整数文字传递给GL API,而无需将每个文字包含在GLint()
转换中。制作GL函数采用Swift类型将是一个更高的顺序,但仅仅是由于它们的数量,而不是它们的复杂性。例如:
func glViewport(x: Int, y: Int, width: Int, height: Int) {
GL.glViewport(GLint(x), GLint(y), GLsizei(width), GLsizei(height)
}
如果有人已经做过这样的事情并发布图书馆,我不会感到惊讶,但我还没有听说过任何这样的努力。