【问题标题】:glCreateVertexArray() Error - Access violation executing location 0x00000000 [closed]glCreateVertexArray()错误-执行位置0x00000000的访问冲突[关闭]
【发布时间】:2022-01-21 05:16:08
【问题描述】:

我一直在研究基于 OpenGL 的图形渲染引擎。 我的应用程序在glCreateVertexArrays(1, &m_vao) 崩溃,其中m_vaouint32_t。代码中的一切看起来都是正确的。我可以使用glClearColor() 打开窗口。在我看来,OpenGL 和 GLFW 链接正确。如果有人遇到类似错误,我需要帮助。

请找到 CMake 链接库设置。

target_link_libraries(start PRIVATE
    project_options
    project_warnings
    PUBLIC Qt${QT_VERSION_MAJOR}::Core
    Qt${QT_VERSION_MAJOR}::Quick
    Qt${QT_VERSION_MAJOR}::QuickControls2
    PUBLIC ${THIRD_PARTY_DIR}/glad/lib/glad.lib
    PUBLIC ${THIRD_PARTY_DIR}/glfw_3_3_4/lib/glfw3.lib
    PUBLIC ${THIRD_PARTY_DIR}/glm/lib/glm_static.lib
    PRIVATE ${PROJECT_NAME}::SN_ENGINE
)

错误:在 glCreateVertexArray() 调用中执行位置 0x00000000 的访问冲突。

【问题讨论】:

标签: c++ opengl cmake c++17 glfw


【解决方案1】:

您正在使用 3.3 版创建 OpenGL 上下文。 glCreateVertexArrays 仅从 OpenGL 4.5 开始可用。您可能正在搜索glGenVertexArrays。另见Direct State access with vertex buffers

如果你想使用 DAS,你必须创建一个 OpenGL 4.5 上下文:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);

【讨论】:

  • 谢谢!我现在找到了根本原因。我需要为 OpenGL 4.5 更新 gald 库。
  • @Avi 这还不够。您必须创建一个 OpenGL 4.5 上下文:glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);
  • 是的,我已将此版本从 3.3 更新到 4.5。现在我没有收到那个错误。 glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);
  • 非常感谢!周末快乐!
猜你喜欢
  • 2013-10-11
  • 2015-07-15
  • 1970-01-01
  • 2023-03-23
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多