代码之家  ›  专栏  ›  技术社区  ›  Marko Beocanin

SDL和SDL\u映像程序在Eclipse中不执行任何操作

  •  0
  • Marko Beocanin  · 技术社区  · 8 年前

    我一直在尝试将PNG图像显示在SDL窗口的屏幕上。我正在使用Eclipse CDT。SDL。h和SDL\u图像。这两个函数似乎都已正确链接,因为编译器上会弹出带有颜色的函数。然而,当我运行代码时,实际上什么都没有发生。编译器中没有错误,没有注释,什么都没有。窗口不显示。如果有人能在这件事上帮助我,我将不胜感激。

    此外,SDL以前也在我的计算机上工作过(没有使用SDL\U图像),我在其中运行了一个粒子模拟,效果非常好。

    我的代码:

    #include <iostream>
    #include "SDL.h"
    #include "SDL_image.h"
    
    using namespace std;
    
    SDL_Window *m_window; //Window upon which the game will be displayed.
    SDL_Renderer *m_renderer; //Renderer used to draw the objects on the window.
    SDL_Texture *playerTex;
    
    int SCREEN_WIDTH = 600;
    int SCREEN_HEIGHT = 600;
    
    int main(int argc, char* args[]) {
        if (SDL_Init(SDL_INIT_VIDEO) < 0) {
            cout << "Video init failed" << endl;
            return 1;
        }
    
        //Creates the actual SDL-window and stores it in the m_window variable.
        m_window = SDL_CreateWindow("Marko Beocanin SDD Project",
        SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT,
                SDL_WINDOW_FULLSCREEN);
    
        //Error-checking method that determines if SDL could not create a window - returns false if unsuccessful.
        if (m_window == NULL) {
            cout << "Window Creation failed" << endl;
    
            SDL_Quit();
            IMG_Quit();
            return 2;
        }
    
        //Creates an SDL-Renderer: a tool used to actually draw objects on the Window
        m_renderer = SDL_CreateRenderer(m_window, -1, 0);
    
        //Error-checking method that determines if SDL could not create a renderer - returns false if unsuccessful.
        if (m_renderer == NULL) {
            cout << "Renderer creation failed." << endl;
            SDL_DestroyWindow(m_window);
            SDL_Quit();
            IMG_Quit();
            return 3;
        }
    
        SDL_Surface *tmpSurface = IMG_Load("img.png");
        playerTex = SDL_CreateTextureFromSurface(m_renderer, tmpSurface);
        SDL_FreeSurface(tmpSurface);
    
        SDL_RenderClear(m_renderer);
        SDL_RenderCopy(m_renderer, playerTex, NULL, NULL);
        SDL_RenderPresent(m_renderer);
    
        SDL_Delay(2000);
        SDL_DestroyWindow(m_window);
        SDL_Quit();
        IMG_Quit();
    
    
        return 0;
    }
    
    1 回复  |  直到 8 年前
        1
  •  0
  •   Marko Beocanin    8 年前

    我遇到的问题是因为我使用了错误的SDL\U映像库-我使用的是x64而不是x86,这意味着它本身没有抛出错误,只是工作不正常!