我将SDL_Renderer *传递给函数时似乎不起作用

时间:2018-02-20 19:00:53

标签: c++ sdl-2

我有我的主要功能:

int main(int argc, char* argv[])
{
    int broad[40][20] = {0};
    SDL_Renderer* renderer = NULL;
    SDL_Window* window = NULL;
    srand(time(NULL));
    SDL_Event e;
    bool quit=false;
    if (!Init(renderer,window))
    {
        cout << "Can't INIT Window Screen. ";
        return 0;
    }
    else
    {
        if (!load_block(renderer))
        {
            cout << "Can't load BLOCK. ";
        }
        else

我在main中创建渲染器,而不是在Init和load_block中传递渲染器。 这是我的load_block:

bool load_block(SDL_Renderer* renderer)
{
    bool success = true;
    color_block[RED] = loadTexture(renderer,"red_block.bmp");
    if (color_block[RED] == NULL)
    {
        cout << "Unable to render IMG. SDL Error: \n" << SDL_GetError();
        success = false;
    }

我继续将我的SDL_Renderer *变量传递给我的loadTexture func:

SDL_Texture* loadTexture(SDL_Renderer* renderer,string path)
{
    SDL_Texture* newTexture = NULL;
    SDL_Surface* loadedSurface = SDL_LoadBMP(path.c_str());
    if (loadedSurface == NULL)
    {
        cout << "Unable to load image. Error: \n " << SDL_GetError();
    }
    else
    {
        //SDL_SetColorKey( loadedSurface, SDL_TRUE, SDL_MapRGB(loadedSurface->format, 0x00, 0xFF, 0xFF ) );
        newTexture = SDL_CreateTextureFromSurface(renderer,loadedSurface);
        if (newTexture == NULL)
            cout << "Unable to create texture from " << path << " Error: \n" << SDL_GetError();
        SDL_FreeSurface(loadedSurface);
    }
    return newTexture;
}

但似乎行不通。 它返回错误:无效的渲染器? 我的渲染器变量有什么问题? 我可以修理吗?我不想在主要功能中创建我的图像,外部渲染器似乎也不起作用,顺便说一句我不想使用全局变量。

my console

这是我的函数Init:

bool Init(SDL_Renderer* renderer, SDL_Window* window)
{
    bool success = true;
    window = SDL_CreateWindow("SDL Tetris", SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,SCREEN_WIDTH,SCREEN_HEIGHT,SDL_WINDOW_SHOWN);
    if ( window == NULL )
    {
        cout << "Window could not be created. Error: \n" << SDL_GetError();
        success = false;
    }
    else
    {
        renderer = SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED);
        if (renderer == NULL)
        {
            cout << "Renderer could not be created. Error: \n" << SDL_GetError();
            success = false;
        }
        else
        SDL_SetRenderDrawColor(renderer,0xFF,0xFF,0xFF,0xFF);
    }
    return success;
}

我什么都没有&#34; Renderer无法创造&#34;。所以我认为我的渲染器已经成功了。

0 个答案:

没有答案
相关问题