Я новичок в OpenGL и в настоящее время работаю над своим тестовым проектом OpenGL для изучения OpenGL. И одним из компонентов этого проекта является WindowManager. Я пытался добавить поддержку создания нескольких окон, но это не работает так, как я хочу.
Когда я запускаю приложение, два окна (назовем его A-FIRST_WINDOW, B-SECOND_WINDOW ) создаются сразу, но когда я закрываю окно B, мое приложение все еще работает, и все в порядке, потому что окно все еще доступно, и я могу его использовать, а когда я закрываю окно A, мое приложение закрывается. Но если я сначала закрою окно A, мое окно B тоже закроется, и приложение будет завершено.
P.S:
Окно A - создается первым
B окно - создается вторым
Кодом...
WindowManager.hpp
#include
#define DEFAULT_WIDTH 800
#define DEFAULT_HEIGHT 600
#define DEFAULT_TITLE "Soul Byte Engine Window"
namespace SoulByteEngineCore
{
namespace WindowManager
{
class Window
{
public:
Window(unsigned int width=DEFAULT_WIDTH, unsigned int height=DEFAULT_HEIGHT, const char *title = DEFAULT_TITLE);
public:
void Clear(float x_pos, float y_pos, float z_pos);
public:
unsigned int GetWidth();
unsigned int GetHeight();
public:
static bool Init();
public:
void ShowWindowData();
public:
const char* GetTitle();
public:
bool SetLogging();
public:
void onUpdate();
public:
bool ShouldClose();
public:
void Destroy();
private:
bool CreateWindow();
private:
void Update();
private:
unsigned int m_windowWidth = DEFAULT_WIDTH;
unsigned int m_windowHeight = DEFAULT_HEIGHT;
private:
const char* m_windowTitle = DEFAULT_TITLE;
private:
unsigned int OpenGLMajorVersion = 3;
unsigned int OpenGLMinorVersion = 3;
private:
GLFWwindow* m_window_handle = NULL;
};
}
}
#include
#include
#include
#include
namespace SoulByteEngineCore
{
namespace WindowManager
{
Window::Window(unsigned int width, unsigned int height, const char *title)
:m_windowWidth{std :: move(width)}
,m_windowHeight{std :: move(height)}
,m_windowTitle{std :: move(title)}
{
CreateWindow();
}
void Window::Update()
{
glfwSwapBuffers(this->m_window_handle);
glfwPollEvents();
}
void Window::onUpdate()
{
Update();
}
void Window::Destroy()
{
glfwDestroyWindow(this->m_window_handle);
}
bool Window::ShouldClose()
{
return glfwWindowShouldClose(this->m_window_handle);
}
bool Window::Init()
{
if (!glfwInit())
{
std::cout
Подробнее здесь: https://stackoverflow.com/questions/764 ... w-in-class
Несколько окон GLFW в классе ⇐ C++
Программы на C++. Форум разработчиков
1736156907
Anonymous
Я новичок в OpenGL и в настоящее время работаю над своим тестовым проектом OpenGL для изучения OpenGL. И одним из компонентов этого проекта является WindowManager. Я пытался добавить поддержку создания нескольких окон, но это не работает так, как я хочу.
Когда я запускаю приложение, два окна (назовем его A-FIRST_WINDOW, B-SECOND_WINDOW ) создаются сразу, но когда я закрываю окно B, мое приложение все еще работает, и все в порядке, потому что окно все еще доступно, и я могу его использовать, а когда я закрываю окно A, мое приложение закрывается. Но если я сначала закрою окно A, мое окно B тоже закроется, и приложение будет завершено.
P.S:
Окно A - создается первым
B окно - создается вторым
Кодом...
WindowManager.hpp
#include
#define DEFAULT_WIDTH 800
#define DEFAULT_HEIGHT 600
#define DEFAULT_TITLE "Soul Byte Engine Window"
namespace SoulByteEngineCore
{
namespace WindowManager
{
class Window
{
public:
Window(unsigned int width=DEFAULT_WIDTH, unsigned int height=DEFAULT_HEIGHT, const char *title = DEFAULT_TITLE);
public:
void Clear(float x_pos, float y_pos, float z_pos);
public:
unsigned int GetWidth();
unsigned int GetHeight();
public:
static bool Init();
public:
void ShowWindowData();
public:
const char* GetTitle();
public:
bool SetLogging();
public:
void onUpdate();
public:
bool ShouldClose();
public:
void Destroy();
private:
bool CreateWindow();
private:
void Update();
private:
unsigned int m_windowWidth = DEFAULT_WIDTH;
unsigned int m_windowHeight = DEFAULT_HEIGHT;
private:
const char* m_windowTitle = DEFAULT_TITLE;
private:
unsigned int OpenGLMajorVersion = 3;
unsigned int OpenGLMinorVersion = 3;
private:
GLFWwindow* m_window_handle = NULL;
};
}
}
#include
#include
#include
#include
namespace SoulByteEngineCore
{
namespace WindowManager
{
Window::Window(unsigned int width, unsigned int height, const char *title)
:m_windowWidth{std :: move(width)}
,m_windowHeight{std :: move(height)}
,m_windowTitle{std :: move(title)}
{
CreateWindow();
}
void Window::Update()
{
glfwSwapBuffers(this->m_window_handle);
glfwPollEvents();
}
void Window::onUpdate()
{
Update();
}
void Window::Destroy()
{
glfwDestroyWindow(this->m_window_handle);
}
bool Window::ShouldClose()
{
return glfwWindowShouldClose(this->m_window_handle);
}
bool Window::Init()
{
if (!glfwInit())
{
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/76458914/glfw-multiple-window-in-class[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия