簡體   English   中英

OpenTK ES20 Android MissingMethodException

[英]OpenTK ES20 Android MissingMethodException

我一直在嘗試制作適用於Android的OpenGL ES2.0(使用OpenTK)渲染器,也可以在iOS上使用。 為此,我嘗試在Xamarin Android項目上使用OpenTK的最新版本。 嘗試使用GL.Clear(...)方法時,只有我遇到了問題。 當代碼嘗試調用該方法時,我收到MissingMethodException。

調用時,代碼看起來很高興:

GL.ClearColor(1.0f, 0.0f, 0.0f, 1.0f);

但是隨后它引發了以下異常:

GL.Clear(ClearBufferMask.ColorBufferBit);

上面的兩個函數調用來自OpenTK庫,但是我也可以訪問Mono.Android隨附的OpenGL ES20庫(但是我想使用OpenTK庫,以便構建跨平台渲染器)。 使用Mono.Android GL調用時我沒有任何問題,但是有趣的是,當我混合來自不同庫的調用時,程序可以正常運行,如下所示:

OpenTK.Graphics.ES20.GL.ClearColor(1.0f, 0.0f, 0.0f, 1.0f);
Android.OpenGL.ES20.Clear(GLES20.GlColorBufferBit);

如果沒有人能夠提供解決我的問題的方法,我仍然想知道這里的實際情況。

編輯:我忘了提到我使用OpenTK ES2.0庫為桌面制作了一個測試項目,並且對GL.Clear(...)的調用在那里工作得很好。 不知道這是否有幫助。

您遇到了這個問題: https : //bugzilla.xamarin.com/show_bug.cgi?id=18575

簡而言之,Xamarin.Android將其自己的OpenTK版本捆綁在其核心庫中,該庫將覆蓋您對OpenTK.dll的引用。 您的代碼是針對OpenTK.dll v1.1.xy構建的,但是正試圖與Xamarin版本的OpenTK.dll v1.0.xy(與ABI不兼容)一起運行。

解決方案是OpenTK的以下分支,該分支添加了對Xamarin.Android和Xamarin.iOS的官方支持: https : //github.com/opentk/opentk/pull/142 這已經過測試,並且可以在所有平台(桌面,Android,iOS)上正常運行。 如果您遇到任何問題,請發布錯誤報告

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM