She*_*uri 1 c++ visual-c++ sfml
我是sfml和c ++的新手.我有一个使用sfml库绘制图形的项目,但是当我向程序添加一个额外的线程时,它无法执行线程内的代码.这是我的代码:(请帮帮我!)
#include <SFML\Graphics.hpp>
#include <SFML\window.hpp>
#include <SFML\system.hpp>
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
int h(sf::RenderWindow* win){
//do something
win->close();
this_thread::sleep_for(chrono::milliseconds(10));
return 0;
}
int main(){
sf::RenderWindow window(sf::VideoMode(800,600),"My window");
thread t1(h,&window);
_sleep(10000000);
t1.join();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
DCu*_*rro 12
http://www.sfml-dev.org/tutorials/2.0/graphics-draw.php#drawing-from-threads
SFML支持多线程绘图,您甚至不需要做任何事情来使其工作.唯一要记住的是在另一个线程中使用它之前停用一个窗口; 那是因为一个窗口(更确切地说是它的OpenGL上下文)不能同时在多个线程中激活.
call window.setActive(false); 在你的main()之前,将它传递给线程.
请记住,您必须处理GUI线程(主线程)中的事件,以实现最大的可移植性.