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.
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.
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:
/*
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.