Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Файлы в GLMaterialLibrary из потока [Delphi, Windows]


Страницы:   1 2

Lambda ©   (2006-03-20 11:32:00) 

Интересует не загрузка целиком MaterialLibrary (GLScene), а загрузка например jpeg в МЛ. Т.е. по сути загрузить в GLMaterialLibrary...Image картинку из jpeg (bmp, tga...)


Домовенок   (2006-03-21 15:44:00) [21]

> Lambda   (21.03.06 15:01) [13]
1. Ты забыл освободить P


Угу, и BM тоже.

> Старик   (21.03.06 15:24) [14]
> Lambda, я что-то не понял - почему именно мемори-стрим ?
> Чем тебя не устраивает самый обычный TFileStream?


Судя по всему там проблема не в TMemoryStream, а именно в TBitMap, то есть в графическом формате, так как TPicture принимает нормально.


Старик   (2006-03-21 15:24:00) [22]

Lambda, я что-то не понял - почему именно мемори-стрим ?
Чем тебя не устраивает самый обычный TFileStream?

var s : TFileStream;
begin
s := TFileStream.Create(FileName.bmp, fmOpenRead or fmShareDenyWrite);
MyBmp := TBitmap.Create;
MyBmp.LoadFromStream(s);
s.Free;
//При таком подходе битмап грузится нормально.

GLMatLib1.Materials[0].Texture.Image.Assign(MyBmp);
//Другое дело, что тебе нужно уточнить, МОЖНО ЛИ к GLScene материалам делать вот такой вот ассигн. Может они этого не держат? (Я не спец в GLScene).
И потом, у меня иногда бывали странные ситуации с битмапами:
Битмапы, нарисованные в фотошопе, грузились идеально.
Битмапы, конвертированные из JPG с помощью айсидюхи, грузится отказывались.


Lambda   (2006-03-21 15:01:00) [23]

0. Спасибо, Домовенок, попробую твой вариант
1. Ты забыл освободить P


Домовенок   (2006-03-21 14:09:00) [24]

Я кстати тоже с этим не так давно мучался. Так и не разобрался. Но вот сейчас попробовал через TPicture, получилось. Это конечно не значит, что так и надо делать, но как информация к размышлению.


procedure TForm1.Button1Click(Sender: TObject);
var
 MS: TMemoryStream;
 BM: TBitmap;
 P: TPicture;
begin
 MS := TMemoryStream.Create;
 BM := TBitmap.Create;
 P := TPicture.Create;
 MS.LoadFromFile('test.bmp');
 BM.LoadFromStream(MS);
 P.Assign(BM);
 GLMaterialLibrary1.Materials.Add;
 GLMaterialLibrary1.Materials[0].Material.Texture.Image.Assign(P);
 GLMaterialLibrary1.Materials[0].Name := 'test';
 GLMaterialLibrary1.Materials[0].Material.Texture.Disabled := False;
 MS.Free;
end;


DeadMeat   (2006-03-21 14:03:00) [25]

И если это так, то на какой строке именно вылетает?
На загрузке в битмап из потока или на присваивании материалу битмапа?

---
...Death Is Only The Begining...


DeadMeat   (2006-03-21 14:01:00) [26]

Опс.. Не в тему.
У тебя сообщение об ошибке же лезет?

---
...Death Is Only The Begining...


DeadMeat   (2006-03-21 14:00:00) [27]

А GLMaterialLibrary.Materials[0].Material.Texture.NotifyChange (self);тоже не помогает?

---
...Death Is Only The Begining...


Lambda   (2006-03-21 10:59:00) [28]

Не помогло :(


DeadMeat   (2006-03-21 10:54:00) [29]

А после MyStream.LoadFromFile('file.ext');, ты делал MyStream.Position := 0;??

---
...Death Is Only The Begining...


Lambda   (2006-03-21 10:25:00) [30]

Разумеется предварительно инициализируется поток

MyStream := TMemoryStream.Create;
MyStream.LoadFromFile('file.ext');


Lambda   (2006-03-21 09:03:00) [31]

Да какой там код...

BMP := TBitmap.Create;
BMP.LoadFromStream(MyStream);
GLMaterialLibrary.Materials.Add;
GLMaterialLibrary.Materials[0].Material.Texture.Image.Assign(BMP);
GLMaterialLibrary.Materials[0].Name := 'test';
GLMaterialLibrary.Materials[0].Material.Texture.Disabled := False;
BMP.Free;

Результат: Bitmap image is not valid


Старик   (2006-03-21 08:09:00) [32]

Дай сюда нерабочий код загрузки с помощью LoadFromStream


Lambda   (2006-03-21 07:55:00) [33]

Хорошо, раз никто не знает ответа, то перефразирую вопрос: есть ли способ (ответа "есть" недостаточно) загрузить изображение из потока в bitmap, к примеру?


Lambda   (2006-03-20 13:11:00) [34]

Ого. Никто не знает? Или все упорно молчат :(


Lambda   (2006-03-20 11:34:00) [35]

ЗЫ Загрузка именно из потока. LoadFromStream() не работает, даже не советуйте


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо