0

iPhone シミュレーターの OpenGLES 2.0 でいくつかの単純なパーティクルをレンダリングしようとしていますが、アーティファクトがある場合とない場合があります。コードを実行しようとすると、コイントスのようです。最初の画像は本来あるべき姿で、2 番目の画像はアーティファクトです。下部に線やバンディングがあることに注意してください。同じ画像、同じコード、異なる結果、私は困惑しました:

http://i.imgur.com/C6LnoWj.png <-アーティファクトなし

http://i.imgur.com/EBj26kG.png <-アーティファクト

私が言ったように、どこから始めればよいかわかりません。これは、(0,0)、(0,1)、(1,0)、および (1,1) のテクスチャ座標を持つ基本的な 2 つの三角形のスプライトです。投稿すべきコードについて何か提案があれば、よろしくお願いします

編集:

これが私のテクスチャ読み込みコードです。

CGImageRef image = [UIImage imageNamed:filename].CGImage;
size_t width = CGImageGetWidth(image);
size_t height = CGImageGetHeight(image);
NSUInteger length = width*height*4;
GLubyte *data = (GLubyte*)malloc(length*sizeof(GLubyte));
CGContextRef context = CGBitmapContextCreate(data, width, height, 8, width*4, CGImageGetColorSpace(image), kCGImageAlphaPremultipliedLast);

CGContextTranslateCTM(context, 0, height);
CGContextScaleCTM(context, 1.0, -1.0);

CGContextDrawImage(context, CGRectMake(0, 0, width, height), image);
CGContextRelease(context);

GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

最初にメモリをゼロにするという提案に基づいて、malloc呼び出しをcallocに切り替えましたが、それで修正されたようです。

4

0 に答える 0