タグ付けされた質問 「directx」

DirectXは、主にゲーム開発者を対象としたMicrosoftのマルチメディアAPIのセットです。DirectXコレクション内の人気のあるAPIには、Direct3D、XInput、およびXAudioが含まれます。

1
プレイヤーと敵に反応するパーティクルを作成するにはどうすればよいですか?
現在、C ++で記述した独自のゲームエンジンを使用してゲームを作成しており、最新のdirectx SDKを使用しています。 このゲームはトップダウンのスペースシューティングゲームであり(かなり興味深いひねりを加えたものです)、プレイヤーが飛び回るような星雲効果を探しています。プレイヤーが船に飛び込んでくると、何百もの粒子が邪魔にならないように、触り心地の良い触感を試してみたいと思います。XBLAのGeomtry Warsで、パーティクルがプレイヤーの邪魔にならないようにする方法がやや気に入っています。 私はC ++に関しては経験豊富なプログラマーです。ただし、この効果の実装を開始する方法はわかりません。誰かが私が検討したいかもしれないクールなアイデアやデザインの選択肢を持っていますか?どんな深さでもお好きなところにお気軽にお答えください。
38 c++  directx  particles 

9
OpenGLの勉強を続けるか、DirectXに切り替えてゲーム業界に就職するチャンスを増やすべきですか?[閉まっている]
OpenGLとLinuxを使用してグラフィックプログラミングを学んでいます。私はほとんどの概念にかなり精通していますが、私の知識をさらに深め、最終的にはゲーム開発、特にゲームエンジン開発のキャリアを追求したいと思います。 これまでのところ、ほとんどのゲームスタジオはDirectXを使用してWindows用のゲームを作成しているようです。 編集:OpenGL対DirectXの質問が以前ここで尋ねられたことは知っていますが、私が望む視点で答えが見つかりませんでした。 編集2:すべての応答/コメントを読んだ後、OpenGL / GLSLを使用してグラフィックスをさらに掘り下げていくことにしましたが、APIの基本を理解するために、DXでも試してみます。あなたが私に与えてくれた答えと洞察に感謝します。

4
ゲームストーリーイベントプログラミング
c / c ++およびDirectXでゲームエンジンを開発しました。 マップ用のタイルエンジン、アニメーションプレーヤー/ NPCスプライト、NPCとの会話、メニュー、およびレベル変更がありますが、ゲームはなく、空っぽです。 私は周りを見回して流行語の答えを聞き続けていますが、ゲームにストーリーを実装する方法を知りたいです。 一部の人々は、ゲームで利用可能なすべてのアクション/状態を管理するフラグを保持する保存ファイルを言っていますが、これはばかげて聞こえます。 それは少し野心的ですが、私は古いポケモン/ファイナルファンタジーゲームのようなゲームを得ることを目指しています。 これらのゲームがどのように機能するか、または理論がどのように使用されるかを知っている人はいますか? 私はしばらく探していましたが、人々からのインプットを本当に感謝しています。
28 c++  directx 

3
チームはソースファイルの上書きをどのように防止しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 4年前に閉鎖されました。 たとえば、ゲームエンジンなどが複数の人によって同時に処理されているときに、上書きをどのように防ぐことができるのか、ということが起こりました。 開発者1が作業してAudio.cppおり、開発者2も作業をしているとしましょう。Audio.cppこれは、一般的に大規模なチームで上書きに対処するためにどのように管理されていますか?(つまり、開発者2がファイルを開くのを停止して、開発者1が終了するまで)
26 project-management  version-control  teamwork  java  2d  collision-detection  vector  collision-resolution  unity  directx  directx11  directx10  xna  ios  monogame  windows-phone-8  xamarin  design-patterns  oop  xna  collision-detection  collision-resolution  bounding-boxes  rotation  collision-detection  mathematics  javascript  algorithm  separating-axis-theorem  xna  2d  monogame  image  xna  directx  graphics  performance  opengl  2d  3d  c++  directx11  unity  c#  scale  c#  xna  collision-detection  collision-resolution  leaderboards  scoring  glsl  srgb  tilemap  three.js  tiled  unity  physics  xml  dialog-tree  xna  c#  .net  opengl  lwjgl  vbo  physics  graphics  procedural-generation  simulations  water  opengl  java  textures  lwjgl  frame-buffer  unity  unity  2d  collision-detection  collision-resolution  trigonometry  java  android  libgdx  xna  c#  frame-rate  c++  unreal-4  procedural-generation  java  graphics  lwjgl  slick  c++  software-engineering 

3
ボクセルレンダリングの場合、より効率的なものは何ですか:既製のVBOまたはジオメトリシェーダーですか?
かなり静的なボクセル配列を考えると、より効率的です:CPUを使用してVBOを事前に生成し、ボクセルフェイスをレンダリングします(現時点では、マーチングキューブのような高度なレンダリング形式は無視します)。その場で顔? 変化するボクセルを更新することについてはそれほど心配していませんが、もちろんVBOを再構築する必要がないため、GPUバージョンの利点です。また、GSアプローチはもう少しモダンだと感じています:) 一方、最新のGPUでGSがラスタライズパイプラインと実際にどのように機能するかについては詳しく見ていない。頂点を一種のストリームキャッシュに出力しますか、それとも頂点が通常のGPUメモリに書き込まれますか?後者の場合、オンザフライで生成すると、利用可能な帯域幅と処理能力が残りのGPUタスクから減少する可能性があり、CPUで実行する方が有益です。

7
開発キットにアクセスせずにPS3 / Xbox 360を体験するにはどうすればよいですか?
私は、PS3、Xbox 360の業界プログラミングを始めようとしている新進気鋭のゲームプログラマです。主な問題は、潜在的な雇用者に自分のスキルを実証する必要があることですが、PS3またはXbox 360の開発キットにアクセスせずに、これは直接不可能です。 私の質問は、コンソール開発者に私のスキルを示す最良の代替方法は何ですか? DirectX for WindowsのC ++プログラミングはXbox 360のプログラミングスキルに近いように見え、OpenGLのC ++プログラミングはPS3プログラミングスキルに比較的近いようです。残念なことに、Xbox 360とPS3の両方が独自の独自のライブラリを実際に持っているかのようにWeb調査から、したがって、これは100%の実りある努力ではないようです。このアプローチは最も近いように見えますが、最も時間がかかります。さらに、実際にコンソール上で何かを実行しているわけではありません。 一方、XNAでのプログラミングには、ゲームが実際にコンソール上にあるという利点がありますが、これはDirectXの単なるラッパーであり、C# C ++。 潜在的な雇用主にどのようなゲームデモが最も役立つかを知るために、業界内から知識や経験を持っている人はいますか?DirectX、OpenGL、XNA、Unreal Engine、Unity3d、FlashなどのC ++など?1日は非常に多くの時間しかないので、自分の努力をどのように導くかを知りたいです。 私の直感では、Xbox 360で使用されているものに近いように思えるので、DirectXが最良の選択であると思いますが、別の言語/エンジンで優れたデモを行うことが同様に優れている場合、明らかに時間がかかりません別のルート。 あなたの助けとアドバイスを事前に感謝します!

3
通常、ゲームの1つのフレームでアクティブなシェーダーをいくつ使用する必要がありますか?100のような5つ以上?
現代のゲームでは、1つのシーンで同時にいくつのシェーダーが通常アクティブになっていますか?複数のシェーダーが使用されており、各フレームでゲームが切り替えられることを知っています。シェーダーを介してオブジェクトを描画することは一般的です。 すべてのオブジェクトをシェーダー1で描画します シェーダー1からシェーダー2に変更する シェーダー2ですべてのオブジェクトを描く それでも、特にシーン全体のグローエフェクト、テクスチャへのレンダリングなどのエフェクトの場合、それほど単純ではないことはわかっていますが、ほとんどの場合、そのように動作すると想定できますか?シェーダーの切り替えは高価な操作であるため、「シェーダーごとのグループ化」アプローチが適しています。 片側からは、シーンを高速でレンダリングするため、シェーダーを多くしすぎることはできません。一方、スキン、金属、水などには、多くの異なるシェーダー(または枝を持つ超シェーダー-非常に似ています)が必要です。 理論的、現代的、三人称のPC用3D探偵ゲーム(重要な場合はDirectX 11)は、いくつの(そしてどの)シェーダーを使用しますか?いくつかの「フレームX」で、アクティブのみをカウントする100個のアクティブシェーダーのように、5、20、またはそれ以上ですか?私はそれが1つの数字ではないことを知っていますが、PCゲームを考慮して、どのような規模と要因が重要なのかと思います。 私のサンプルゲームでは、フレームごとに約9〜11を使用します(別の小さなシェーダーまたは1つの超シェーダーとしてカウントします-今は関係ありません)。 スキンシェーダー アイシェーダー(多すぎない? メタルシェーダー グラウンドシェーダー 雪/雨シェーダー(必要な場合) ウォーターシェーダー(シーンに水が存在する場合) グローシェーダー(一部の特殊効果が含まれる場合のみ) 発光シェーダー(街灯など) 標準シェーダー(他のすべての場合は標準シェーディングのみ) 法線マップ付きの標準シェーダー 2Dシェーダー(GUIなど) それは「たくさん」ですか「あまり多くない」ですか?必要ないくつかの重要なシェーダーを忘れましたか?

7
モダンシェーダーブック?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 閉じた3年前。 シェーダーについて学ぶことに興味があります。シェーダーとは何ですか、いつ/何のために、そしてどのように使用するのか。(具体的には、水とブルームの効果に興味がありますが、シェーダーについては0に近いことを知っているので、一般的な紹介が必要です)。 数年前の本をたくさん見たので、それらがまだ当てはまるかどうかわかりません。現時点ではXNA 4.0をターゲットにしています(Shader Model 4.0のHLSLシェーダーを意味すると思います)が、一般にDirectX 11とOpenGL 4をターゲットとするものは役立つと思います。

7
2Dゲームの場合、Direct3DやOpenGLなどの3D APIを使用しない理由はありますか?
私はかなり長い間趣味のゲーム開発から脱出しました。私がやったとき、ほとんどの人はDirect Drawを使って2Dゲームを作成していました。私がやめた頃には、人々は、OpenGLまたはDirect3Dを使用した正射影が正しい方法だと言っていました。 特に携帯電話だけでなく、XNAプラットフォームでも2Dゲームの作成に戻ることを考えています。OpenGLを使用して何かを作成するには、3D開発に慣れるための(理想的には)小さな学習曲線が必要です。 それをスキップして、代わりにピクセルで塗りつぶす必要がある幅x高さのフレームバッファーがある2Dフレームワークで動作する理由はありますか?
20 2d  opengl  directx 

12
グラフィックスAPIの前の3D理論?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Game Development Stack Exchangeで話題になるようにします。 5年前に閉鎖されました。 私はソフトウェアエンジニアであり、キャリアをゲーム開発に向けたいと考えています。現在、C ++ / DirectXを使用して2Dに関する本を読んでいます。3Dに入ると、正しくやりたいと思うようになります。たとえば、3Dスペースについては何も知りません。したがって、APIだけを学べば、それを知っているかもしれませんが、それを使ってインタラクティブなミニ3Dワールドを開発できるかどうかはわかりません。私は、最新のシェーダーなどで回転木枠を持っているだけで成功したとは思わないでしょう。私の数学スキルは、trig / linear代数までで、まだ大学にいます。もっと数学が来ることを知っています。OpenGL / Direct3Dやその他の提案を取り上げる前に、3D理論の本を読むべきですか?APIが3Dゲーム開発を教えるものではなく、その後失われることを望まないことを知っています。私は非常に本志向なので、そこに提案があればそれでも問題ありません。考えを歓迎します。ありがとう!
19 graphics  c++  opengl  directx 

3
ピクセルシェーダーでフレームバッファーまたは深度バッファーから直接読み取ることができないのはなぜですか?
ピクセルシェーダーでフレームバッファーまたは深度バッファーをサンプリングさせておくと、非常に便利な機能になります。現在のピクセルの背後にあるものの深さまたは色を知ることができるだけでも役立ちます。 OpenGLとDirectXの両方でこれができないのはなぜですか?何らかのハードウェアの制限があると予想していましたが、アルファブレンディングではブレンドの計算にフレームバッファーの色を使用し、Zテストでは現在の位置で深度バッファーをサンプリングします。これらの値を直接公開しないのはなぜですか?将来これを見てみたいですか?
18 opengl  3d  directx  shaders 

2
本当に、本当に高解像度のディスプレイアレイのコーディング
私は、リアルタイムの「フルスクリーン」デモを作成して、5インチx 2インチの60インチ以上のLEDテレビ、つまり20メガピクセルのディスプレイで実行するという任務を負っています。 フル解像度でディスプレイ全体に広がる単一のWin7デスクトップを実行できるマシンと、かなりまともなビデオカードがあります。 私の質問は、ピクセルシェーダーが行うことになる途方もない量の作業とは別に、より適切なサイズのビューポートではない、DX10。*のその他の制限事項がありますか?来週までハードウェアにアクセスすることはできませんが、それまでにシステムのベンチマークに使用できる何かを書きたいと思っています。 更新 AMD EyeFinity(6出力)カードを束ねた1台のマシンでこれを機能させることができました-物事をスムーズに機能させるために、「最も簡単な」方法は、ウィンドウスパンディスプレイを持つディスプレイごとにDXウィンドウを作成することでしたいくつかのパフォーマンスの問題を引き起こしました-また、それぞれが2つのディスプレイを駆動するマシンのグループにタスクを分散させることで、かなりうまく機能しました。 驚くほど簡単でした。テストXNAアプリの場合、ゲームの状態(カメラの位置/方向など)をキャプチャするGameComponentを追加し、フレームごとにローカルサブネット全体でUDPスパムします。 そのコンポーネントにはModeスイッチ(送信または受信)があります。Receiveモードにある場合、UDPデータグラムをキャッチし、送信者からの情報でゲームの状態を更新します。Sendモードは状態パケットを送信するだけで、サービス/デーモンを介して、ノードがクライアントアプリを起動または停止します。どのクライアントも「マスター」として動作でき、クライアントをSendモードに切り替えると、他のすべてのノードにに切り替えるように要求しますReceive。人々がコントロールをめぐって戦っているときに何が起こるかを見るのはとても楽しいです。 別のすばらしい利点:必要に応じて一連のキーフレーム状態定義(場所、時間など)を処理し、ゲームエンジンで使用されているのと同じコードを使用して送信するコンソールアプリを作成しました。これにより、移動のスクリプトを簡単に作成したり、Webブラウザから変換を送信したりできます。 全体として、アプリの複数のコピーを同期して実行するには、約50行のコードが必要でした。いくつかの追加の複雑さは、各マシンのカメラ位置をオフセットし、いくつかの遠近感/投影の煩わしさを修正することから生じましたが、そのほとんどはノードごとの構成ファイルに帰着しました。

2
D3DX .dll hellの対処方法
各SDK更新から、多数のバージョンのD3DX dllがあり、各バージョンには一意の名前(D3DX dll名のリスト)があります。 多くの場合、人々にはバージョンがありません。そのため、DirectXと互換性のあるバージョンを使用している場合でも、D3Dベースのプロジェクトは彼らのマシンでは実行されません。 インストーラーを必要とせずに、ゲーム(小さな空き時間のプロジェクト、ゲームジャムエントリなど)を単純なzipファイルとして配布できるようにしたいと思います。ただし、かなりの割合のユーザーが、D3DX .dllエラーを検出できません。そして、インストーラーがなければ、Microsoftの公式ソリューション(DirectX Webインストーラー/アップデーター)は、実際にはあまりソリューションではありません。 残念ながら、MicrosoftはまだD3DXへの静的リンクのオプションを提供していません(これはすてきなクリーンソリューションです)。D3DXの使用を避けることは、特にシェーダーを使用している場合はあまり実用的ではありません(少なくとも、現時点ではOpenGLに切り替えていません) 誰もこのDLLの地獄を回避する賢い解決策を持っていますか?
16 directx 


1
流れるGPU計算水
私は土木工学のバックグラウンドを持ち、水理および水文解析を定期的に実行しています。彼らはそのようなことのために学位を売りますが、それは実際にロケット科学ではありません。私は最近、GPUの地形に水文および油圧プロセス全体を実装することを思いつきました。コンピューティングシェーダーを習ったのはごく最近のことなので、現在、並列GPUワークフローを設計するよりも、エンジニアリングの方が優れていることにこだわっています。 次の式を使用して、降雨イベント中に生成された水の量を計算できます。 Q (CF/S) = c * I (in/hr) * A (acres) 私は、最初の領域の「面積」の計算を超えて移動するのが困難です。 現在の実装の概要: 地形は、1ユニット間隔の頂点の規則的なグリッドです ハイトマップには、頂点ごとに1つのR32高さ値が含まれます 現在、私は4つの基本方向(対角線なし)のフローのみを許可しています Texture2D [int]を、既に分析した頂点のステンシルとして使用しています 現在のアルゴリズム: 地形ツールがアクティブで、現在はそうではないとき... 「ステンシル」をクリアします。 標高が最も低い地形全体をスキャンします。 その単一ポイントは、CS_Floodへの初期入力です。 CS_FloodはX軸パスを作成します。 各入力頂点は、X方向とX +方向の両方に最大2048回投影されます。 OOB座標で隣接する頂点を見つけると、この方向の地形のエッジが示されます。CurrentPointがBoundaryPointsバッファーに追加され、その方向の投影ループが終了します。これは簡単で、毎回うまく機能しました。 高さ> =現在の頂点の高さを持つ隣接する頂点は、ステンシルでマークされ、NextPassバッファーに追加されます。 高さ<現在の頂点の高さを持つ隣接する頂点は、リッジのピークを示し、投影ループを終了します。塗りつぶしの将来の反復があります、それの「裏」側まで、尾根のベースの周りに流れ、同じ尾根をもう一度検出します。 この目的のために、複数回検出されたピーク/リッジポイントはBoundaryPointにはなりません。 一度だけ検出されたピーク/リッジポイントはBoundaryPointsに追加され、その方向の投影ループは終了します。 CS_Floodは、X軸パスによって生成されたポイントを入力として使用して、同じコードでZ軸パスを作成します。 現在、CS_Floodは2つの方向を無期限に交互に継続します。最終的に、CS_Floodが完了し、NextPassバッファーが空になるたびに、ループ全体を終了します。 理想的には、その時点で、BoundaryPointsには、自然の排水分割で発生する各頂点が含まれます。境界内に着弾した水滴は、最終的に同じ低地点に流れます。水滴が着地すると、境界は「どこか他の場所」に移動します。 次に: ステンシルをクリアせずに、地形を再スキャンして、ステンシルのない最も低い頂点を探します。 CS_Floodを繰り返します。 ステンシルがいっぱいになるまで(または同様の)を繰り返します。 3Dはこれらの色を認識するのが困難です。これは、積分高度で等高線を示します :(エッジ近くのバームに囲まれた穴) 頂点を越えて排出する約10のユニークな方法があります。それぞれにユニークな色を与えます:( 目に見える円形のツールマーク、「リッジ」がきれいに表示されます) これは、CS_Flood、境界、またはそれ以外で生成されたすべてのポイントをPOINTLISTとして表示します。 アルゴリズムは常に ほとんど機能します。時には、それも正しく動作します。その他の場合、アルゴリズムは正しい形状に明確に含まれていますが、無期限にポイントを出力し続けます。3番目のスクリーンショットに見られるように、時々混乱します。私が見落としていた別の状況/要因がなければなりません。私の見落としや、問題を攻撃するためのより簡単な方法および/またはよりエレガントな方法の提案を見つけるのに役立つことを感謝します。 MissingPoint!検出されたすべての新しいBoundaryPointをNextPassバッファーに追加するアルゴリズムを帯域支援することで含めることができます。次のパスでは、そのバンドエイドによって生成されたポイントの99%がわずかなGPU時間を浪費し、どこにも行けず何もしないと判断します。最初のパスでは、LowestPointを他のNextPassポイントと一緒に送信することも、この特定のシナリオを処理します。 私はそれがもっともらしいことを知っています、そして、十分な時間を与えられれば、私が望むことをするのに十分それをバンドエイドすることができます。できれば、より良く、よりスマートに、より速くそれをしたいのですが、まだ十分な経験がありません。

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