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

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

1
高度なグラフィック効果はどのように実装されますか?
WarcraftやTorchlightの呪文のような3D効果がグラフィカルに実装される方法に興味があります。私はDirect3Dの本を書き終えたばかりで、それと3Dグラフィックス全般にかなり慣れていますが、キャラクターに「稲妻」やその他の呪文をグラフィカルに表示させるなど、どうすればよいかわかりません。私はそれが粒子効果またはアニメーション化されたテクスチャ座標に関係していると思います、誰かが私にいくつかのより具体的な洞察を与えることができますか?ありがとう

3
ブール値をパックしてD3D定数バッファーに配置できないのはなぜですか?
了解しました。ブール値をパックしてhlsl定数バッファーに配置するのに苦労しています。その理由はわかりません。 これはhlslのバッファです cbuffer MaterialBuffer : register(b1) { float3 materialDiffuseAlbedo; float materialSpecularExponent; float3 materialSpecularAlbedo; bool isTextured; }; そして、ここはC ++です struct GeometryBufferPass_MaterialBuffer { XMFLOAT3 diffuse; float specularExponent; XMFLOAT3 specular; bool isTextured; }; 私は運が悪いので、ブールを移動し、構造体にさまざまな方法でパディングしました。これを行う正しい方法は何ですか?

4
2Dタイルベースのゲームで、スクロールに適した方法は何ですか?
D3DXSPRITEラッパーでDirect3Dを使用して、タイルを画面に描画しています。衝突やタイルタイプなどのメンバーを含むタイルクラスがあり、次にタイルの配列があります。 タイルグリッド[256] [256]; どちらがより良い方法でしょうか? -画面の中央にプレーヤーを描画し、マップが描画する場所をオフセットします。 ・以下のカメラでプレイヤーを移動します。 最初の方法を使用していましたが、マップの左上端に到達したとき、および他のプレイヤー/敵がマップ上にいて同時に移動しているときは、非常に複雑になります カメラをプレーヤーに追従させる場合、画面に収まる数が少ない場合でも、グリッドタイルごとにspriteBatch-> Draw(...)を呼び出す必要がありますか?
9 c++  directx  directx9 


3
非常に遅いdirect3Dテクスチャサンプリング
そのため、Direct3D 9を使用して小さなゲームを作成し、地形にマルチテクスチャリングを使用しています。私がしているのは、3つのテクスチャとブレンドマップをサンプリングし、ブレンドマップのカラーチャネルに基づいて、3つのテクスチャから全体の色を取得することだけです。とにかく、2つ以上のテクスチャをサンプリングすると、フレームレートが大幅に低下します。120+fpsから50弱までです。 これは、スローダウンの原因となっているHLSLコードです。 float3 ground = tex2D(GroundTex, multiTex).rgb; float3 stone = tex2D(StoneTex, multiTex).rgb; float3 grass = tex2D(GrassTex, multiTex).rgb; float3 blend = tex2D(BlendMapTex, blendMap).rgb; 私はそれを間違っていますか?テクスチャサンプリングなどに関する情報やヒントを誰かが持っているとしたら、それは素晴らしいことです。 ありがとう。

6
マルチパス効果の良い例は?
XNA(および一般的なAFAIKのDirect3D)では、個々の頂点シェーダーとフラグメントシェーダーを作成するのではなく、潜在的に多くの関連するシェーダーを「エフェクト」にバンドルします。エフェクトを使用するときは、「テクニック」を選択(またはそれらすべてを繰り返し)すると、各「テクニック」にいくつかの「パス」があります。各パスをループして、関連する頂点シェーダーとフラグメントシェーダーを選択し、ジオメトリを描画します。 私が興味を持っているのは、複数のパスが必要になることですか?3Dの初期の頃は、テクスチャユニットが1つしかなかったのに2つありましたが、環境マッピングもしたい場合は、それでも十分ではないことがよくありました。しかし、最新のデバイスでは、モバイルクラスでも、8つ以上のテクスチャをサンプリングして、単一のシェーダーで必要なだけライティング計算を実行できます。 ここでより経験豊富な人は、マルチパスレンダリングがまだ必要な実際的な例を提供できますか、それともXNA / Direct3dの部分でオーバーエンジニアリングしているだけですか?
9 xna  directx  shaders 

4
ダーティ/チープ、軽量の3Dエンジン、初心者フレンドリーなものはありますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ゲーム開発スタック交換のトピックになるようにします。 2年前休業。 2つの質問がありました。2つ目は、ある種の意見の質問です。 最初の質問: 誰もがpanda3d、OGRE、IrrLichtについて聞いたことがあります。これらは優れたエンジンであり、多くの機能を備えています。OGREを使用すると、エンジンを学ぶだけで想像できるほとんどすべてのことを実行できます。Panda3Dも素晴らしいですが、Pythonは物事を容易にしますが、多くのことも実行可能です。 C ++の進化によってもたらされたプログラミングの新時代の前は、遅いマシンで実行する必要があった3DゲームはCでプログラミングされていましたが、それ以来、トランジスタをさらに制限して、ゲームをプログラムするのがどれほど恐ろしいかを忘れていました。 「昔」。多分それは恐ろしいことではなかったかもしれませんが、3Dプログラミングは2Dを行うのが複雑であり、ほとんどのエンジンはシェーダー、シーンマネージャー、シーンノード、NURBS、シャドウ、アニメーションなどの光沢のあるものをサポートしているため、単純な3Dエンジンやレンダラーはありませんテクスチャなしのシンプルな3Dや、本当にシンプルなテクスチャで十分な人にぴったりでしょうか? 「ホイールを再発明しないでください」と聞いたので、D3Dやopenglを使用して完全なエンジンを作成する方法を学ぶのは少しやり過ぎだと思います。D3Dは、次に3Dプログラミングスクールで学ぶので、そこにすべての無料のエンジンがあるので、私のニーズに合っているものがあるはずだと思いました。 2番目の質問: PlayStationの古き良き時代以来、私は今も高解像度グラフィックス(360、PS3など)を疫病のように見ています。より洗練されたソフトウェアをプログラミングする方法を学ぶことは常に難しく、やりがいがあり、満足のいく結果が得られます、しかし結局のところ、それはまだピクセルをレンダリングする愚かなプログラムです! ゲームの楽しさはまったく進化していないか、ゲームを作っている人たちがプレイヤーの目を養うだけでなく、経験と楽しさを提供することを意図していた昔と比べて、本当に本当に落ち込んでいるように感じます。 最近のゲームは、利用可能なテクノロジーを示すソフトウェアにすぎないと感じていますが、真珠を除いて、ゲームはもはやアイデアではありません。投資されたドルが、たわごとを知らないCEOに美しさを発揮できることを示す一種のデモにすぎませんゲームの作り方と実際に何ができるか。 もちろん、XBox LiveとSteamのおかげでいつの日か輝けるインディペンデントゲームは例外ですが、プログラマーやデザイナーがやりたいことを実行することはできません。私は「邪悪な企業」などと言っているわけではありませんが、写真のリアリズムは単なる手ごわいものだと感じています。コンピュータの処理能力が数千も増えたとしても、試してみるポイントはあります。物理法則に矛盾します...代替現実を計算することはできますが、それでも設計は非常に複雑になります...
8 directx  ogre 

3
フルスクリーンのDirectXアプリケーション上にメッセージボックスを表示する
カスタムアサーションハンドラーで、この失敗を無視できるかどうかを確認するメッセージボックスを表示したいと思います。ただし、DirectXゲームが全画面の場合、MessageBox関数を全画面の上に表示できません。 注:MessageBoxの最初のパラメーターは、デバイスの作成に使用されるHWNDですが、それでも機能しません。 これは可能ですか?

2
Unity3dを介して新しいc#スクリプトを追加するときにVS soution Explorerを強制的に再読み込みしますか?
私はC#スクリプトを作成する(ときCreate -> C# Script)を介しUnity3d やからそれを削除Unity3d- Visual Studioショー私の警告ウィンドウ。 気に障る。 ウィンドウなしでソリューションエクスプローラーで「ReloadAll」を強制する方法はありますか?
8 unity  visual-studio  unity  google-play-services  google-play  physics  simulations  c#  unity  raycasting  unity  virtual-reality  savegame  arcade  c++  steam  ios  objective-c  databases  storage  opengl  vbo  vao  libgdx  scene2d  unity  animation  c#  path-finding  roguelikes  opengl  c++  glsl  2d  physics  phaser  selection  3dsmax  unity  collision-detection  c#  tilemap  isometric  unity  c#  2d  sprites  mouse  scripting  grid  c#  unity  libgdx  java  unity  playstation4  c#  c++  directx  dll  c++cli  libgdx  overlap2d  multiplayer  node.js  websocket  animation  unity  textures  unity  terrain  physics  unity  rotation  movement  transformation  monogame  windows  installer  shaders  unity  virtual-reality  unity  performance  frame-rate  profiler  google-play  appstore  trademark  java  android  libgdx  unity  unity-networking  unity  physics  software-engineering  unity  savegame  physics  2d  unity  unity  c#  unity-networking  textures  geometry  unreal-4  3d-modeling  java  android  libgdx  android  collision-detection  libgdx  rotation  legal  localization  patents  opengl  cubemap  sampler-state  2d  transformation  unity  c#  opengl  glsl  lighting  opentk  c++  collision-detection  physics 

1
奇妙なSSAO効果(ビュースペース内の位置/通常のテクスチャが間違っていますか?)
主にホセマリアメンデスのgamedev.netチュートリアルに基づいて、ゲームエンジン(DirectX 11、C ++)でSSAO効果を作成しようとしています。残念ながら、テクスチャ作成の問題(法線、位置)はカバーしていません。 最初のパスでは通常のテクスチャを作成し、次に深度バッファもテクスチャとして読み取ります(2番目のパスでシェーダーリソースビューを作成し、深度バッファのバインドを解除するため可能です)。どちらもビュースペースにある必要があります。 ぼかしはまだ実装していません(後で実行します)が、現在いくつかの問題があります。テクスチャの計算が間違っているか、テクスチャからデータを変換する方法が間違っているためではなく、数式やパラメータの値が間違っているためと考えられます。 何がうまくいかなかったかについての私の推測: (ビュー空間での)通常のテクスチャ計算-しかし、それは見えます[OK]を、 位置テクスチャの計算(ビュー空間で)と位置から深度への変換 逆投影行列計算、 何かが正規化も飽和もされていないはずですが、 パラメータ(ただし、出力にそのような影響を与えるべきではありません)? 私のテクスチャ 拡散(textures[0]、ここでは実際には使用されません、比較のためにのみ): 通常(textures[1]、ビュー空間にある必要があります): 私はそれらを最初のパスの頂点シェーダーで取得します(ピクセルシェーダーはちょうどですoutput.normal = input.normal): output.normal = float4(mul(input.normal, (float3x3)world), 1); output.normal = float4(mul(output.normal, (float3x3)view), 1); 深度バッファテクスチャ(textures[2]、値の差が小さいため何も見にくいですが、問題ないと思います): それを表示するために私は使用します: float depth = textures[2].Sample(ObjSamplerState, textureCoordinates).r; depth = (depth + 1.0f) / 2.0f; color.rgb = float3(depth, depth, depth); 外部プログラムでのコントラスト補正後(私はシェーダーを使用しませんが、目には良いです): 深度バッファーの説明: //create depth …
8 c++  directx  directx11  hlsl  ssao 

1
商用ゲームエンジンはどのようにインデックス/頂点バッファーを編成しますか?
序文:この質問は、Direct3Dの視点からのものになります。これは、私がよく知っていることだからです。 明らかに、Direct3Dで頂点バッファーまたはインデックスバッファーを変更するたびに(つまりを使用してIASetIndexBuffer)、わずかなオーバーヘッドが発生します。しかし、1つの巨大なインデックス/頂点バッファーを割り当てると、メモリを手動で管理しなければならず、断片化の問題(または、すべてのデータを交換している間、一時停止)になるでしょう。 では、商用エンジンはどのようにデータをロード/アンロードするのでしょうか?私は「パッケージ」ベースのアプローチに少し傾いているので、モデルの「パッケージ」には、パッケージが不要になったときにロード/アンロードできる独自の頂点/インデックスバッファーがあります。そして、同じパッケージからすべてのインスタンスを一緒に描画しようとします。 しかし、これを処理するための受け入れられた/標準的な方法が何であるか聞いてみたいですか?

3
ユーザーのビデオカードを選択する正しい方法は?
私のゲームはDirectX 10を使用していますが、私のゲームがグラフィックスカードで取得されないというユーザーからの報告がありました。代わりに、統合されたIntelカードで実行することを選択し、パフォーマンスを台無しにします。これはWindows 8に関連している可能性があります。モバイルカードに関連している可能性もあります。 これまで、DirectXが独自のアダプターを選択できるように、アダプターを指定せずにDirectX 10デバイスを作成してきました(これまでのすべての例/デモで見たように)。どうやら私はそれを変えなければならないだろう。 利用可能なすべてのアダプタを実行し、専用メモリの量が最も多いものを選択する関数をすでに持っています。それは問題を修正するためにうまく機能しますが、それは一般的に正しいですか? 残念ながら、この問題の影響を受けるマシンは必要なカードの出力を報告しないため、カードが有効なビデオ出力(つまり、モニターが接続されている)に依存することはできません。 DirectXで使用するアダプターを適切に選択するには、どのアルゴリズムを使用できますか?

1
正射投影カメラを使用して上と下からレンダリングされた画像が一致しない
正射投影カメラを使用して、モデルのスライスをレンダリングしています(ボクセル化するため)。各スライスの内部を確認するために、各スライスを上と下の両方からレンダリングします。 私がレンダリングするモデルは、2つの立方体から構成される単純な「T」字型です。立方体は同じ次元を持ち、同じY(高さ)座標を持っています。Blenderでのレンダリングは次のとおりです。 このモデルを一度上から直接レンダリングし、一度下から直接レンダリングします。私の期待は、まったく同じ画像を取得することでした(y軸でのミラーリングを除く)。ただし、非常に低い解像度のレンダリングターゲット(25x25)を使用してレンダリングする場合、「T」の位置(ピクセル単位)は、下からレンダリングするのではなく、上からレンダリングしたときと異なります。図2と3を参照してください。ピンクのブロックは元のレンダリングの一部ではありませんが、簡単に数えたり、違いを確認したりできるように追加しました。 上からレンダリング 下からレンダリング これはおそらく私が読んだことによるものです 、カメラから見て左上にバイアスされている可能性のあるピクセル座標とテクセル座標についてです。私は両方のカメラに同じ「上」ベクトルを使用しているため、バイアスはx軸にのみ表示されます。私はカメラの位置を変えようとしました、そして、それは私が思っていたように、半ピクセルであるはずだと見ています。1台のカメラと両方のカメラの両方をシフトしてみましたが、一部の効果が表示されているのに、両方のカメラからピクセル単位の完全なコピーを取得できません。 ここで私はカメラを初期化し、私が信じているもの、ハーフピクセルを計算します。boundsDimXとboundsDimZは、モデルの周囲をわずかに拡大した境界ボックスで、正射投影カメラのビューボリュームの幅と高さとしても使用します。 Matrix projection = Matrix.CreateOrthographic(boundsDimX, boundsDimZ, 0.5f, sliceHeight + 0.5f); Vector3 halfPixel = new Vector3(boundsDimX / (float)renderTarget.Width, 0, boundsDimY / (float)renderTarget.Height) * 0.5f; これは、カメラの位置とカメラの視点を設定するコードです // Position camera if (downwards) { float cameraHeight = bounds.Max.Y + 0.501f - (sliceHeight * i); Vector3 cameraPosition = …
8 xna  c#  directx  texel 

1
古いXPシステムでのDirectXエラー
私は視覚障害者向けのオーディオゲームに取り組んでいる視覚障害者プログラマーです。私はSlimDXを使用しており、XPからWin 8.1までの数十のシステムでテストされています。私のコードはほとんどのシステムで問題なく機能しますが、少数の古いXPシステムでは実行時に次のエラーが発生します。 vupgraderacer.wav SlimDX.DirectSound.DirectSoundException: DSERR_INVALIDCALL:この呼び出しは、このオブジェクトの現在の状態では無効です(-2005401550) at SlimDX.Result.Throw[T](Object dataKey, Object dataValue) at SlimDX.Result.Record[T](Int32 hr, Boolean failed, Object dataKey, Object dataValue) at SlimDX.DirectSound.SecondarySoundBuffer..ctor(DirectSound device, SoundBufferDescription description) at RR.Sound..ctor(String fileName) 同じエラーが、使用しようとするサウンドごとに繰り返されます。DSデバイスのセットアップに使用しているコードは次のとおりです。 dsDevice = New SlimDX.DirectSound.DirectSound dsDevice.SetCooperativeLevel(OGw.Handle、SlimDX.DirectSound.CooperativeLevel.Normal) 設定できるフラグは他にもあることは承知していますが、この基本的な設定は、これまでのところ、古いXPシステムを除いてうまく機能しています。これは私の最初の投稿なので、正しく入力してほしいと思います。そうでない場合は、お知らせください。フォーラムのスクリーンリーダーを使用している場所やスクリーンリーダーを使用している場所を特定するのが難しい場合があります。
8 directx  sound  slimdx 

1
奇妙な透明な穴がアーティファクトをレンダリングする
したがって、各サーフェスブロックにハイトマップを与えることにより、ブロックエンジンに「滑らかな」地形を実装しようとしています。 基本的に、各ブロックのこれらの「高さマップ」を生成するために私が行うことは、ブロックの端に沿って0.25の間隔で高さを生成することです。次に、ブロックの頂点を構築するために、高さをループして高さから高さに三角形を作成し、三角形の下に長方形を配置して次のようなものを作成します。 たとえば、ブロックのXの正側を作成するには、次のようにします。 Vector2[] uv = BlockUtil.UVMappings[(byte)side]; // uv[0] = top left float height; float nextHeight; float min; float tex_len = 1f / EngineGlobals.TEXTURE_ATLAS_SIDE; for (int i = 0; i < 4; i++) { height = (float)b.Heights[4, i] / 255f; nextHeight = (float)b.Heights[4, i + 1] / 255f; min = …

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