テクスチャがマッピングされたビルボードクワッドがあります。
これは基本的に透明性のあるテキストです。
ビルボードは、カメラの視点から前後に浮きます。
ビルボードが離れる(そして小さく見える)と、実際のテクスチャにストロークの境界があるテキストのエッジの周りにちらつき効果があります。
これは、通常Xピクセル幅の画像がXの%としてのみ表示され、一部のピクセルをマージする必要があるため、補間が必要なためだと思います。私はそれが最も近い隣人か何かをしていると思いますか?誰かがこれを制御するためのopengl設定の正しい方向に私を向けることができますか?テクスチャの処理方法を調整することで、この影響が発生しないようにする方法があると思いますか?
私はそれが何かと関係があると思います:
GL_NEAREST_MIPMAP_NEAREST
しかし、これをMINフィルターに設定し、ミップマッピングを有効にしようとすると、テクスチャが非常にブロック状になり、ぼやけてしまいます...
私も試しました:
GL_LINEAR_MIPMAP_LINEAR
これは明らかにMINフィルターのトリリアーフィルターですが、表示すると画像が非常にぼやけます。(非常に低解像度のテクスチャのように見えます)私が間違っていることについて何か考えはありますか?
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); // trilinear
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
その他のコード:
// Allocated memory needed for the bitmap context
spriteData = (GLubyte *) calloc(width * height * 4, sizeof(GLubyte));
// Uses the bitmap creation function provided by the Core Graphics framework.
spriteContext = CGBitmapContextCreate(spriteData, width, height, 8, width * 4, CGImageGetColorSpace(spriteImage), kCGImageAlphaPremultipliedLast);
// After you create the context, you can draw the sprite image to the context.
CGContextDrawImage(spriteContext, CGRectMake(0.0, 0.0, (CGFloat)width, (CGFloat)height), spriteImage);
// You don't need the context at this point, so you need to release it to avoid memory leaks.
CGContextRelease(spriteContext);
// Use OpenGL ES to generate a name for the texture.
glGenTextures(1, &spriteTexture[textureCount-1]);
// Bind the texture name.
glBindTexture(GL_TEXTURE_2D, spriteTexture[textureCount-1]);
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Specify a 2D texture image, providing the a pointer to the image data in memory
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);
// Release the image data
free(spriteData);
テクスチャは512x512です。
MINフィルターを使用した場合のぼやけの例:
最小フィルターにGL_NEARESTを使用する場合、縮小としてアニメーション化すると、上記のようにシャープで厄介な双線形とちらつきが発生します。