**已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
18小时前关门了。
Improve this question
我需要在OpenGL中使用Tessellation,这意味着我的OpenGL版本需要是4.0或更高。我在终端中获得了glxinfo | grep OpenGL
的OpenGL版本。输出如下所示:
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA GeForce RTX 3090/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 520.61.05
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 4.6.0 NVIDIA 520.61.05
OpenGL shading language version string: 4.60 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 520.61.05
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
OpenGL ES profile extensions:
它显然显示我的OpenGL版本是4.6.0。但当我运行代码时:
glGetString(GL_VERSION);
我得到:
3.3.0 NVIDIA 520.61.05
我发现这种不匹配的原因是当我调用函数时得到segmentation fault
:
void glPatchParameteri(GLenum pname, GLint value);
我的GLAD
是用预期的版本4.6.0
生成的。我的CMakeLists.txt
编辑如下:
cmake_minimum_required(VERSION 3.23)
project(visualization_displacement_map)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 14)
find_package(glfw3 REQUIRED)
file(GLOB project_file glad.c main.cpp)
add_executable(${PROJECT_NAME} ${project_file} utility/init_func.cpp utility/callback_func.cpp utility/class/SoarCamera.cpp utility/class/SoarCamera.h program/program_test.cpp utility/class/Shader.cpp utility/class/Shader.h utility/debug_func.cpp)
target_link_libraries(${PROJECT_NAME} ${TARGET_LIB}
-lglfw
-lGL
-lm
-lXrandr
-lXi
-lX11
-lXxf86vm
-lpthread
-ldl
-lXinerama
-lXcursor
)
为什么会出现这种不匹配?
1条答案
按热度按时间ctehm74n1#
你在运行时请求的是哪一个上下文?听起来像是在请求Python 3.3的上下文?(或者你正在使用的窗口库是)。
供过于求:
在GLFW中:
在SDL中: