タグ付けされた質問 「graphics-programming」

コンピュータ画面上の情報の視覚的表現に関連するプログラミング。


9
2Dグラフィック-スプライトシートを使用する理由
スプライトシートからスプライトをレンダリングする方法の例を見てきましたが、2Dゲームでスプライトを処理する最も一般的な方法である理由を理解していません。 特定のスプライトタイプの各アニメーションフレームを独自のテクスチャとして扱うことで作成したいくつかのデモアプリケーションで、2Dスプライトレンダリングを開始しました。このテクスチャのコレクションは辞書に保存されています。これは私にとってはうまくいくようで、アニメーションをgif / mngファイルとして作成し、フレームを個々のpngに抽出する傾向があるため、ワークフローにかなり適しています。 個々のテクスチャからではなく、単一のシートからレンダリングすることに顕著なパフォーマンス上の利点はありますか?1秒間に数百万のポリゴンを画面に描画できる最新のハードウェアでは、数十ダースの50x100px長方形を処理する2Dゲームでも問題になりますか? テクスチャをグラフィックメモリにロードしてXNAで表示する実装の詳細は、かなり抽象化されているようです。私が知っているのは、ロードされたときにテクスチャがグラフィックデバイスにバインドされ、ゲームループ中にテクスチャがバッチでレンダリングされることです。ですから、私の選択がパフォーマンスに影響を与えるかどうかは明確ではありません。 私は、ほとんどの2Dゲーム開発者がそれらを使用しているように見えるいくつかの非常に良い理由があるのではないかと疑っていますが、その理由はわかりません。


8
ゲームエンジンがクワッドを使用する代わりにモデルを三角形に変換するのはなぜですか?
私はMayaを使用してアニメーションや映画を中心としたプロジェクトに取り組んできましたが、ビデオゲーム開発に関する研究にも注力しています。とにかく、私は教授の一人と話していましたが、すべてのゲームエンジン(私が知っている)がなぜ三角形に変換されるのかわかりませんでした。 モデルを4面ポリゴンとして残すのに比べて、ゲームエンジンが三角形に変換する理由を知っている人はいますか?また、これを行うことの長所と短所(ある場合)は何ですか?



1
シャドウマッピングが標準である理由
私は貿易のプログラマですが、ゲーム開発にはほとんど触れていません。私はしばらくの間この質問をしてきましたが、今はゲーム開発を検討しているので、尋ねるのに良い時期だと思いました。 ゲームがシャドウを作成するために、シャドウマッピングが排他的な方法であるように見えるのはなぜですか?率直に言って、ひどく見えます。シャドウ設定が最大化された最新のゲームでさえ、非常に注意をそらすギザギザのブロックyシャドウがあります。 11年前に作成されたDoom 3は、この質問が投稿された同じ週にリリースされたAAAゲームを含む、これまでに見たどのシャドウマップの実装よりもはるかに優れたシャドウボリュームを使用しました。Doom 3のサードパーティ製のMODは、シャドウのエッジをさらに柔らかくし、視覚的な印象をさらに高めました。 シャドウボリュームなどの実装には、何らかの技術的な問題や制限がありますか?シャドウマップの実装は非常に簡単で、開発者は他に何も考慮していませんか? このテーマについて私が見つけた唯一の情報は、ボリュームを構成するポリゴンが非常に大きくなり、要求が厳しくなることです。おそらくシャドウボリュームにははるかに高いシステム要件がありますが、その場合、2004年にシャドウボリュームを使用することでどのように逃げましたか? この質問は、シャドウマッピングとシャドウボリュームに固有のものではありません。それらは完全な製品で使用された2つだけであり、他のテクニックに関する多くの情報を見つけることができませんでした。

3
手続き的に生成されたマップで湾と海峡をどのように決定できますか?
ボロノイセルを使用して、定義済みの海面と信頼できる高さマップを使用して、手順で生成されたマップを取得しました。 これまでのところ、土地、海、湖、川、河口、合流点、山、バイオームなどの特定の地理的特徴のラベル付けに成功しています。バイオームにはツンドラ、寒帯林、草原、温帯林が含まれます。他にもいくつかのバイオームがありますが、私の目的にとっては今のところ重要ではありません。 次に湾と海峡にラベルを付けたいのですが、これを適切に行う方法に迷っています。湾とは、海に直接つながる窪んだ沿岸の水域です。 海峡は、海の2つの部分を結ぶ自然に形成された狭い水路です。基本的に、2つの土地がほとんど接触しており、両側に海があります。「チャネル」とも呼ばれます。 機能を決定するには、次のようにタイプ別に機能をループします。 for each (var feature:Object in geography.getFeaturesByType(Geography.LAND)) // loop through lands for each (var cell:Cell in feature.cells) // loop through cells for each (var neighbor:Cell in cell.neighbors) // loop through a cell's neighbors trace(neighbor.hasFeatureType(Geography.LAND));

2
HLSLで広角/魚眼レンズを作成するにはどうすればよいですか?
さまざまな四肢の広角レンズの効果を達成するために実装する必要がある概念は何ですか? コンテンツパイプラインのさまざまな段階を参照する擬似コードと具体的な説明、およびソースコードからHLSLに渡す必要がある情報は非常に役立ちます。 また、広角レンズの実装と魚眼レンズの違いは何ですか?

3
このスタイルの2D「グロー」グラフィックを作成するにはどうすればよいですか?
XNAで2Dスプライトベースのゲームを構築する基本に慣れています。すべてのオブジェクトは、移動する.png画像です。 たとえば、スーパーレーザーレーサーに似たアートスタイルを利用した2Dゲームを開発するには、次に何を学ぶ必要がありますか。 このスタイルの他の例には、Frozen Synapse、Geometry Warsなどが含まれます。 このスタイルを「2D抽象光るジオメトリ」またはそのようなもので説明します。 これらのタイプのゲームの多くの効果はパーティクルシステムを介して達成され、またいくつかのことはまだすべての「グローイング」などを見るためにグラフィックエディタで描画された単なるスプライトであることがわかります。 しかし、残りはおそらくDirectXの描画呼び出しを行い、カスタムシェーダーなどを実装することによって行われますか? そうですか?この方向に進むために次に何を学ぶべきなのか、どのような質問をするべきなのか、私にはよくわかりません。

3
ほとんどの主要なゲームエンジンがアニメーションテクスチャにgifを使用しないのはなぜですか?
アニメーションシートまたはGifを使用する方が良いですか?アニメーションシートに対するGifsの利点の1つは、コードと適切なティックの更新のために、フレームが速すぎたり遅すぎたりすることを考える必要がないことです。 Gifを使用する場合の短所と、Gifsを超えるアニメーションシートの利点は何ですか?

8
OpenGL、SFML、SDLには、ソフトウェアレンダリングと比べてどのような利点がありますか?
フレームワークなどを使用せずにCasey Muratoriがゲームエンジンを作成するHandmade Heroストリームを見始めました。昨日、私は彼が画面に画像が描かれる方法を示した部分に着きました。私が理解した限り、彼は描画したい画面のサイズと同じ大きさのメモリを割り当てました。そして、彼はビットマップを作成し、それを割り当てたバッファメモリに渡し、OS固有の関数を使用して画面に描画しました。 これは非常に簡単です。GameMakerを使用し、Love2Dに変更し、Sprite Kitで少し作業しましたが、この時々混乱するレイヤーの下で実際に何が起こっているのか常に疑問に思っていました。 それを考えると、単にバッファを割り当て、ビットマップを渡して画面に描画するだけでよいのに、なぜグラフィックライブラリ(OpenGL、SFML、SDLなど)を使用する必要があるのでしょうか。 その後、画面に明確なものを描画したい場合は、ビットマップに書き込むだけで、バッファに渡されます。私はプログラミングを始めたばかりですが、これは非常に簡単に思えます。私が間違っている場合は修正してください。

3
グラフィックスAPIを厳密に抽象化しすぎているかどうかを知るにはどうすればよいですか?
複数のグラフィックスAPIをサポートするレンダラーを作成する場合、通常、OpenGL、Vulkan、D3D11などのグラフィックスAPIに関連付けられた何らかの低レベルライブラリでコードを抽象化します。 これらは互いに非常に異なる動作をするため、適切な汎用APIを作成することが不可欠になります。サポートしたい各APIの基本機能を実装する「バックエンド」と、プログラマーが何かを描画するために使用する「フロントエンド」を通常使用することを読みました。画面。 タイトな抽象化をしすぎているかどうかを知るにはどうすればよいですか?

2
通常、一度にいくつのテクスチャをバインドできますか?
私はゲームエンジンを開発していますが、最新の(Shaderモデル4+)ハードウェアでのみ動作します。私はそれを使い終えるまでに、それはそのような不合理な要件ではないだろうと考えています。 私の質問は、最新のグラフィックカードに一度にいくつのテクスチャをバインドできるかということです。16で十分でしょう。ほとんどの最新のグラフィックスカードがその数のテクスチャをサポートすると期待できますか? 私のGTX 460は32をサポートしているように見えますが、それが最新のビデオカードの代表かどうかはわかりません。

6
ゲームエンジンで高度な技術を使用しないオプションを追加する理由はありますか?
私はゲームエンジンを開発しており、異方性フィルタリング、アンビエントオクルージョン、アンチエイリアシングなどのゲームテクノロジーを発見し、研究しています。 通常、ゲームでは、これらの設定のオンとオフを切り替えることができます。ただし、これらの設定がプラスのみを追加する場合、開発者のゲームエンジンでこれらのトグル値を追加する理由はありますか? パフォーマンスが主要な要因であることは理解していますが、これらの設定を常に変更できる理由は他にもありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.