Текущий архив: 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