Jump to content
  • Advertisement
Sign in to follow this  
aGuyWhoSucksAtOpenGL

OpenGL Problem with texture mapping

This topic is 1851 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi all, 

 

Today was my first step into the mighty land of OpenGL and so the first task I set myself- after playing around with shapes and colours- was to display an image on screen. So far, I've been attempting to texturise a quad for the past 5/6 hours with not much luck, well, none at all really. The rest of the code seems to work fine, I just can't get the texture to show. As a side note, my eyes are beginning to glaze over right now, so if anything I say doesn't make sense, just skip a few lines and see if that does the trick.

 

What choo doing? I'm using SOIL in my code, so the problem may lie with that if the rest of the code seems fine. If you lovely people could check my code for mistakes, I'd greatly appreciate it, thanks! As I said, I'm still a noob and so I can't figure out where I've gone wrong. As for my code, I'm writing this on a mac, so some functions are written in obj-c.

 

Where yo' code at?

-(void) loadTextures{
    
    GLuint textures[1];
    glGenTextures( 1, textures );
	
    int width, height;
    width = 128;
    height = 256;
    unsigned char *image;
    
    glBindTexture( GL_TEXTURE_2D, textures[0] );
    image = SOIL_load_image( "logo.png", &width, &height, 0, SOIL_LOAD_RGB );
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, image );
    SOIL_free_image_data( image );
    
	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );
	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
	glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
    
    glBegin(GL_QUADS);
    
    glTexCoord2d(0.0, 0.0); glVertex2d(-0.5, -0.5);
    glTexCoord2d(1.0, 0.0); glVertex2d(-0.5, 0.5);
    glTexCoord2d(1.0, 1.0); glVertex2d(0.5, 0.5);
    glTexCoord2d(0.0, 1.0); glVertex2d(0.5, -0.5);
    
    glEnd();
}


- (void)drawRect:(NSRect)dirtyRect
{
    glClearColor(0, 104.0/255.0, 55.0/255.0, 1.0); // rgba ; Red, Green, Blue, Alpha (transparency)
    glClear(GL_COLOR_BUFFER_BIT); // if no buffer is present, glclear has no effect. glclear clears buffers to preset values.
    MyOpenGLView *GLView = [[MyOpenGLView alloc] init];
    [GLView loadTextures];
    glFlush(); // forces execution of GL commands.
}

 

 

I'm off to sleep now, this code -albeit small- has worn me out. Any responses would be fantastic, I've looked over and over my code, checked with what seems like a million other pieces of source code and yet I still can't figure out the issue, obviously there is, as the texture isn't loading! If I don't respond within a couple of minutes, odds are I'm asleep, but any responses would be much appreciated and I'll be sure to reply back in around 6 hours time.

 

Thanks!

 

Edit: Here's what I'm getting at the moment: http://i.imgur.com/JOFaYG6.png

Edited by aGuyWhoSucksAtOpenGL

Share this post


Link to post
Share on other sites
Advertisement

Did you enable Texture Sampling by calling glEnable(GL_TEXTURE2D). By default GL_TEXTURE2D is not enabled. I bet that is your problem.

Edited by BornToCode

Share this post


Link to post
Share on other sites

As an aside, you do NOT want to be generating a new texture and loading an image every time you draw. You should load the image and generate the texture once, during initialization (or level change), and then just set it on the device (with glBindTexuture) when you draw.

Share this post


Link to post
Share on other sites

Ah, that might be the problem, thanks, I'll give it a go. Will update in a few mins! Also, thanks for the tips Dave, much appreciated.

 

Edit: Yup, that did the trick, I can't thank you enough BornToCode! The funny thing is that I already had that line in my code, I'd just commented it out at some point- I'm an idiot. Thanks again!

Edited by aGuyWhoSucksAtOpenGL

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!