从 class 方法清除 raylib 中的背景使 window 闪烁

Clearing background in raylib from class method makes window flicker

您好,我正在学习 C++,所以我不确定这是否是我犯的一个愚蠢的错误。我正在尝试使用 raylib 做一些简单的事情,我正在尝试通过调用 class 中的方法来简单地清除背景。当我尝试从 class 执行此操作时,window 会可怕地闪烁,有时会冻结。但是当它在 main 内部被调用时,它运行得非常好并且像预期的那样运行。我以前用很多其他语言编程过,但我不太确定为什么它的行为会有所不同。

代码如下:
main.cpp:

#include <iostream>
#include <string>
#include <array>
#include "Viewer.h"
#include <raylib.h>

using namespace std;

#define log(x) std::cout << x << std::endl


int main() {
    int screenWidth = 800;
    int screenHeight = 450;

    InitWindow(screenWidth, screenHeight, "test");

    Viewer* viewer = new Viewer();

    while (!WindowShouldClose()) {
        BeginDrawing();
        //ClearBackground(DARKGRAY);
        //DrawText("Congrats!", 190, 200, 20, LIGHTGRAY);
        //DrawLine

        viewer->draw();
        EndDrawing();
    }

    delete viewer;
    CloseWindow();

    //cin.get();
}

viewer.cpp

#include <raylib.h>

class Viewer {
public:
    void draw() {
        ClearBackground(DARKGRAY);

    }
};

viewer.h

#pragma once

class Viewer {
public:
    void draw(){}
};

额外信息,我正在使用 Visual Studio 2019 和 vckpg 来管理库。

这就是我所看到的:

看起来你是 re-defining 你的绘图函数。所以它很可能在你的 header.

中调用空的 draw 函数定义

viewer.h

void draw(){} //This is most likely what is being called.
void draw(); //Use this if you want to define it in .cpp

您可以保留 .cpp 定义并使用 void draw();。或者你可以在 header 中调用 clear viewer.h

void draw(){ ClearBackground(DARKGRAY);}

编辑: 另外,我以前从未尝试过在我的 .cpp 中调用 class 。因此,如果您执行 .cpp 路由,那么您可能还需要将其更改为: viewer.cpp

#include "viewer.h"
#include <raylib.h>

void Viewer::draw()
{
    ClearBackground(DARKGRAY);
}