我有我的主要功能:
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;
}
但似乎行不通。 它返回错误:无效的渲染器? 我的渲染器变量有什么问题? 我可以修理吗?我不想在主要功能中创建我的图像,外部渲染器似乎也不起作用,顺便说一句我不想使用全局变量。
这是我的函数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;。所以我认为我的渲染器已经成功了。