Войти
ПрограммированиеФорумГрафика

Текстура ест много оперативки (4 стр)

Страницы: 1 2 3 4
#45
8:48, 7 июня 2011

DX_M
Есть страшный хак, правда, хз работает ли, но вот: _CrtIsValidPointer


#46
10:04, 7 июня 2011

-Eugene-
Да, здорово, спасибо.

Только _CrtIsValidPointer проверяет на доступность чтения - записи заданной области памяти, а она, таковой и является.
Но я попробовал... возвращает истину все время.

if (_CrtIsValidPointer( (const void *) MeshTexture[i] , sizeof(LPDIRECT3DTEXTURE9) , TRUE ))
да и к тому же (debug version only).
Надо, всего то, проверить, что там уже текстур нет, по этому адресу.
#47
11:41, 7 июня 2011

DX_M
Извини, что влезаю в тему.

Все текстуры загружаю D3DXCreateTextureFromFile.
Они весят примерно 2 Мб.
При этом программа жрет ~ 60 Мб оперативки.
Вопрос: D3DXCreateTextureFromFile грузит текстуру в оперативку?

#48
12:52, 8 июня 2011

Vorotnyak_Nazar
> Извини, что влезаю в тему.
Да ничего, я уже закончил.

> грузит текстуру в оперативку?
Насколько я знаю, грузит он в системную память.
Это происходит когда ты грузишь мэш. Смотри второй флаг  D3DXLoadMeshFromX( Путь , D3DXMESH_SYSTEMMEM
еще есть D3DXMESH_WRITEONLY, D3DXMESH_MANAGED, D3DXMESH_DYNAMIC

Первая опция D3DXMESH_SYSTEMMEM вынуждает храниться данным вашего меша в системной памяти, что ускоряет доступ к его данным для записи и чтения.

Задание флага D3DXMESH_DYNAMIC означает, что вы собираетесь периодически изменять данные меша. Лучше всего устанавливать этот флаг, если вы собираетесь периодически изменять данные меша (вершины) во время выполнения.

Если вам необходима скорость, то я предлагаю использовать флаг D3DXMESH_WRITEONLY, который говорит D3DX использовать память, из которой нельзя читать. В большинстве случаев это означает использование видеопамяти, потому что она обычно (но не всегда) только для записи.

Вот как то так, если что поправят. Только у меня D3DXMESH_WRITEONLY с этим флагом не грузит, так что осторожнее.

#49
13:28, 8 июня 2011

Vorotnyak_Nazar
> Вопрос: D3DXCreateTextureFromFile грузит текстуру в оперативку?
Хранение ресурса в видеопамяти требует дублирования его в оперативке.

#50
20:08, 13 июня 2011

DX_M
function D3DXCreateTextureFromFile(
  Device: IDirect3DDevice9;
  pSrcFile: PChar;
  out ppTexture: IDirect3DTexture9): HResult;
Эта функция не имеет параметра который должен указывать куда грузить текстуру.
-Eugene-
>Хранение ресурса в видеопамяти требует дублирования его в оперативке.
Зачем?

#51
20:25, 13 июня 2011

-Eugene-
> Хранение ресурса в видеопамяти требует дублирования его в оперативке.
ложь :)

#52
20:29, 13 июня 2011

Vorotnyak_Nazar
> Зачем?
Чтобы не перезагружать с диска.

Я говорю о ресурсах игры, а не о всяких там буферах частиц, генерируемых текстурах и т.п.

#53
21:52, 13 июня 2011

Итак начнем сначала.
  D3DXCreateTextureFromFile
  В какую память эта функция грузит текстуру?
1)в оперативную;
2)в видеопамять.

#54
5:34, 14 июня 2011

Vorotnyak_Nazar
D3DXCreateTextureFromFileEx
Куда укажешь.

#55
11:39, 14 июня 2011

Но все же

#56
11:58, 14 июня 2011

Vorotnyak_Nazar
И туда, и туда.
Источник:
http://msdn.microsoft.com/en-us/library/bb172801%28v=vs.85%29.aspx

#57
12:06, 14 июня 2011

-Eugene-
Спасибо!

Страницы: 1 2 3 4
ПрограммированиеФорумГрафика

Тема в архиве.