Форум: "Игры";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
ВнизТекстурирование объектов Найти похожие ветки
← →
Poison man (2004-02-25 08:00) [0]Хелло, Мастера!
При создании своей игрушки возникла большая проблема с текстурированием объектов. Сам пытался разобраться, но ничего не вышло. Обращаюсь к вам.
Растолкуйте, пожалуйста, почему не работает следующий код:
type
.............
.............
.............
var
Infra:array [1..5] of TFreeForm; //Массив объектов
N_Infra:integer; //Счетчик объектов
Path1, Path2:string; //Пути к объектам и текстурам
.............
procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
if OpenDialog1.Execute then Path1:=OpenDialog1.FileName;
end;
procedure TForm2.SpeedButton2Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then Path2:=OpenPictureDialog1.FileName;
end;
procedure TForm2.SpeedButton4Click(Sender: TObject);
begin
Infra[N_Infra]:=TFreeForm(Form1.GLScene1.Objects.AddNewChild(TFreeForm));
Infra[N_Infra].LoadFromFile(path1);
Infra[N_Infra].Material.Texture.Image.LoadFromFile(Path2);
Infra[N_Infra].Material.Texture.Disabled:=False;
Infra[N_Infra].Materail.Texture.TextureMode:=tmModulate;
Inc(N_Infra);
end;
end.
Если все ставлю на одной форме (и GLScene, и диалоги), то все ОК. Если же диалоги по выбору моделей и
текстур вешаю на отдельную форму, то объект грузится в сцену, управляется и т.д., а текстуры нет. В чем ошибка?
← →
Alek Aaz © (2004-02-25 14:34) [1]Черт его знает... Переменные Path2 и Path1 глобальные?
ИМХО. Нужно делать через GLMaterialLibrary. Грузишь в нее сразу все текстуры, а в диалогах проставляешь какую конкретно грузить.
← →
Poison man (2004-02-25 19:56) [2]У меня эти переменные объявлены тут:
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
Path1, Path2:string;
Infra:array [1..500] of TFreeForm;
N_Infra:integer;
implementation
.....................
.....................
А GLMaterialLibrary я пробовал так:
На первую форму (ту, что с GLScene) ставил эту самую Library,
а во второй форме уже загружал в нее при необходимости текстуру.
Вот так:
Form1.GLMaterialLibrary2.Materials.Add;
Form1.GLMaterialLibrary2.Materials[N_Infra].Name:="Texture"+inttostr(N_Infra);
Form1.GLMaterialLibrary2.Materials[N_Infra].Texture.Image.LoadFromFile(Path2);
А присваивал материал объекту так:
Infra[N_Infra].Material.MaterialLibrary:=Form1.GLMaterialLibrary2;
Infra[N_Infra].Material.LibMaterialName:="Texture"+inttostr(N_Infra);
И, понятное дело, ставил Texture.Disabled:=false; и в библиотеке материалов, и в самом объекте.
Но толку нет. Текстур как не было, так и не появилось.
← →
Alek Aaz © (2004-02-26 16:54) [3]не, я тебе здесь не помощник...
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.045 c