从类方法中清除 raylib 中的背景会使窗口闪烁
Posted
技术标签:
【中文标题】从类方法中清除 raylib 中的背景会使窗口闪烁【英文标题】:Clearing background in raylib from class method makes window flicker 【发布时间】:2020-06-20 05:09:21 【问题描述】:您好,我正在学习 c++,所以我不确定这是否是我的愚蠢错误。我正在尝试使用 raylib 做一些简单的事情,我试图通过调用类中的方法来简单地清除背景。当我在课堂上尝试这样做时,窗口会可怕地闪烁,有时会冻结。但是当它在 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();
查看器.cpp
#include <raylib.h>
class Viewer
public:
void draw()
ClearBackground(DARKGRAY);
;
查看器.h
#pragma once
class Viewer
public:
void draw()
;
额外信息,我正在使用 Visual Studio 2019 和 vckpg 来管理库。
这就是我所看到的:
【问题讨论】:
【参考方案1】:看起来您正在重新定义您的绘图功能。所以它最有可能在你的标题中调用空的绘制函数定义。
查看器.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();。或者你可以在标题中调用 clear 查看器.h
void draw() ClearBackground(DARKGRAY);
编辑: 另外,我以前从未尝试过在我的 .cpp 中调用类。因此,如果您执行 .cpp 路由,那么您可能还需要将其更改为: 查看器.cpp
#include "viewer.h"
#include <raylib.h>
void Viewer::draw()
ClearBackground(DARKGRAY);
【讨论】:
以上是关于从类方法中清除 raylib 中的背景会使窗口闪烁的主要内容,如果未能解决你的问题,请参考以下文章
当触发 iOS Safari 中的虚拟键盘时,它会使我的 CSS 过渡闪烁。如何解决这个问题?
在didHighlightItemAt上更改UICollectionViewCell中的背景并且在滚动时didUnhighlightItemAt闪烁