Skalierung der OpenGL-Oberflächenansicht für verschiedene DPIs

8

Ich habe ein Gerät mit 800x480 res. Wenn ich GLSurfaceView erstelle, bekomme ich einen onSurfaceChanged -Aufruf mit 533x320 (scheinbar mit 1.5 HDPI Modifier) ​​und die Oberfläche ist hochskaliert. Wenn ich also 1 Pixel dicke Linie zeichne, sieht das wirklich schlecht aus und ich kann kein pixelgenaues Rendering haben.

Was ich haben möchte, ist eine native Auflösung (800x480).

View wird auf diese Weise (wie in NDK OpenGL-Beispielen) in Activities onCreate :

erstellt %Vor%

Ich verwende keine Layouts usw.

    
Mark 04.02.2012, 19:52
quelle

2 Antworten

4

Ich habe die Lösung gefunden: wenn ich

hinzufüge %Vor%

zu AndroidManifest.xml, bekomme ich richtige Auflösung. Um ehrlich zu sein, Android ist sehr seltsame Plattform für mich nach ein paar Jahren mit iOS ...

Lösung gefunden hier: MonoDroid apps verwenden nicht die richtige Dichte Zeichen

    
Mark 08.02.2012, 15:44
quelle
0

Die Wurzel des Problems scheint darin zu liegen, dass der Befehl onSurfaceChanged die (vermutlich veränderte) Breite und Höhe nach unten leitet.

Es mag mit dem Code, der die Ansicht erstellt, nichts falsch sein, aber wir wollen sicherstellen, dass er mit der tatsächlichen Geräteauflösung konstruiert wird. Wenn Sie setLayout (int width, int height) explizit mit der gewünschten Breite und Höhe aufrufen, erhalten Sie möglicherweise einen besseren Kilometerstand ...

Natürlich müssen Sie vorher die tatsächliche Bildschirmgröße bestimmen. Und die beste Wette, um die tatsächlichen physischen Pixel zu erhalten, ist mit widthPixels und heightPixels von DisplayMetrics: Ссылка

Wenn das nicht funktioniert, kann das Testen Ihres Codes auf einem anderen Gerät zu einem korrekten Ergebnis führen. In diesem Fall kann es sich um ein geräteabhängiges Problem handeln ...

    
Erik 07.02.2012 21:44
quelle