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

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

---|Ветка была без названия|---


R2D2 ©   (2003-02-01 22:32:00) 

Здравствуйте, может кто-нибудь из вас разбирал пример texanim из каталога демок... В этом примере динамически генерируется набор из 10 текстур и затем создается эффект анимации с помощью последовательного применения этих текстур. Вопрос в собственно в том как огранизовать применение не заранее сгенерированного набора, а цикл типа "генерируем - применяем - заменяем текстуру - применяем - и т.д.". У меня возникает проблема на шаге замены текстуры - не получается удалить текстуру из библиотеки (AddTextureMaterial есть, а процедуры типа Delete нет)...


Alek Aaz   (2003-02-03 03:22:00) [1]

Ждемс 1-го релиза... Буду переводить хелп по тихоньку на GLScene.narod.ru


R2D2   (2003-02-02 22:23:00) [2]

Кстати, есть еще такая демка - Fire2D (в ..\demo\materials лежит) - там судя по описанию именно как требуется генерируются и применяются текстуры, но проблемка в том, что для компиляции требуется библиотека Bitmap32 (скачал, поставил - сообщение об успешной установке - а Fire2D всеравно не компилится...)

ЗЫ Может собраться и сделать сайт\раздел на русском об GLScene ...


R2D2   (2003-02-02 15:17:00) [3]

procedure TForm1.Button1Click(Sender: TObject);
var
I,J:integer;
bmp : TBitmap;
begin
//генерируем BMP 32х32 и заполняем его цветом ColorDialog1.Color
bmp:=TBitmap.Create;
bmp.PixelFormat:=pf24bit;
bmp.Width:=32;
bmp.Height:=32;
for i:=0 to 31 do
for j:=0 to 31 do bmp.Canvas.Pixels[i,j]:=ColorDialog1.Color;
//В библиотеке при старте уже есть один материал - я создал его
//чтобы при удалении материала с индексом 0 не происходило ошибки.
//Удаляем 0-й мтериал
GLMaterialLibrary1.Materials.Delete(0);
//Добавляем на его место BMP (обзываем материал IMG0)
GLMaterialLibrary1.AddTextureMaterial("IMG0", bmp);
//Удаляем BMP
bmp.Free;
//Присваивем объекту новый IMG0
Plane1.Material.LibMaterialName:="IMG0";
//GLMaterialLibrary1.Tag:=0; - для чего это было нужно я пока не понял

end;

Вся проблема состоит в том, что работает только при первом нажатии на кнопку, все остальные нажатия картинку не изменяют. К тому же если после ВТОРОГО или следующих за ним нажатий окно сцены перекрывается другим окном, то объект "теряет" присвоенную текстуру и становится того цвета какой он имел при его конструировании "ручками" в Delphi... А после однократного нажатия все ОК... В чем же может быть дело...


Alek Aaz   (2003-02-02 08:12:00) [4]

Есть.
GLMaterialLibrary.Materials.Delete(index:integer);
Указываешь порядковый номер текстуры и "Вуаля"


Наверх

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