SFML在多线程处理中失败 我对SFML和C++有新的见解。我有一个项目,使用SFML库来绘制图形,但是当我在程序中添加一个附加的线程时,它就无法在线程中执行代码。这是我的密码:(请帮帮我!) #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; inth(sf::RenderWindow*win){ //做点什么 赢->关(); 这个线程::sleep_for(chrono::毫秒(10)); 返回0; } int main(){ sf::RenderWindow(sf::VideoMode(800600),“我的窗口”); 螺纹t1(h和窗口); _睡眠(10000000); t1.join(); 返回0; }
SFML支持多线程绘图,您甚至不必这样做 任何能让它工作的东西。唯一要记住的是停用 在另一个线程中使用窗口之前;那是因为有一扇窗户 (更准确地说,它的OpenGL上下文)不能在多个应用程序中处于活动状态 线程同时运行 调用window.setActive(false);在main()中,在将其传递给线程之前 请记住,为了实现最大的可移植性,必须在GUI线程(主线程)中处理事件。 SFML支持多线程绘图,您甚至不必这样做 任何能让它工作的东西。唯一要记住的是停用 在另一个线程中使用窗口之前;那是因为有一扇窗户 (更准确地说,它的OpenGL上下文)不能在多个应用程序中处于活动状态 线程同时运行 调用window.setActive(false);在main()中,在将其传递给线程之前SFML在多线程处理中失败 我对SFML和C++有新的见解。我有一个项目,使用SFML库来绘制图形,但是当我在程序中添加一个附加的线程时,它就无法在线程中执行代码。这是我的密码:(请帮帮我!) #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; inth(sf::RenderWindow*win){ //做点什么 赢->关(); 这个线程::sleep_for(chrono::毫秒(10)); 返回0; } int main(){ sf::RenderWindow(sf::VideoMode(800600),“我的窗口”); 螺纹t1(h和窗口); _睡眠(10000000); t1.join(); 返回0; },c++,visual-c++,sfml,C++,Visual C++,Sfml,SFML支持多线程绘图,您甚至不必这样做 任何能让它工作的东西。唯一要记住的是停用 在另一个线程中使用窗口之前;那是因为有一扇窗户 (更准确地说,它的OpenGL上下文)不能在多个应用程序中处于活动状态 线程同时运行 调用window.setActive(false);在main()中,在将其传递给线程之前 请记住,为了实现最大的可移植性,必须在GUI线程(主线程)中处理事件。 SFML支持多线程绘图,您甚至不必这样做 任何能让它工作的东西。唯一要记住的是停用 在另一个线程中使用窗口之前;那是因
请记住,您必须在GUI线程(主线程)中处理事件,以实现最大的可移植性。当它“…无法执行代码…”时会发生什么?它什么也不做。请尝试移动
sf::RenderWindow窗口(…)代码>到h()
。在我的实际程序中,它必须在main中,我没有选择,因为这是一个游戏,我应该在一瞬间绘制多个图形。当它“…无法执行代码…”时会发生什么?它什么都不做。尝试移动sf::RenderWindow窗口(…)
到h()
。在我的实际程序中,它必须在main中,我没有选择,因为这是一个游戏,我应该在一瞬间绘制多个图形,但这还不够。让我头疼了好几天。这还不够。让我头痛了好几天。
#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;
}