Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.14;
Скачать: CL | DM;

Вниз

Размер VertexBuffer   Найти похожие ветки 

 
Lostcoder   (2005-04-21 13:35) [0]

А не подскажет ли мне уважаемый ALL какой максимальный размер VertexBuffer"а?
Как он зависет от способа процессинга и версии DX? Меня итересует DX8.

В MSDN я как-то не смог найти этой информации.


 
XProger ©   (2005-04-21 19:18) [1]

1) Значение какого типа выступает в роли VertexCount в параметрах функции?
2) А сколько там памяти в видеокарточке? ;)
При выходе за рамки памяти видеокарты на объекте появляютяс либо дыры, либо "лишние" вершины находятся в точке (0, 0, 0)


 
Lostcoder   (2005-04-21 22:06) [2]

В роли вертекса
Type
 TVertex = packed record
   X, Y, Z : Single;
   nX, nY, nZ : Single;
 end;
Const
 VertexType = D3DFVF_XYZ or D3DFVF_NORMAL;

Памяти от 32 и выше. Но я не собираюсь забивать её всю, мне столько не надо. Просто надо знать, если я загружу в один буфер несколько моделей, в общем ~ 600000 точек, связанных в треугольники, не заглючит ли чего? Отрисовывать все сразу за один проход я конечно не буду, поскольку здесь несколько тысяч мелких моделей.

А грузить каждую маленькую модель в свой вертексбуффер и каждый раз делать SetStreamSource мне кажется - изврат. Или нет?


 
Pa5ha   (2005-04-21 22:45) [3]

Есть какой то параметр, который задаётся при создании буфера во флагах. Используется при создании буфера индексов и характеризует (косвенно) максимальный размер буфера вертексов. Т.е. если 16 бит, то 65536, если 32 бита, то 16777ххх.

Сейчас уже не помню, что за флаг. Давно это было =)


 
Sphinx ©   (2005-04-21 22:56) [4]

Для 8-го не помню :(
но может по аналогии с 9-м получится:
после создания Direct3DCreate9
нужно вызвать
Direct3D9.GetDeviceCaps(D3DADAPTER_DEFAULT , D3DDEVTYPE_HAL {D3DDEVTYPE_REF}, D3D9Caps {структура типа - D3DCAPS9});

у этой структуры есть параметр (цитирую SDK):
MaxPrimitiveCount

Maximum number of primitives for each IDirect3DDevice9::DrawPrimitive call. There are two cases:
If MaxPrimitiveCount is not equal to 0xffff, you can draw at most MaxPrimitiveCount primitives with each draw call.
However, if MaxPrimitiveCount equals 0xffff, you can still draw at most MaxPrimitiveCount primitive, but you may also use no more than MaxPrimitiveCount unique vertices (since each primitive can potentially use three different vertices).

MaxVertexIndex

Maximum size of indices supported for hardware vertex processing. It is possible to create 32-bit index buffers; however, you will not be able to render with the index buffer unless this value is greater than 0x0000FFFF
.


 
Sphinx ©   (2005-04-21 23:04) [5]

К сведению:
GF FX5200
HAL MaxPrimitiveCount: 1 048 575
HAL MaxVertexIndex: 1 048 575

REF MaxPrimitiveCount: 2 097 151
REF MaxVertexIndex: 16 777 215

посмотрел утилиткой DXCapsViewer.exe из состава DXSDK9


 
Lostcoder   (2005-04-21 23:09) [6]

Ну, 1 048 575 - это хорошо. Эксперементально у меня где-то также получилось на ЭфИкс5700.


 
Sapersky   (2005-04-22 02:27) [7]

Размер буфера может быть больше чем MaxPrimitiveCount (проверял на GF2 c MaxPrimitiveCount = 65536). Для HWTnL (D3DCREATE_HARDWARE_VERTEXPROCESSING) нужно, чтобы буфер влез в видеопамять. Для SOFTWARE_VERTEXPROCESSING - в системную.


 
MsShtaer ©   (2005-04-22 21:35) [8]

На шестом GeForce тоже чуть более миллиона...


 
Lostcoder   (2005-04-23 11:01) [9]

А AtiRage ни у кого нет?



Страницы: 1 вся ветка

Текущий архив: 2005.08.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.036 c
3-1118130150
_Вован
2005-06-07 11:42
2005.08.14
Как выгрузить данные из paradox-таблицы в файл формата Excel ?


14-1122276040
ArchValentin
2005-07-25 11:20
2005.08.14
Создание отчётов


5-1093256031
atruhin
2004-08-23 14:13
2005.08.14
Orpheus не смог найти хелп


1-1122448657
wolf2541
2005-07-27 11:17
2005.08.14
проблема с cross-tab в fast report 2.5


3-1116008648
Fatal
2005-05-13 22:24
2005.08.14
Прямой коннект к БД Oracle.