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, Ive 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 toil fine, I just cant get the texture to show. As a side note, my eyes are beginning to glaze over right now, so if anything I say doesnt make sense, just skip a few lines and see if that does the trick.
What choo doing? Im 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, Id greatly appreciate it, thanks! As I said, Im still a noob and so I cant figure out where Ive gone wrong. As for my code, Im 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.
Im off to sleep now, this code -albeit small- has worn me out. Any responses would be fantastic, Ive looked over and over my code, checked with what seems like a million other pieces of source code and yet I still cant figure out the issue, obviously there is, as the texture isnt loading! If I dont respond within a couple of minutes, odds are Im asleep, but any responses would be much appreciated and Ill be sure to reply back in around 6 hours time.
Thanks!
Edit: Heres what Im getting at the moment: http://i.imgur.com/JOFaYG6.png
Edited by aGuyWhoSucksAtOpenGL, 28 May 2013 - 05:01 PM.