Перед предоставлением различных доступных функций, имеется один важный пункт: обработка текстуры. Как описано ранее, текстура берётся из спрайтов и фонов. Индексы из текстур могут быть различными в разные моменты. В результате модели не содержат никакой информации о текстуре. Только когда Вы рисуете модель, тогда Вы обеспечиваете текстуру. Так что Вы можете использовать в модели только одну текстуру. Если Вы нуждаетесь в большем количестве текстур, Вы должны или объединить их в единое целое (и тщательно проработать координаты текстуры), или Вы должны использовать множество моделей. Преимущество из этого в том, что Вы можете рисовать ту же самую модель, легко используя различные текстуры.
Для создания, загрузки, сохранения и рисования моделей существуют следующие функции:
d3d_model_create() Создаёт новую модель и возвращает её индекс. Этот индекс используют все другие функции, имеющие дело с моделями.
d3d_model_destroy(ind) Уничтожает модель с заданным индексом, освобождая его память.
d3d_model_clear(ind) Очищает модель с заданным индексом, удаляя все его примитивы.
d3d_model_save(ind,fname) Сохраняет модель под указанным файловым названием.
d3d_model_load(ind,fname) Загружает модель из указанного файлового названия.
d3d_model_draw(ind,x,y,z,texid) Рисует модель в позиции (x,y,z). texid - текстура, которая должна быть использована. Используйте -1, если Вы не хотите использовать текстуру. Если Вы хотите вращать или масштабировать модель, Вы можете использовать программы преобразования, которые были описаны прежде.
Для каждой функции примитива есть эквивалент, чтобы добавить его к модели. Функции имеют те же самые аргументы как и прежде за исключением того, что каждый имеет первый аргумент индекса модели, и информация текстуры не обеспечена.
d3d_model_primitive_begin(ind,kind) Добавляет 3D примитив к модели указанного типа: pr_pointlist, pr_linelist, pr_linestrip,pr_trianglelist,pr_trianglestrip or pr_trianglefan.
d3d_model_vertex(ind,x,y,z) Добавляет вершину (x,y,z) к модели.
d3d_model_vertex_color(ind,x,y,z,col,alpha) Добавляет вершину (x,y,z) к модели с собственным цветом и значением альфа.
d3d_model_vertex_texture(ind,x,y,z,xtex,ytex) Добавляет вершину (x,y,z) к модели с позицией (xtex,ytex) в текстуре.
d3d_model_vertex_texture_color(ind,x,y,z,xtex,ytex,col,alpha) Добавляет вершину (x,y,z) к модели с текстурой и значениями цвета.
d3d_model_vertex_normal(ind,x,y,z,nx,ny,nz) Добавляет вершину (x,y,z) к модели с обычным вектором (nx,ny,nz).
d3d_model_vertex_normal_color(ind,x,y,z,nx,ny,nz,col,alpha) Добавляет вершину (x,y,z) к модели с обычным вектором (nx,ny,nz), и со своим собственным цветовым и альфа значением.
d3d_model_vertex_normal_texture(ind,x,y,z,nx,ny,nz,xtex,ytex) Добавляет вершину (x,y,z) к модели с обычным вектором (nx,ny,nz) и с позицией текстуры.
d3d_model_vertex_normal_texture_color(ind,x,y,z,nx,ny,nz,xtex,ytex,col,alpha) Добавляет вершину (x,y,z) к модели с обычным вектором (nx,ny,nz) с позицией текстуры и значением цвета.
d3d_model_primitive_end(ind) Завершает описание примитивов к модели.
Помимо примитивов Вы можете также добавить к моделям основные формы. Снова функции смотрятся почти одинаково, но с образцовым индексом и без информации текстуры:
d3d_model_block(ind,x1,y1,z1,x2,y2,z2,hrepeat,vrepeat) Добавляет форму блока к модели.
d3d_model_cylinder(ind,x1,y1,z1,x2,y2,z2,hrepeat,vrepeat,closed,steps) Добавляет форму цилиндра к модели.
d3d_model_cone(ind,x1,y1,z1,x2,y2,z2,hrepeat,vrepeat,closed,steps) Добавляет форму конуса к модели.
d3d_model_ellipsoid(ind,x1,y1,z1,x2,y2,z2,hrepeat,vrepeat,steps) Добавляет форму эллипса к модели.
d3d_model_wall(ind,x1,y1,z1,x2,y2,z2,hrepeat,vrepeat) Добавляет форму стены к модели.
d3d_model_floor(ind,x1,y1,z1,x2,y2,z2,hrepeat,vrepeat) Добавляет форму потолка к модели.
Использование моделей может значительная ускорить графику в ваших 3D играх, и Вы должны использовать их всякий раз, когда имеется возможность.