MonoTouch OpenTK和UniformMatrix4

Bra*_*son 5 iphone opengl-es xamarin.ios opentk

我正在尝试将OpenTK Matrix4传递给着色器制服,但GL.UniformMatrix4似乎没有合适的过载.重载接受float或者float[]ref float.类似地,我找不到将Matrix4实例转换为float数组的方法 - 我已经看到一个在Matrix4上使用ToArray方法的示例,但这似乎不存在于我正在使用的发行版中.

当然,我遗漏了一些简单的东西,因为这对于将模型/视图/投影矩阵传递给着色器非常重要.

我正在使用最新版本的MonoTouch的OpenTK版本.

Bra*_*son 5

这个辅助函数可以工作,但看起来像是一个 hack。

基本上它只是传递 Row0,Col0 的地址。由于 C# 不保证结构中字段的顺序,因此从理论上讲,它的工作主要靠运气。

public static void UniformMatrix4(int location, Matrix4 value)
{
    GL.UniformMatrix4(location, 1, false, ref value.Row0.X);
}
Run Code Online (Sandbox Code Playgroud)

当然,OpenTK 应该具有允许直接传递 Matrix4 的绑定。