2012-03-21 13 views
1

私はOpenGL(OpenTK)とC#で2Dゲームを開発しています。 私は星と霧で構成されたランダムな背景が好きです。ゲームのランダムな背景を生成する

私の投影の途中には宇宙船があります。 宇宙船はどの方向にも移動できます。 背景もいずれの方向にも動的に生成されます。 私の問題はパフォーマンスです。私は小さな エリアのために48000の頂点を (.pngテクスチャの6000の長方形)レンダリングしています。そして、私の宇宙船が動いているので、その地域は成長します。 MY PC:CPU 4コアx 2300mhz、GeForce 9800 GTX +、それでもなお が遅いです。それは普通ですか?

私の考えでは1つの解決策があります。領域をレンダリングし、背景テクスチャのビットマップを作成します。

もっと良い解決策があるかもしれません。または、あなたが背景のテクスチャを動的に作成するという短所を教えてください。

答えて

1

あなたはビューの提出を4x4としましょう。

したがって、1x1のピクチャから構成されたピクチャ5x5をレンダリングし、画面上に中央に配置する必要があります。

あなたの宇宙船が動くときには、1x5の画像(1x1のサイズの5枚の小さな画像)を生成し、それをあなたの船の前に置く必要があります。船が左に移動する場合は、左にスペースの新しいpiceを置き、右からpiceを削除する必要があります。

+0

これは私が今行っていることです。写真はありません。私は本当の星と霧を生成します。背景の画像を構築するソリューションはすでに私の心の中にあった。 –

1

単にスクロールテクスチャの背景が必要な場合は、宇宙船の位置に基づいてテクスチャ座標を変更できます。よりユニークに見えるようにするには、透明なテクスチャをいくつか使用してレイヤーを作成すると、視差効果が得られます。

星については、GL_POINTSを使用します。スターが表示可能な画面の端から落ちたら、反対側に表示されます。わたしたちが知っているように、星はすべて同じ距離離れているわけではないので、あなたはもう一度異なる速度でそれらを持つことができます。

私はもっと詳しくはできませんが、私は仕事中です。

+0

申し訳ありませんが、スクロールテクスチャの解決策は私のためではありません。ゲーマーは、バックボーンが繰り返されていないと感じている必要があり、宇宙船が正しい位置に戻ると常に同じです。 –

+0

解決策は、宇宙全体を描くことではありません。クワッドに分割している場合は、画面に表示されているものだけを描画する必要があります。 48000の頂点をレンダリングするだけで背景があまりにも多くなる – MadcoreTom

+0

thats right、changed、それを変更しました。コレクションは大きくなります。すべてのクワッドに星のコレクションがあり、表示中にのみレンダリングバッチに追加されます。あなたは答えとして何か違うものを書くので、私はあなたを受け入れることができません。 –

関連する問題