SDL_2加载图像不起作用

时间:2018-02-04 02:15:44

标签: c++

所以我最近下载了SDL_2库和所有组件,并希望创建一个简单的GUI / UI,其中有一个带有图片的“按钮”。我查了几个指南,我也复制并重写了很多代码。但是我发现最新的代码示例是在C中,它不包含任何类,而且非常混乱。所以我把它改写成C ++但由于某种原因,它不想加载图像。

我故意不发布任何析构函数或任何我99%确定不会导致问题的函数。对于帖子,为了不太长,我相信错误是在const void clear函数中,但我不确定。

为什么有任何想法?一直试图解决这个问题很长一段时间,谢谢你的任何建议/帮助:)

window.h中:

#pragma once
#include <SDL.h>

class Window
{
  public:
     Window(const char* title, int width, int height);
    ~Window();

     void getEvents();
     const void clear();

     inline const bool isClosed() { return _closed; }

 private:
   const char* _title = "SDL_6";
   int _width = 480;
   int _height = 720;
   bool _closed = false;
   bool init();

   SDL_Window *_window = nullptr;
   SDL_Renderer *_renderer = nullptr;
   SDL_Surface *_surface = nullptr;
};

Window.cpp:

#include "Window.h"
#include <iostream>
#include <SDL_image.h>

#define IMG_PATH "D:\\Picture\\Bowser\\star.jpg"

Window::Window(const char *title, int width, int height) :
   _title(title), _width(width), _height(height)
{
   _closed = !init();
}

const void Window::clear()
{
   int w = 120;
   int h = 120;

   SDL_Texture *img = NULL;
   SDL_Rect texr;
   texr.x = 120;
   texr.y = 120;
   texr.h = 120;
   texr.w = 120;

   const char* file = "D:\\Pictures\\bowser\\star.jpg";

   SDL_Surface *IMG_Load(const char* file);

   SDL_RenderClear(_renderer);
   SDL_RenderCopy(_renderer, img, NULL, &texr);

   img = IMG_LoadTexture(_renderer, IMG_PATH);
   SDL_QueryTexture(img, NULL, NULL, &w, &h);

   SDL_RenderPresent(_renderer);
}

的main.cpp

#include "Window.h"

int main(int argc, char* argv[])
{
   Window window("SDL_6", 720, 480);

   while (!window.isClosed())
   {
       window.getEvents();
       window.clear();
   }
   return 0;
}

1 个答案:

答案 0 :(得分:0)

所以答案是不要声明: SDL_Surface IMG_Load(const char 文件);但要改为调用它,也改变了:const void Window :: clear()函数中代码的顺序。谢谢你答案O'Neil: - )