2

OpenGl(2Dのみ)でテクスチャを使用するのに問題があります

。レベル(サイズ15x15)を表示したいのですが、フィールドごとに異なる値/画像を使用できます。
私は約100の異なるフィールドタイプを持っており、レベルデザインに従って、タイプごとに異なる画像を表示する必要があります。
可能なすべてのフィールド(100ファイル)に対して単一のtga-Imageを使用すると、すべてが正常に機能しますが、現在はすべての画像を1つのファイルにまとめており、フィールドタイプに応じて、常に異なる部分を表示しています。画像。

問題:画像内の細い線が表示されないことがあり、異なるスプライトの間に、グラフィック全体を醜くする黒または灰色の線が存在することがよくあります。

この問題を簡単に解決する方法はありますか?
(たぶん、tga-imageを1つのGLuintにロードしてから、100の異なるGLunintに分割する必要がありますか?またはレンダリングを改善する設定がありますか?またはtga-imageファイル自体の解像度を変更する必要がありますか?)

これが私の画像の一部です-ファイル、すべての要素の解像度は220x220ピクセル->写真全体:2200x2200ピクセル スプライト-画像

そしてそれがOpenGl出力です:
OpenGl-出力

私は本当に何百もの画像ファイルを持ちたくありません。特に、これらすべてのファイルのロードには多くの時間がかかり、解決策があると確信しているためです。

編集:

次の設定を使用しています。

// Specify filtering and edge actions
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);

EDIT2:

ここで、GL_LINEARをGL_NEARESTに変更し、テクスチャ座標にハーフテクセルを追加しました。画像間に線がなくなりました:)
しかし、まだ別の問題
ピクセルバグ
があります。画像内の小さな要素(線)が正しく表示されません。
これはどのように見えるべきかです:
howitshouldlook

4

2 に答える 2

2

「OpenGLがテクセルセンターでテクスチャをサンプリングすることを覚えておいてください」

ここで答えを見てください: OpenGLESテクスチャ座標がわずかにオフ

于 2012-10-29T14:52:23.890 に答える
0

テクスチャのエッジに沿った線を避けるために、テクスチャにパディングピクセルを追加する必要があります。そのため、OpenGLが描画するテクスチャからピクセルをサンプリングするときに(ファイル内よりも小さいサイズでレンダリングする場合はミップマップレベルを含む)、誤った色のピクセルが使用されることはありません。

于 2012-11-13T10:44:48.917 に答える