Fix stretching/squashing with non-square window
This commit is contained in:
parent
f2d92979d0
commit
3220795821
2
TODO.md
2
TODO.md
|
@ -1,8 +1,8 @@
|
|||
# Before 1.0
|
||||
|
||||
## graphics
|
||||
- prevent stretching from window aspect ratio
|
||||
- smoothing
|
||||
- framerate counter
|
||||
|
||||
## docs
|
||||
- model format documentation
|
||||
|
|
|
@ -24,11 +24,14 @@
|
|||
GLuint shader; //standard shader program used for all elements
|
||||
GLuint transUniform; //location of the "transMatrix" transformation matrix uniform in the shader
|
||||
|
||||
float windowAspectRatio;
|
||||
|
||||
//parts of the model (see modelpart.hpp)
|
||||
Model* model;
|
||||
|
||||
void display () {
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
windowAspectRatio = glutGet(GLUT_WINDOW_WIDTH) / (float)glutGet(GLUT_WINDOW_HEIGHT);
|
||||
|
||||
model->draw();
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <cv.hpp>
|
||||
|
||||
extern GLuint transUniform;
|
||||
extern float windowAspectRatio;
|
||||
|
||||
void initGraphics ();
|
||||
|
||||
|
|
|
@ -41,7 +41,8 @@ void ModelPart::setFollowTarget(std::string followTarget) {
|
|||
}
|
||||
|
||||
void ModelPart::setTransform(glm::vec2 position, float rotation, float scale) {
|
||||
transMatrix = glm::translate(glm::mat4(1.0f), glm::vec3(position.x, -position.y, 0.0f) + glm::vec3(posOffset, 0.0f));
|
||||
transMatrix = glm::ortho(-windowAspectRatio, windowAspectRatio, -1.0f, 1.0f);
|
||||
transMatrix = glm::translate(transMatrix, glm::vec3(position.x, -position.y, 0.0f) + glm::vec3(posOffset, 0.0f));
|
||||
transMatrix = glm::rotate(transMatrix, rotation * rotFactor, glm::vec3(0.0f, 0.0f, 1.0f));
|
||||
transMatrix = glm::scale(transMatrix, glm::vec3(1,1,1) + (scale - 1 + glm::vec3(scaleOffset, 0.0f)) * scaleFactor);
|
||||
transMatrix = glm::translate(transMatrix, glm::vec3(-origin, 0.0f));
|
||||
|
|
Loading…
Reference in a new issue