PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : OpenGL-Programmierprogramme!


Ganon
2002-11-14, 20:11:34
Hi,

im Netz findet man ja so viele schöne Beispiele wie man ein Dreieck darstellt usw.

Nur leider weiß ich nicht wo ich diese Zeilen eingeben soll, denn mit KDevelop funzt das ganze irgendwie nicht!(oder was muss man machen?)
Mit Editor + Compiler macht das ganze keinen Spaß irgendwie.

Am besten wäre C++ als Basis, nur welches Programm?

Danke!

Unregistered
2002-11-15, 10:55:14
Originally posted by Ganon
Mit Editor + Compiler macht das ganze keinen Spaß irgendwie.

Äh, wie meinen?

Du willst ein OpenGL-Programm in C++ schreiben, aber ohne Editor und Compiler? Quasi Drag&Drop? :)

Bei einem C++ Programm sucht man sich eigentlich den Editor seiner Wahl und schreibt darin seinen Quellcode. Bei einfachen Projekten dann noch ein kleines Skript zum Kompilieren, bei etwas grösseren Projekten vielleicht ein Makefile und bei aufwendigeren, portablen Sachen zückt man Autoconf & Automake.

Oder suchst du ne IDE? Dann bist du bei KDevelop eigentlich genau richtig. Der Editor ist da zwar etwas dünn ausgefallen, aber KDevelop baut dir auf Wunsch automatisch alle wichtigen Makefiles. OpenGL-Programme kannste damit auch entwickeln. Musst halt nur die entsprechenden Header includen und gegen die passenden Bibliotheken linken.

Ich würd dir aber erstmal zum Editor + Kommandozeile raten. Da lernst du *erheblich* mehr. Eine IDE benutzt ja im Hintergrund die gleichen Tools, nur bekommt man sie dort meist nie zu sehen und lernt so nie mit ihnen umzugehen.

Ganon
2002-11-15, 15:37:24
Nee! Mit Editor + Compiler meine ich nur:

Textdatei öffnen -> reinschreiben -> Konsole -> gcc bla bla bla!

Wenn ich in KDevelop ein C++ Projekt aufmache und die Zeilen für einen Würfel "reinkopiere" dann meldet er Fehler! Oder mache ich was falsch?

Unregistered
2002-11-15, 16:23:18
Originally posted by Ganon
Wenn ich in KDevelop ein C++ Projekt aufmache und die Zeilen für einen Würfel "reinkopiere" dann meldet er Fehler! Oder mache ich was falsch?

Muss wohl. :D

Ich hab mit KDevelop auch schon OpenGL Programme in C++ geschrieben und keine Probleme damit gehabt.

Was ist das denn für ein Fehler? Ein Fehler von KDevelop oder eine Fehlermeldung vom Compiler?

Einfach nur den Code vom "Würfel" da reinkopieren kann nicht funktionieren. Du musst KDevelop (und damit dem Compiler) auch noch sagen welche zusätzlichen Bibliotheken er braucht. Z.B. MESA oder die nVidia Libraries und natürlich auch die Bibliotheken von X-Window.

Ist dieser "Würfel" überhaupt ein X11-Window Programm? Linkst du gegen die oben genannten Pakete? Die notwendigen Header-Dateien sind auch installiert und werden richtig included?

Ganon
2002-11-15, 17:07:17
Es ist eine Compilermeldung!

Könntest du mir denn sagen was ich alles machen muss damit ich OpenGL-Sourcen zum laufen bekomme?

Also was muss alles in den #include -Block usw.! Was muss ich in KDevelop einstelen usw.

Danke!

zeckensack
2002-11-15, 18:55:42
Du mußt die Fehlermeldungen hier posten :D

Ganon
2002-11-15, 19:17:57
OKOK!:D

Ist zwar kein Würfel aber eine Fläche!
Kommt aber bei allen Sachen!

main.o: In function `DrawScene':
/home/linux/test/test/main.c:9: undefined reference to `glClearColor'
/home/linux/test/test/main.c:10: undefined reference to `glClear'
/home/linux/test/test/main.c:13: undefined reference to `glColor3f'
/home/linux/test/test/main.c:16: undefined reference to `glBegin'
/home/linux/test/test/main.c:17: undefined reference to `glVertex2f'
/home/linux/test/test/main.c:18: undefined reference to `glVertex2f'
/home/linux/test/test/main.c:19: undefined reference to `glVertex2f'
/home/linux/test/test/main.c:20: undefined reference to `glVertex2f'
/home/linux/test/test/main.c:21: undefined reference to `glVertex2f'
/home/linux/test/test/main.c:22: undefined reference to `glEnd'
/home/linux/test/test/main.c:25: undefined reference to `glFlush'
main.o: In function `main':
/home/linux/test/test/main.c:31: undefined reference to `glutInit'
/home/linux/test/test/main.c:33: undefined reference to `glutInitDisplayMode'
/home/linux/test/test/main.c:35: undefined reference to `glutInitWindowPosition'
/home/linux/test/test/main.c:36: undefined reference to `glutInitWindowSize'
/home/linux/test/test/main.c:38: undefined reference to `glutCreateWindow'
/home/linux/test/test/main.c:41: undefined reference to `glutDisplayFunc'
/home/linux/test/test/main.c:43: undefined reference to `glutMainLoop'
collect2: ld returned 1 exit status
make[3]: Verlassen des Verzeichnisses Verzeichnis »/home/linux/test/test«
make[2]: Verlassen des Verzeichnisses Verzeichnis »/home/linux/test/test«
make[1]: Verlassen des Verzeichnisses Verzeichnis »/home/linux/test«
make[3]: *** [test] Fehler 1
make[2]: *** [all-recursive] Fehler 1
make[1]: *** [all-recursive] Fehler 1
make: *** [all] Fehler 2

Hier der Code:

#include <stdio.h>
#include <stdlib.h>

#include <GL/glut.h>

void DrawScene(void)
{
//Hintergrundfarbe setzen (dunkles Rot)
glClearColor (0.5, 0.0, 0.0, 0.0);
glClear(GL_COLOR_BUFFER_BIT);

// Farbe des 5-Ecks setzen, (blau)
glColor3f(0.0, 0.1, 1.0);

//Polygonzug des 5-Ecks
glBegin(GL_POLYGON);
glVertex2f(-0.5, -0.5);
glVertex2f(-0.5, 0.5);
glVertex2f( 0.5, 0.5);
glVertex2f( 0.8, 0.0);
glVertex2f( 0.5, -0.5);
glEnd();

//vorangehende GL-Befehle zeichnen
glFlush();
}

int main(int argc, char *argv[])
{
// initialisiert GLUT
glutInit(argc, argv);
// initialisiere Ausgabefenster (Single Buffer, RBG Farb Modell)
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
// Fensterposition und -grösse setzen
glutInitWindowPosition (100, 100);
glutInitWindowSize (500, 500);
// Fenster erzeugen
glutCreateWindow (argv[0]);

// Callback-Funktion zum Zeichnen des GL-Objektes setzen
glutDisplayFunc(DrawScene);
// Hauptschleife
glutMainLoop();

return EXIT_SUCCESS;
}

Nagilum
2002-11-16, 00:19:31
So, hab mich mal registriert.

Was dein Problem betrifft, das sieht soweit doch schon ganz gut aus. Er kompiliert alles brav, nur beim Linken findet er die entsprechenden OpenGL-Bibliotheken nicht. Die Header-Dateien, die du per "#include" einbindest definieren ja nur die Funktionen, implementiert sind sie aber in den Bibliotheken.

Hab leider gerade keine Linux-Kiste mit KDevelop zur Hand, aber irgendwo müsste man bei KDevelop die Liste der benötigten Bibliotheken (Libraries) festlegen können. Nennt sich meist "LDFLAGS".

Das müsste dann in etwas so aussehen (ausm Kopf runtergetippt):

-L/usr/X11R6/lib -lm -lGL -lGLU -lglut -lX11 -lXmu -lXi

-L: gibt zusätzliche Verzeichnisse an, wo nach Libraries gesucht wird
-l: gibt den Namen einer Library an, die mit eingebunden werden soll ('m' für die Mathematiksachen, 'GL' für OpenGL usw.)

Ganon
2002-11-16, 09:03:27
Hi,

ich habe jetzt unter "Linker-Optionen" bei den Projekt-Optionen diese Zeile eingefügt. Wenn ich auf OK klicke dann führt er ja nochmal ./configure aus. Nur jetzt bekomme ich so eine Meldung:

checking for C compiler default output... configure: error: C compiler cannot create executables

Das ganze mache ich jetzt aber unter C da C++ die Source daoben nicht annimmt, bzw. findet er einen Fehler und macht nicht weiter. C findet den Fehler zwar auch aber sagt trotzdem *Erfolg*! Nur jetzt mag der Compiler nicht mehr wenn ich deine Zeile einfüge!

liquid
2002-11-28, 14:51:22
Lad dir den NeHe Source für Linux runter, entweder die glx Version oder den SDL-Port. Da kannste dir die Makefile angucken und auf der aufbauen. Das dürfte eigentlich kein größeres Problem sein.

cya
liquid