Visual Studio for Mac的预览版使用来自Package Xamarin.Mac.framework的OpenTK 0,0,0,0
这缺少我需要的多次通话,
有没有办法P / Invoke这些,你应该怎么做?或者,哪里有关于如何做的好信息?
我可以从 /Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac/OpenTK.dll 目录中删除.dll并将其替换为在其他地方有这些电话? (我不能使用OpenTKv2开源,因为Xamarin有Vector2类型,而其他存储在另一个命名空间中的碰撞)
答案 0 :(得分:1)
我可以从/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac/OpenTK.dll目录中删除.dll,并将其替换为具有这些调用的其他地方吗? (我无法使用OpenTKv2开源,因为Xamarin具有Vector2类型,而其他存储在另一个命名空间中的命名空间)
不,不安全。从Xamarin.Mac内部替换随机组件不会带来愉快的结果。
有没有办法P / Invoke这些,你应该怎么做?要么, 哪里有关于如何做的好消息?
是的,对于C函数,像这样标准的DllImport应该可以正常工作。您可以找到一些示例here。
答案 1 :(得分:0)
所以在克里斯的回答之后我在
下创建了一个班级public static class PInvoke
{
public const string file = "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL";
#if __MAC__
[DllImport(file, EntryPoint = "glBindVertexArray", ExactSpelling = true)]
internal extern static void BindVertexArray(UInt32 array);
#endif
}
然后从另一个类使用
PInvoke.glBindVertexArray((uint) _vertexBuffer._VAO_ID);
它只是起作用而不是
GL.BindVeryexArray((uint) _vertexBuffer._VAO_ID)