![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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()