I think you just need to delete your texture after unbindTexture… Not sure, but 
sounds logical.



On Nov 23, 2012, at 11:47 AM, Christophe Leske <[email protected]> wrote:

> Sorry,
> 
> but this is still not working, although I added the new state saving and 
> restoring code vaude posted.
> 
> 
> I got this (see below), and am still getting the same error for the 
> textureUnbinding call:
> 
> *** OpenGL error 0x0502 (invalid operation) in function "-[QCPlugInInputImage 
> unbindTextureRepresentationFromCGLContext:textureUnit:]"
> 
> 
> for the line
> 
>  [imageToUse unbindTextureRepresentationFromCGLContext:cgl_ctx 
> textureUnit:GL_TEXTURE0];
> 
> 
> 
> Did I add everything right? Are there other things being affected by the code 
> that might need to be saved and restored?
> 
> 
> Would it help to post the whole project somwhere? I got no problem with this.
> 
> 
> 
> 
> ----> my code from hereon:
> 
> 
>    // open gl
>    CGLContextObj                    cgl_ctx = [context CGLContextObj];
>    GLenum                            error;
> 
> 
>    glPushAttrib(GL_ALL_ATTRIB_BITS);
> 
>    GLint previousFBO, previousReadFBO,previousDrawFBO;
> 
>     glGetIntegerv(GL_FRAMEBUFFER_BINDING_EXT, &previousFBO);
>     glGetIntegerv(GL_READ_FRAMEBUFFER_BINDING_EXT, &previousReadFBO);
>     glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING_EXT, &previousDrawFBO);
> 
> 
>    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...
>    const GLuint scaledTexture;
>    const GLuint myFBO;
> 
>    int width = self.inputWidthLEDWall;
>    int height = self.inputHeightLEDWall;
> 
> 
>     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?), GL_TEXTURE0);
>    glBindTexture(GL_TEXTURE_2D, GL_TEXTURE0);
> 
>     // set up projection -- pixel-for-pixel orthographic
>     glMatrixMode(GL_MODELVIEW);
>     glLoadIdentity();
>     glMatrixMode(GL_PROJECTION);
>     glLoadIdentity();
>     glOrtho(0,width,height,0,0,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);
>     glVertex2f(0, height);
>     glEnd();
> 
>     // done!  scaledTexture now has the scaled contents using bilinear 
> scaling in hardware
>     // make sure to delete fbos and texture when done.
>    GLvoid* pixelData = malloc(width * height *3);
> 
>    glReadPixels(0,0,width, height, GL_RGB, GL_UNSIGNED_INT_8_8_8_8, 
> &pixelData);
> 
>    free(pixelData);
> 
>    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, previousFBO);
>    glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, previousReadFBO);
>    glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, previousDrawFBO);
> 
>    glPopAttrib();
> 
> 
>    glDeleteTextures(1, &scaledTexture);
>    glDeleteBuffers(1, &myFBO);
> 
>    [imageToUse unbindTextureRepresentationFromCGLContext:cgl_ctx 
> textureUnit:GL_TEXTURE0];
> 
>    [imageToUse unlockTextureRepresentation];
> 
> 
> -- 
> Christophe Leske
> multimedial.de
> 
> ----------------------------------------
> www.multimedial.de - [email protected]
> 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      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/quartzcomposer-dev/info%40cogevj.hu
> 
> This email sent to [email protected]



 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Quartzcomposer-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to