Oppure

Loading
13/01/13 16:32
genni_96
Ciao, ho un altro problema con le Sdl + opengl, nonostante il double buffering attivo gli sprite lasciano una "scia" quando si muovono e l'effetto è molto fastidioso, sapete quale potrebbe essere la causa?
aaa
13/01/13 18:53
tasx
Ciao.

Puoi postare il sorgente?

Ciao!
aaa
14/01/13 6:22
genni_96
Si, scusa me ne ero dimenticato

Funzione chiamata all'inizio
SDL_Init(SDL_INIT_EVERYTHING);
    atexit(SDL_Quit);

    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1);

    screen = SDL_SetVideoMode(800, 600, 16, SDL_OPENGL|SDL_FULLSCREEN);
    if(!screen)
        return false;


    glClearColor(0, 0, 0, 0);
    glEnable(GL_TEXTURE_2D);
    glViewport(0, 0, 800, 600);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 2560, 1440, 0, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glEnable(GL_BLEND);
    glDisable(GL_DEPTH_TEST);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);


funzione di disegno generale
if(SDL_GetTicks()-iOldTime >= 15)
    {
        glClearColor(0.3, 0.3, 0.3, 1);
        glClear(GL_COLOR_BUFFER_BIT);

        Events();

        level.Draw();

        SDL_GL_SwapBuffers();

        iOldTime = SDL_GetTicks();
    }


disegno di un singolo sprite
glBindTexture(GL_TEXTURE_2D, texture[currentFrame]);

        glBegin(GL_QUADS );
        glTexCoord2i(0, 0);
        glVertex3f(boundingBox.p1.x, boundingBox.p1.y, 0);
        glTexCoord2i(1, 0);
        glVertex3f(boundingBox.p2.x, boundingBox.p1.y, 0);
        glTexCoord2i(1, 1);
        glVertex3f(boundingBox.p2.x, boundingBox.p2.y, 0);
        glTexCoord2i(0, 1);
        glVertex3f(boundingBox.p1.x, boundingBox.p2.y, 0);
        glEnd();


Non ho postato tutto il sorgente perchè sarebbe stato troppo lungo, comunque la variabile level contiene tutti gli sprite da disegnare quindi la funzione level.Draw() richiama tante volte quella per diseganre ogni sprite.
aaa