Merge: doc -> main

This commit is contained in:
PedroEdiaz
2024-10-02 13:10:08 -06:00
parent 3c9690a2a7
commit d22daff16d
17 changed files with 363 additions and 163 deletions

View File

@@ -3,48 +3,78 @@ Díaz Camacho Pedro Emilio
# Headers
## main.h
Este archivo incluye los prototipos internos que va a usar el programa
Este archivo incluye los prototipos internos, que va a usar el programa
funge como api interna para los desarrolladores y debe estar bien documentada.
# Datos
## data/cube.h
## data/axis.h
## data/shaders.h
# codigo fuente
## main.c
Este archivo inclye la función principal, debe inicializar, ejecutar, y terminar el programa correctamente,
así como avisar de los errores cuando aparezcan.
## color.c
Incluye las funciones para escoger y pintar el color de fondo.
Este archivo debe configurar el programa antes de iniciarse, avisar de los problemas
que eviten que el programa se ejecute correctamente, iniciar y terminar los objetos que use el
programa, así como ejecutar la función principal
### Depende de
- <GL/gl.h>
## context.c
En este archivo se escoge un color para limpiar la pantalla y tiene una función para limpiar
tanto lo dibujado en pantalla, como distintos buffers gráficos.
### Depende de
- <GL/gl.h>
## input.c
Incluye el código necesario para interactuar con el program
Incluye la función `poll_input`, que se ejecuta en cada ciclo del programa y devuelve un
cuaternion de tipo `float *` que representa la rotación total del cubo, después de interactuar
con el programa.
### Depende de
- <GLFW/glfw3.h>
- <cglm/quat.h>
## matrix.c
Debe cargar en la gpu las matrices que use el programa.
Incluye las funciónes para configurar y cargar en la GPU las 3 matrices principales.
- `fix_matrix` esta matriz no cambia y se usa para configurar la perspectiva y la vista que
va a usar el programa en todo momento.
- `mdl_matrix` esta matriz depende de cada mesh y describe la rotación única de cada objeto,
se usa para rotar los ejes ortogonamente con un indice.
- `rot_matrix` esta matriz describe la rotación total de todos los objetos y se configura con
un cuaternio
### Depende de
- <cglm/mat4.h>
- <cglm/cam.h>
- <cglm/quat.h>
## mesh.c
Debe crear, destruir y dibujar los mesh, que son la representación de objetos tridimensionales.
Este archivo se usa para crear, destruir y dibujar objetos de tipo `mesh`, un `mesh` es una
colección de triángulos que describen un objeto multidimensional.
### Depende de
- <GL/gl.h>
- <stdlib.h>
## shader.c
Debe crear, destruir y usar los shaders, que son programas para la gpu, así como tener funciones
para cargar estructuras a la gpu.
Debe crear, destruir y usar los shaders, estos shaders son programas para la gpu escritos en glsl para
además aquí se carga memoria en gpu con las funciónes `gload_`
### Depende de
- <GL/gl.h>
## texture.c
Debe cargar, usar, destruir las texturas, también crea una textura para una paleta de colores.
Debe cargar, usar y destruir las texturas, que va a usar la gpu, también crea una textura
para una paleta de colores definida, esto para manipular fácilmente los colores que usará el programa.
### Depende de
- <GL/gl.h>
## window.c
Crea, usa, y cierra una ventana, también avisa cuando la ventana está abierta.
Crea, usa, limpie y cierra una ventana, una ventana tiene un contexto de OpenGL asociado para poder
dibujar objetos en ella, tiene una función especial para avisar si la ventana está abierta para
dibujar.
### Depende de
- <GLFW/glfw3.h>
# Datos
## data/cube.h
Aquí esta la información del mesh de un cubo, este se va a borrar cuando podamos
importar meshes para graficarlos.
## data/axis.h
Aquí está el mesh de un solo eje, este se va a rotar para hacer los otros 2 ejes.
## data/shaders.h
Aquí estan los shaders en glsl para dibujar en pantalla

43
doc/es/dev/tipos.md Normal file
View File

@@ -0,0 +1,43 @@
# Tipos de datos del proyecto
Díaz Camacho Pedro Emilio
# Introducción
En este archivo vamos a detallar los tipos de datos únicos del programa, estos
tipos de datos son estructuras que representan objetos computacionales y son
necesarios para integrar las distintas partes del programa.
## window_t
En `window.c` tenemos una estructura que es la ventana y esta se representa por `window_t`,
este tipo de dato es un pointer que es manejado por `glfw`.
## id_t
`id_t` es un tipo de dato que representa objetos de `OpenGL`, estos datos
normalmente vienen enumerados, y en `manigraph` se usan para representar `shaders`,
`programs` y `texture`.
## mesh_t
Este es un tipo de dato usado para interactuar con `mesh.c`, este representa la triangulación de un
objeto gráfico y funciona ocultando las variables que `OpenGL` necesita en un `void *`.
## mat4_t
`mat4_t` se usará para representar las matrices, se usará este tipo de dato exclusivamente
en `matrix.c` y funcionará con el tipo de dato `mat4` de `cglm`.
## quat_t
Este tipo de dato sirve para representar un quaternio, este quaternio representa la rotación
del objeto gráficado en la proyección tridimensional, y se usará para crear una matriz que
pueda entender `glsl`.
## narray
`narray` es un tipo de dato que funciona como un `array` enumerado, esto significa que el primer
elemento del `array` dice cuantos elementos tiene este, sin contar el primer elemento, y los demas elementos
funcionan como un `array` normal.
esta estructura nos ayuda a trabajar con arrays de tamaños arbitrario de forma óptima y sin tener que marcar el
último elemento de forma especial.
### narray_u8_t
es un `narray` para `char` y `unsigned char`.
### narray_float_t
es un `narray` para `float`.