Snox
Snox

Reputation: 588

JAVA OpenGL - Scale image to fit window

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())));

enter image description here

enter image description here

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 :-)

Upvotes: 0

Views: 818

Answers (1)

Jean-Simon Brochu
Jean-Simon Brochu

Reputation: 950

You need to scale uniformly, if you scale the X axis, scale the Y and Z by the same amount.

Upvotes: 1

Related Questions