我是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
不會有任何用處。