Initalisation von OpenGL



  • Hi,
    ich habe mich heute mal an das Programmieren von OpenGl unter C++ gewagt.
    ich habe nun mit sdl ein schwarzes fenster geöffnet, indem ich mit OpenGL zeichenen will. doch das klappt nicht so recht, besser gesagt, klappt das Initalisieren nicht so recht.
    Könnt ihr mir da helfen, dass OGL initalisiert wird.

    #include "/usr/include/SDL/SDL.h"
    #include "GL/gl.h"
    #include "GL/glu.h"
    #include <stdlib.h>
    
    void DrawGLScene()
    {
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    	glLoadIdentity(); // Reset the view
    	glClearColor (1.0f, 0.2f, 1.0f, 1.0f);
    	SDL_GL_SwapBuffers(); // Swap the buffers
    	printf ("Scene printed\n");
    }
    
    int main (int argc, char **argv)
    {
    	system ("clear");
    	printf ("\t\tParticel Simulator 0.1\n\n");
    	SDL_Surface *screen;
    	SDL_Event event;
    
    	if ( SDL_Init(SDL_INIT_VIDEO) < 0 )
    	{
    		fprintf (stderr, "Kann SDL nicht initialisieren:%s\n", SDL_GetError());
    		return 1;
    	}
    	atexit(SDL_Quit);
    
    	screen=SDL_SetVideoMode(640, 480, 8, SDL_SWSURFACE|SDL_HWPALETTE);
    	if ( screen == NULL )
    	{
    		fprintf(stderr, "Kann Videomodus nicht setzten:%s\n", SDL_GetError());
    		return 1;
    	}
    	SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
    
    	while (SDL_WaitEvent(&event)>=0)
    	{
    		DrawGLScene();
    		switch(event.type)
    		{
    			case SDL_QUIT:
    			{
    				exit(0);
    			}
    		}
    	}
    	return 0;
    }
    

    kopilieren tue ich das ganze mit:

    g++ ./particsim.cpp `sdl-config --cflags --libs` -lGLm

    was muss ich tun, um hier OpenGL zu initalisieren, ich hab schon lange bei google gesucht, aber irgendwie will der nicht so recht, bzw., wenn ich etwas finde, dann ist es für windows (nutzt windows bibiotheken) usw...
    würd emihc freuen, wenn ihr mir weiterhelfen könntet!



  • In deinen Flags fehlt SDL_OPENGL, bei SDL_SetVideoMode. Und was macht oglInit() ??

    Schau auch mal nach der Funktion SDL_GL_SetAttribute, um solche Sachen wie Double-/Depth-/Z-Buffer einzustellen. SW_SWSURFACE und SDL_HWPALETTE sollten bei Nutzung von OpenGL keine Wirkung haben.



  • Ulf schrieb:

    Könnt ihr mir da helfen, dass OGL initalisiert wird.

    Klar, wie sieht denn Deine oglInit bis jetzt aus?

    #include "/usr/include/SDL/SDL.h"
    #include "GL/gl.h"
    #include "GL/glu.h"
    #include <stdlib.h>
    

    Das ist falsch/ nicht ganz korrekt, schreib doch bitte sowas:

    #include <SDL/SDL.h>
    #include <GL/gl.h>
    #include <GL/glu.h>
    #include <stdlib.h>
    
    system ("clear");
    

    Das ist böse _und_ lästig, bitte tu das weg!

    g++ ./particsim.cpp `sdl-config --cflags --libs` -lGL

    Nenn die Datei particism.c und kompiliere sie mit gcc, Du programmierst nämlich eindeutig C.



  • DANKE!!!
    es klappt, hab nun SDL_OPENGL hinzugefügt und ich seh schonmal ne fabränbderung, ergo, OpenGl klappt 🙂
    Vielen Dank!
    @nman: du hast zwar recht, aber mir war jetzt erstmal OpenGL wichtiger ^^

    ich habe aber noch eine frage: wie kann ich in kdevelopp auch die parameter beim compilieren übergeben, die ich per konsole bei g++ übergebe?



  • Ulf schrieb:

    ich habe aber noch eine frage: wie kann ich in kdevelopp auch die parameter beim compilieren übergeben, die ich per konsole bei g++ übergebe?

    (Nochmal: Verwende gcc, Du brauchst hier den g++ nicht.)
    Schau Dir die Projektoptionen in KDevelop an.



  • hab schon ganz kdevelop durchgewühlt, aber nichts zu finden. geht das dort überhaupt?



  • geht das dort überhaupt?

    Wenn ich richtig verstehe was du meinst dann findest du es im Menü unter:
    Projekt->Projekt Einstellungen
    ->Einstellungen für Configure

    Dort kannst du flags für compiler und linker angeben.



  • hab das schon gesehen und auch probiert, leider klappt das nicht.
    hab schon nahezu in jedes feld das eingegeben.



  • das eingegeben.

    Was angegeben ?



  • `sdl-config --cflags --libs` -lGL
    bzw. auch nur:
    --cflags --libs` -lGL

    oder sollte ich da etwas anderes eingeben?



  • Ins Feld "schalter für den Linker (LDFLAGS)": `sdl-config --libs` -lGL
    Hier muss du eventuell noch andere libs oder Verzeichnisse hinzufügen z.B SDL_ttf
    ins Feld "schalter für den Compiler (CFLAGS)": `sdl-config --cflags`


Anmelden zum Antworten