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

Reply via email to