0

iphone開発初心者です。現在、opengl を使用するプロジェクトに取り組んでおり、ビューの一部をアニメーション化する必要があります。そのために、スクリーンショットを撮り、テクスチャを作成しました。

これは私のコードです

glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_SRC_COLOR);

UIGraphicsBeginImageContext(self.introductionTextLabel.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

GLuint      texture[1];
glGenTextures(1, &texture[0]);

glBindTexture(GL_TEXTURE_2D, texture[0]);

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);

GLuint width = CGImageGetWidth(viewImage.CGImage);
GLuint height = CGImageGetHeight(viewImage.CGImage);
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
void *imageData = malloc( height * width * 4 );
CGContextRef contextTexture = CGBitmapContextCreate( imageData, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big );

CGColorSpaceRelease( colorSpace );
CGContextClearRect( contextTexture, CGRectMake( 0, 0, width, height ) );
CGContextTranslateCTM( contextTexture, 0, height - height );
CGContextDrawImage( contextTexture, CGRectMake( 0, 0, width, height ), viewImage.CGImage );

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, imageData);


CGContextRelease(contextTexture);

free(imageData);

私はたくさん検索しましたが、テクスチャのアニメーションを与えるための良い方法を見つけることができませんでした.

誰かが私に良い方法を提案できますか。私が間違っている場合は、指摘してください。

前もって感謝します。

4

1 に答える 1

0

テクスチャを変更する唯一の推奨できる方法はglTexImage2D()、完全なフレームの更新とglTexSubImage2D()部分的な更新に使用することです。もちろん、プリロードされ圧縮されたタイプのテクスチャを使用する方が良いでしょう...

于 2012-08-20T13:00:03.013 に答える