2010-12-28 4 views
4

Я пытаюсь использовать Direct3D для рендеринга 2D-графики, как рекомендовано всеми, так как усталость DirectDraw. На самом деле нет никакой 3D-информации, о которой я забочусь, и просто хочу иметь возможность делать такие вещи, как рисовать линии, круги и блиские изображения друг на друга. Мои вопросы, таким образом,2D-графика с Direct3D

  1. Мне нужно загрузить много изображений из файлов и нарисовать их друг на друга. Будут ли текстуры идти?
  2. Очень глупый вопрос, но я не могу найти ничего: как вы визуализируете одну поверхность на другую?
  3. Должны ли вы сделать все на одной текстуре, а затем нарисовать это для экрана как спрайт или просто нарисовать много текстур?
  4. Как нарисовать линии и т. Д. На текстуру/поверхность/спрайт? Я предполагаю, что есть лучший способ, чем получить контекст устройства и использовать GDI для рисования на нем?

ответ

3
  1. Да
  2. Создание 2 треугольников, образующих четырехугольник. Устанавливайте значения UV соответствующим образом. УФ-значения задаются в диапазоне от 0 до 1. Итак, для 1024x1024 (или фактически ANY-разрешающей текстуры, поэтому это делается так), верхний левый - 0,0, а нижний правый - 1,1. ID3DXSprite поможет вам здесь.
  3. Лучше всего поместить несколько «кадров» в одну текстуру, чтобы часто не менять текстуру (это дорого).
  4. Вы можете использовать D3DPT_LINELIST/STRIP ... В противном случае используйте 2 треугольника (см. ID3DXLine).