Как создать несколько баллов в разных штатах?
-
20-12-2019 - |
Вопрос
Я экспериментирую с шейдерами с обработкой 2.0. Как простая выключатель в понимании точковых шейдеров немного лучше, я реализовал систему, в которой в классе спрайта:
- Я устанавливаю Spritesheet в качестве однородной Sampler2D в шейдере фрагмента. 2048x 2048 (12 х 12 кадров 128 пикселей квадрат)
- Я создаю точку.
- Я устанавливаю УФ-координаты в вершине вершины для точки.
- Я компенсирую ультрафиолетовые координаты в шейдере Vertex, прошедший в целом, прошедшем в качестве единой переменной для выбора «кадров» в спрайтешении
- Я обновляю целое число (используя модуль для цикла и) увеличение компенсации UV каждые 5 кадров в приложении.
Это означает, что я могу сделать базовые анимационные последовательности из вершины вершины. Я понятия не имею, если это желательно, но я подозреваю, что он будет работать лучше, чем установить новую однородную Sampler2D в шейдере фрагмента каждый раз, когда я хочу изменить кадры.
Мой вопрос - как я могу использовать этот шейдер по нескольким экземплярам? Если я хочу два спрырета на экране одновременно каждый с разными значениями (т.е. играть в разных рамах анимации) Как это достигается без каждого, имеющего свой собственный PointShader и, следовательно, его собственную копию единого Sampler2D в памяти?
Надеюсь, вы можете помочь.
Решение
Да, этот подход гораздо лучше, чем устанавливает новые текстуры каждый кадр.
Чтобы нарисовать несколько спрайтов, просто используйте ту же программу и нарисуйте объекты один за другим, используя разные униформы:
1: gluseProgram (yourprogram);
2: Комплект текстуры и УФ для первого объекта
3: ..draw первый объект
4: Комната новой текстуры (или держать такую же текстуру - это спрайты там) Комплект UV для второго объекта
5: ..draw второй объект и так на
Редактировать: программа не связана с помощью формы, которую вы устанавливаете его, вы всегда можете изменить, и снова вызовите.