53 lines
1.1 KiB
C
53 lines
1.1 KiB
C
/**
|
|
* Copyright (c) 2021 Dominic Msters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "camera.h"
|
|
|
|
camera_t * cameraCreate() {
|
|
camera_t *camera = malloc(sizeof(camera_t));
|
|
if(!camera) return NULL;
|
|
return camera;
|
|
}
|
|
|
|
void cameraDispose(camera_t *camera) {
|
|
free(camera);
|
|
}
|
|
|
|
void cameraLookAt(camera_t *camera,
|
|
float x, float y, float z, float targetX, float targetY, float targetZ
|
|
) {
|
|
glm_lookat(
|
|
(vec3){ x, y, z },
|
|
(vec3){ targetX, targetY, targetZ },
|
|
(vec3){ 0, 1, 0 },
|
|
camera->view
|
|
);
|
|
}
|
|
|
|
void cameraLook(camera_t *camera,
|
|
float x, float y, float z,
|
|
float pitch, float yaw, float roll
|
|
) {
|
|
glm_look(
|
|
(vec3){ x, y, z },
|
|
(vec3){ pitch, yaw, roll },
|
|
(vec3){ 0, 1, 0 },
|
|
camera->view
|
|
);
|
|
}
|
|
|
|
void cameraPerspective(camera_t *camera,
|
|
float fov, float aspect, float near, float far
|
|
) {
|
|
glm_perspective(fov, aspect, near, far, camera->projection);
|
|
}
|
|
|
|
void cameraOrtho(camera_t *camera,
|
|
float left, float right, float bottom, float top, float near, float far
|
|
) {
|
|
glm_ortho(left, right, bottom, top, near, far, camera->projection);
|
|
} |