Данные о цвете для каждого вырожденного треугольника - PullRequest
0 голосов
/ 17 декабря 2018

Я хочу указать цвет для каждой полосы в моей полосе треугольника, разделенной вырожденными треугольниками.На данный момент я отправляю эти данные с каждой вершиной, поэтому мои вершины состоят из: [ PosX, PosY, PosZ, ColorX, ColorY, ColorZ, ColorW ].Однако данные о цвете постоянны для каждой вершины, пока они не могут измениться после вырожденного треугольника, и поэтому я трачу 8 байт на вершину (цвета Wide P3).

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

Поскольку у меня есть только простые формы, вырожденные треугольники лучшечем индексные буферы в моем случае.Хотя текущая реализация повторения цветовых данных для всех вершин в каждой полосе работает, я хотел бы знать, есть ли другой способ более эффективной передачи этих данных в графический процессор.Не могу найти много об этой теме в Google (вероятно, потому что вырожденные треугольники не очень распространены в настоящее время).Если кто-нибудь может дать мне некоторое представление о том, как можно оптимизировать использование памяти без ухудшения производительности (может быть, с помощью другого буфера? Я полагаю, мне нужно иметь возможность определить, какая полоса разделена вырожденными треугольниками, которые я сейчас рисую в шейдере).будет высоко оценен.

Я использую Swift 4 и Металл.

...