我是Kotlin的新手,但我想尝试将其用于游戏开发,至少将Android与OpenGL ES 2.0和HTML5与WebGL(我对此非常熟悉)进行对比。对于WebGL和GLES20,我的渲染引擎的类/函数不需要稍微不同的版本显然是一件好事,但是在没有开销的情况下,在Kotlin中实现这一点是否有实际的方法?Kotlin编译器能否优化掉包装函数?
我认为我需要做的是在OpenGL ES 2.0中编写一个实现WebGLRenderingContextBase
或其克隆的类(如果需要克隆,我可以使用委托代替WebGL实现)像这样:
override fun bindBuffer(target: Int, buffer, Int) {
GLES20.glBindBuffer(target, buffer)
}
我会写一个脚本来完成大部分工作。
我的问题是,编译器是否足够聪明,可以优化掉这些包装器,并直接在我的类的vtable或类似的JVM中使用GLES20.glBindBuffer等?当通过对接口或基类的引用调用重写的方法时,推测inline
不会有任何用处。