OpenGLを使用してGameOfLifeを作成する必要がありますが、問題が1つあります。このシミュレーションの全世界は100x100セルですが、左端と右端を接続し、上下も接続する必要があります。問題は、カメラを使用してどのように表示するかです。右端がウィンドウの中央にある場合、私は世界の右側だけを見ているのですが、左側も見る必要があります。
タスクの仕様は次のとおりです。C++、WinApi、およびglOrthoを備えたOpenGL 1.1
世界の外側の座標を内側に変換するシェーダーを使用します。直交投影を使用しているため、フラグメント シェーダーでモジュロ計算を使用して達成するのはかなり簡単です。
世界は 100x100 しかないので、キラー グラフィックス (色付きの四角形?) は優先事項ではないと思いますが、シーンを 2 回レンダリングするだけでもそれほど難しくはないはずですよね? たとえば、カメラが右端のみを見ている場合、シーンの右端の正方形のみを描画し、その画面の左端の正方形を画面の端のすぐ右に描画します。次に、カメラがグリッドの境界を越えて拡張したら、カメラの x 値を 100 減算します (または、左側に移動する場合は加算します)。シームレスになり、必要な効果が得られます--私が何かを見逃していない限り、その場合は教えてください。
もう 1 つのオプションは、ゲーム オブ ライフをテクスチャにレンダリングし、そのテクスチャ (両方の軸に沿って繰り返すように設定) を画面にレンダリングすることです。これはおそらく、より簡単で高速なオプションです。RGB データをバッファ (バイト配列、長さ 3*3*100*100) に書き込み、そのバイト配列をテクスチャにマップするだけです。その方法については、nehe.gamedev.com の従来のチュートリアルを含め、おそらく大量のチュートリアルが見つかるはずです (ちなみに、Nehe は素晴らしいリソースです)。
テクスチャ アプローチを選択した場合は、カメラ演算も必要ありません。クワッドにマップされたテクスチャの座標を変更するだけで、自動的にラップされます。