You need to scale uniformly, if you scale the X axis, scale the Y and Z by the same amount.
JAVA OpenGL - Scale image to fit window
-
06-08-2022 - |
Question
I am having trouble with a program i am writing. Currently i am reading a OBJ file and rendering it correctly. But my problem is, some images don't fit my window.
I've tried to scale it using glScalef, but the image is still deformed. (almost always on Z)
and here is how i set my window:
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
float w = gLDrawable.getWidth();
float h = gLDrawable.getHeight();
if(w > h) gl.glOrtho(-1.0*(w/h), 1.0*w/h, -1.0, 1.0, -1.0, 1.0);
else gl.glOrtho(-1.0, 1.0, -1.0*(h/w), 1.0*h/w, -1.0, 1.0);
Here is my Scale attempt
if(m.getXVertexMax() - m.getXVertexMin() > w) gl.glScalef(w/(m.getXVertexMax() - m.getXVertexMin()), 1, 1);
else gl.glScalef(1/(m.getXVertexMax() - m.getXVertexMin()), 1, 1);
if(m.getYVertexMax() - m.getYVertexMin() > h) gl.glScalef(1, h/(m.getYVertexMax() - m.getYVertexMin()), 1);
else gl.glScalef(1, 1/(m.getYVertexMax() - m.getYVertexMin()), 1);
gl.glScalef(1, 1, (1/(m.getZVertexMax() - m.getZVertexMin())));
No mater what i try, the image is always either short on the x or very large on the z!
Can someone please give a hand here? Thanks :-)
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow