图像未呈现.bmp图像C++ SDL

yeotifhr  于 2023-03-25  发布在  其他
关注(0)|答案(2)|浏览(118)

我正在学习SDL,我试图渲染一个.bmp图像,但它只是显示一个黑屏。下面是代码:

#include <SDL.h>
#include "engine.cpp"
#include <iostream>

using namespace std;

int main(int argc, char* argv[]) {
    //Init image's pointers
    bool quit = false;
    //Render a window
    SDL_Event event;
    SDL_Init(SDL_INIT_EVERYTHING);

    SDL_Surface *imageSurface = NULL;
    SDL_Surface* windowSurface = NULL;

    SDL_Window* window = SDL_CreateWindow("SDL2 Displaying Image", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);

    windowSurface = SDL_GetWindowSurface(window);
    imageSurface = SDL_LoadBMP("hello.bmp");

    SDL_BlitSurface(imageSurface, NULL, windowSurface, NULL);

    SDL_UpdateWindowSurface(window);
    SDL_Delay(2000);

    while (!quit) {
        SDL_WaitEvent(&event);
        switch (event.type) {
        case SDL_QUIT:
            quit = true;
            break;
        }
    }
    SDL_Quit();
    return 0;
}

我想做的是渲染一个.bmp图像。我目前只是在进行bug测试,所以请不要因为我没有使用SDL_Quit()而嘲笑我。我已经看过任何我能找到的解决这个问题的方法,没有一个有效。请帮助!
编辑:我对这段代码进行了一些编辑,在渲染我的.bmp图像之后放置了while(!quit){}语句。

x33g5p2x

x33g5p2x1#

你告诉电脑等你退出程序,然后画出这幅画。
在退出程序之前,您可能希望立即绘制图片。

oxcyiej7

oxcyiej72#

我的错,目录/文件位置不正确。现在它是正确的渲染。为了测试错误,我添加了

if(imageSurface == NULL){

    return 0;
}

如果你有类似的问题,试试这个。谢谢!

相关问题