从 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);
}
您好,我正在学习 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);
}