3 #include <glm/ext/matrix_clip_space.hpp>
4 #include <glm/ext/matrix_transform.hpp>
8 glm::perspective<float>(glm::radians(fov_), width / height, near_, far_);
10 viewMatrix_ = glm::lookAt(pos_, viewOrigin_, up_);
14 return projectionMatrix_;
23 viewMatrix_ = glm::lookAt(pos_, viewOrigin_, up_);
27 if (event->type == SDL_EVENT_MOUSE_WHEEL) {
28 auto newPos = pos_ + (viewOrigin_ - pos_) * event->wheel.y * 0.1f;
31 if (event->type == SDL_EVENT_MOUSE_MOTION) {
33 auto flags = SDL_GetMouseState(&mpos.x, &mpos.y);
34 glm::vec2 dPos = (mpos - lastMousePos_);
35 if (flags == SDL_BUTTON_LMASK) {
37 glm::rotate(glm::mat4(1), glm::radians(-dPos.x), glm::vec3(0, 1, 0));
38 auto rot = glm::rotate(roty, glm::radians(-dPos.y), glm::vec3(1, 0, 0));
39 setPos(rot * glm::vec4(pos_, 1));
41 SDL_GetMouseState(&lastMousePos_.x, &lastMousePos_.y);