Fixed some camera bugs.
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user