iPhoneのOpenGL Es 1.1でピクセルベースのアート(レトロタイルとアートと考える)に問題があります。OpenGL ESピクセルアート - スケーリング
タイルは、各ビットが設定されているかどうかを示す8バイト(各行に1バイト)を使用して表されます。例えば
番号8のタイル:
0 0 0 0 0 0 0 0 ->
0 0 1 1 1 0 0 0 -> xxx
0 1 0 0 0 1 0 0 -> x x
0 1 0 0 0 1 0 0 -> x x
0 0 1 1 1 0 0 0 -> xxx
0 1 0 0 0 1 0 0 -> x x
0 1 0 0 0 1 0 0 -> x x
0 0 1 1 1 0 0 0 -> xxx
iPhone上のOpenGLにこれを変換
glDrawArrays(GL_POINTS, 0, 64);
ロジックが正しいが、問題は、それがdoesnのある使用レトロな効果を与えません。私は塊状の/レトロなスタイルのより多くを探していた。私は()私はそれがGL_Disable(POINT_SMOOTHだったと思うが、この効果のESは何も変わっていないので、かどうかわからない。)。私は、ピクセルが正方形として表示される原因となるピクセルのスムージングをオフにすることができますことを読んで私が見つけ
可能な解決策を
- フレームバッファを使用して、より小さい解像度にレンダリングし、レンダリングバッファに拡大します。私はこれがどのように行われているのか、それがうまくいくのか分かりません。
- ピクセルからイメージを作成し、そのイメージからテクスチャを作成し、最後にそのテクスチャをレンダリングします。各画素について
- を、水平方向と垂直方向の両方の代わりに二つの画素を描画する:iがオフ考え
可能な解決策。
- 三角形を使用して各ピクセルを正方形として描画します。
- GLPointSizeを使用する - 2に設定すると正しい効果が得られますが、座標が崩れます。整列が難しくなります。
最終的に私はタイルを提示することを希望:
これはどのようにOpenGLとピクセルの仕事を理解し、私のより多くのであり、私はこれを動作するようにゲームボーイエミュレータを使用しています。もし誰かが、グラフィックスを手動で作成し、それらをテクスチャとしてロードするという正しい方法を考えているのであれば、実行可能な答えではありません。
右。 'GL_POINTS'を描画すると、個々のジオメトリの部分を描画します。バッファの中で最も小さなものが描画されます。 'GL_TRIANGLES'を描画すると、ディスプレイの連続部分に描画され、そこに含まれるすべてのピクセルが何らかの価値を得るようにします。あなたが望むのは、低解像度のグラフィックスがポイントサンプリングで高解像度にスケールされていると仮定すれば、それらを元の解像度でアップロードし、GL_NEARESTを使って出力を表現したい領域に描画するだけです。そのすべてはあなたがすでに把握しているように見えます! – Tommy