0

OpenGL ES を使用して Android でビデオゲームを開発しています。テクスチャのサイズ変更に問題があります。

私は自分のゲームがあらゆる解像度に対応できるようにしたいと考えています。このために、ゲームの解像度と画面の解像度の関係を表す定数を次のように作成しました。

Display display = getWindowManager().getDefaultDisplay(); 
KTE.SCREEN_WIDTH = display.getWidth();
KTE.SCREEN_HEIGHT = display.getHeight();
KTE.REDIMENSION_X = KTE.SCREEN_WIDTH/KTE.GAME_WIDTH; 
KTE.REDIMENSION_Y = KTE.SCREEN_HEIGHT/KTE.GAME_HEIGHT;

この定数を使用すると、さまざまな画面サイズを使用して同じ結果が得られます (前のコードで計算した定数を使用してすべてのテクスチャのサイズを変更します)。

問題は、GAME の解像度を下げてすべてのテクスチャを大きくしたかったことです。再次元定数は小数が多い浮動小数点数であるため、テクスチャの周りに黒いピクセルが表示されます。これらの黒いピクセルはすべて、この計算中に残った...

以前にこの問題を抱えた人はいますか?ゲームを再次元化するためのヒントはありますか? 私は多くのことを試しましたが、本当に行き詰まっています。ありがとう。

4

1 に答える 1

0

テクスチャの「再次元化」が期待どおりに機能していないようです。たとえば、テクスチャのデータのサイズを変更するだけで、テクスチャ自体は以前と同じサイズのままである場合があります。これにより、境界の黒いピクセルが考慮されます。KTE.REDIMENSION_X/Y 係数を使用してテクスチャを作成していることを確認し、テクスチャに書き込むときは、テクスチャの端に書き込んでいることを確認してください。

ゲームのリディメンションとは、レンダリングする画面サイズのことですか? このためには、 glViewport(...) への単純な変更と、シーンを表示するために作成した透視錐台またはオルソを変更する必要があります。これら両方の変更は、通常、画面サイズが変更されたときに行われます。解像度を上げる場合を除いて、テクスチャの変更は通常必要ありません (たとえば、2x ピクセルの iOS Retina ディスプレイの場合)。

于 2012-11-14T12:16:09.837 に答える