2017-05-18 2 views
0

ばかり。 テクスチャクワッドにズーミングするとき、テクスチャがピクセル化代わりのぼやけとなります。私はミップマップがないことによると思いますか?テクスチャは、私は、単純なOpenGLアプリケーションを作成したピクセル化の代わりに、ぼやけ

私はこのような私のテクスチャを作成:

glGenTextures(1, &mTexture); 
    glBindTexture(GL_TEXTURE_2D, mTexture); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 

そして、私はこのようなPBOからそれを更新します。

glBindTexture(GL_TEXTURE_2D, mTexture); 
    glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, mPboIds[mPboIndex]); 

    glTexSubImage2D(
    GL_TEXTURE_2D, 
    0, 0, 0, 
    frame->GetWidth(), 
    frame->GetHeight(), 
    GL_RGB, 
    GL_UNSIGNED_BYTE, 
    0); 

私はGL_TEXTURE_MAG_FILTERとGL_TEXTURE_MIN_FILTERはミップマップを生成するために、OpenGLを言うだろうと思いました。そうじゃないの? テクスチャのミップマップ生成を有効にするにはどうすればよいですか?

答えて

1

倍率フィルタを使用すると、テクスチャのズームを増やす際に使用され、2つの値持つことができます。

  • GL_NEARESTを - に(マンハッタン距離で)最も近いテクスチャ要素の値を返します。指定されたテクスチャ座標。

  • GL_LINEAR - 指定されたテクスチャ座標に最も近いテクスチャ要素の加重平均を返します。これらはGL_TEXTURE_WRAP_SとGL_TEXTURE_WRAP_Tの値に、正確なマッピングに応じて、テクスチャの他の部分からラップされまたは反復アイテムを含むことができます。

あなたのケースでは、間違った倍率フィルタを使用しています。ピクセル化された効果を最小にするにはGL_LINEARでなければなりません。あなたがズームを減少させ、テクスチャが離れすぎて視聴者からなることを始めるときのスムーズな移行を取得したいしたいとき

ミップマップは、一方のために使用されています。ミップマップに関する詳細情報を取得するには、セクションのGL_TEXTURE_MIN_FILTERで、glTexParameterマニュアルページを見ることができ、そしてどのようにglGenerateMipmapマニュアルページに生成します。

関連する問題