2013-04-29 12 views
9

私のユーザーの非常に小さなパーセンテージ(<%)がゲームのOpenGL UIに奇妙な歪みを経験しています。ピクセル完全投影設定:奇妙なOpenGLピクセルの欠陥

glViewport(0, 0, clientSizeWidth, clientSizeHeight); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
glOrtho(0, clientSizeWidth, clientSizeHeight, 0, -1.0, 1.0); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
double transAmount = 0.375; 
glTranslated(transAmount, transAmount, 0.0); 

システムに問題が発生しているようです。そして、私は彼らのシステムについての詳細を収集するのに失敗しましたが、彼らは成功して同様のOpenGLゲームを実行できると信じています。だから、私のコードは間違っていると思う。ここで

視覚的アーティファクトの写真です:

without visual artifacts

私ものの:

visual artifacts

そしてここでは、視覚的アーチファクト(はOSの違いを無視する)ことなく、絵でありますゲームは最終レンダリングを2倍にスケーリングします.1倍レンダリングが実行された後にglSubTexImage2Dへの1回の呼び出しで行いますrmed。これは、最初のスクリーンショットのアーティファクトがピクセルの倍増に先立って存在することを意味します(そのため、アーティファクトもピクセルが2倍になります)。したがって、ピクセルを2倍にすること自体が問題の原因になることはありません。

これを引き起こす可能性のある考えはありますか?私は現在、テストする方法がありません。圧倒的多数のユーザー(自分自身を含む)は視覚的な人工物を経験しません。

編集(4月30日):ポーランドのユーザーがビデオカードにこれらのアーティファクトを経験したと通知しました。これは「nVidia 9500 GS」です。これが9500M GSまたは9500 GTを意味するかどうかはわかりませんが、両方ともかなり現代的です。

+0

「0.375」はどこから来たのですか? –

+0

@BenVoigtこれはOpenGL Redbookのものです。 [this](http://glprogramming.com/red/appendixg.html#name1)または[this](http://msdn.microsoft.com/en-us/library/ms537007%28VS.85%29)を参照してください。 aspx)。 –

+3

それは1)いくつかの表面でのみ起こるという事実2)異なる表面で異なるスケールで起こることは、問題のコードがどこにあるかについての大きなヒントになるはずです。 – Patashu

答えて

6

90%の確率で、この問題が発生したユーザーは、デフォルト以外の値でnVidiaのコントロールパネルにテクスチャ品質の切り替えを行います。あなたのケースでは、GL_NEARESTはそのような問題を避けるために役立ちます(アップスケーリングされた画像のために隣接テクスチャを平均化しません)。最初に、nVidiaコントロールパネルの設定をデフォルトに設定して、理論を証明するか壊すかを彼に依頼してください。

+0

ty ty ty ty!特定のnVidiaのオーバーライドは「アンチエイリアス - モード」と思われ、私はそれをテストし、同様のピクセルの不完全さを持っています。ケースが解決! –

関連する問題