Я делаю рендер GL в окне. Сама программа работает нормально, но когда я «продвигаю» рендер l oop (как я сделал для сетевого класса, так что я предполагал, что он должен работать), программа открывается и работает в течение пары секунд перед сбоем, например, если память был заполнен?
загляните в главное, чтобы увидеть мою проблему
class MyWorld {
public:
GLFWwindow *window;
std::thread thread;
MyWorld() {
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
window = glfwCreateWindow(300, 300, "OUTPUT", nullptr, nullptr);
glfwMakeContextCurrent(window);
glViewport(0, 0, 300, 300);
glewInit();
}
void run() {
while (1) {
glfwMakeContextCurrent(window);
glfwPollEvents();
glClearColor(sin(glfwGetTime()), 0, 0, 1 ); // BG COLOR
glClear( GL_COLOR_BUFFER_BIT );
glfwSwapBuffers(window);
}
}
void threadrun() {
glfwMakeContextCurrent(NULL);
thread = std::thread(&MyWorld::run, this);
thread.detach();
}
};
int main() {
MyWorld world;
// world.run(); // this works fine
world.threadrun(); // this doesn't
while (1) { continue; }
}