2009-09-29 1 views
1

Хорошо, я уже некоторое время разрабатываю программный растеризатор, но не знаю, как это сделать, сравнивая его, чтобы увидеть, действительно ли это на самом деле ... я имею в виду, что вы можете рендерить X количество верт мультив Y кадров в секунду, что было бы хорошим способом проанализировать эти данные, чтобы увидеть, насколько он хорош? а не кто-то просто сказал «30 кадров в секунду с 1 светом хорошо» и т. д.?Как перейти к тестированию растеризатора программного обеспечения

+0

Вы спрашиваете, что такое стандартные измерения или какие стандартные эталоны являются результатом этих измерений? –

ответ

3

Что вы хотите измерить? Я предлагаю скорость заполнения и треугольника. В основном заполнение - это количество пикселей, которое ваш растеризатор может выплюнуть каждую секунду. Скорость треугольника - это то, сколько треугольников ваши растеризаторы + аффинные функции преобразования могут выталкивать каждую секунду независимо от заполнения. Вот мое предложение для измерения обоих:

Чтобы измерить заполнение без получения шума с момента, используемого для настройки треугольника, используйте только два треугольника, которые образуют квад. Начните с небольшого размера, а затем увеличьте его с небольшим интервалом. В конечном итоге вы должны найти оптимальный размер относительно времени рендеринга в одну секунду. Если вы этого не сделаете, вы можете выполнить смешение с парами в виде полноэкранного треугольника, что является довольно медленной операцией и которое только сжигает fillrate. Поток заполняется ширина x высота вашего отображаемого треугольника. Например, 4 мегапикселей в секунду.

Чтобы измерить скорость треугольника, сделайте то же самое; только на треугольники на этот раз. Начните с двух крошечных треугольников и увеличьте число треугольников, пока время рендеринга не достигнет одной секунды. Время, используемое настройкой треугольника/преобразования, гораздо более очевидно в маленьких треугольниках, чем время, необходимое для его заполнения. Единицы измерения: количество треугольников/секунд.

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

Конечно, для того, чтобы эти цифры были на полпути сопоставимыми по растеризаторам, вы должны использовать те же методы и функции. Сравнение чисел из растеризатора, которое использует пиксельное освещение против другого, которое использует плоское затенение, не имеет большого смысла. Разрешение и глубина цвета также должны быть равны.

Что касается оптимизации, то получение правильного профилировщика должно сделать трюк. GCC имеет профилировщик GNU gprof. Если вы хотите, чтобы мнение о умных вещах оптимизировалось в растеризаторе, спросите об этом как о отдельном вопросе. Я отвечу, насколько это возможно.

1

Если вы хотите определить, является ли это «хорошим», вам нужно будет сравнить ваш растеризатор с другими растеризаторами. «30 кадров в секунду с 1 светом» может быть чрезвычайно хорошо, если никто еще не смог выйти за пределы, скажем, 10 кадров в секунду.

+0

Thats справедливая точка .... более «научными» способами? – Stowelly

Смежные вопросы