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

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

3
DirectXで太さを変えながら、AAでラインをレンダリングする最速の方法
そのため、正確には.NETでSharpDXを使用してDirectX開発を行っています(ただし、DirectX / C ++ APIソリューションは適用可能です)。DirectXを使用して、直交投影で線をレンダリングする最速の方法を探しています(たとえば、科学アプリの2D線画のシミュレーション)。 私がレンダリングしようとしているプロットの種類のスクリーンショットは次のとおりです。 これらの種類のプロットでは、ラインごとにアンチエイリアシング(またはフルスクリーンAAのオン/オフ)の有無に関係なく、数百万のセグメントがあり、太さが変化するラインを持つことは珍しくありません。ラインの頂点を非常に頻繁に(たとえば、20回/秒)更新し、可能な限りGPUにオフロードする必要があります。 これまで私は試しました: ソフトウェアレンダリング、たとえばGDI +は実際にはパフォーマンスの低下ではありませんが、明らかにCPUに負荷がかかります Direct2D API-GDIよりも遅く、特にアンチエイリアスがオンの場合 この方法を使用するDirect3D10 は、CPU側で頂点カラーとテッセレーションを使用してAAをエミュレートします。また遅い(プロファイルを作成し、頂点位置の計算に時間の80%が費やされる) 3番目の方法では、頂点バッファーを使用して三角形のストリップをGPUに送信し、200ミリ秒ごとに新しい頂点を更新します。100,000ラインセグメントのリフレッシュレートは約5FPSです。理想的には数百万人が必要です! 今、私は最速の方法は、GPU、例えばジオメトリシェーダーでテッセレーションを行うことだと考えています。頂点をラインリストとして送信するか、テクスチャでパックし、ジオメトリシェーダーでアンパックしてクワッドを作成できます。または、生のポイントをピクセルシェーダーに送信し、ブレゼンハムライン描画を完全にピクセルシェーダーで実装します。私のHLSLは2006年のさびたシェーダーモデル2であるため、最新のGPUが実行できるクレイジーな機能については知りません。 質問は次のとおりです。-誰もこれを以前にやったことがありますか、試してみる提案はありますか?-ジオメトリをすばやく更新してパフォーマンスを改善するための提案はありますか(たとえば、20msごとの新しい頂点リスト)。 1月21日更新 それ以来、LineStripおよびDynamic Vertex Buffersを使用するGeometryシェーダーを使用して、上記のメソッド(3)を実装しました。現在、10万ポイントで100FPS、1,000,000ポイントで10FPSを取得しています。これは大きな改善ですが、今ではフィルレートと計算が制限されているため、他の手法やアイデアについて考えました。 ラインセグメントジオメトリのハードウェアインスタンス化はどうですか? Sprite Batchはどうですか? 他の(ピクセルシェーダー)指向のメソッドはどうですか? GPUまたはCPUで効率的にカリングできますか? あなたのコメントと提案は大歓迎です!
14 2d  directx  shaders 

5
DirectX 10シェーダーのifステートメントを避けますか?
ステートメントの両方の部分が実行され、間違ったものがドロップされるため、シェーダーでステートメントを回避する必要があると聞いたことがあります(パフォーマンスに悪影響を及ぼします)。 DirectX 10ではまだ問題ですか?誰かが私に言った、その中で正しいブランチだけが実行されるだろう。 説明のために、私はコードを持っています: float y1 = 5; float y2 = 6; float b1 = 2; float b2 = 3; if(x>0.5){ x = 10 * y1 + b1; }else{ x = 10 * y2 + b2; } より高速にする他の方法はありますか? もしそうなら、どうやって? 両方のブランチは似ていますが、唯一の違いは「定数」の値です(y1, y2, b1, b2ピクセルシェーダーのすべてのピクセルで同じです)。

2
24未満の頂点を持つキューブを構築することは可能ですか
Minecraftのようなキューブベースの世界があり、24個未満の頂点を持つキューブを構築してメモリ使用量を削減する方法があるかどうか疑問に思っています。 私には2つの理由で不可能だと思われます。法線が正しく出ないことと、面ごとのテクスチャが機能しないことです。 これは事実ですか、それとも間違っていますか?たぶん助けることができるいくつかの派手な新しいDX11技術がありますか? 編集:明確にするために、2つの要件があります:適切な照明を行うために各キューブフェースの表面法線が必要であり、各キューブフェースのテクスチャ配列の異なるインデックスに対処する方法が必要です

5
Direct3D 9、10、または11を学習する必要がありますか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 5年前に閉鎖されました。 Direct3Dを使用した3Dプログラミングを始めようとしています。どのバージョンのD3Dを選択すればよいですか? 11はきれいに見えますが、9と10はまだかなり存在しているようです。ゲーム開発業界の現在の状況を考えると、どのバージョンを使用し始める方が理にかなっていますか?
14 directx 

4
DirectXの現在の書籍は何ですか(3Dに焦点を当てています)?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 OpenGLの場合、OpenGL SuperBible 5thエディションはほんの数か月前にリリースされたばかりで、OpenGL 3(本の第1部)を学習するだけでなく、Partsの高度なOpenGLトピックにも役立つ素晴らしい、評価の高い本と見なされます2および3。 DirectXの場合、学習するために読む必要がある現在の資料は何ですか?チュートリアル付きの書籍とWebサイトを歓迎します。現在のバージョンのDirectXには、C ++を十分に理解しているがDirectXの経験がない初心者向けの最新の書籍がありますか? これは非常に賞賛されているようです:DirectX 10を使用した3Dゲームプログラミングの概要
14 c++  directx 

1
平面反射を行う際の波の説明
私はSDKからNvidiaの例、特にIsland11プロジェクトを研究してきましたが、波の高さの状態に応じて反射を上下に補正するHLSLコードの一部に興味を持ちました。 当然、コードの短い段落を調べた後: // calculating correction that shifts reflection up/down according to water wave Y position float4 projected_waveheight = mul(float4(input.positionWS.x,input.positionWS.y,input.positionWS.z,1),g_ModelViewProjectionMatrix); float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w; projected_waveheight = mul(float4(input.positionWS.x,-0.8,input.positionWS.z,1),g_ModelViewProjectionMatrix); waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w; reflection_disturbance.y=max(-0.15,waveheight_correction+reflection_disturbance.y); 私の最初の推測は、垂直の摂動(波)を受けたときに平面反射を補正し、反射ジオメトリを何もない場所にシフトし、水が空または空だけのようにレンダリングされることでした: さて、それは私たちが地形の緑/灰色/黄色がかった反射が水の基線で折り返されるのを見るべき場所を反映している空です。問題は、その背後にあるロジックを正確に特定できないことです。波/水ジオメトリのポイントの実際のワールド空間位置を投影してから-.5fを掛けて、同じポイントの別の投影を取得します。今回はy座標を-0.8に変更します(なぜ-0.8?)。 コード内の手がかりは、冗長性があるため試行錯誤で派生したことを示しているようです。たとえば、著者は投影されたy座標の負の半分(w除算後)を取得します。 float waveheight_correction=-0.5*projected_waveheight.y/projected_waveheight.w; そして、2番目のポイントについても同じことを行い(肯定的なだけで、何らかの違いを得るために、私は推測します)、それらを組み合わせます: waveheight_correction+=0.5*projected_waveheight.y/projected_waveheight.w; 2による除算を削除しても、品質の改善に違いは見られません(誰かが私を修正したい場合は行ってください)。それの核心は、投影されたyの違いのようです。なぜですか?この冗長性と-.8fと-0.15fの一見arbitrary意的な選択により、これはヒューリスティック/推測の組み合わせであると結論付けられます。これには論理的な根拠がありますか、それとも単なる必死のハックですか? これは、コードフラグメントが修正する初期問題の誇張です。最低のテッセレーションレベルで観察します。うまくいけば、それは私が見逃しているアイデアを引き起こすかもしれません。-.8fは、平面反射されたジオメトリレンダリングをサンプリングするテクスチャ座標を乱す量を推定する基準高さであり、-。15fはセキュリティ対策である下限です。

2
XNAで効果パラメーターを設定するためのベストプラクティス
EffectXNAでパラメーターを設定するためのベストプラクティスがあるかどうかを確認したいと思います。または、言い換えると、を呼び出すと正確に何が起こるのかpass.Apply()。複数のシナリオを想像できます。 Apply呼び出されるたびに、すべてのエフェクトパラメーターがGPUに転送されるため、パラメーターを設定する頻度に実際の影響はありません。 Apply呼び出されるたびに、リセットされたパラメーターのみが転送されます。したがって、新しい値を実際に設定しないSet-operationsのキャッシュは避けてください。 Apply呼び出されるたびに、変更されたパラメーターのみが転送されます。したがって、セット操作のキャッシングは役に立たない。 言及された方法のいずれもゲームのパフォーマンスに顕著な影響を与えないため、この質問全体はブートレスです。 最後の質問です。次のような集合演算のキャッシュを実装することは有用ですか? private Matrix _world; public Matrix World { get{ return _world; } set { if (value == world) return; _effect.Parameters["xWorld"].SetValue(value); _world = value; } } 期待してありがとう。
13 xna  directx  effect 

4
今日、ハードウェアレンダリングではなくソフトウェアレンダリングを使用するのはなぜですか?
CPUやソフトウェアのレンダリングとは対照的に、私は想定していますか? 一般に、現在のレンダリングはすべて、GPUベースではなく、OpenGLまたはDirect Xを使用しているように見えますか? 誰かが私にここでいくつかの情報を教えてもらえますか、適切な答えが見つかりませんか?

1
レンダリング、バッチ、グラフィカルカード、パフォーマンスなどに関する情報+ XNA?
タイトルは少しあいまいですが、私が本当に探しているものを説明するのは難しいですが、ここに行きます。 CPUレンダリングに関しては、パフォーマンスはほとんど推定が容易で簡単ですが、GPUに関しては技術的な背景情報が不足しているため、手がかりがありません。私はXNAを使用しているので、理論がそれに関連していればいいと思います。 私が実際に知りたいのは、特定の描画アクションを行うと、いつどこで何が起こるかということです(CPU / GPU)。バッチとは何ですか?効果、投影などはどのような影響を与えますか?データはグラフィックカードに保持されますか、それともすべてのステップで転送されますか?帯域幅について話すとき、グラフィックカードの内部帯域幅について話していますか、それともCPUからGPUへのパイプラインについて話していますか? 注:描画プロセスがどのように行われるかについての情報を実際に探しているわけではありません。それはGPUのビジネスです。それに先行するすべてのオーバーヘッドに興味があります。 アクションXを実行したときに何が起こっているのかを理解し、それにアーキテクチャとプラクティスを適合させたいと思います。 より良いゲームを書く方法についてより多くの洞察を与える記事(おそらくコード例付き)、情報、リンク、チュートリアルは大歓迎です。ありがとう:)

3
一人称カメラをどのように実装すればよいですか?
私は初心者プログラマーであり、一人称カメラで部屋を歩き回ることができるプロジェクトを作成しています。これまでのところ、建物が描かれていますが、今は立ち往生しており、歩き回るために一人称カメラを作成する方法がわかりません。 誰かが私が使用できるカメラクラス、またはいくつかの有用なコードに私を向けることができますか?
12 c++  directx  camera 

6
Delphiでゲームを書く人はいますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 私は非常にベテランのDelphi開発者であり(Turbo Pascalの経験を考慮していない12年以上の経験)、Delphiでゲームを書く人はいないだろうかと考えていましたか?私はDelphiでDirectXに対してプログラミングできるDirectX APIラッパーを見ました(友人と簡単なソリティアゲームを書いたことがあります)が、Delphiについていく必要があることを示すものは見ていません。私はそんなに多くの知識とObject Pascal言語から離れることを嫌いますが、Delphiを使い続ける理由についてはあまり見ていません。 私は現在C#でプログラミングを行っており、XNAについて考えていますが、支配的な意見はDirectXを使用したC / C ++ルートです。 他のDelphi開発者もこれに苦労していますか? ありがとう、MDV
12 directx  platform 

8
2D Game Dev(C ++)の使用開始:DirectXまたはOpenGL?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 6年前に閉鎖されました。 だから、私はゲーム開発の扉に足を踏み入れようとしている学生で、2Dの何か、おそらくテトリス/スペースインベーダー/小さなマウスインタラクションクローンのようなものを探しています。 私はC ++と2dの方向に検索を向け、最終的にDirectX / OpenGLにつながりました 今、私が理解しているように、これらのパッケージはすべて、画面上に描画するだけです。そして、この時点で私が本当に気にすることはそれだけです。音は必要ありません。入力はおそらくstdlibで処理できます。 C ++で基本的なゲームを作成しようとする初心者にとって、DirectXまたはOpenGLをお勧めしますか?どうして?2つの機能の主な違いは何ですか?どちらがより使いやすいですか?
12 c++  opengl  directx 

5
APIに依存しないブリッジ(OpenGL / D3D / Whateverなど)。それらをどのように使用しますか。賛否両論[非公開]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた2年前。 あなたは3Dエンジンを作っています。最高のマルチプラットフォームの世界が必要です。突然、WindowsマシンでDirect3Dを使用し、OSX / LinuxでOpenGLを使用する場合、両方のサポートされている機能を最小公分母に犠牲にする必要があることに気づきます。 3つのOSでOpenGLを使用する人もいます。すべてが良いです。次に、グラフィックスAPIバックエンドを任天堂のGXに移植する必要があります。また、PS3とXbox360のパスを作成する必要があります。 職業はなんですか?それ自体で最も一般的な分母ではない独自のAPIを設計し、各プラットフォーム用にバックエンド実装を記述しますか、それとも独自のブランチである各プラットフォーム用に記述しますか? 独自のAPIを設計することを選択した場合、ブリッジパターンまたは独自のブードゥー教を使用しますか?あなたがすべてを理解し、キッチンシンクアプローチが停止する必要があることに気づいたとき、狂気はどこで止まり、基本的にはブランチとして各プラットフォームに個別のエンジンがあります。または、すべてにこだわってキッチンシンクを行い、各プラットフォームのバックエンドモジュール専門分野でプラットフォーム固有の仕様を保持します。

1
弾丸の物理演算をゲームに統合するにはどうすればよいですか?
ここにあるリリースファイルをダウンロードしましたが、どこから始めればよいかわかりません。私のゲームでは、長方形と球体がいくつかあるので、これらすべてを互いに衝突させたい。(それらにはすべてメッシュと関連する境界ボリュームがあります) 編集-直方体には実際にAABBが関連付けられていることに気づきました。少なくともそれを変える必要があると思います。 どのような手順に従う必要がありますか?

1
画面スペースの派生物とは何ですか、いつ使用しますか?
私が見るddxとddyGLSLの機能をし、HLSL同等物は、すべての今してシェーダコードに出てきます。私は現在それらを使用して、接線または接線なしでバンプマッピングを行っていますが、基本的にコードをコピーして貼り付けました。これらの関数が実際に何であるか、それらが何をするのか、いつ使用するのかを理解できません。 だから質問: スクリーンスペース微分関数とは何ですか? これらの関数は何をしますか?入力値と出力値 最も一般的に使用される効果は何ですか? これらの機能に目を向けるには、どのような効果が必要ですか?

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