Контекст C++ OpenGL: ошибка C2338 static_assert при регистрации GL_VENDOR с помощью spdlog [закрыто]C++

Программы на C++. Форум разработчиков
Anonymous
Контекст C++ OpenGL: ошибка C2338 static_assert при регистрации GL_VENDOR с помощью spdlog [закрыто]

Сообщение Anonymous »

Я разрабатываю игровой движок как личный проект и столкнулся с проблемами при входе в консоль с помощью spdlog. Я реализовал OpenGL для рендеринга и сумел нарисовать простой треугольник. Однако мне трудно регистрировать такую ​​информацию, как поставщик OpenGL.
Я использую Visual Studio 2022. Вот соответствующая часть моего класса OpenGLContext, которая настраивает контекст OpenGL с использованием GLFW и GLAD:

Код: Выделить всё

namespace Nova {

OpenGLContext::OpenGLContext(GLFWwindow* windowHandle)
: m_WindowHandle(windowHandle)
{
NA_CORE_ASSERT(windowHandle, "Window handle is null!");
}

void OpenGLContext::Init()
{
glfwMakeContextCurrent(m_WindowHandle);
int status = gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
NA_CORE_ASSERT(status, "Failed to initialize Glad!");

NA_CORE_INFO("OpenGL Info:");
NA_CORE_INFO("  Vendor: {0}", glGetString(GL_VENDOR));  // Error here
// Additional info logging
}

void OpenGLContext::SwapBuffers()
{
glfwSwapBuffers(m_WindowHandle);
}

}
Макрос NA_CORE_INFO расширяется до: #define NA_CORE_INFO(...) ::Nova::Log::GetCoreLogger()->info(_VA_ARGS_ )
Когда я пытаюсь зарегистрировать информацию о поставщике с помощью glGetString(GL_VENDOR), я получаю ошибку C2338 static_assert: «Форматирование непустых указателей запрещено». Я понимаю, что glGetString возвращает const GLubyte*, но я не уверен, как правильно его отформатировать для ведения журнала с помощью spdlog.
Я попробовал преобразовать const GLubyte* в std ::string, но у меня все еще возникают проблемы. Вот что я пробовал:
NA_CORE_INFO(" Vendor: {}", reinterpret_cast(glGetString(GL_VENDOR)));
Может ли кто-нибудь объяснить правильный способ справиться с этим и записать строки OpenGL? Любая помощь будет принята с благодарностью!

Подробнее здесь: https://stackoverflow.com/questions/786 ... endor-with

Вернуться в «C++»