Главная страница
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.039 c
3-1120464571
ANB
2005-07-04 12:09
2005.08.14
Как определить, что выполнение оператора SQL закончилось (Oracle)


1-1122475950
Андрей Молчанов
2005-07-27 18:52
2005.08.14
Свой VCL


14-1121456065
Магнум
2005-07-15 23:34
2005.08.14
На что потратить свои WebMoney?


9-1114071044
Xenon
2005-04-21 12:10
2005.08.14
Алгоритм в текстовых квестах


3-1120814092
Ega23
2005-07-08 13:14
2005.08.14
Так всё-таки, что такое TBookMark?