![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как узнать объём видео памяти?
vitall © (2003-05-18 13:19:00)
Спасибо всем кто откликнется.
vitall (2003-05-19 18:36:00) [1]
>>>Я сделал через левый DDraw - усе работает <<<- так у меня то не работает вот душа и не успокаивается... правда я ещё не попробовал твой вариант...
>>>дублируются в оперативке - может быть такое?
именно так, но несколько иначе. <<<- это можно как-то контролировать?
SDK - по DX? если да то где такой взять, я смотрел но всё время натыкаюсь на SDK которые уже после DX <- не знаю как правильно объяснить... :)
>>>не помню почему не сделал черех Ex,видимо ... не создалось <<<- у меня как раз наоборот :) без Ex не работает...
NailMan (2003-05-19 18:15:00) [2]
режим PCI - в смысле выделил? <<-- это делается прграмно? Я не задаю никаких параметров по памяти, и
Ну в смысле в драйверах(по крайней мере у nvidia) есть такой параметр как количество мег выделяемых в качестве дополнительной памяти в режиме когда карта работает в PCI-режиме. Собсно можно определить(не всегда) программно в каком режиме работает карта: AGP(DiME) или PCI. Достаточно проверить флаги у D3DCAPS8, что-то вроде TexuresSystemMemory, TexuresAGPMemory или как-то так(SDK под рукой нет). Если первое включено, то PCI если второе AGP.
второй момент есть ощущение, что все текстуры дублируются в оперативке - может быть такое?
именно так, но несколько иначе. Точнее не скажу - не помню, давно в Фидо проскакивали принципы директовского мэнедмента.
CreateDirectDrawEx() ведь делает примерно тоже самое, что и CreateDirectDraw()?
Я уж не помню почему не сделал черех Ex, видимо чего-то там надо было чего у меня еще не создалось(опять говорю sdk нет - вспомнить не могу). Я сделал через левый DDraw - усе работает. Чего еще надо для спокойствия души?
vitall (2003-05-19 17:52:00) [3]
Ой как много всего и половина мне не понятна (я не очень хорошо программирую, единственный язык который понимаю = Delphi)
режим PCI - в смысле выделил? <<-- это делается прграмно? Я не задаю никаких параметров по памяти, и второй момент есть ощущение, что все текстуры дублируются в оперативке - может быть такое? (тобишь грузятся и туда и сюда) возможно так и должно быть, я про это к моему сожалению ничего не знаю и где посмотреть не знаю, а очень хочется :)...
nVidia`шные карточки конечно good но я их не люблю тк сплошная рекламма, всё тоже самое можно делать програмно (правда я пока ещё не умею)
CoInitialize;!!! я не запускал :)
CreateDirectDrawEx() ведь делает примерно тоже самое, что и CreateDirectDraw()?
NailMan (2003-05-19 17:22:00) [4]
размер текстурной памяти... - если не сложно что имеется ввиду?
Директ имеет только общуу текстурную память, которая бывает в 2 режимах:
1) режим DIME : локальная память на видеоадаптере - видеобуфер - Z-буфер + AGP память с размером апертуры
8 мегов(куда деваются незнаю).
2) режим PCI : локальная память на видеоадаптере - видеобуфер -
Z-буфер + сколько ты выделил мегов на режим PCI(в дровах)
(П2. относится к nVidia`шным карточкам, как у ATI незнаю)
Все это (внешне) нам Директом показывается единой памятью, которую мы забиваем незадумываясь. Сам же Директ внутри себя уже манипулирует куда чего залить для лучшей скорости рендера, в локальную адаптера или выгрузить в AGP.
Я пробовал подключить DDraw он выдаёт непонятные 1215, - причём пофиг какой изначально объём памяти (32 или 64), либо я что-то не правильно делаю или насколько я понял это проблемма моей в-карты.
Ты как его создавал?
CoInitialize;
CreateDirectDraw()//создаем левый директор дров
DD.Query`им от него FDD(dd7) с IID_IDirectDraw7
вытаскиваем по вышеприведенному коду размер в.памяти
COUnInitialize;
vitall (2003-05-19 16:42:00) [5]
Обидно, что не покажет, but хоть знать теперь буду...
размер текстурной памяти... - если не сложно что имеется ввиду?
Я пробовал подключить DDraw он выдаёт непонятные 1215, - причём пофиг какой изначально объём памяти (32 или 64), либо я что-то не правильно делаю или насколько я понял это проблемма моей в-карты.
NailMan (2003-05-19 16:08:00) [6]
Он тебе такого не покажет. Можно только получить размер текстурной памяти, тобишь Local Video mem + AGP mem. Я у себя в игре заюзал именно через DDraw + выводимые им 62.3 Мб, проанализировав привожу его к нормальным 64 мегам видео.
vitall (2003-05-19 15:53:00) [7]
Благодарю,
может кто занет как получить объём памяти с помощью d3d8?
NailMan (2003-05-19 14:18:00) [8]
Используя DirectDraw(по-другому не знаю):
FDD : IDirectDraw7 ;
DDSCaps2 : TDDSCaps2;
..Создаешь интерфейс FDD (IDirectDraw7) через левый IDirectDraw, который создаешь через CoInitialize из модуля ActiveX
FillChar(DDSCaps2, SizeOf(DDSCaps2), 0);
DDSCaps2.dwCaps := DDSCAPS_VIDEOMEMORY;
FDD.GetAvailableVidMem(DDSCaps2,VideoMem,VideoMemFree);
убиваешь левый интерфейс и FDD
Правда размер видеопамяти будет возвращаться несколько меньший, с чем связано нынаю.
vitall (2003-05-19 13:25:00) [9]
Удалено модератором
vital (2003-05-18 16:38:00) [10]
Удалено модератором