Я переписываю в 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, тогда я могу сделать связку квадов, и для каждого квада я могу установить все его вершины в определенный цвет , следовательно, я могу легко получить кнопки разного цвета из одного и того же трафарета ...