Примеры диагностики графики
В приведенных ниже примерах показано, как выполнить отладку проблем отрисовки в приложениях на основе DirectX с помощью диагностики графики Visual Studio.
Захват графической информации
Прежде чем можно будет использовать диагностику графики для диагностики проблем отрисовки в приложении, необходимо захватить графические данные из приложения во время его выполнения. Графические данные можно захватывать из приложения, работающего на локальном компьютере либо на удаленном компьютере или устройстве. В этих пошаговых руководствах демонстрируется захват графических данных из приложения вручную или программным путем:
Использование диагностики графики с устройством на основе ARM
С помощью диагностики графики можно выполнить отладку приложения, использующего Direct3D, на устройстве ARM путем удаленной отладки. Дополнительные сведения см. в разделе Практическое руководство. Использование диагностики графики с устройством ARM.
Воспроизведение графических данных
После захвата графических данных из работающего приложения можно воспроизвести захваченные события для диагностирования проблем отрисовки. Для воспроизведения можно использовать компьютер разработки либо удаленный компьютер или устройство, к которому вы подключены. Для получения дополнительной информации см. Практическое руководство. Изменение машины воспроизведения диагностики графики.
Отладка недостающих объектов
Отсутствующий объект или объекты — одна из самых распространенных проблем отрисовки, с которыми сталкиваются разработчики графики. Этот тип проблем может быть нелегко выявить, поскольку несколько различных видов ошибок могут вызвать исчезновение объекта. Типичные причины отсутствия объектов включают в себя неправильно настроенные состояния устройства, проблемы с преобразованием геометрии объекта или неправильно настроенный конвейер графики.
Эти сценарии демонстрируют использование диагностики графики для определения причин отсутствия объекта и поиска отвечающего за это кода.
Пошаговое руководство. Отсутствие объектов вследствие состояния устройства
Пошаговое руководство. Отсутствие объектов вследствие заливки вершин
Пошаговое руководство. Отсутствие объектов вследствие неправильной настройки конвейера
Отладка ошибок отрисовки
Объект или объекты, имеющие неправильный внешний вид, — другая распространенная проблема, с которой сталкиваются разработчики графики. Этот тип проблем может быть нелегко диагностировать, потому что неверный внешний вид и его причины могут варьироваться от очевидных — привязки неверных текстур — до очень тонких — ошибки в коде шейдера или непредвиденного взаимодействия шейдеров. Некоторые проблемы могут вызываться сочетанием ошибок.
Вот сценарий, который демонстрирует использование диагностики графики для поиска достаточно заметной проблемы отрисовки, вызванной небольшой ошибкой шейдера:
Отладка вычислительных шейдеров
Вы можете использовать диагностику графики для отладки вычислительных шейдеров DirectCompute, генерирующих неверный результат. С помощью DirectCompute можно использовать вычислительные возможности GPU для выполнения параллельных вычислений больших объемов данных. Для некоторых проблем использование GPU может оказаться во много раз быстрее, чем выполнение даже хорошо оптимизированного кода на основе ЦП. Однако традиционные отладчики не распознают код, выполняемый в GPU. Отладка кода такого типа требует специальных средств, которые часто привязаны к поставщику и могут быть не очень хорошо интегрированы с Visual Studio. Чтобы обеспечить единообразие при отладке вычислительных шейдеров в различных GPU, диагностика графики захватывает события DirectCompute Dispatch в дополнение к событиям отрисовки Direct3D, что позволяет использовать знакомые средства для отладки вашего кода вычислительных шейдеров.
Сценарий, демонстрирующий отладку проблемы моделирования, вызванной ошибкой в вычислительном шейдере, см. в статье Пошаговое руководство. Использование диагностики графики для отладки вычислительного шейдера.