OpenGL 버전 4.4, 해당 4.4 코어 GLAD 빌드 및 GLFW 버전 3.2 (Visual Studio 2015에서 편집) 설치되어 있습니다.glDebugMessageCallback 인해 액세스 위반 (GLFW + GLAD)
void APIENTRY glDebugOutput(GLenum source, GLenum type, GLuint id, GLenum severity,
GLsizei length, const GLchar *message, const void *userParam);
나는 다음과 같은 기능이있다 : 나는 https://learnopengl.com/#!In-Practice/Debugging에 설명 된대로 콜백 함수를 사용하고
GLFWwindow* init(int width, int height, const char* header) {
GLFWwindow* window;
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE);
window = glfwCreateWindow(width, height, header, NULL, NULL);
if (window == NULL) {
glfwTerminate();
throw std::runtime_error("Failed to create GLFW window.");
}
glfwMakeContextCurrent(window);
glfwSetFramebufferSizeCallback(window, resizeCallback);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
glfwTerminate();
throw std::runtime_error("Failed to initialize GLAD");
}
GLint flags; glGetIntegerv(GL_CONTEXT_FLAGS, &flags);
if (flags & GL_CONTEXT_FLAG_DEBUG_BIT)
{
glEnable(GL_DEBUG_OUTPUT);
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
glDebugMessageCallback(glDebugOutput, nullptr); // segfault on this line
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, nullptr, GL_TRUE);
}
return window;
}
내가 해봤 다시 설치 GLAD와 아무 소용이, 콜백에 APIENTRY을 변경. 나는 완전히 잃어 버렸어, 어떤 제안?
GL 4.4를 사용하는 경우 GL 3.3 만로드하는 이유는 무엇입니까? –
'glDebugOutput' 콜백에 무엇이 있습니까? –
@NicolBolas 모든 것들 중 ... 잘 작동, 고마워요! –