SDL渲染帧的问题

时间:2015-10-31 17:12:18

标签: c++ sprite sdl

我在SDL中仍然是一个初学者,我遇到了一个我很少迷失的问题。我一直在松散地关注LazyFoo的教程以及其他一些额外的资源。

问题是尝试在窗口上创建动画精灵。 每当我按下一个键时,我设法将故障代码隔离开来。 当我按下某个键时,除了先前使用SDL_CreateWindow函数初始化的窗口外,还会打开一个新窗口。

case SDL_KEYDOWN:
        int frame = 0;
        //Clear Screen
        SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
        SDL_RenderClear(renderer);

        //Render Current frame
        SDL_Rect* currentFrame = &iKey.MegamanRun[frame / 6];
        iKey.mmxrender((sx - currentFrame->w) / 2, (sy - currentFrame->h) / 2, currentFrame);


        //update screen
        SDL_RenderPresent(renderer);

        //Next frame
        ++frame;

我正在使用一个简单的megaman精灵,如果这有助于你理解一些名字。

具体来说,

iKey.mmxrender((sx - currentFrame->w) / 2, (sy - currentFrame->h) / 2, currentFrame);

导致弹出新窗口。

mmxrender函数在不同文件的不同类中,sx和sy是窗口的大小。

void Megaman::mmxrender(int x, int y, SDL_Rect* clip)
{
Init mkey;
//Set rendering space
SDL_Rect renderQuad = { x, y, iWidth, iHeight };

//Set clip dimensions
if (clip != NULL)
{
    renderQuad.w = clip->w;
    renderQuad.h = clip->h;
}
//Render to screen

SDL_RenderCopy(mkey.renderer, iTexture, clip, &renderQuad); 
}

不确定如何继续,感谢任何帮助。

0 个答案:

没有答案