hInstance und hWnd eines SDL-Fensters herausfinden | OGl + SDL



  • Hi!
    Wie kann ich an die hInstance und an die hWnd eines SDL-Fensters heran
    kommen? GetActiveWindow ist ja nicht gerade die beste Methode.
    Und dann wollte ich noch fragen, ob es irgendwo ein leichtverständlichen
    Code gibt, wo SDL und OpenGL genutzt wird.
    thx!
    mfg olli



  • Die Instance bekommst du über GetModuleHandle(0).



  • siehe auch SDL_syswm.h:
    SDL_GetWMInfo(SDL_SysWMinfo *info);

    relativ neu ist Animation in SDL: OpenGL,
    http://linux.oreillynet.com/pub/a/linux/2003/10/23/sdl_anim.html
    vielleicht hilft dir das auch weiter,

    lg,
    thomm



  • Hi!
    Danke euch!
    Habe jetzt ein Beispiel mir für OpenGL geschrieben:

    #include "sdl\sdl.h"
    #include "gl\gl.h"
    #include "gl\glu.h"
    
    #ifdef _WIN32 
    #undef main 
    #endif
    
    void OpenGL_Init(int width,int height,int bpp);
    void Render();
    
    void OpenGL_Init(int width,int height,int bpp)
    {
       glClearColor(0.7f,0.7f,1.0f,0.5f);                   
       glViewport(0,0,width, height);
       glMatrixMode(GL_PROJECTION);
       glLoadIdentity();
       gluPerspective(45.0f,float(width) / float(height),2.0f,1000.0f);
       glMatrixMode(GL_MODELVIEW);
       glLoadIdentity();
       glShadeModel(GL_SMOOTH);
       glClearDepth(1.0f);
       glEnable(GL_DEPTH_TEST);
       glDepthFunc(GL_LEQUAL);
       glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST);
    }
    
    void Render()
    {
       glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
       glLoadIdentity();
       glTranslatef(0.0f,0.0f,-6.0f);
       glBegin(GL_QUADS);
          glColor3f(1.0f,0.0f,0.0f); glVertex3f( 1.0f, 1.0f,0.0f);
          glColor3f(0.0f,1.0f,0.0f); glVertex3f(-1.0f, 1.0f,0.0f);
          glColor3f(0.0f,0.0f,1.0f); glVertex3f(-1.0f,-1.0f,0.0f);
          glColor3f(1.0f,1.0f,0.0f); glVertex3f( 1.0f,-1.0f,0.0f);
       glEnd();
    }
    
    int main(void)
    {
       int width  = 640;
       int height = 480;
       int bpp    = 32;
    
       bool quit  = false;
       SDL_Event Event;
    
       SDL_Init(SDL_INIT_VIDEO);
       SDL_GL_SetAttribute(SDL_GL_RED_SIZE,8);
       SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,8);
       SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,8);
       SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE,8);
       SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,SDL_TRUE);
       SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE,24);
       SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE,8);
       SDL_SetVideoMode(width,height,bpp,SDL_OPENGL);
       SDL_ShowCursor(true);
       SDL_WM_SetCaption("OpenGL with SDL",0);
    
       OpenGL_Init(width,height,bpp);
    
       do
       {
          while(SDL_PollEvent(&Event))
          {
             if(Event.type == SDL_QUIT)
             {
                quit = true;
             }
          }
          Render();
          SDL_GL_SwapBuffers();
       }while(!quit);
    
       SDL_Quit();
    }
    

    Für DevC++ habe ich mal das komplette Projekt mit allen benötigten Dateien hochgeladen:
    http://mitglied.lycos.de/thevertex/download.php?c=media/OpenGL.rar (215 KB)
    mfg olli


Anmelden zum Antworten