Skip to content

ZapolyarnyDev/gsKit3d

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

3D графика для PS2 🎮

О библиотеке 👀

Библиотека была создана для изучения работы 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

About

Простая библиотека для работы с 3д графикой на PS2

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published