C++ 传输 SDL_renderer 到 class

C++ transfer SDL_renderer to a class

我目前正在学习 SDL2 并且刚刚设法创建了一个乒乓球游戏。一些朋友告诉我,我应该开始使用 classes 来管理,例如 player1 和 player2。我知道如何创建 class 但我不明白如何在 class 之间传递 SDL_Renderer 以便从 class 中渲染对象main.cpp 文件。

#include "SDL2/SDL.h"
#include "SDL2/SDL_render.h"
#include <iostream>
#include <windows.h>
#include <thread>
#include "player.h"

Player Player; //defining the class

const int WINDOW_WIDTH = 1280;
const int WINDOW_HEIGHT = 720;


int main(int argc, char *args[]) {

SDL_Init(SDL_INIT_EVERYTHING);

SDL_Window *window;
SDL_Renderer *renderer;

window = SDL_CreateWindow    ("Test",
                            SDL_WINDOWPOS_CENTERED,
                            SDL_WINDOWPOS_CENTERED,
                            WINDOW_WIDTH,
                            WINDOW_HEIGHT,
                            0
                            );
if (window == NULL) {
    std::cout << "Window could not load" << SDL_GetError() << std::endl;
    return 0;
}

renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
while (running) //running is a bool (true) {
    Player.draw();
}
    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}

我必须在 player.cpp 绘制函数中做什么才能在屏幕上绘制对象?

使用 C++ windows,使用 g++ main.cpp player.cpp -o main.exe -IC:\MinGW\i686-w64-mingw32\include -LC:\MinGW\i686-w64-mingw32\lib -lmingw32 -lSDL2main -lSDL2

编译代码

在main.cpp

Player.draw(renderer)

(假设您使用与上面相同的代码,只需将 "renderer" 传递给 Player.draw() 函数即可。)

在player.h

class Player {
public:
    void draw(SDL_Renderer *renderer)
};

在player.cpp

void Player::draw(SDL_Renderer *renderer) {
    SDL_Rect object;
    object.x = 0;
    object.y = 0;
    object.h = 10;
    object.w = 10;
    SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
    SDL_RenderDrawRect(renderer, &object);
    SDL_RenderFillRect(renderer, &object);
}
// will draw a white box with at position (0,0)

我相信这是一种简单的方法