Главная страница
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.49 MB
Время: 0.029 c
4-1119348127
clickmaker
2005-06-21 14:02
2005.08.14
Как программно узнать, что диск - subst?


5-1093259795
Jenek
2004-08-23 15:16
2005.08.14
Windows и меню


1-1121805177
Adolf
2005-07-20 00:32
2005.08.14
Процедура в библи-ке


4-1118688330
Суслик
2005-06-13 22:45
2005.08.14
Переменная окружения Path


1-1122466911
race1
2005-07-27 16:21
2005.08.14
Буфер обмена