Einfache Frage, über die ich immer nachgedacht habe. Als ich zum ersten Mal in opengl war, musste ich einen Weg finden, um "Kacheln" oder einen Haufen Dreiecke mit einem OpenGL-Draw-Call zu zeichnen, um die Performance enorm zu verbessern. Ich habe das getan, indem ich alle Scheitelpunkte in ein Array gesetzt und das Array gezeichnet habe. Ein Problem, das auftrat, war, wann immer ich die Kacheln scrollte, würde ich zufällig platzierte Pixel sehen, die ein- und ausschalteten, abhängig davon, wie viel ich die Karte gescrollt hatte. Etwa 5-8 auf einer 10x10 Karte. Nun bin ich wieder ins opengl gegangen und diesmal habe ich mit GL_LINE_LOOP anstelle von GL_TRiANGLES gezeichnet. Das ist mir damals nie in den Sinn gekommen, aber was ich bei der Verwendung von GL_LINE_LOOP sehe, sind alle Dreiecke, aber wenn es fertig ist (es geht von links unten nach rechts oben, also oben rechts), gibt es eine Linie zwischen wo ich endete und wo ich anfing. Würde die Ursache dieser zufälligen Pixel deswegen sein? Oder hat das nichts damit zu tun? Wird diese Zeile, die das Ende und den Anfang verbindet, wegen des GL_LINE_LOOP-Modus angezeigt oder hat das auch nichts mit der Art und Weise zu tun, wie ich die Map erstellt habe?Android OpenGL Vertex Array
Antwort
GL_LINE_LOOP ist ein völlig anderer Zeichnungsmodus - und nein, das ist nicht der Grund, warum Sie Pixel auf Kacheln fallen lassen. Der wahrscheinlichste Grund für das Löschen von Pixeln beim Zeichnen eines engen Gitternetzes besteht darin, dass Sie die Scheitelpunkte nicht konsistent berechnen. Das Prinzip besteht darin, dass, wenn ein Eckpunkt von zwei benachbarten Dreiecken (oder Quads, Linien, was auch immer) geteilt wird, die Gleitkommakoordinaten dieses Eckpunktes für jeden Zeichnungsaufruf 100% identisch sein müssen. Wenn du das tust, dann wirst du garantiert ein enges Netz ohne Lücken zwischen den Kacheln rendern. Dein Problem könnte etwas anderes gewesen sein ... vielleicht kämpft Z ... aber meine Vermutung ist das erste, was ich hier erwähne.
- 1. Android Vertex Array-Objekte?
- 2. OpenGL 4.1: Vertex-Array-Objekt zieht nichts
- 3. OpenGL-Vertex-Layout
- 4. normal berechnen pro Vertex OpenGL
- 5. OpenGL Vertex Shader Set boolesch pro Vertex (glVertexAttribPointer)
- 6. Rendering in opengl 3.1 + ohne VBO mit clientseitige Vertex Array
- 7. Was sind Vertex Array Objekte?
- 8. Android opengl zeichnender Text
- 9. GL.POINTS und GL.LINES mit SAME Vertex-Array anzeigen-Android OpenGL ES1.0
- 10. Werden OpenGL ES Vertex Array-Objekte in einem beliebigen Android-Emulator unterstützt?
- 11. OpenGL-Programm erkennt keine zweite Vertex-Eingabe
- 12. Android Openlets Vertex Tweening
- 13. Dreieck Opengl in Android
- 14. Vertex Texture Fetch (Texture lesen im Vertex Shader)
- 15. Cocoa und OpenGL, Wie setze ich ein GLSL Vertex-Attribut mit einem Array?
- 16. OpenGL nicht nach dem Vereinheitlichen in Vertex Shader
- 17. OpenGL-Standardwert für ungepufferte Vertex-Attribut bei Verwendung von Layoutqualifikatoren
- 18. Wie sende ich Daten mit OpenGL an Vertex Shader?
- 19. iOS OpenGL ES2 machen Änderung im Vertex-Puffer-Objekt
- 20. OpenGL - Tell Vertex Shader, dass VBO hat sich geändert
- 21. GLES-Fehler: Vertex-Attribut-Array ist ohne Datenbindung aktiviert
- 22. Android OpenGL ES 2, Zeichnung Quadrate
- 23. Offsets für per Vertex Daten verschachtelt in OpenGL ES auf Android
- 24. Wie Übergeben Float-Array zu Shader in OpenGL ES 2.0?
- 25. Android Changing OpenGL Koordinatensystem
- 26. Android OpenGL ES nicht zeichnen Textur
- 27. Failing VBOs in OpenGl/Android
- 28. Android OpenGL Kreis (Kugel) wie Ellipse .. keine Projektion/Kamera
- 29. Android OpenGL - ES Textur bluten
- 30. OpenGL, VAOs und mehrere Puffer