Open GL
-
Hallo,
ich möchte mit OpenGL ein 2 D Rechteck zeichnen welches an einer Ecke eine Konkave Rundung hat.
Nun mein Problem ist das ich die Vertices berechnet habe und diese mir als Punkt mal ausgeben lassen habe die Vertices werden richtig berechenet nun wenn ich auf GL_POLYGON umschalte macht mir mein programm von eine gerade, dort wo die rundung sein soll.
glBegin(GL_POLYGON); for (int i = 0; i < mPolygonNormal->VertexCount; i += 2) { cout << i << "x" << mPolygonNormal->Shape[i] << "y" << mPolygonNormal->Shape[i + 1] << endl; glVertex3f(mPolygonNormal->Shape[i], mPolygonNormal->Shape[i + 1], 0); } glEnd();im Array Shape liegen wie schon gesagt die Richtig Koordinaten welche ich mir mit GL_Point ausgeben lassen habe.
Könnt ihr mir helfen?
-
1. arbeite mit einer high level library statt direkt mit den open gl funktionen rumzubasteln. (ausser du schreibst eine engine, was ich bezweifle)
2. nutze doch nicht mehr die steinalten und deprecated open gl 1.1 funktionen. (glBegin etc., modern wären vertex arrays und vertex buffer objects)
3. trianguliere das polygon einfach und gib das ganze als triangles oder triganle-strip / -fan aus. das kann u.u. auch eine high level library für dich übernehmen.halbwissen: open gl nimmt nur konvexe polygone entgegen, konkave muss man manuell triangulieren.
-
welche high level library würdest du empfehlen?
-
Ich kann mich meinem Vorposter anschliessen.
SFML ist eine nette Bibliothek, mit sf::ConvexShape kannst du konvexe Polygone zeichnen. Falls du konkave brauchst, kannst du die Erweiterung Thor anschauen, die eine Klasse thor::ConcaveShape anbietet.
-
jdc++ schrieb:
welche high level library würdest du empfehlen?
für 2d only würde ich ganz klar sfml empfehlen. gründe: simpel, objektorientiert, intuitiv und genügend grosse community.
-
super danke,
ist wirklich einfach zu verstehen.
und die rundung funktioniert auch
-
Sobald du in einem Tutorial oder Buch was von glBegin oder glEnd ließt, mache einen großen Bogen darum. Das ist ganz alter Kram, so programmiert das heute keiner mehr, außer man hat noch alten Code zu pflegen.
@asdfasf: Mir ist sogar OpenGL zu highlevel
, ich schreibe gerade alles komplett selbst von der Mathelib über Frambuffer bis hin zum Rasterer. Die ganz Pipeline von A-Z und das in purem C. Erstaunlicher Weise habe ich bis jetzt kaum Probleme und komme viel schneller voran als gedacht. Ist natürlich alles Hobby, so zum Spaß.
-
asdfasf schrieb:
jdc++ schrieb:
welche high level library würdest du empfehlen?
für 2d only würde ich ganz klar sfml empfehlen. gründe: simpel, objektorientiert, intuitiv und genügend grosse community.
+1 für SFML

-
SFML ist nicht wirklich eine OpenGL Library, aber für Window Management und Timer etc sehr gut brauchbar. Eine gute C++ OpenGL Lib ist das hier: http://oglplus.org/
Braucht allerdings einen C++X11 fähigen Compiler wie Visual Studio 2013 Express oder den neuesten MinGW/G++.