我试图让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上图标的屏幕截图 如果我做错了,请告诉我,谢谢!
答案 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;
}
这应该编译并正常运行。 希望有所帮助。