ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
933
933
EMPFEHLEN
-
Hallo,
ich habe ein kleines Problem und bin mir fast sicher das es entweder an VS2010 liegt oder an GLUT.
Ich habe einen Beispielcode von meinem Professor, von dem aus ich das Projekt aufbauen soll. In der Uni habe ich diesen so schon verwenden und ausführen können, dort jedoch auf einer älteren VS Version (ich glaube 2008). Durch das Studentenprogramm von MS komme ich ja an VS2010 ran und hab es dann auch installiert.
Erstes Problem war dann, dass <gl/glut.h> nicht installiert war. Also hab ich das gemacht.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
/* Lehrveranstaltung Computergraphik, OpenGL Praktikum Erste Aufgabe Autor: Prof. Dr. Ralf Dörner, FH Wiesbaden Version 1.0 */ // für Textausgaben auf der Konsole: #include <stdio.h> // hier die notwendigen Includes - es genügt glut.h einzubinden, da // diese wiederum GL/gl.h und alle weiteren benötigten Include- // Dateien einbindet #include <gl/glut.h> // die Funktion display enthält alle Befehle, die zum Zeichnen des // Bildes benötigt werden void display( void ) { // zunächst wird das bisher gezeichnete Bild gelöscht, // indem das Bild komplett in der Hintergrundfarbe gezeichnet // wird. Ausserdem wird die Verdeckungsrechnung initialisiert glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // die folgenden drei Befehle dienen dazu anzugeben, von wo aus // die Szene betrachtet wird (d.h. unter welchem Blickwinkel // das Bild berechnet wird glMatrixMode(GL_MODELVIEW); glLoadIdentity(); // die ersten drei Argumente sind die Koordinaten, wo der // Betrachter steht, die nächsten drei Argumente geben die // Koordinaten an, wohin der Betrachter blickt und die letzten // drei Argumente geben an, wo oben ist (bei uns ist y-Richtung // oben gluLookAt(20.0,20.0,20.0,0.0,0.0,0.0,0.0,1.0,0.0); // die Zeichenfarbe wird auf rot gesetzt glColor3f(1.0, 0.0, 0.0); // Verbinde die folgenden Eckpunkten zu Dreicken (bis glEnd() // kommt) glBegin(GL_TRIANGLES); // und hier kommen die Koordinaten der Eckpunkte: glVertex3f(0.0, 0.0, 0.0); glVertex3f(-10.0, 0.0, 0.0); glVertex3f(10.0, 10.0, 0.0); glEnd(); // Sorge dafür, dass wirklich alle glBefehle abgearbeitet und // nicht gepuffert werden glFlush(); // Vertausche die Backbuffer und Frontbuffer: das fertig // gezeichnete Bild soll jetzt angezeigt werden //glutSwapBuffers(); // Sorge dafür, dass das Bild im nächsten Schleifendurchlauf // der glutMainLoop wieder gezeichnet wird //glutPostRedisplay(); } // end display // die Funktion reshape enthält alle Befehle, die man benötigt, // um auf Veränderungen der Fenstergröße zu reagieren void reshape(int w, int h) { // hier wird die Perspektive gesetzt glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, w / h, 0.1, 100.0); glViewport(0.0, 0.0, w, h); glMatrixMode(GL_MODELVIEW); } // end reshape // die Funktion wird aufgerufen, sobald eine Taste der Tastur // gedrückt wurde. Es steht die Info zur Verfügung, welche // Taste gedrückt wurde und wo sich die Maus zu diesem Zeitpunkt // befand void keyboard(unsigned char key, int x, int y) { printf("Taste wurde gedrueckt: %c \n", key); } // die Funktion wird aufgerufen, sobald eine Taste der Maus // gedrückt wurde. Es steht die Info zur Verfügung, welche // Taste betroffen ist, ob sie gedrückt oder losgelassen wurde // und wo sich die Maus zu diesem Zeitpunkt befand void mouse(int button, int state, int x, int y) { if(GLUT_LEFT == button && GLUT_DOWN == state) { printf("Linker Mausbutton wurde geklickt.\n"); } } // Hauptfunktion void main(int argc, char** argv) { // Initialisiere die GLUT glutInit(&argc,argv); // Setze den Display Mode: Farben werden in RGB angegeben, // es wird eine Verdeckungsrechnung durchgeführt und mit // zwei Buffern gearbeitet glutInitDisplayMode (GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); // Setze die Fenstergröße auf 500 x 500 glutInitWindowSize(500,500); // Erzeuge ein Fenster auf dem Bildschirm an Position // 100, 0 (Bildschirmkoordinaten) glutInitWindowPosition(100,0); // Erzeuge das Fenster glutCreateWindow("Computergraphik ist toll!!"); // Bestimme, welcher Callback zum Zeichnen aufgerufen wird glutDisplayFunc(display); // Bestimme, welcher Callback bei Größenänderung des Fensters // aufgerufen wird glutReshapeFunc(reshape); // Bestimme, welcher Callback bei Betätigung der Tastatur // aufgerufen wird glutKeyboardFunc(keyboard); // Bestimme, welcher Callback bei Betätigen einer Maustaste // aufgerufen wird glutMouseFunc(mouse); // die Hintergrundfarbe wird auf gelb gesetzt glClearColor(1.0, 1.0, 0.0, 1.0); // die Initialisierung der Verdeckungsrechnung ist 1.0 glClearDepth(1.0); // die Verdeckungsrechnung wird eingeschaltet glEnable(GL_DEPTH_TEST); // Übergebe die Kontrolle nun an GLUT, die in einer Endlos- // schleife die Callbacks aufruft glutMainLoop(); }// end main
So, das sollte doch eigentlich alles gewesen sein. Programm compiliert, Consolen Fenster geht auf, OpenGL Fenster geht auf, bleibt aber weiss.
Wo ist jetzt das Problem? Ich kann in das Fenster klicken und bekomme dann Ausgaben in der Konsole (Linker Maus Button gedrückt), das gleiche mit Tastatur eingaben. Ein "resize" des Fensters bewirkt auch keine Veränderung.
Bei einem Kommilitonen funktioniert alles, wenn er es so macht. Könnte es am System liegen?
Win7 64Bit
Intel E6600
ATI 4870
Bin für jede Hilfe dankbar.
-
29.12.11 09:18 #2
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.522
Ich kann dich beruhigen, ich hab es jetzt mal mit 2005, 2008 und 2010 getestet:
- Visual Studio 2005 kompiliert nicht, weil GL/gl.h fehlt
- Visual Studio 2008 kompiliert, linkt und führt aus, Bildschirm bleibt weiß, Maustasten-Event-Handler reagiert auf LMT
- Visual Studio 2010 kompiliert, linkt und führt aus, Bildschirm bleibt weiß, Maustasten-Event-Handler reagiert auf LMT
Ich musste jedoch die GLUT erstmal installieren, hier die verwendete Anleitung: http://csf11.acs.uwosh.edu/cs371/visualstudio/
Der "Fehler" muss also wo anders zu suchen sein, denn das Verhalten ist auf einer anderen Maschine mit anderen Compilern identisch. Das Einzige, was jetzt noch sein könnte, wäre, das du und ich die gleiche "falsche" Glut-Lib einsetzen.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Okay danke dir schon mal saftmeister, ich habe glaube dieselbe Anleitung für GLUT verwendet, dann muss ich nochmal den Quellcode mit meinen Komillitonen abgleichen, bin aber eigentlich sicher das ich nichts verändert habe. Ich schmeiss nen Edit rein, wenn es was neues gibt.
Ich lass mir dann auch mal bei der Gelegenheit die GLUT Dateien zuschicken, um das auch auszuschließen.
EDIT:
Okay anscheinend war ich doch so doof und hab den Originalquellcode verändert. Hab ihn mir nochmal aus dem Verzeichnis vom Prof geholt und es geht nun.
Danke!Geändert von PHPler (29.12.11 um 10:57 Uhr)
Ähnliche Themen
-
OpenGL (GLUT) Projektnachprogrammierung - Bloxorz
Von Davicito im Forum C/C++Antworten: 4Letzter Beitrag: 24.01.11, 16:44 -
MFC .exe sehr groß mit VS2010
Von thekiller im Forum C/C++Antworten: 4Letzter Beitrag: 19.08.10, 11:42 -
OpenGL - Glut - Sichtweite
Von petergoessweiner im Forum C/C++Antworten: 1Letzter Beitrag: 04.07.08, 23:23 -
Unterstützung für OpenGL Entwicklung mit Java via Netbeans und OpenGL Pack
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 04.06.08, 15:13 -
OpenGL (mit Glut) 3D Würfel
Von baum77 im Forum C/C++Antworten: 8Letzter Beitrag: 20.04.07, 18:36





Zitieren

Login






