GIObject.Model
Revision as of 08:47, 10 August 2025 by 1>Admin
| Model (Функции графических объектов) | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
Функция задает указанную модель графическому объекту в массиве моделей по ее имени, если первый аргумент равен нулю, ассоциация модели с объектом удаляется. За одним объектом может быть закреплено произвольное количество моделей по именам. Модель по умолчанию имеет пустое имя. Все модели с состоянием, разрешающим автоматический вывод, будут выведены на экран в момент прорисовки объекта. Также можно выполнить прорисовку определенной модели по ее имени с помощью функции DrawObject.
Синтаксис
GIObject.Model(<Новая модель объекта (GIModel)>=NOTHING,<Имя модели (STRING)>="",<Состояние модели (INT)>=0>):<Предыдущая модель объекта (GIModel)>
Аргументы
<Новая модель объекта (GIModel)>- (необязательный аргумент) Аргумент задает новую модель объекта. Если аргумент равен нулю, ассоциация модели будет удалена.<Имя модели (STRING)>- (необязательный аргумент) Аргумент задает имя модели. По умолчанию используется пустое имя.<Состояние модели (INT)>- (необязательный аргумент) Аргумент задает состояние модели. Состояния явлется битовой маской, использующей следующие биты:- бит 1: 0 -- автоматическая прорисовка модели разрешена, 1 -- запрещена.
Возвращаемое значение
Возвращается предыдущая ассоциированная с объектом модель, если таковая была.
Примеры
//Используется фрагмент из обработки tetris.sfo
//Создадим новую простую модель с пустым буфером
аБуфер:=Buffer.Create();
аМодель:=GIModel.New();
аМодель.SimpleModel(аБуфер);
//Заполним буфер микрокодом
аСмещ:=0;
аБуфер.AddValues(аСмещ,4,201,aGI.GL_TEXTURE_2D,0);//glBindTexture
аБуфер.AddValues(аСмещ,4,300,лкПрограммы[3]);//ShaderProgramUse
аБуфер.AddValues(аСмещ,4,301,aGI.ShaderProgramGetVariableID(лкПрограммы[3],"u_scrpos"),4,$004);
аБуфер.AddValues(аСмещ,104,x,aGI.Height-y,2*dx,2*dx);//u_scrpos
аБуфер.AddValues(аСмещ,4,302,aGI.ShaderProgramGetVariableID(лкПрограммы[3],"u_time"));//u_time
аБуфер.AddValues(аСмещ,4,301,aGI.ShaderProgramGetVariableID(лкПрограммы[3],"u_starttime"),1,$001);
аБуфер.AddValues(аСмещ,104,aGI.WorldTime);//u_starttime
аБуфер.AddValues(аСмещ,4,1,aGI.GL_QUADS);//glBegin
аБуфер.AddValues(аСмещ,4,100);аБуфер.AddValues(аСмещ,104,x,y,-0.3);//glVertex
аБуфер.AddValues(аСмещ,4,100);аБуфер.AddValues(аСмещ,104,x,y+2*dx,-0.3);//glVertex
аБуфер.AddValues(аСмещ,4,100);аБуфер.AddValues(аСмещ,104,x+2*dx,y+2*dx,-0.3);//glVertex
аБуфер.AddValues(аСмещ,4,100);аБуфер.AddValues(аСмещ,104,x+2*dx,y,-0.3);//glVertex
аБуфер.AddValues(аСмещ,4,2);//glEnd
аБуфер.AddValues(аСмещ,4,0);//EOF
//Создадим новый объект и добавим к нему эту модель
аОбъект:=aGI.AddObject("EXP");
аОбъект.Model(аМодель);