der Würfel der nicht da ist (OGL)
-
Ich habe jetzt schon mehrere Varianten probiert, (siehe Kommentare) aber ich sehe meinen Würfel nicht in 3D.
Hab ich was vergessen , oder wie mach ich´s richtig?#include<stdio.h> #include<stdlib.h> #include<GL/glut.h> void myinit() { glDepthFunc(GL_LEQUAL); glEnable(GL_DEPTH_TEST); //glMatrixMode(GL_PROJECTION); //gluPerspective(70.0, 1.0, 1.0, 1000.0); //glMatrixMode(GL_MODELVIEW); //gluLookAt(0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); //glViewport(0, 0, 800, 600); } void Keyboard(unsigned char keyPressed, int x, int y) { } void DrawScene(void) { glClearColor(0.0 ,0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_QUADS); //Vorderseite glColor3f(1.0, 0.0, 0.0); glVertex3f(-1.0,-1.0, 1.0); glVertex3f( 1.0,-1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); //Rückseite glColor3f(1.0, 0.0, 0.0); glVertex3f(-1.0,-1.0,-1.0); glVertex3f( 1.0,-1.0,-1.0); glVertex3f( 1.0, 1.0,-1.0); glVertex3f(-1.0, 1.0,-1.0); //Unterseite glColor3f(1.0, 0.0, 0.0); glVertex3f(-1.0,-1.0, 1.0); glVertex3f( 1.0,-1.0, 1.0); glVertex3f( 1.0,-1.0,-1.0); glVertex3f(-1.0,-1.0,-1.0); //Oberseite glColor3f(1.0, 0.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); glVertex3f( 1.0, 1.0,-1.0); glVertex3f(-1.0, 1.0,-1.0); //linke Seite glColor3f(1.0, 0.0, 0.0); glVertex3f(-1.0,-1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); glVertex3f(-1.0, 1.0,-1.0); glVertex3f(-1.0,-1.0,-1.0); //rechte Seite glColor3f(1.0, 0.0, 0.0); glVertex3f( 1.0,-1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); glVertex3f( 1.0, 1.0,-1.0); glVertex3f( 1.0,-1.0,-1.0); glEnd(); glutSwapBuffers(); glutPostRedisplay(); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(800,600); glutInitWindowPosition(100,100); glutCreateWindow(argv[0]); myinit(); glutKeyboardFunc(Keyboard); glutDisplayFunc(DrawScene); glutMainLoop(); return EXIT_SUCCESS; }
Schon mal Danke
Tschau Uncle
-
Lass mich raten, du startest dein Programm und es wird sofort wieder beendet...
-
Netter Joke,
Nein, das Programm geht schon zu starten. Ich hätte vielleicht noch sagen sollen das ich unter Linux arbeite und den g++ bentutzte,
obwohl ich nicht denke das dies darauf einen Einfluss hat.Mir geht es einzig darum das ich nach den starten des Programms nur einen roten Bildschirm vor mir habe.
Vermutlich die mir zugewande Seite meines Würfels. Aber ich würde ihn gern aus einem schrägen Blickwinkel betrachten.Uncle
-
Ja dann erstelle doch eine Kameramatrix oder verschiebe den Würfel mit einer Translationsmatrix!
-
Na aber wie ?
Hat nich jemand mal ne´n Stück Code für mich ?
Uncle
-
Hm, nimm erstmal verschiedene farben für die seiten des würfels.
Und dann solltest du dir eine reshape funk. basteln, in der der Viewport und die Perspektive (GL_PROJECTION) eingestellt werden. ( mit glutReshape oder so aufrufen)
In deiner draw funk verschiebst du dann noch den würfel "in den Bildschirm" damit du den siehst.
-
Hi :).
Ich glau ich weiß warum. Entferne mal den kommentierten Teil in der Funktion "myinit" und in der DrawScene nach glClear (bzw. unter glClear:// ... glLoadIdentity(); glTranslatef(0,0,-10); // ...
und vielleicht noch unter glTranslatef:
glRotatef(xrot, 1, 0, 0); glRotatef(yrot, 0, 1, 0); glRotatef(zrot, 0, 0, 1);
xrot, yrot und zrot durch eigene Werte ändern. sie geben den Winkel an, um wieviel um die x, y, bzw, z achse rotiert werden soll
Gehts?Ich seh grad : Du verschiebst die Matrix ja schon mit gluLookAt. Entferne mal gluLookAt am besten noch bevor du den Code hinzufügst. Sollte sich zwar wegen dem glLoadIdentity nichts ändern, aber wozu unnötige Sachen machen ?
[ Dieser Beitrag wurde am 13.09.2002 um 23:32 Uhr von Squolly editiert. ][ Dieser Beitrag wurde am 14.09.2002 um 17:45 Uhr von Squolly editiert. ]
-
Wie wäre es wenn du auch die folgenden bibliotheken auch einbindes
#include<gl\gl.h>
#include<gl\glu.h>