rough pseudo-code: glGenTextures(1, &scaledTexture); // make the destination scaled texture // TODO: set up texture dimensions via glTexImage2D glGenFramebuffers(1, &myFBO); // make the drawing FBO to perform the scaling glBindFramebuffer(GL_FRAMEBUFFER_EXT, myFBO); glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, scaledTexture, 0); glDrawBuffer(GL_COLOR_ATTACHMENT0);
// bind source texture -- you might just use the bindTextureRep call here? glBindTexture(GL_TEXTURE_2D (or rect?), yourInputTexture); // set up projection -- pixel-for-pixel orthographic glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0,0,width,0,height, -1, 1); // draw the source to the destination // TODO: if better-than-bilinear-scaling is desired, add a shader here to do bicubic or something glBegin(GL_QUADS); glTexCoord2f(0,0); glVertex2f(0,0); glTexCoord2f(1,0); glVertex2f(width,0); glTexCoord2f(1,1); glVertex2f(width,height); glTexCoord2f(0,1); glVertex(0, height); glEnd(); // done! scaledTexture now has the scaled contents using bilinear scaling in hardware // make sure to delete fbos and texture when done. // ALSO: RESTORE ALL THE GL STATE! NOT DOING SO WILL BLOW UP! On Nov 21, 2012, at 7:55 AM, Christophe Leske <i...@multimedial.de> wrote: > Hi there, > > I would like to scale a texture image in the GPU to a new format - I got this > in place already for my patch - how do I scale the texture and get the pixel > data from it? > > Can anyone point me into the right direction, please? > > > // open gl > CGLContextObj cgl_ctx = [context CGLContextObj]; > GLenum error; > > > if (![imageToUse lockTextureRepresentationWithColorSpace:colorSpace > forBounds:[imageToUse imageBounds]]) > { > NSLog(@"Locking of texture failed."); > return NO; > } > > [imageToUse bindTextureRepresentationToCGLContext:cgl_ctx > textureUnit:GL_TEXTURE0 normalizeCoordinates:YES]; > > > // scaling in opengl comes here... > // uuuuuuuuuh.... > > > [imageToUse unbindTextureRepresentationFromCGLContext:cgl_ctx > textureUnit:GL_TEXTURE0]; > > [imageToUse unlockTextureRepresentation]; > > > > > > -- > Christophe Leske > multimedial.de > > ---------------------------------------- > www.multimedial.de - i...@multimedial.de > Hohler Strasse 17 - 51645 Gummersbach > +49(0)2261-99824540 // +49(0)177-2497031 > ---------------------------------------- > > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/quartzcomposer-dev/christopher_wright%40apple.com > > This email sent to christopher_wri...@apple.com -- Christopher Wright christopher_wri...@apple.com
_______________________________________________ Do not post admin requests to the list. They will be ignored. Quartzcomposer-dev mailing list (Quartzcomposer-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com