2016-12-10 10 views
0

Mac用のVisual Studioのプレビューリリースは、これは私が必要とする多数のコールが欠落しているMac Visual Studio/XamarinでOpenTKメソッドをP/Invokeできますか?

パッケージXamarin.Mac.framework、

  • GL.BindVertexArray
  • からOpenTK 0,0,0,0を使用していますGL.DeleteVertexArray
  • GL.GenVertexArrays

Pにいくつかの方法があります /これらを起動し、あなたがそれをどのようにすればよいですか?または、それを行う方法に関する良い情報はどこにありますか?

私は/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac/OpenTK.dllディレクトリから.dllファイルを削除し、これらを持っている1つの他の場所でそれを置き換えることができます電話?私は/Library/Frameworks/Xamarin.Mac.framework/Versionsからの.dllを削除でき

答えて

1

(Xamarinは、ベクトル2タイプがあり、そして他の人が衝突する別のネームスペースに保存されているように私はOpenTKv2オープンソースを使用することはできません) /Current/lib/mono/Xamarin.Mac/OpenTK.dllディレクトリに移動し、これらの呼び出しを持つ場所に置き換えますか? (私はXamarinにVector2タイプがあり、別の名前空間にクラッシュする別の名前空間に格納されているため、OpenTKv2オープンソースは使用できません)

いいえ、安全ではありません。 Xamarin.Mac内からランダムなアセンブリを置き換えてもうまくいく結果にはなりません。

P/Invokeには何らかの方法がありますか?または、 どのようにそれを行うには良い情報がありますか?

はい、このようなC関数の場合、標準のDllImportはうまく動作するはずです。あなたはいくつかの例を見つけることができますhere

+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 } 

以下のクラスを作成したもファイリングバグをご検討くださいbugzilla.xamarin.com/index.cgiが不足しているため、修正されます。 –

+0

恐ろしい - 私は今夜後で見てください。私は彼に、これを尋ねる前に「問題を報告する」というバグを提出しました。それはバジルに行きますか? – andrew

+0

Chris - あなたが提供したリンクは、xamarin.macの最新のオープンソースバージョンを指しているようです - そうですか?私は**これは**の方法は、上記の方法があるようにMacのVisual Studioのプレビューバージョンで使用されていないと思います。 [link](https://developer.xamarin.com/guides/cross-platform/visual-studio-mac/)は、最新のモノが4.8のモノ4.6を使っていると言っています。これは問題だと思います。 – andrew

0

だから、クリスの答えの後に私は

PInvoke.glBindVertexArray((uint) _vertexBuffer._VAO_ID); 

を使用し、それだけで

GL.BindVeryexArray((uint) _vertexBuffer._VAO_ID) 
関連する問題