Поделиться через


Журнал пикселей графики

Журнал пикселей графики, одно из средств диагностики графики в Visual Studio, может помочь понять, как события Direct3D влияли на определенный пиксель в течение определенного кадра игры или приложения.

Окно Журнал пикселей графики выглядит так:

Пиксель с тремя событиями Direct3D в журнале.

Примечание

Начиная с Visual Studio 2013 с обновлением 3 окна средств диагностики графики размещаются в отдельной копии среды Visual Studio.В этой специальной среде, которая называется "Анализ графики", нет ненужных меню и параметров, но в остальном журнал пикселей и рабочий процесс остаются такими же, как и раньше.Подробнее об этом изменении см. в разделе Общие сведения о диагностике графики.

Основные сведения о журнале пикселей

С помощью окна Журнал пикселей графики можно проанализировать, как отдельный пиксель целевого объекта отрисовки затронут событиями Direct3D во время определенного кадра. Можно выявить проблемы отрисовки на уровне конкретного события Direct3D, даже если последующие события — или последующие примитивы в этом же событии — продолжают изменять значение окончательного цвета пикселя. Например, пиксель может быть отрисован неправильно и затем скрыт другим полупрозрачным пикселем, при этом их цвета смешиваются в буфере кадров. Подобные проблемы было бы трудно диагностировать, если бы вы имели для анализа только окончательное содержимое целевого объекта отрисовки.

В окне Журнал пикселей графики отображается полная история пикселя в течение выбранного кадра. В разделе Буфер последнего кадра в верхней части окна показан цвет, который записывается в буфер кадров в конце кадра, вместе с дополнительной информацией о пикселе, такой как фрейм, из которого он поступает, и его экранные координаты. В этой области также имеется флажок Отрисовка альфа-канала. Когда этот флажок установлен, значения цвета Буфер последнего кадра и промежуточного цвета отображаются с прозрачностью поверх шаблона в виде шахматной доски. Если флажок снят, альфа-канал цветовых значений игнорируется.

В нижней части окна отображаются события, которые имели возможность повлиять на цвет пикселя, вместе с псевдособытиями Начальный и Окончательный, которые представляют собой начальные и конечные значения цвета пикселя в буфере кадров. Начальное значение цвета определяется первым событием, которое изменило цвет пикселя (обычно событием Clear). Пиксель всегда имеет эти два псевдособытия в своем журнале даже при отсутствии других событий, повлиявших на него. Если другие события имели возможность повлиять на пиксель, они отображаются между событиями Начальный и Конечный. События можно разворачивать для просмотра подробных сведений о них. Для простых событий, например, удаляющих целевой объект отрисовки, результатом события будет лишь значение цвета. Более сложные события, такие как вызовы рисования, создают один или несколько примитивов, которые могут вносить свой вклад в цвет пикселя.

Примитивы, нарисованные событием, идентифицируются по типу примитива и индексу вместе с общим количеством примитивов для объекта. Например, такой идентификатор, как Треугольник (1456) из (6214), означает, что примитив соответствует 1456-му треугольнику в объекте, состоящем из 6214 треугольников. Слева от каждого идентификатора примитива есть значок, указывающий на то, какое влияние примитив оказал на пиксель. Примитивы, которые влияют на цвет пикселя, представлены скругленным прямоугольником, который заливается результирующим цветом. Примитивы, которые исключаются из оказания влияния на цвет пикселя, представлены значками, указывающими на причину исключения пикселя. Эти значки будут рассмотрены далее в этой статье в разделе Primitive exclusion.

Можно развернуть каждый примитив, чтобы проверить, как вывод построителя текстуры объединяется с существующим цветом пикселя для создания результирующего цвета. Здесь также можно проверить или отладить код построителя текстуры, связанного с примитивом, а также можно далее развернуть узел вершинного построителя текстуры для проверки его входных данных.

Исключение примитива

Примитив может исключаться из оказания влияния на цвет пикселя в силу различных причин. Каждая причина представлена значком, который описан в таблице ниже.

Значок

Причина исключения

Значок непройденного теста глубины.

Пиксель был исключен, поскольку он не прошел тест глубины.

Значок непройденного теста на отсечение.

Пиксель был исключен, поскольку он не прошел тест на отсечение.

Значок непройденного теста трафарета.

Пиксель был исключен, поскольку он не прошел тест трафарета.

Исключение вызова рисования

Если все примитивы в вызове рисования исключаются, т. е. не влияют на целевой объект отрисовки, потому что не проходят тест, то вызов рисования нельзя развернуть, и рядом с ним отображается значок, соответствующий причине исключения. Причины исключений вызовов рисования аналогичны причинам исключения примитивов, и их значки также аналогичны.

Просмотр и отладка кода шейдера

Вы можете просмотреть код для вершинного построителя текстуры, шейдера поверхности, шейдера доменов, шейдера геометрии или построителя текстуры либо отладить его с помощью элементов управления под примитивом, связанным с шейдером.

Просмотр исходного кода шейдера

  • Под примитивом, связанным с шейдером, который нужно просмотреть, выберите заголовок шейдера, например, выберите Вершинный построитель текстуры, чтобы просмотреть исходный код вершинного построителя текстуры.

Отладка шейдера

  • Под примитивом, связанным с шейдером, который требуется отладить, справа от заголовка шейдера выберите Начать отладку.

Ссылки на графические объекты

Чтобы понять события графики в истории пикселя, могут потребоваться сведения о состоянии устройства во время события или об объектах Direct3D, на которые ссылается событие. Для каждого события в журнале пикселей в окне Журнал пикселей графики есть ссылки на состояние устройства на тот момент и на связанные объекты.

См. также

Задачи

Пошаговое руководство. Отсутствие объектов вследствие состояния устройства

Пошаговое руководство. Отладка ошибок отрисовки, возникающих из-за заливки