OpenGL glDrawArrays Bufferfehler

TheWhiteShadow

Bekanntes Mitglied
Hallo,
ich versuche nach der Anleitung hier OpenGL Vertex Array
mich in die Materie einzuarbeiten, aber irgendwie klappt das nicht so ganz.
Die VM crashed, weil mein Buffer nicht stimmt, aber was ist daran falsch?

Mein Zeichenaufruf:
Java:
float[] vertices = new float[] {-size, -size, size,
								 size, -size, size,
								 size,  size, size,
								-size,  size, size};
// 4*3*4 = (float) * (Vertices) * (Polygonform)
FloatBuffer floats = ByteBuffer.allocateDirect(4 * 3 * 4).order(ByteOrder.nativeOrder()).asFloatBuffer();
floats.put(vertices);
floats.flip();

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, floats);
glDrawArrays(GL_QUADS, 0, 4); // hier wills nicht mehr!
glDisableClientState(GL_VERTEX_ARRAY);

Ich hatte vorher die Vertex über glBegin ... gemacht, und nur diese eine Methode geändert.
 
G

Guest2

Gast
Moin,

Du könntest probeweise mal dieses versuchen:

Java:
            // GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
            // GL11.glVertexPointer(3, GL11.GL_FLOAT, floats);
            GL11.glInterleavedArrays(GL11.GL_V3F, 0, floats);
            GL11.glDrawArrays(GL11.GL_QUADS, 0, 4);
            // GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);

Viele Grüße,
Fancy
 
S

Spacerat

Gast
Soweit ich das überblicke will "glDrawArrays" bei dir 4 Quads statt 4 Punkte zeichnen. Der Parameter Count müsste 1 sein und nicht 4.
 

TheWhiteShadow

Bekanntes Mitglied
Das mit dem Parameter glDrawArrays hab ich schon ausprobiert. Wenn ich ihn höher drehe crashed es seltener, irgendwann gar nicht mehr aber ich seh meine Form nicht. Diese muss aber da sein, weil es dieselben Koordinaten sind, wie zuvor.

glInterleavedArrays funktioniert. Warum weiß ich zwar nicht, aber ich ich les mich mal ein.^^

Danke und Gruß TWS
 
G

Guest2

Gast
glInterleavedArrays funktioniert. Warum weiß ich zwar nicht, aber ich ich les mich mal ein.^^

Imho könnte das auch ein Bug im OpenGL Treiber sein. Mir ist dieses merkwürdige Verhalten auch erst vor einiger Zeit aufgefallen. Nutzt Du zufällig eine ATI mit aktuellem Treiber? (Da trat das Verhalten bei mir auf, allerdings nicht immer reproduzierbar)

Viele Grüße,
Fancy
 

TheWhiteShadow

Bekanntes Mitglied
Ich habs den Fehler mittlerweile gefunden.

glVertexPointer will als 2. Parameter kein Typ sondern den Abstand zum nächsten Punkt in bytes haben.^^
glDrawArrays will die Bufferlänge in floats haben.
 
Zuletzt bearbeitet:
G

Guest2

Gast
Ups, das mit dem [c]glVertexPointer[/c] habe ich in deinem Beispiel tatsächlich übersehen. Normalerweise hat [c]glVertexPointer[/c] 4 Parameter (OpenGL: glVertexPointer). In LWJGL wird auf den zweiten Parameter verzichtet, da die Methode 5 fach überladen ist und sich der Typ aus dem Buffer ergibt. Als stride (2 Parameter bei LWJGL, 3 Parameter bei OpenGL) kannst Du auch 0 angeben, dann wird davon ausgegangen das alle Werte hintereinander liegen.

Bei [c]glDrawArrays[/c] sollte der 3 Parameter count allerdings sowohl bei LWJGL als auch bei OpenGL die Anzahl der Indizes angeben. Bei einem Quad sollte 4 also richtig sein (OpenGL: glDrawArrays).

Viele Grüße,
Fancy
 
S

Spacerat

Gast
Bei [c]glDrawArrays[/c] sollte der 3 Parameter count allerdings sowohl bei LWJGL als auch bei OpenGL die Anzahl der Indizes angeben. Bei einem Quad sollte 4 also richtig sein (OpenGL: glDrawArrays).

Viele Grüße,
Fancy
Der Link ist sehr aufschlussreich. Hmm, nö, eigentlich gar nicht. Ist bei "count" die Anzahl der Indices gemeint, die ein Quad als Punkte oder die Anzahl der Indices die das Array an Quads hat, gemeint? Ich denke nämlich eher das Zweite, weil die Anzahl der Punkte pro Quad bereits durch "GL_QUAD" vorgegeben ist.
 
G

Guest2

Gast
Bei einem Quad als GL_QUADS 4. Bei zwei Quads als GL_QUADS 8 usw.
Bei einem Quad als GL_QUAD_STRIP 4. Bei zwei Quads als GL_QUAD_STRIP 6 usw.
Bei einem Dreieck als GL_TRIANGLES 3. Bei zwei Dreiecken als GL_TRIANGLES 6 usw.
Bei einem Dreieck als GL_TRIANGLE_STRIP 3. Bei zwei Dreiecken als GL_TRIANGLE_STRIP 4 usw.
Bei einem Dreieck als GL_TRIANGLES_ADJACENCY 6. Bei zwei Dreiecken als GL_TRIANGLES_ADJACENCY 12 usw.

Und viele weite Möglichkeiten. ;)

Du kannst das auch mit dem Beispiel oben ausprobieren. Ab count = 4 wird das Quad korrekt dargestellt. Bis count = 7 passiert nichts Ungewöhnliches (die werden ignoriert). Ab count >= 8 treten Merkwürdigkeiten auf (abhängig von dem, was hinter dem Buffer im Speicher liegt.)

Viele Grüße,
Fancy
 
S

Spacerat

Gast
Okay, das hat ein Gesicht. ;)
Wärst du jetzt angemeldet gewesen, hätte ich mich sogar bedanken können.
 

TheWhiteShadow

Bekanntes Mitglied
Du kannst das auch mit dem Beispiel oben ausprobieren. Ab count = 4 wird das Quad korrekt dargestellt. Bis count = 7 passiert nichts Ungewöhnliches (die werden ignoriert). Ab count >= 8 treten Merkwürdigkeiten auf (abhängig von dem, was hinter dem Buffer im Speicher liegt.)

Viele Grüße,
Fancy

Ok, ich hab es bei meinem Rumexperimentieren immer nur einmal laufen gehabt. Vermutlich hatte ich da einfach Glück gehabt.
Diese nativen Buffer geben mit auch dieses retro-Gefühl wieder, als ich noch mit C angefangen hab.^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
temi OpenGL: Eine Kugel Spiele- und Multimedia-Programmierung 7
P Audio Visualizer mit OpenGL in Java? Spiele- und Multimedia-Programmierung 4
Z Vlcj in OpenGL Spiele- und Multimedia-Programmierung 4
coolian opengl von scale in breite und höhe konvertieren Spiele- und Multimedia-Programmierung 23
F OpenGL (LWJGL) Shader Programmierung GLSL Spiele- und Multimedia-Programmierung 2
K Messdaten in Echtzeit darstellen in OpenGL Spiele- und Multimedia-Programmierung 4
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
B LWJGL OpenGL SIGSEGV auf Linux (Verzweiflung :/) Spiele- und Multimedia-Programmierung 8
KeexZDeveoper Fehler von OpenGL Spiele- und Multimedia-Programmierung 1
Kim_Dotcom libGDX - opengl Fehler Spiele- und Multimedia-Programmierung 5
Streeber Problem mit Transparenz/TextDrawing in LWJGL/Slick2d (OpenGL) Spiele- und Multimedia-Programmierung 1
RalleYTN OpenGL Context im JFrame? Spiele- und Multimedia-Programmierung 0
L OpenGL TransformationMatrix eines Flugzeugs Spiele- und Multimedia-Programmierung 2
F OpenGL - Transparenz mit Depth Peeling Spiele- und Multimedia-Programmierung 0
turing OpenGL / Jogle Code Reveiw zur Performance Verbesserung Spiele- und Multimedia-Programmierung 1
K LibGdx, Loadingscreen & Opengl context Spiele- und Multimedia-Programmierung 3
turing OpenGL VBO and Unfiform Handling Spiele- und Multimedia-Programmierung 1
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
T opengl und Android.... Spiele- und Multimedia-Programmierung 3
D [OpenGL] Spiel in der Art von Age of Empires Spiele- und Multimedia-Programmierung 4
R LWJGL: OpenGL Fehler - weitere Informationen auslesen möglich? Spiele- und Multimedia-Programmierung 2
T Welche OpenGL-Version soll ich verwenden? Spiele- und Multimedia-Programmierung 2
O OpenGL - Texture falsch herum Spiele- und Multimedia-Programmierung 3
Gregorrr OpenGL & RCP/SWT Spiele- und Multimedia-Programmierung 3
P LWJGL oder OpenGL (C++) Spiele- und Multimedia-Programmierung 7
K Android: OpenGL render performance Tipps ? Spiele- und Multimedia-Programmierung 4
lumo opengl, sprites/tiles Spiele- und Multimedia-Programmierung 8
M OpenGL: Rectangle dort erstellen wo ich hintippe Spiele- und Multimedia-Programmierung 2
U OpenGl 1.1 (LWJGL GL11.*) und weiter? Spiele- und Multimedia-Programmierung 7
CookieSoft OpenGl Translatef Frage Spiele- und Multimedia-Programmierung 2
V Keine Ahnung von OpenGL! Hilfe wäre lieb! Spiele- und Multimedia-Programmierung 8
T 3D Stadtmodell mit OpenGL Spiele- und Multimedia-Programmierung 5
B LWJGL/OpenGL rendert manche Objekte nicht Spiele- und Multimedia-Programmierung 6
S OpenGL Textur unsauber Spiele- und Multimedia-Programmierung 2
T OpenGL ES verschwindene Vertices Spiele- und Multimedia-Programmierung 2
T Android OpenGL Bewegen Spiele- und Multimedia-Programmierung 5
R OpenGL Textur mit verschiedenen bit depths Spiele- und Multimedia-Programmierung 6
Helgon OpenGL Blend Frage Spiele- und Multimedia-Programmierung 18
A LWJGL/OpenGL und Text Spiele- und Multimedia-Programmierung 8
Helgon OpenGL vernünftige Tutorial? Spiele- und Multimedia-Programmierung 22
A OpenGL Textur und nicht Textur Spiele- und Multimedia-Programmierung 2
T Jmonkey opengl problem Spiele- und Multimedia-Programmierung 13
T Probleme mit Skysphere in Opengl Spiele- und Multimedia-Programmierung 4
M Problem mit Kamera (glMultMatrix (OpenGL/ LWJGL)/ Quaternionen) Spiele- und Multimedia-Programmierung 5
F Suche Tutorial zu "purem" OpenGL mit Java Spiele- und Multimedia-Programmierung 10
Kr0e OpenGL + glSubTexImage2D -> Bufferproblem Spiele- und Multimedia-Programmierung 3
F OpenGL Screenshot in iMove (als Greenscreen) => Farben invertiert? Spiele- und Multimedia-Programmierung 16
I Vergleich von Java3D und OpenGL Spiele- und Multimedia-Programmierung 17
F Mac: OpenGL Desktop-Screen aus Grafikkarte lesen Spiele- und Multimedia-Programmierung 2
F OpenGL 2D MouseClick/MouseMove Listener Spiele- und Multimedia-Programmierung 4
Kr0e Sehr schnelle Texturupdates (OpenGL) Spiele- und Multimedia-Programmierung 3
Kr0e OpenGL beliebige Texturgröße Spiele- und Multimedia-Programmierung 2
BattleMaster246 OpenGL - Transparenz Spiele- und Multimedia-Programmierung 10
Kr0e OpenGL .. Pixel Buffer Objekt oder Frame Buffer Object? Spiele- und Multimedia-Programmierung 2
Y JOGL / OPENGL in Frame Spiele- und Multimedia-Programmierung 11
A Problem openGL-Pipeline mit Win7? Spiele- und Multimedia-Programmierung 6
G OpenGL boolesche operation auf Rechtecke Spiele- und Multimedia-Programmierung 15
A JOGL / OpenGL Spiele- und Multimedia-Programmierung 7
G API für 3d-Programmierung? OpenGL? Spiele- und Multimedia-Programmierung 12
J OpenGL (JOGL) - Radial Blur Effekt (Glow) Spiele- und Multimedia-Programmierung 2
J Opengl Texture laden Null Pointer Exception Spiele- und Multimedia-Programmierung 6
J netbeans opengl keyPressed(KeyEvent evt) benutzen Spiele- und Multimedia-Programmierung 4
J netbeans opengl gluPerspective und gluLookAt Verständnis Spiele- und Multimedia-Programmierung 13
S glTexSubImage2D()-Fragen(Zerstörbares Terrain, OpenGL) Spiele- und Multimedia-Programmierung 3
Z Suche Tutorial zum Einstieg in OpenGl mit Java (JOGL) Spiele- und Multimedia-Programmierung 2
T Overlay in anderer OpenGL Anwendung Spiele- und Multimedia-Programmierung 4
egrath Vista OpenGL Performance Problem? Spiele- und Multimedia-Programmierung 3
Y OpenGL Spiele- und Multimedia-Programmierung 5
J opengl beispiele? Spiele- und Multimedia-Programmierung 10
D Java mit OpenGL - besser LWJGL oder JOGL? Spiele- und Multimedia-Programmierung 6
N OpenGL und DirectX - was genau ist das? Spiele- und Multimedia-Programmierung 5
C OpenGl Support für Applet (sun.java2d.opengl=True) Spiele- und Multimedia-Programmierung 3
B OpenGL oder Direct X Spiele- und Multimedia-Programmierung 9

Ähnliche Java Themen

Neue Themen


Oben