2010-11-29 3 views
2

Ich benutze opengl, um Werte aus einem Array zu zeichnen. Die Werte stammen von den 3 Android-Sensoren. Ich möchte den Renderer abschalten, während ich die Werte einsammle. Es scheint, dass Zeichnen und Sammeln gleichzeitig unterschiedliche Ergebnisse haben, also möchte ich das Rendering ausschalten, während ich Sensorwerte sammle. Im Moment nutze ich einen boolean in der Zeichnung(), um mit dem Zeichnen aufzuhören. Aber gibt es einen besseren Weg, dies zu tun? Es passieren seltsame Dinge, wenn ich mit dem Zeichnen aufhöre, so wie die Dinge, die ich zeichne, manchmal ein wenig, aber es kann nicht sein, weil es keine Zeichnung gibt (ondraw() {if (boolean) {........ .}}beste Möglichkeit, ondraw zu stoppen() opengl für eine Zeit

Vielen Dank für Ihre Hilfe :-)

+1

Was meinst du mit "Jitter"? Bewegt sich zwischen den Bildern hin und her ... irgendwie "vibriert an Ort und Stelle"? –

Antwort

5

Sie können GLSurfaceView bitten, nur zu zeichnen, wenn Sie über setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY) gefragt werden, und dann requestRender() anrufen, wenn Sie zum Zeichnen bereit sind.

1

ich habe einen Vorschlag: erstellen Sie einen Thread der Sensordaten zu sammeln und sie als ein Objekt zur Verfügung stellen. Dieser Thread würde alle Daten sammeln und auf dem öffentlichen Wertobjekt synchronisieren. Die Blockierungszeit wäre minimiert.

Ihr Render-Thread kann dann das gleiche tun, wenn Sie die öffentlichen Werte für den lokalen Verbrauch kopieren.

Wenn das Abfragen der Sensoren länger dauert als die Renderzeit, werden die gleichen Daten mehr als einmal gerendert. Die Animation könnte ein wenig zucken, aber nicht mehr als das, was die Daten darstellen.

PS: Ihr Jitter kann ein Ergebnis der Daten selbst und nicht Ihres Codes sein.

Verwandte Themen