cpp-vulkan-setup/src/WorldView.cpp

44 lines
1.1 KiB
C++

#include "WorldView.h"
WorldView::WorldView() {
// m_modelMat.translate(0, 0, -5);
// m_modelMat.rotate(-90, 1, 0, 0);
// m_modelMat.scale(1.f, 1.f, 1.5f);
}
void WorldView::initializeProjectionMatrix(QVulkanWindow *window) {
// m_projectionMat = window->clipCorrectionMatrix();
// const QSize sz = window->swapChainImageSize();
// m_projectionMat.perspective(
// 90.0f, static_cast<float>(sz.width()) / static_cast<float>(sz.height()),
// 0.01f, 1000.0f);
}
VertexUniformBufferObject WorldView::getBufferObject() {
VertexUniformBufferObject obj{};
m_modelMat.copyDataTo(obj.model.data());
m_camera.viewMatrix().copyDataTo(obj.view.data());
m_projectionMat.copyDataTo(obj.proj.data());
return obj;
}
QVector4D WorldView::multiply(const QVector4D &vector) {
return m_projectionMat * m_camera.viewMatrix() * m_modelMat * vector;
}
void WorldView::pitchCamera(float degrees) {
m_camera.pitch(degrees);
}
void WorldView::yawCamera(float degrees) {
m_camera.yaw(degrees);
}
void WorldView::strafeCamera(float amount) {
m_camera.strafe(amount);
}
void WorldView::moveCamera(float amount) {
m_camera.walk(amount);
}