SDL窗口未显示

时间:2016-02-02 22:28:40

标签: c++ sdl

我试图让SDL窗口出现,但它似乎并没有起作用。该程序将运行,显示窗口的功能将运行没有错误,但我的屏幕上没有任何显示。我在Dock中只有一个图标,表示程序没有响应。这是我的代码:

int main(int argc, const char * argv[]) {

    MainComponent mainComponent;
    mainComponent.init();

    char myVar;

    cout << "Enter any key to quit...";
    cin >> myVar;

    return 0;
}

void MainComponent::init() {
    //Initialize SDL
    SDL_Init(SDL_INIT_EVERYTHING);

    window = SDL_CreateWindow("My Game Window", 100, 100, 100, 100, SDL_WINDOW_SHOWN);

    cout << screenWidth << " " << screenHeight << endl;

    if(window == nullptr) {
        cout << "Error could not create window" << SDL_GetError() << endl;
    }

    SDL_Delay(5000);

}

这里是停靠栏https://www.dropbox.com/s/vc01iqp0z07zs25/Screenshot%202016-02-02%2017.26.44.png?dl=0上图标的屏幕截图 如果我做错了,请告诉我,谢谢!

1 个答案:

答案 0 :(得分:0)

应初始化SDL_Renderer以处理渲染。这将在此详细解释What is a SDL renderer?

以上是使用初始化渲染器修改过的代码;

#include <SDL2/SDL.h>
#include <iostream>

using namespace std;

class MainComponent
{
 public:
    void init();
    ~MainComponent();

 private:
    SDL_Window *window;
    SDL_Renderer* renderer;
};

MainComponent::~MainComponent()
{
  SDL_DestroyRenderer(renderer);
  SDL_DestroyWindow(window);
}

void MainComponent::init() {
    //Initialize SDL
    SDL_Init(SDL_INIT_EVERYTHING);

    int screenWidth = 400;
    int screenHeight = 300;

    window = SDL_CreateWindow("My Game Window", 100, 100, screenWidth, screenHeight, SDL_WINDOW_SHOWN);
    renderer = SDL_CreateRenderer(window, -1, 0);

    cout << screenWidth << " " << screenHeight << endl;

    if(window == nullptr) {
        cout << "Error could not create window" << SDL_GetError() << endl;
    }

    //change the background color
    SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);

    // Clear the entire screen to our selected color.
    SDL_RenderClear(renderer);

    // Up until now everything was drawn behind the scenes.
    // This will show the new, red contents of the window.
    SDL_RenderPresent(renderer);


    SDL_Delay(5000);

}


int main(int argc, const char * argv[]) {

    MainComponent mainComponent;
    mainComponent.init();

    char myVar;

    cout << "Enter any key to quit...";
    cin >> myVar;

    SDL_Quit();
    return 0;
}

这应该编译并正常运行。 希望有所帮助。