OpenGL funktioniert bei mir nicht :-(



  • Hi,
    ich wollte OpenGL lernen also hab ichs mir runtergeladan un installiert.
    Wenn ich jetzt aber die Headerdateien gl.h, glu.h und glext.h einbinde
    ist bei mir die Funktion "InitializeAWindowPlease()"und die Funktion
    "UpdateTheWindowAndCheckForEvents()" nicht definiert.
    Kann mir irgentjemand sagen ws ich falsch gemacht habe.



  • Dann glaub ich irgendwas stimmt mit deine Compilereinstellungen nicht o.O



  • The first line of the main() routine initializes a window on the screen: The InitializeAWindowPlease() routine is meant as a placeholder for window system-specific routines, which are generally not OpenGL calls.

    http://glprogramming.com/red/chapter01.html

    Das sind auch nur Pseudo-Funktionen!
    Die musst du gegen eine plattformspezifische Funktion,
    die ein Fenster erstellt eintauschen.

    Wie das geht erfährst du für Windows im WinApi-Forum
    und für Unix/Linux im Unix/Linux-Forum 🙂
    Oder informier dich über deine Lieblingssuchmaschine.



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Danke
    hab mich schon über den namen der funktionen gewundert.



  • arbeite am besten mit GLFW, da gibt es genau diese funktionen (von der funktionsweise her, der name ist anders). Für mich hat sich glfw allein schon wegen der vielen guten beispiele gelohnt.



  • Wenn ich die Lybaries aber einbinde findet er nie alle Funktionen.
    Die Funktionen sehen immer ungefähr so aus glclear@15.



  • opengl32.lib einbinden!

    EDIT:
    code + fehlermeldungen wären hilfreich!



  • Wie ich hab gedacht man kann nur ....h dateien einbinden..
    Fehlermeldung hol ich bald.



  • Er meinte "linken".
    Und #includen kannst du prinzipiell jede Datei. Der Präprozessor lädt dann einfach nur den Inhalt der Datei an die Stelle, wo das #include steht.



  • Ja verwende GLFW, das ist schön kompakt und sehr stabil.
    Es bindet außerdem automatisch die OpenGL-Header mit ein.
    GLUT würde ich nicht empfehlen, weil es veraltet ist und scheinbar nicht mehr weiterentwickelt wird. Auch ist GLUT ein bisschen buggy und nach meinem Empfinden ein wenig langsamer als GLFW.

    Kurzanleitung:

    - GLFW Source-Code runterladen.
    - glfw.lib kompilieren (statische lib).
    - In deinem Project glfw.lib und opengl32.lib mitlinken.
    - In deinem Quellcode einfach "glfw.h" inkludieren.
    - Falls du Visual Studio verwendest, in den Linker-Einstellungen
    noch den Entry Point auf: mainCRTStartup setzen!

    Dann ein einfaches leeres Fenster im Fullscreen kannst du beispielsweise mit wenig Code so machen:

    #include <GL/glfw.h>
    
    int ProjectInitialize();
    void ProjectMainLoop();
    int ProjectTerminate();
    void GLFWCALL ProjectResize(int width, int height);
    
    int main()
    {
    	int running = GL_TRUE;
    
    	glfwInit();
    
    	glfwOpenWindowHint(GLFW_REFRESH_RATE, 75);
    
    	if( !glfwOpenWindow(1024,768, 8,8,8,8,24,0, GLFW_FULLSCREEN))
    	{
    		glfwTerminate();
    		return 0;
    	}
    
    	ProjectInitialize();
    
    	glfwSetWindowTitle("Firstapp");
    	glfwSetWindowSizeCallback(ProjectResize);
    
    	do 
    	{
    		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    		glLoadIdentity();
    
    		ProjectMainLoop();
    
    		glfwSwapBuffers();
    
    		running = !glfwGetKey(GLFW_KEY_ESC) && glfwGetWindowParam(GLFW_OPENED);
    
    	}
    	while(running);
    
    	glfwTerminate();
    	ProjectTerminate();
    	return 0;
    }
    
    int ProjectInitialize()
    {
    	//OpenGL initialisiseren
    	return 1;	
    }
    
    void GLFWCALL ProjectResize(int width, int height)
    {
    	//Wenn Fenstergröße verändert wird	
    }
    
    void ProjectMainLoop()
    {
    	//Hauptschleife zum Rendern
    
    }
    
    int ProjectTerminate()
    {
    	//Programm wird beendet
    	return 1;
    }
    

    Gruß

    Final



  • Danke!!!


Anmelden zum Antworten