2017-09-14 68 views
7

我的應用程序的主界面是通過SKCanvasView呈現。顏色準確地反映了我在代碼中指定的值。SKGLView暗得多比SKCanvasView

如果我換入SKGLView(硬件加速的版本),改變沒有其他的代碼,結果是60%的暗:

<!--<skia:SKCanvasView PaintSurface="OnCanvasViewPaintSurface" />--> 
    <skia:SKGLView PaintSurface="OnCanvasViewPaintSurface" /> 

爲什麼會出現這種情況?如何解決它?

+0

你們看到的非常有意義我爲'SKGLView'是基於OpenGL的並因此幾何照明發揮作用。但是,儘管有暴露在SKGLView渲染循環,我看不出在「夏普」版本,你可以控制光源,環境光值,哪個方向的「默認的光源是,等....什麼它看起來,如果你180度旋轉的世界是怎樣的? – SushiHangover

+0

至於電池使用,即可以相差很大基於裝置,其CPU與GPU,什麼,有多少是移動和是否在這裏是在GL簡單對象翻譯,與畫布的繪畫和雙緩衝等..在Android上的所有現代版本請記住,帆布畫是硬件加速,這同樣適用於iOS的UIViews真實,CoreGraphics中和UIKit繪圖加速。現在這些佈局意見沒有加速爲每個OS都有自己的佈局管理器(和形式具有其自己的在其頂部)。 – SushiHangover

+0

對於電池測試,使用電池的統計機器人,簡單多克爾基於設置。運行正常使用試驗一段時間使用Canvas一個ð存儲在歷史結果和GL再次運行它,你可以比較一下運行:https://developer.android.com/studio/profile/battery-historian.html – SushiHangover

回答

2

答案可以在這裏找到:https://github.com/mono/SkiaSharp/issues/299#issuecomment-331990904

我找到了解決問題的辦法。在啓動畫面樣式中設置了一個特定屬性,但在樣式更改時不會取消設置(出於某種原因)。

splashscreen風格,注意這一點:

<item name="android:backgroundDimEnabled">true</item> 

文檔:https://developer.xamarin.com/api/field/Android.Resource+Attribute.BackgroundDimEnabled

風格切換時,這不是取消設置。因此,要解決這個問題,只需將它設置爲false:

<item name="android:backgroundDimEnabled">false</item> 

下面是說明了這一點的儲存庫:https://github.com/mattleibow/AndroidGLSurfaceViewTests