Nieco więcej na temat [BUFFERPOOLS] Poolsize=n
FSX wykorzystuje procedury Direct3D 9 do przetwarzania grafiki. W trakcie normalnego przetwarzania danych wszystkie informacje o geometrii obiektów są przechowywane w VertexBuffers. Do stworzenia VertexBuffer służy polecenie CreateVertexBuffer(Format, Type, Usage, Pool type, Size of buffer in bytes, FVF). Jeśli kogoś interesują szczegóły, to polecam:
http://msdn.microsoft.com/en-us/library/bb206332%28v=VS.85%29.aspxhttp://msdn.microsoft.com/en-us/library/bb323264%28v=VS.85%29.aspxhttp://msdn.microsoft.com/en-us/library/bb147335%28v=vs.85%29.aspxhttp://msdn.microsoft.com/en-us/library/bb172584%28v=vs.85%29.aspxVertexBuffers mogą służyć do przechowywania informacji o siatce 3D terenu, obiektach autogenu oraz wszystkich innych obiektach 3D w scenie, takich jak obiekty Traffic i AI. Zmienna systemowa [BufferPools] Poolsize= z fsx.cfg służy do kontrolowania rozmiaru bufora verteksów. Pozostaje pytanie, dane jakich obiektów są przechowywane w tych akurat buforach. To wiedzą tylko twórcy FSXa. Dlatego też oddam im głos:
1. "[BufferPools] PoolSize=1000000
This setting establishes the amount of video memory devoted to caching 3D models. Higher values increase frame rate smoothness and reduce the need to reload 3D models when rendering a scene, but may also use video memory that is needed elsewhere. The default value is 1000000. "
źródło:
http://www.microsoft.com/Products/Games/FSInsider/tips/Pages/What%27sYourFrameRate-PartII.aspx2. "[BUFFERPOOLS] Poolsize=n
Where n is the amount of bytes we will allocate for one pool of vertex and index buffers to store geometry.
Again from Raf:
In RTM, the default setting was 1MB (1000000). The lower this number, the more pools the allocator will have to rummage through to find space for buffers and the more stutters you may have. In Sp1, we raised the default to 4MB (4000000) and optimized the underlying algorithm for finding free buffers"
źródło:
http://blogs.msdn.com/b/ptaylor/archive/2007/06/01/fsx-tweak-of-the-week-or-2.aspxZ drugiej wypowiedzi można wywnioskować, że parametr ten nie dotyczy rozmiaru pojedynczego bufora, tylko maksymalnego rozmiaru pamięci zajmowanej przez bufory tworzone w trakcie pracy programu, co ma zresztą sens - ponieważ normalnie dla każdego buforowanego obiektu rozmiar jego VertexBuffer jest ustalany indywidualnie w trakcie przetwarzania danych. Pozostaje pytanie co autorzy cytowanych wypowiedzi mieli na myśli mówiąc o "caching 3D models" [1] czy "store geometry" [2]. Dla mnie interesujące jest pytanie, czy parametr ten ma wpływ na siatkę 3D terenu (mesh). Niestety nie znalazłem, żadnych uściśleń na ten temat i pozostaje tylko metoda empirycznej weryfikacji, która z natury jest dosyć niedokładna.
Wypadałoby omówić także parametr [BufferPools] UsePools= (0 lub 1), ale z braku jakichkolwiek źródłowych informacji ten temat jest polem do domysłów i spekulacji.
Jeśli ktokolwiek wie, jaka jest domyślna wartość tego parametru, to będę wdzięczny za informację.