Jump to content

  • Log In with Google      Sign In   
  • Create Account

xla

Member Since 06 Feb 2014
Offline Last Active Feb 09 2014 06:08 PM

Posts I've Made

In Topic: Loading image into OpenGL

09 February 2014 - 10:35 AM

Finally I managed to fix it. Now everything works. I will update the code. 

Many thanks for all you support. 


In Topic: Loading image into OpenGL

09 February 2014 - 10:24 AM

Hmm, try removing the glTranslatef call.

I managed to get the picture to display by changing the height and width of the picture. Now it works. However, the colours of the other shapes on the window all turned into black colour. Do I have to call glDisable(GL_TEXTURE_2D);. If yes, where do I call it? 

 

Thanks


In Topic: Loading image into OpenGL

08 February 2014 - 05:17 PM

 

This is what it looks like.

direct link

http://s30.postimg.org/eurazb6i9/Picture1.png

Can you post a link to the image you're trying to display? It doesn't just look like the image is blurry, it looks like you're reading from the wrong offset and using the wrong image pitch, to have what looks like alternating pixel rows side-by-side, and not starting at the upper-left of the image.

 

This is the link

 

http://postimg.org/image/mmhvccujl/


In Topic: Loading image into OpenGL

08 February 2014 - 07:43 AM

 

Are you trying to display this on a 2d quad stuck to the screen, or, in 3d? Im assuming 2d because you are using gluOrtho. Its going to be blurry to some degree if the pixels dont map 1 to 1 with the quad.

 

Use the following to stop the image from repeating, unless repeating is what you want then use GL_REPEAT

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Im not sure what size the glut window is, so try this to start

int gWidth = 800, gHeight = 600;  // store these globally where all functions can access

glutInitWindowSize(gWidth, gHeight); // before glutCreateWindow()

Also setup a reshape function to handle window resizing

void Resize()
{
        glViewport(0, 0, (GLsizei)gWidth, (GLsizei)gHeight);

        // initialize viewing values
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();
        gluOrtho2D(0.0, 1.0, 0.0, 1.0);             // 2d coordinates will need to be normalized (0.0 to 1.0)

        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
}

void ReshapeGlut(int w, int h)
{
        // update
        gWidth = w;
        gHeight = h;
        // apply
        Resize();
}

glutReshapeFunc(Reshape);            // set it in main after create window

and when drawing, draw using normalized coordinates and fit the quad to the image (might have to call Resize() before clearing during draw)

const float nw = float(ti->width) / float(gWidth);
const float nh = float(ti->height) / float(gHeight);

glBegin(GL_QUADS);   // counter clock wise
glTexCoord2f(0.0, 0.0);glVertex3f( 0.0, 0.0, 0.0);   // bottom left corner
glTexCoord2f(1.0, 0.0);glVertex3f( nw, 0.0, 0.0);     // bottom right
glTexCoord2f(1.0, 1.0);glVertex3f( nw, nh, 0.0);      // top right
glTexCoord2f(0.0, 1.0);glVertex3f( 0.0, nh, 0.0);    // top left  
glEnd();

Hi  NumberXaero. I tried the code, but a white blank screen appears. 

This is the size of my window: 

 gluOrtho2D(0, 500, 0, 500);

 

The quad is set in the middle of the window:

glTranslatef(250,250,0);

 

This is the window position:

glutInitWindowPosition(350, 200);

 

 


In Topic: Loading image into OpenGL

07 February 2014 - 05:17 PM

 

The picture is blurry since you used GL_LINEAR instead of GL_NEAREST in those calls:

 

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 
And if the texture is upside down, you just have to invert the y texture coordinates.
 

glTexCoord2f(1.0, 0.0);glVertex3f( 2, 2, 0.0);
glTexCoord2f(1.0, 1.0);glVertex3f( 2, -2, 0.0);
glTexCoord2f(0.0, 1.0);glVertex3f( -2, -2, 0.0);
glTexCoord2f(0.0, 0.0);glVertex3f( -2, 2, 0.0);

 

 

 

I modfied the code, but the picture is still blurry. Iam trying to insert the image below. I have resized it and made it smaller. Do you think I need to change the values within texture buffer? 

t1 = AllocateTextureBuffer(256, 50, 4);

This is what it looks like.

direct link

http://s30.postimg.org/eurazb6i9/Picture1.png


PARTNERS