2015-10-08 5 views
1

Я делаю успехи в игре с репликацией вентилятора, которую я кодирую, но я застрял в этой проблеме. Прямо сейчас я рисую пиксель текстуры по пикселю на пути кривой, но это сокращает количество кадров в секунду от 4000 до 50 на кривых с длинной длиной. Мне нужно хранить пиксельные данные Vector2 + length в любом случае, поэтому я могу производить статическое движение скорости вдоль него, прокручивая его, чтобы рисовать кривую.Кривые рисования с использованием XNA

Кривые Мне нужно уметь рисовать Безье, Циркуляр и Катмул.

enter image description here

Любые идеи о том, как сделать его более эффективным?

ответ

0

Любые идеи о том, как сделать его более эффективным?

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

мне нужно хранить пиксель за пикселем данных длиной Vector2 + равно

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

1

Может быть, я неправильно понял вопрос, но я сделал это один раз:

Создание кривой и образца х точек на ней. (Красные точки) Создайте из него сетку, вычислив поперечный вектор каждой точки. (Зеленые линии) Постройте квадрат между всеми этими. Так что в основном 5 из них в моей картине.

Установите координату U на перпендикулярную плоскость и V-координату следует за длиной кривой. Итак, 0 в начале 1 в конце. Вы можете, конечно, масштабировать V, если хотите, чтобы текстура повторялась. enter image description here

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