# OpenGL Problem with texture mapping

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

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

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];
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 on other sites

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

1. 1
2. 2
3. 3
Rutin
18
4. 4
5. 5
JoeJ
13

• 14
• 10
• 25
• 9
• 57
• ### Forum Statistics

• Total Topics
632644
• Total Posts
3007624
• ### Who's Online (See full list)

There are no registered users currently online

×