Как создать отладочные маркеры в OpenGL?
Я пытаюсь отладить некоторый графический код OpenGL 3.3+ с помощью RenderDoc, и я хотел бы определить некоторые маркеры отладки для проходов рендеринга, которые могут быть распознаны RenderDoc.
Я использую GLEW и пытался использовать glPushGroupMarkerEXT/glPopGroupMarkerEXT для определения этих маркеров, но я получаю нарушение прав доступа при вызове glPushGroupMarkerEXT, поэтому я предполагаю, что расширение, обеспечивающее эту функциональность, не загружено. Я также пытался проверить, доступно ли расширение GL_EXT_debug_marker, используя glewIsSupported, но это возвращает false.
Эта функция не поддерживается или я ее не правильно использую? Или есть другой способ добиться этого?
1 ответ
EXT_debug_marker не является расширением, которое вы хотите использовать. Он старый и никогда не получал широкой поддержки. Его функциональность была включена в KHR_debug, который более широко поддерживается и сам является ядром OpenGL с 4.3 (он же более 5 лет назад).
Теперь функциональность маркера отладки отличается между ними. KHR_debug превращает маркеры в еще один вид пользовательского отладочного уведомления. Итак, куда бы вы позвонили glInsertEventMarkerEXT
вместо этого вы называете более общим glDebugMessageInsert
, с использованием GL_DEBUG_TYPE_MARKER
как тип сообщения. Где бы вы использовали glPush/PopGroupMarkerEXT
Вы вместо этого используете glPush/PopDebugGroup
, который используется для произвольного определения объема. Такие группировки не используют тип маркера; они используют GL_DEBUG_TYPE_PUSH/POP_GROUP
типы, так что вы можете определить разницу между группировкой и маркерами.