?

Log in

No account? Create an account
19 июл, 2006 @ 12:34 D3DTexture

3 вопроса по D3DBaseTexture9
(POOL: MANAGED)
1) Как узнать - сколько места занимает в видеопамяти текстура, кроме как расчитывать значение на этапе загрузки?
2) В видеопамяти текстура храниться вообще без сжатия?
3) Все ли мип-уровни передаются в видеопамять или только необходимые для прорисовки?

haruko
timai:
From:rudybear
Date:Июль, 19, 2006 10:11 (UTC)
(Ссылка)
1. Не знаю. Но думаю никак
2. Может и со сжатием. Зависит от видеокарты. Все новые умеют распаковывать dxt на лету. ну может кроме какой-то экзотики
3. Только те, что надо, но надо понимать, что менеджер живет собственнной жизнью, об устройстве который можно и не догадываться.
(Ответить) (Ветвь дискуссии)
From:(Анонимно)
Date:Июль, 19, 2006 12:26 (UTC)
(Ссылка)
1.) Вообще говоря, никак нельзя узнать. Все зависит от фрагментации пула видеопамяти ( она плоская ), от тактики размещения мипуровней ( может быть slack, неиспользуемое место ), etc. Хорошо понимать, почему Lock для DEFAULT текстуры фейлится - потому что внутри текстура не обязана быть таким тупым массивом DXT_pixels[N][N]. Там и тайлинг си свиззлингом, и stride ! = SizeX, и обход по кривой Пеано и всякие вкусные разности. Но примерно занимаемая память такая же, как и для DDS файла. MANAGED pool предполагает размещение копии текстуры в системной памяти, так что используемая текстура будет занимать примерно 2X места ( один раз в системной памяти, один раз в видео ). Неиспользумые текстуры могут вытесняться из видеопамяти, копия будет оставаться в системной.

2.) Если есть поддержка DXT текстур есть, то со сжатием. Возможна распаковка при загрузке в L2 ( L1 ) текстурные кеши - зависит от вендора.

3.) MANAGED пул предполагает вытеснение ресурсов. SetLOD указывает, какие мип уровни можно безболезненно вытеснить. Не думаю, что в рантайме происходит автоматическое вытеснение именно неиспользуемых мип-уровней ( без явного указания SetLOD ) - это слишком тонкая операция, а память плоская. Скорее, выгружаются текстуры, которые не трогаются много кадров. Повторюсь, что вытеснение объекта из плоской памяти ( которая фрагментируется ) - не сахар. Лучше заранее определять лимиты и запускать игру на DEFAULT ресурсах.
(Ответить) (Ветвь дискуссии)