【发布时间】:2018-10-02 06:52:01
【问题描述】:
我是 SFML 新手,一直在尝试拥有一个多线程游戏系统(所有游戏逻辑都在主线程上,并使用 sf::Thread 在专用线程中进行渲染; 主要用于练习线程)如in this page 所述(“使用线程绘图”部分):
不幸的是,我的程序在 update() 期间的处理时间很长,并且使渲染过程完全失控,显示一些帧已绘制,而另一些则完全为空。如果不是很明显,我的渲染线程正在尝试绘制甚至没有计算过的东西,从而留下这种癫痫效果。
我正在寻找的是仅在计算了主逻辑时才允许线程渲染。这是我到目前为止得到的:
void renderThread()
{
while (window->isOpen())
{
//some other gl stuff
//window clear
//window draw
//window display
}
}
void update()
{
while (window->isOpen() && isRunning)
{
while (window->pollEvent(event))
{
if (event.type == sf::Event::Closed || sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
{
isRunning = false;
}
else if (m_event.type == sf::Event::Resized)
{
glViewport(0, 0, m_event.size.width, m_event.size.height);
}
}
// really resource intensive process here
time = m_clock.getElapsedTime();
clock.restart().asSeconds();
}
}
提前致谢。
【问题讨论】:
标签: c++ multithreading sfml