2017-09-14 7 views
7

Der Hauptbildschirm meiner App wird über SKCanvasView gerendert. Die Farben spiegeln genau die Werte wider, die ich im Code angegeben habe.SKGLView viel dunkler als SKCanvasView

Wenn ich Swap-in SKGLView (Hardware-beschleunigte Version), keinen anderen Code zu ändern, ist das Ergebnis 60% dunkler:

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

Warum ist das passiert und wie kann ich das beheben es?

+0

Was Sie sehen, mir macht total Sinn als 'SKGLView' auf OpenGL basiert und damit kommt die Geometriebeleuchtung ins Spiel. Aber während auf SKGLView eine Rendering-Schleife sichtbar ist, sehe ich nicht, wo in der "Sharp" -Version die Lichtquelle, der Umgebungslichtwert, die Richtung, aus der die "Standardlichtquelle" kommt, usw. ... Was? sieht es aus, wenn man die Welt um 180 Grad dreht? – SushiHangover

+0

Was die Batteriebenutzung betrifft, kann das je nach Gerät sehr unterschiedlich sein, CPU gegen GPU, was und wie viel bewegt sich und ob hier einfache Objektübersetzungen im GL sind , vs. das Malen und doppelte Puffern, etc .. eines Canvas.Erinnern Sie sich an alle modernen Versionen von Android, Leinwand Malerei ist hardwarebeschleunigt, das gleiche gilt für iOS UIViews, CoreGraphics und UIKit Zeichnung beschleunigt werden.Noch das Layout von denen Ansichten werden nicht beschleunigt, da jedes Betriebssystem über einen eigenen Layout-Manager verfügt (und Forms hat darüber hinaus eigene) – SushiHangover

+0

Verwenden Sie Batteriestatus für Android, einfaches Docker-basiertes Setup Verwenden Sie Canvas für eine Weile einen normalen Verwendungstest ein d Speichern Sie die Ergebnisse im Historian und führen Sie sie erneut im GL aus. Sie können die Läufe vergleichen: https://developer.android.com/studio/profile/battery-historian.html – SushiHangover

Antwort

2

Die Antwort finden Sie hier: https://github.com/mono/SkiaSharp/issues/299#issuecomment-331990904

ich die Lösung für das Problem gefunden. Es gibt ein bestimmtes Attribut, das im Begrüßungsbildschirmstil festgelegt ist, aber aus bestimmten Gründen nicht deaktiviert wird, wenn der Stil geändert wird.

Im splashscreen Stil, beachten Sie folgendes:

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

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

Diese nicht ungesetzt ist, wenn der Stil umgeschaltet wird. Also, dieses Problem zu beheben, setzen Sie ihn einfach auf false:

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

hier ein Repository ist, dass dies zeigt: https://github.com/mattleibow/AndroidGLSurfaceViewTests

Verwandte Themen