Как создать отладочные маркеры в 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 типы, так что вы можете определить разницу между группировкой и маркерами.

Другие вопросы по тегам