Библиотека была создана для изучения работы 3d графики и работы синтезатора gsKit.
Функционал:
- работа с трёхмерными векторами
- гибкое создание мешей и вершин нужной модели
- работа с матрицами
- настройка и изменение параметров встроенной камеры
Все что требуется - указать вершины, индексы и вызвать соответствующие методы.
#include "vector3.h"
#include "mesh.h"
#include "gameobject.h"
#include "render3d.h"
static Vec3 cubeVertices[12] = {
{-0.5f,-0.5f,-0.5f}, {0.5f,-0.5f,-0.5f}, {0.5f,0.5f,-0.5f}, {-0.5f,0.5f,-0.5f},
{-0.5f,-0.5f,0.5f}, {0.5f,-0.5f,0.5f}, {0.5f,0.5f,0.5f}, {-0.5f,0.5f,0.5f},
{0.0f, -1.25f, -0.5f}, {0.0f, -1.25f, 0.5f}, {0.0f, -1.25f, 0.0f}, {0.0f, -1.25f, 0.0f}
};
static int cubeIndices[56] = {
0,1,2, 0,2,3, // задняя
4,5,6, 4,6,7, // передняя
0,3,7, 0,7,4, // левая
1,2,6, 1,6,5, // правая
3,2,6, 3,6,7, // верх
0,1,5, 0,5,4, // низ
0,8,1, 5,9,4, // стены крыши
1,5,8, 8,9,5, // перед крыши
0,4,8, 8,9,4 // зад крыши
};
Mesh cubeMesh = {cubeVertices, 12, cubeIndices, 56};
GameObject cubeObject;
void cube_init() {
cubeObject.position = vec3_create(0.0f, -0.5f, 35.0f);
cubeObject.rotation = vec3_create(0.0f, 0.0f, 0.0f);
cubeObject.scale = vec3_create(1.0f, 1.0f, 1.0f);
cubeObject.mesh = &cubeMesh;
}
void cube_render(Camera* cam, Mat4* proj, GSGLOBAL* gsGlobal, float angle) {
cubeObject.position.x = angle;
render_object(&cubeObject, cam, proj, gsGlobal);
}- Библиотека написана быстро, содержит магические числа и костыли.
- Подходит для изучения 3D и экспериментов, но не для больших проектов.
© 2025 ZapolyarnyDev
Проект распространяется под лицензией Apache 2.0 – см. файл LICENSE
