Fixed some camera bugs.

This commit is contained in:
2025-09-01 11:02:30 -05:00
parent 127392a1ae
commit 368729f0f3
17 changed files with 423 additions and 70 deletions

View File

@@ -16,22 +16,20 @@ camera_t *CAMERA_MAIN = NULL;
void cameraInit(camera_t *camera) {
assertNotNull(camera, "Not a camera component");
camera->type = CAMERA_TYPE_PERSPECTIVE
;
glm_mat4_identity(camera->transform);
camera->perspective.fov = 45.0f;
camera->type = CAMERA_TYPE_PERSPECTIVE;
camera->perspective.fov = glm_rad(45.0f);
camera->nearClip = 0.1f;
camera->farClip = 100.0f;
glm_look(
(vec3){ 3.0f, 3.0f, 3.0f },
glm_lookat(
(vec3){ 5.0f, 5.0f, 5.0f },
(vec3){ 0.0f, 0.0f, 0.0f },
(vec3){ 0.0f, 1.0f, 0.0f },
camera->transform
);
}
void cameraPush(camera_t *camera) {
void cameraPushMatrix(camera_t *camera) {
assertNotNull(camera, "Not a camera component");
mat4 projection;
@@ -50,12 +48,13 @@ void cameraPush(camera_t *camera) {
break;
case CAMERA_TYPE_PERSPECTIVE:
const float_t aspect = (
(float_t)frameBufferGetWidth(FRAMEBUFFER_BOUND) /
(float_t)frameBufferGetHeight(FRAMEBUFFER_BOUND)
);
glm_perspective(
camera->perspective.fov,
(
(float_t)frameBufferGetWidth(FRAMEBUFFER_BOUND) /
(float_t)frameBufferGetHeight(FRAMEBUFFER_BOUND)
),
aspect,
camera->nearClip,
camera->farClip,
projection
@@ -63,20 +62,21 @@ void cameraPush(camera_t *camera) {
}
#if DISPLAY_SDL2
mat4 pv;
glm_mat4_mul(projection, camera->transform, pv);
// mat4 pv;
// glm_mat4_mul(projection, camera->transform, pv);
glPushMatrix();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glLoadMatrixf((const GLfloat*)pv);
glLoadMatrixf((const GLfloat*)projection);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glLoadMatrixf((const GLfloat*)camera->transform);
#endif
}
void cameraPop(void) {
void cameraPopMatrix(void) {
#if DISPLAY_SDL2
glPopMatrix();
#endif