[verschoben] zeichnen mit opengl

Verschiedenes zu Qt
Antworten
sudo rm -rf
Beiträge: 28
Registriert: 23. Dezember 2009 13:16

[verschoben] zeichnen mit opengl

Beitrag von sudo rm -rf »

Hallo, kann mir jemand verraten,weshlb zum geier mir diese Funktion nichts zeichnet? eigentlich sollte ein dreieck gezeichnet werden. mit einer anderen funktion klappt es... es liegt also definitiv an dieser fkt.
hängt es mit meinen const float koordinaten zusammen?

Code: Alles auswählen

void opengl::draw_object(float x, float y, float z)
{
	const float A[3] = {x-0.50000000, y+0.00000000, z+0.86602540};
	const float B[3] = {x+0.50000000, y+0.00000000, z+0.86602540};
	const float C[3] = {x+0.86602540, y+0.00000000, z+0.50000000};
	const float D[3] = {x+0.00000000, y+0.00000000, z-1.00000000};
	const float E[3] = {x-0.86602540, y+0.00000000, z-0.50000000};

	const float F[3] = {x-0.86602540, y+1.93185165, z+0.50000000};
	const float G[3] = {x+0.00000000, y+1.93185165, z+1.00000000};
	const float H[3] = {x+0.86602540, y+1.93185165, z+0.50000000};
	const float I[3] = {x+0.50000000, y+1.93185165, z-0.86602540};
	const float J[3] = {x-0.50000000, y+1.93185165, z-0.86602540};

	glBegin(GL_TRIANGLES);
	glColor3f(128.0/255.0, 128.0/255.0, 255.0/255.0);

	glVertex3f(A[0], A[1], A[2]);
	glVertex3f(G[0], G[1], G[2]);
	glVertex3f(B[0], B[1], B[2]);

	glEnd();
}
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

Zum "Fehler":
gezeichnet wird sicher etwas. Warum du das nicht siehst, können wir aus folgenden Gründen nicht herausfinden:
* Der OpenGL-Mode ist unbekannt
* Die aktuelle Matrize (Kameraposition und -Richtung, Transformationen usw.) ist unbekannt
* Clipping ist unbekannt
* OpenGL-Properties sind unbekannt (Texturen en-/disabled usw.)

Daher:
* mit qDebug() immer schön Koordinaten und Farben validieren
* reduzieren bis Fehler gefunden.

Zum Code:
* "opengl" ist ein schlechter Klassenbezeichner
* Die Strategie "Koordinaten umrechnen" ist eine schlechte Variante um Objekte an [x,y,z] zu zeichnen. Besser ist "Translate + Zeichnen um Nullpunkt".

BTW: "definitiv" wird definitiv häufig zu voreilig geschrieben...
N¤X
Beiträge: 77
Registriert: 21. September 2009 12:24

Beitrag von N¤X »

Da stimme ich solarix voll und ganz zu.

Ansonsten würde ich auf den ersten Blick einfach mal sagen, dass du dein Dreieck clockwise zeichnest, und sich das (Transformationen mal Außen vor gelassen) nicht so mit eventuell aktiviertem Backface-Culling verträgt. Versuch mal ABG statt AGB.

Übrigens kannst du deine Arrays auch direkt nutzen, mit glVertex3fv(A) statt glVertex3f(A[0], A[1], A[2]) ;)
mfg N¤X
Antworten