C ++ / SDL需要帮助在屏幕上获取图像

时间:2014-10-10 15:40:27

标签: c++ sdl sdl-2

我似乎无法将图像加载到SDL窗口。

代码:

#include <iostream>
#include <SDL2/SDL.h>
#include <stdio.h>
using namespace std;

SDL_Window *window;
SDL_Surface *imageSurface;
SDL_Surface *image;

void createWindow() {

    SDL_INIT_EVERYTHING;

    if(SDL_INIT_EVERYTHING <0) {
       cout << "SDL failed to initialize!" << endl;
    }

    window = SDL_CreateWindow("Test Window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480,0);

    if (window==NULL) {
        cout << "Window could not be made" << endl;
    }

    imageSurface = SDL_GetWindowSurface(window);
}

void close() {
    SDL_FreeSurface(image);
    SDL_DestroyWindow(window);
    SDL_Quit();
}

void loadmedia() {

    image = SDL_LoadBMP("Test.bmp");

    if (image==NULL) {
        cout << "Image could not be loaded" << endl;
    }
}

int main() {

    createWindow();
    loadmedia();

    SDL_BlitSurface(image, NULL, imageSurface, NULL);
    SDL_UpdateWindowSurface(window);
    SDL_Delay(10000);

    close();
}

1 个答案:

答案 0 :(得分:-1)

您缺少消息循环。 基本上,您的应用程序正在接收处理操作的消息,例如绘制窗口等等。

你缺少的是这样的:

while (!done) {
  while (SDL_PollEvent(&event)) {
    if (event.type == SDL_QUIT)
      done = true;
  }
}

您可以在此处找到示例:http://www.gamedev.net/topic/376858-a-proper-sdl-message-loop/