текстуры и оперативка

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

текстуры и оперативка

Сообщение lellel » 12.02.2009 (Чт) 11:37

а как связан размер файла текстуры (нп jpg) и объем памяти занимаемый ей в оперативке?
такая проблема, текстуры большие плюс их много, нужно занять оперативку по минимуму.. только мне конечно не нужно полный размер текстуры, если она нп 2000х3000 то мне нужно порядка 120х80.. (нужно для предпросмотра фотографий)
думал написать этот вопрос в другом разделе, но мне нужно загрузить картинки в DX текстуры, причем время тоже важно..
подскажите оптимальный способ?

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Re: текстуры и оперативка

Сообщение Vovik » 12.02.2009 (Чт) 23:21

хм... может грузить текстуру не целиком, а с шагом каким-нть. :roll:

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Re: текстуры и оперативка

Сообщение djalex777 » 12.02.2009 (Чт) 23:34

1. Размер файла текстуры никак не связан с объемом, который она будет занимать в оперативной памяти (разве что не сжатый BMP или TGA). В оперативной памяти само изображение будет занимать:
ширина_изображения * высота_изображения * число_бит_на_пиксель (в байтах).
2. Если изображения нужны меньше чем храняться в файлах можешь уменьшать их в программе (объем памяти, занимаемый ими соответственно тоже уменьшится)

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: текстуры и оперативка

Сообщение lellel » 13.02.2009 (Пт) 1:11

2. Если изображения нужны меньше чем храняться в файлах можешь уменьшать их в программе (объем памяти, занимаемый ими соответственно тоже уменьшится)

имеется ввиду изменять размеры после загрузки текстуры или до?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: текстуры и оперативка

Сообщение Mikle » 13.02.2009 (Пт) 10:57

Используй LoadFromFileEx с явным указанием размера.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: текстуры и оперативка

Сообщение lellel » 13.02.2009 (Пт) 15:17

может CreateTextureFromFileEx?

нащел описание в сдк, написал так:
Код: Выделить всё
Set tt = d3dx.CreateTextureFromFileEx(d3dDevice, App.Path & "\tex\3.jpg", 120, 80, D3DX_DEFAULT, 0, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, D3DX_DEFAULT, D3DX_DEFAULT, 0, 0, 0)

VB вылетает ничего не сказав.. что не так?

вот описание из сдк:
Код: Выделить всё
object.CreateTextureFromFileEx( _
    Device As Direct3DDevice8, _
    SrcFile As String, _
    Width As Long, _
    Height As Long, _
    MipLevels As Long, _
    Usage As Long, _
    Format As CONST_D3DFORMAT, _
    Pool As CONST_D3DPOOL, _
    Filter As Long, _
    MipFilter As Long, _
    ColorKey As Long, _
    SrcInfo As Any _
    Palette As Any) As Direct3DTexture8

Ktulhu
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 132
Зарегистрирован: 14.07.2007 (Сб) 14:03
Откуда: Киев, Р'льех

Re: текстуры и оперативка

Сообщение Ktulhu » 13.02.2009 (Пт) 15:18

формат DDS. поддерживает сжатие и расжимается уже на видеокарте

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: текстуры и оперативка

Сообщение lellel » 13.02.2009 (Пт) 15:57

насколько я понял это формат файлов? загрузка именно из jpg..

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: текстуры и оперативка

Сообщение Mikle » 13.02.2009 (Пт) 16:48

Да, конечно CreateTextureFromFileEx.
Под рукой не на чем посмотреть, но возможно вылет из-за того, что ты пытаешься создать полный набор мип-уровней при размере, не являющемся степенью двойки. Попробуй MipLevels поставить 1.
Еще там в конце есть параметры Filter и MipFilter, поставь первый Linear, а второй None, и не спутай Enum типов фильрации, посмотри, какой нужен в данной ф-ции по SDK, там для создания текстур и для задания Min-Mip-Mag фильтров в SetTextureStageState используются разные Enum-ы.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: текстуры и оперативка

Сообщение lellel » 13.02.2009 (Пт) 19:08

Код: Выделить всё
CreateTextureFromFileEx(d3dDevice, App.Path & "\tex\3.jpg", 128, 128, 1, 0, D3DFMT_D16, D3DPOOL_DEFAULT, D3DX_FILTER_LINEAR, D3DX_FILTER_NONE, 0, 0, 0)

попробовал так, все равно вылетает.. константу фильтрации взял из сдк, даже попробовал забить размеры степени двойки..

а на такую строчку:
Код: Выделить всё
CreateTextureFromFileEx(d3dDevice, App.Path & "\tex\3.jpg", 128, 128, 1, 0, D3DFMT_D16, D3DPOOL_DEFAULT, D3DX_FILTER_LINEAR, D3DX_FILTER_NONE, 0, ByVal 0, ByVal 0)

пишет "Automation Error"

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: текстуры и оперативка

Сообщение Mikle » 13.02.2009 (Пт) 20:00

Только заметил :shock: , ты хочешь создать текстуру, формата D3DFMT_D16? Таким бывает только Z-буфер. Используй D3DFMT_A8R8G8B8 или, для экономии памяти, D3DFMT_R5G6B5.

lellel
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 207
Зарегистрирован: 19.12.2007 (Ср) 22:07
Откуда: Долгопрудный

Re: текстуры и оперативка

Сообщение lellel » 13.02.2009 (Пт) 23:39

спасибо!)
я делал с самого начала именно так, но там не было ByVal, из за этого видимо велетало))))

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: текстуры и оперативка

Сообщение DODge » 14.02.2009 (Сб) 2:22

/*offtop
Вот в чём и минус у VB6 перед VB.NET, т.к. он позволяет подставлять любые константы вместо полагающихся по логике.
Я это к тому что из-за таких простейших недочётов людям приходится создавать такие темы и тратить своё собственное время.
Да простят меня модераторы.
*/offtop
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: текстуры и оперативка

Сообщение Mikle » 15.02.2009 (Вс) 13:59

DODge
VB.NET не помешает использовать D3DFMT_D16, это константа из того же Enum.

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: текстуры и оперативка

Сообщение DODge » 15.02.2009 (Вс) 19:16

Не хотелось бы разводить очередной холивар, просто я имел ввиду ситуацию вообще. IntelliSense при выборе константы в VB6 предоставляет весь список доступных, в то время как в VB.NET только подходящие по смыслу, и, например, не даст поставить Direct3D.Pool в поля где идут Direct3D.Format, в противном случае посчитает это ошибкой, а тот промолчит. Вот я к чему.
Вобщем, тему можно считать (теоретически) закрытой.

З.Ы. Mikle, кстати, ты прав, в предыдущем случае они из одного перечисления :)
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: текстуры и оперативка

Сообщение iGrok » 15.02.2009 (Вс) 19:50

DODge писал(а):IntelliSense при выборе константы в VB6 предоставляет весь список доступных, в то время как в VB.NET только подходящие по смыслу..

Ну если аргумент ф-ции объявлен как соответствующий Enum, то и VB6 выдаст нужный список..
label:
cli
jmp label

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: текстуры и оперативка

Сообщение DODge » 15.02.2009 (Вс) 23:07

Закончили. А то забанят :) :) :)
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList