我有麻煩與SDL_TextureSDL_Texture沒有被設置
RPGTutorial.cpp
#include "stdafx.h"
int main(int argc, char *argv[])
{
bool quit = false;
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = NULL;
window = SDL_CreateWindow("RPG Tutorial!", 100, 100, 600, 400, SDL_WINDOW_SHOWN);
if (window == NULL)
{
std::cout << "Window couldn't be created" << std::endl;
return 0;
}
SDL_Renderer* renderer = NULL;
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (renderer == NULL)
{
std::cout << "Renderer is not being created!" << std::endl;
SDL_DestroyWindow(window);
system("PAUSE");
return 0;
}
SDL_Event* mainEvent = new SDL_Event();
SDL_Texture* grass = NULL;
grass = IMG_LoadTexture(renderer, "Grass.bmp");
if (grass == NULL)
{
std::cout << "Grass Image was not found!" << std::endl;
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
delete mainEvent;
system("PAUSE");
return 0;
}
SDL_Rect grass_rect;
grass_rect.x = 0;
grass_rect.y = 0;
grass_rect.w = 64 * 2;
grass_rect.h = 64 * 2;
while (!quit && mainEvent->type != SDL_QUIT)
{
SDL_PollEvent(mainEvent);
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, grass, NULL, &grass_rect);
SDL_RenderPresent(renderer);
}
SDL_DestroyWindow(window);
SDL_DestroyRenderer(renderer);
delete mainEvent;
return 0;
}
的stdafx.h
#include <SDL.h>
#include <SDL_image.h>
#include <SDL_mixer.h>
#include <iostream>
我有Grass.bmp在RPGTutorial-> RPGTutorial - > Grass.bmp 當我編譯它時,它是成功的。它貫穿代碼,直到我檢查它是否檢查(草== NULL)並通過它並退出的部分。有人可以幫助我知道爲什麼我的草沒有被設置爲圖像時,我有圖像在.cpp文件所在的同一文件夾中?我甚至嘗試添加一個圖像文件夾來保存它,但它也沒有工作。
Heya,這取決於您的環境 - 有些將設置當前的工作目錄到exe的位置,有些會將它設置爲項目文件。如果您使用的是正確的code :: blocks。您可以通過將路徑設置爲絕對路徑來測試機制(如'c:\ users \ you \ programming \ .... blahblah') – wizebin
我正在使用Visual Studio 2013.將(c:\ users \ you \編程\ .... blahblah)工作,如果我把文件發送給別人,所以他們會測試我做了什麼? –
否定的,如果您要分發應用程序,則需要使用相對文件名。您可以使用'getcwd()'函數找到您當前的工作目錄。然後把你的資源放在那裏。當您分發您的exe文件時,請將這些資源放在同一個文件夾(或一個子文件夾)中。 – wizebin