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 - 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/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to