Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DirectX - 2D [Delphi, Windows]


maxProg ©   (2007-01-24 19:29:00) 

Допустим у меня на экране картинка (два треугольника, а на них текстура), и эта картинка бегает по экрану. Это значит, мне придётся каждый раз заполнять буфер по новой, или есть другой способ перемещать эту картинку?


Cash   (2007-01-27 20:56:00) [1]

Мистер Т   (27.01.07 14:45) [6]:
угу, эт точно, ортогональ тогда ставить и дескриптор XYZ в вершины.
Тогда SetTransform и MultiplyTransform рулить будут :)


Мистер Т   (2007-01-27 14:45:00) [2]

A22 ©
Одно "но", матрицы будут работать только если в FVF флагах не стоит RHW.


A22   (2007-01-26 18:41:00) [3]

вообще можно матрицами двигать, чистое 2D удобно разве что при необходимости пиксель-в-пиксель рисовать.

хотя, если правильно настроить матрицы вида и проекции, тоже не должно быть проблем


Cash   (2007-01-26 10:53:00) [4]

(о DrawPrimitiveUP)
DPUP - никогда не юзайте это для большой перерисовки, такая нагрузка
на камень идет, просто офигеть, с буфером быстрее. Но если надо вывести
один или два полигона, то тогда быстрее будет DPUP чем буфер.


Sapersky   (2007-01-25 13:36:00) [5]

Меня тоже бесит донельзя, что в DirectX нет простых функций типа НарисоватьПрямоугольник

НарисоватьТреугольник(и) - DrawPrimitiveUP.
В DX9 есть и прямоугольник - StretchRect, кажется.


@!!ex   (2007-01-24 20:01:00) [6]

Заполнение буффера не проигрывает по скорости сильно использованию glBegin(GL_TRIANGLES); glEnd();
Поэтому можешь спокойно писать свою функцию рисования квада через заполнение буфера.


DevilDevil   (2007-01-24 19:43:00) [7]

Меня тоже бесит донельзя, что в DirectX нет простых функций типа НарисоватьПрямоугольник();

P.S. сорри, что не ответил на вопрос
P.P.S. мне кстати тоде интересно
P.P.P.S.
 Как вариант:

1)создать один большой буффер вершин для всех твоих прямоугольников

2) OnProcess:
   LockVertexBuffer()
   изменить все координать нужных тебе прямоугольников
   UnLockVertexBuffer()

   LockIndexBuffer()
   установить индексы тех прямоугольников, которые ты рисуешь
   UnLockIndexBuffer()

3) Render()


Наверх

Титульная страница Поиск, карта сайта Написать письмо