![](/img/trans.png)
[英]glReadPixels(Depth_Component) not working in Android OpenGL ES20
[英]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.