Core Animation / GLES2.0: Получение растрового изображения из CALayer в GL Texture - PullRequest
1 голос
/ 26 февраля 2011

Я переписываю в GL некоторый основной анимационный код, который работал недостаточно быстро.

в моей предыдущей версии каждая кнопка была представлена ​​CALayer, содержащей подслои для общей формы и текстового содержимого.

что я хотел бы сделать, это установить .setRasterize = YES на этом слое, заставить его визуализироваться на собственном внутреннем растровом изображении, а затем отправить его в мой код GL, в настоящее время:

// Create A 512x512 greyscale texture
{
    // MUST be power of 2 for W & H or FAILS!
    GLuint W = 512, H = 512;

    printf("Generating texture: [%d, %d]\n", W, H);

    // Create a pretty greyscale pixel pattern
    GLubyte *P = calloc( 1, ( W * H * 4 * sizeof( GLubyte ) ) );

    for ( GLuint i = 0; ( i < H ); ++i )
    {
        for ( GLuint j = 0; ( j < W ); ++j )
        {
            P[( ( i * W + j ) * 4  +  0 )] =
            P[( ( i * W + j ) * 4  +  1 )] =
            P[( ( i * W + j ) * 4  +  2 )] =
            P[( ( i * W + j ) * 4  +  3 )] = ( i ^ j );
        }
    }       

    // Ask GL to give us a texture-ID for us to use
    glGenTextures( 1, & greyscaleTexture );

    // make it the ACTIVE texture, ie functions like glTexImage2D will 
    // automatically know to use THIS texture
    glBindTexture( GL_TEXTURE_2D, greyscaleTexture );

    // set some params on the ACTIVE texture
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );

    // WRITE/COPY from P into active texture  
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, W, H, 0, GL_RGBA, GL_UNSIGNED_BYTE, P );

    free( P );

    glLogAndFlushErrors();
}

Может ли кто-нибудь помочь мне исправить это вместе?

РЕДАКТИРОВАТЬ: я на самом деле хочу создать черно-белую маску, чтобы каждый пиксель был либо 0x00, либо 0xFF, тогда я могу сделать связку квадов, и для каждого квада я могу установить все его вершины в определенный цвет , следовательно, я могу легко получить кнопки разного цвета из одного и того же трафарета ...

1 Ответ

0 голосов
...