Я использую 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);
}
}
Когда я пытаюсь зарегистрировать информацию о поставщике с помощью 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