Вопрос

В настоящее время я внедряю свой собственный рендерер, используя алгоритм Z-буфера. После того, как я сделаю необходимые расчеты (прочитайте: мой Z-буфер заполнен правильными значениями), я использую SDL для окрашивания в необходимых пикселях. Я использую для этого HWSurface.

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

Поскольку у меня есть собственная реализация Zbuffer (а позже будут другие алгоритмы) я не могу использовать OpenGL, так что есть какие -либо альтернативы?

Теперь я просто перехожу на все свои очки в Z-буфере и рисую все пиксели, которые нужно нарисовать, один за другим (и потому что это Z-буферист, я должен сделать это, верно?) И я называю Метод Drawpixel. Что касается SDL, я блокирую свою поверхность, прежде чем пройти через Z-буфер, нарисовать все пиксели и разблокировать ее потом, это не может идти быстрее, насколько я знаю.

Какие-либо предложения?

Это было полезно?

Решение

Реализации программного обеспечения невероятно медленные, то есть WARP производит кризис на шестигранке I7 на десятый FPS, который делает 8800GT. Вы не найдете никакой конкурентной производительности в Z-буфере с помощью программного обеспечения.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top