许多OpenGL glDebugOutput Shader Stats / Shader Compiler / Othe



我有一个opengl玩具代码,我用它来学习ogl和3d图形。我使用glDebugMessageCallbackglDebugMessageControl来检查OGL错误,在windows上我没有任何消息。我现在在linux上测试我的代码,我得到了很多这样的消息:

Debug message (1): Shader Stats: SGPRS: 16 VGPRS: 12 Code Size: 88 LDS: 0 Scratch: 0 Max Waves: 8 Spilled SGPRs: 0 Spilled VGPRs: 0 PrivMem VGPRs: 0 DivergentLoop: 0, InlineUniforms: 0, ParamExports: 2, (VS, W64)
Source: Shader Compiler
Type: Other
Severity: notification

这里有一些关于我的环境的更多信息

[OpenGL] OpenGL version loaded: 4.6
[OpenGL] Vendor: AMD
[OpenGL] Renderer: AMD Radeon RX 570 Series (polaris10, LLVM 13.0.1, DRM 3.44, 5.17.3-302.fc36.x86_64)
[OpenGL] Version: 4.6 (Compatibility Profile) Mesa 22.0.1
[OpenGL] Version GLSL: 4.60

我的问题是为什么我没有得到这些消息在窗口,为什么我一直得到他们,即使我改变我的回调

glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE , 0, nullptr, GL_TRUE);

glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_HIGH_AMD , 0, nullptr, GL_TRUE);

?它们对我来说似乎是有信息的,但从这个角度来看,它们大多是噪音

我的问题是为什么我没有得到这些消息在windows

调试消息完全是特定于实现的。在最坏的情况下,你根本收不到任何消息。不同驱动程序的冗长程度可能差别很大,Linux上的桌面开源驱动程序明显处于冗长程度的一端。英伟达的Win/Linux在这方面也很好,但AMD和英特尔在windows上的表现却很差。

为什么我一直得到他们,即使我改变我的回调从[…])

glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_HIGH_AMD , 0, nullptr, GL_TRUE);

因为glDebugMessageControl(..., GL_DEBUG_SEVERITY_HIGH_AMD, ..., GL_TRUE)只是启用SEVERITY_HIGH消息(无论如何之前启用),它不会禁用默认情况下仍然启用的SEVERITY_NOTIFICATION,如GL_KHR_debug扩展规范中所述(调试输出扩展的其他变体如AMD的类似):

消息可以启用或禁用。将不会生成禁用的消息。所有消息初始化除非他们的严重性是DEBUG_SEVERITY_LOW。可以使用DebugMessageControl命令更改消息的启用状态。

相关内容

  • 没有找到相关文章

最新更新