SDL不会画矩形

问题描述 投票:0回答:0

绘图函数在 while 循环内的 for 循环中,就像 while(!windownotclose){ for(auto& e:somevecs){//code}} 一样。 我在 visual studio 中设置了一个断点,看看 e 是否为 null 而事实并非如此。

更新函数(while循环和for循环)

它的工作原理是创建一个类并将它(emplace_back)插入一个向量(for 循环中的相同向量)。

void valen::World::Update() {
    while (!gameWindow->isWindowClosed()) {
        this->gameWindow->Update();
        this->w_SoundSystem->Update(1.0f);
        this->w_InputManager->Update(1.0f);
        this->w_EntitySystem->UpdateActors(1.0f);

        for (std::unique_ptr<Actor>& e : w_EntitySystem->getActors()) {
            SDL_Rect rect = {e->getPos().x, e->getPos().y, e->getSize().x, e->getSize().y};
            SDL_SetRenderDrawColor(gameWindow->sdl_renderer, e->getColor().r, e->getColor().g, e->getColor().b, 255);
            SDL_RenderFillRect(gameWindow->sdl_renderer, &rect);
        }

    }

    std::cout << "\" " << gameWindow->getTitle() << " \"" << "has ended... \n";
}

main.cpp


class myActor : public valen::Actor {
public:

    myActor() {
        position = { 0,0 };
        size = { 100,100 };
        color = { 255,0,0 };
    }

    void Init() override {
    }

    void Update(float dt) override {
        //position.x += 100 * dt;
        std::cout << position.x << std::endl;
    }
    
    ~myActor() {

    }

};

int main(int argc, char **argv) {

    valen::World* world = new valen::World();
    world->Init();

    world->addActor(std::make_unique<myActor>());

    world->initActor();
    world->Update();

    return 0;
}

github上的完整代码

c++ graphics sdl-2
© www.soinside.com 2019 - 2024. All rights reserved.