SDL_Surface in glBitmap



  • Hi,
    ich versuche eine SDL_Surface (hat korrekten Inhalt - wenn ich sie direkt auf den Bildschirm [in dem Fall nicht OpenGL] bringe sieht es normal aus) in eine Displayliste zu packen. Die Displayliste besteht nur aus einem Aufruf von glBitmap():

    GLuint list = glGenLists(1);
    glNewList(list, GL_COMPILE);
    glBitmap(psurface->w, psurface->h, 0, 0, 0, 0, static_cast<GLubyte const*>(psurface->pixels));
    glEndList();
    

    Wenn ich jetzt die Displayliste aufrufe habe ich nur Quatsch in Form von vertikalen Streifen mit unterschiedlichen Abstaenden auf dem Bildschirm.
    Ich vermute (/bin mir eigentlich sicher), dass glBitmap ein anderes Format erwartet (im letzten Parameter), als es SDL_Surface in pixels besitzt.
    Die Surface wurde so erzeugt und spaeter etwas hinein gezeichnet:

    SDL_CreateRGBSurface(SDL_SWSURFACE, width, height, 32,
    #if SDL_BYTEORDER == SDL_BIG_ENDIAN
        0xff000000, 0x00ff0000, 0x0000ff00, 0x000000ff
    #else
        0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000
    #endif
    );
    

    Ich vermute, der richtige Weg fuehrt ueber diverse Aufrufe von glPixelStorei, zur Beschreibung des von SDL_Surface verwendeten Formates, bin bisher aber gescheitert.
    Hat jemand eine Idee? 🙂

    Gruss,
    DeSoVoDaMu



  • Hm, offensichtlich ist glBitmap der falsche Weg. Bei diesem gibt es keine Farben und jedes Bit wird ausgewertet und dargestellt (1) oder einfach ausgelassen (0).
    Ich bin jetzt auf glDrawPixels umgestiegen 🙂

    Gruss,
    DeSoVoDaMu


Log in to reply