loading a texture in opengl with carbon
I am trying to figure out OpenGL and I just recently got to the point where I decided that I should know how to load textures to objects. I used GraphicsImporter to load in a jpeg and then created an off screen Gworld and loaded it into that, or at least that's what I thought I did. Then I used glTexImage2D to load it into OpenGL. But here's where things got messed up. When I ran the program, it displayed the jpeg that I loaded at the top left corner of the screen(even though I never told it to) and then when the window opened, the object loads with a weird texture that in no way resembles the image. I am pretty sure that the image somehow never got into memory and that the texture is being loaded from an unregistered memory block, especially since the texture that appears is different every time I open it. I'm pretty confused as of what went wrong. Here's the relevant code:
void LoadTexturesGL(){
MakeFSSpecFromPath("road026.jpg", &spec);
err = GetGraphicsImporterForFile(&spec, &gi);
cr = GraphicsImportGetNaturalBounds(gi, &bounds);
err = QTNewGWorldFromPtr(&gw, k32RGBAPixelFormat, &bounds, NULL, NULL,0, buffer,4 * bounds.right);
cr = GraphicsImportSetGWorld(gi, gw, NULL);
cr = GraphicsImportDraw(gi);
err = CloseComponent(gi);
glEnable(GL_TEXTURE_2D);
glGenTextures(1,&texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 4,bounds.right, bounds.bottom, 0,GL_RGBA, GL_UNSIGNED_INT,buffer);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
DisposeGWorld(gw);
free(buffer);
}
If you have any ideas, please help me out! Thanks!
void LoadTexturesGL(){
MakeFSSpecFromPath("road026.jpg", &spec);
err = GetGraphicsImporterForFile(&spec, &gi);
cr = GraphicsImportGetNaturalBounds(gi, &bounds);
err = QTNewGWorldFromPtr(&gw, k32RGBAPixelFormat, &bounds, NULL, NULL,0, buffer,4 * bounds.right);
cr = GraphicsImportSetGWorld(gi, gw, NULL);
cr = GraphicsImportDraw(gi);
err = CloseComponent(gi);
glEnable(GL_TEXTURE_2D);
glGenTextures(1,&texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 4,bounds.right, bounds.bottom, 0,GL_RGBA, GL_UNSIGNED_INT,buffer);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
DisposeGWorld(gw);
free(buffer);
}
If you have any ideas, please help me out! Thanks!
k32RGBAPixelFormat doesn't work on Mac OS X.
working QuickTime texture loading code: http://onesadcookie.is-a-geek.net/svn/repos/QTValuePak/
working QuickTime texture loading code: http://onesadcookie.is-a-geek.net/svn/repos/QTValuePak/
Okay, so I switched k32RGBAPixelFormat for k32ARGBPixelFormat, but it still does the same thing.
Check out the source code at http://webpages.charter.net/utopiaplanet...Struct.dmg
Possibly Related Threads...
Thread: | Author | Replies: | Views: | Last Post | |
OpenGL ES Texture Masking | airfire | 6 | 22,770 |
Mar 17, 2014 07:07 PM Last Post: baioses |
|
OpenGL ES Texture Compression | ajrs84 | 9 | 11,161 |
May 7, 2013 03:36 PM Last Post: ajrs84 |
|
OpenGL ES Texture Masking | dalasjoe sin | 0 | 5,276 |
Apr 13, 2012 12:17 AM Last Post: dalasjoe sin |
|
Texture in OpenGL ES 2 looks pixelated | vunterslaush | 18 | 38,496 |
Aug 30, 2011 09:44 PM Last Post: Frogblast |
|
Lighting and changing texture colors in OpenGL | agreendev | 2 | 10,880 |
Aug 13, 2010 03:47 PM Last Post: agreendev |