【C++】 DirectX初心者質問スレ Part40 【C】©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
回答する人も、質問する人も必ず読んでください
これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前
【C++】 DirectX初心者質問スレ Part39 【C】
http://echo.2ch.net/test/read.cgi/tech/1418438785/
>>2リンク DirectX12はWin10限定にしたのが痛い。
Win7以降にしてほしかった。 >>5
MSはWindows10の普及に必死だからなあ DirectX11から個人利用は難しくなってきた。
それでもある程度抽象化されていたので、何とか個人で自作する人もいた。
と言っても投入した時間に比してたいしたものは作れなくなったが。
DirectX12は完全に企業向け。
これからは個人でゲーム作るならUnityとか使わないと無理なのかもね。 11は9の頃よりできることが増えたからゲーム技術が好きな人にとっては楽しいと思う
ただ気軽に作りたい人には向かなそう 速くならないって言ってるひとは
パイプラインの使い方間違ってるのかな この流れからすると…
DirectX\(^o^)/オワタ
であってる? >>11
そだな。
Unityの台頭の伴ってオワてきた。 そもそもスキンメッシュモデルが同人でも当たり前になってきたあたりで
個人じゃ辛いよなぁ
会社のライブラリ無断で使ってるの多かったし PSOのセットで
コマンドリストのReset時にセットする場合と
SetPipelineStateでセットする場合での違いって何? サガの新作はunityで作ったせいでボロボロだからな
DirectXを使いこなせる奴だけが生き残る >>15
unityを使った「から」じゃないことだけはよくわかるな >>15
Unityでもまともなゲームはあるだろw VitaとUnityの組み合わせがヤバイだけだよな しかし、DirectX11は2010年6月に更新が終わっているからなあ
いつまで使えるのだろうか DirectX12と同時にDirectX11.2か.3出てなかったっけ 11でも十分なのは分かってるんだが
12を使わなきゃいけないという強迫観念が・・ 最近のDirectXにはVB.NETのサンプルがないのはどうしてなんだぜ? 11.3が出てるよ。
今後も12と11は併存するとのこと。 >>28
更新されてるからバージョンも進んでるのよ
古いDXSDKはXファイルパーサとWin7でも動くXAudio2のためだけに未だにインストールしてるけど
あんまり新しめのWinには入れたくねえんだよなあ >>29
検索しても2010年6月以降のDirectX11が出てこないのだが? >>30
検索すればWindows SDKに統合されたと出てくるね >>31
なるほどそれで単品SDKの新しいものが出てこないのか。 >>29
でもWindows7だとVisual Studio 12以降でもDirectX11 June 10 のSDKが必要みたいね
ややこしい 統合されたのも知らないとかプログラミングやってねーだろw >>34
初心者スレで何言ってるんだ?
工学社のDirectX11本の改訂版(2015年5月発行)でもSDKが統合されたことは書いていない。
この本は1年ほど前に出版されたばかりなのに Visual Studio 2010 + DirectX11 SDK (June 2010) が推奨環境になっている。
つまり、この本を読んでも統合されたことに気がつくのは不可能で初心者が気がつくのは不可能。
しかも>>33で書かれているようにVS2012以降でもWin7だとDirectX11 SDK (June 2010) が今でも必要でWin7を使っている初心者からするとこれが最新にしか見えない。 Win8のSDKで統合されたんだよ。そのタイミングでサンプルは分離されて探しにくくなったし、DX8のファイルも消滅。
プログラミングをちゃんとやってきた人間なら、移行の洗礼を受けているはずなんだが。 >>36
だから初心者スレなんですけど?
>>1読め 日本語の本に最新のことが書いてあるなんて本気で信じてるなら
適性ないから諦めた方がいいよ >>36
>プログラミングをちゃんとやってきた人間なら、移行の洗礼を受けているはずなんだが。
クソわろた。
ここまでこのスレッドの主旨を理解していないのに上から目線。
プログラミング言語以前に日本語が分かっていないw
>>38
>日本語の本に最新のことが書いてあるなんて本気で信じてるなら
>適性ないから諦めた方がいいよ
誰も「日本語の本に最新のことが書いてある」なんて書いていない。
初期段階で日本語の本や資料などを読む必要はあるし、その時点で最新事情に気がつくのは無理だってことを>>35は言っているだけだろ。
勉強が進んでくると英語の情報も見るようになるし、その時に気がつくのは別に悪いことではない。 ん〜
>>36,>>38は、物事の趣旨を理解する能力なさそうだから、プログラミング以前に仕事もできないだろ
>>37が正解! 今はVS2013だけど、以前、VS2012、Win7、DirectXSDKなしでDirectX11プログラミングできてたぞ。 >>41
それって単体のDirectX SDK を入れたことを忘れていたのでは? いや、PC新調してゼロから環境構築し直したときから、DirectXSDKなしで開発できることは知ってたから、断じてインストールしてない。
作ったプロジェクトを他人のPCでも、VSをインストールするだけで使えるようにしてたから、
うっかりDirectXSDKをインストールして、それに依存してしまわないよう注意していたし、
その甲斐あって、狙い通り他PCへのプロジェクトの導入がシンプルに行えた。 >>43
見事なり。我がオープン帝国のために、そのライブラリをGitHub辺りで公開してくれるか? >>44
そんな大層なもんじゃないスよw
GitHubとか使ったことない素人プログラマですしw >>43
一般的にはWindows SDK とDX11が統合されたのはWindows8からということになっているのだが? なんぞえらく勘違いしてるの居るけどレガシーなDXSDKを入れなくても
Win7やVistaで動作させるアプリ開発は基本的に可能だぞ?
v1x0_xpでのXP向けビルドすらVS同梱のWindows SDKのみで可能だ
(実際にはD3D9アプリにおいてD3DX9にすら依存できなくなるのであまり現実的なシチュじゃなくなるけど)
D3D11あたりになるとD3DXへの依存度も低いしDirectSoundやDirectInputをシンプルに使ってる分にも問題無い
大体悪いのはXInputとXAudio2でコイツ等の立ち位置の変遷がウンコ過ぎる
https://blogs.msdn.microsoft.com/chuckw/2012/04/02/xaudio2-and-windows-8/
https://blogs.msdn.microsoft.com/chuckw/2012/04/25/xinput-and-windows-8/ >>47
Windows7はDirectX11 SDK (June 2010)を入れる必要があるのでは?
入れなかったらDirectX11 SDKはどこかにあるの? DirectX SDKがWindows SDKに統合されたのを知らない馬鹿がいると聞いて >>49
7→統合されていない
8→統合されている
じゃないの? めんどくせー
DirectX初心者ならともかくプログラミング初心者まで相手にする気にゃならんぞ
>>48,50
統合されたのは"Windows SDK"の8.0から、これはVisual Studio 2012以降に同梱
その中にDirectX用のヘッダやlibファイルがあるの
これらを使って"Winows Vista/7上で動作するアプリ"を作ることは可能
ただし以前のDirectX SDKとは互換性の無い部分が含まれるため
注意しないと"Windows 8.x/10以降でしか動作しないアプリ"が出来上がる >>51
>>48,50はWindows7上で開発するときの話。
お前は「Windows8上で開発しても7でも動作するアプリが作れる」って話。
DirectXに詳しくてもアスペルガーのようだな。日本語が理解できていない。
お前のような人間は危険なのでタヒぬべき。 >>51
>めんどくせー
>DirectX初心者ならともかくプログラミング初心者まで相手にする気にゃならんぞ
お前にはプログラミング=Windowsなのか?
Linuxは?Macは?組み込みは?
日本だとWindowsのアプリ組んだことのないプログラマーが多い。
日本は組込みプログラマーが多いからな。
こういうところからしてアスペルガーなんだよなあ。
どうせロリコンの同人誌とか好きなんだろ?
DirectXに詳しい奴はキモオタが多いからな。 >>52-53
丁度良いアホの横やりが入ったので補足すると
他の人(>>41)も書いてるけど、まず「Win7を開発環境としてDirectXアプリをビルドするにはDXSDKが必須」からして間違ってんのよ
例えばWin7にVS2012入れればWindows SDK 8.0も入りそこにDirectXのヘッダとインポートライブラリが含まれる
DirectXの一部のコンポーネントの特定のバージョンに依存する場合は
開発環境のOSがWin7だろうがWin10だろうがまったく同じ理由でDXSDKが必要になる
(*余談だけどWin7を開発環境とする場合KB2670838がらみでPIXの利用に注意点がある)
ID:NFIjkDPs,ID:qM1Qpjsy,ID:a6JLkDGoあたりは(同一人物だと思うけど)文面から察するにたぶん自分で拾ってきた情報の中で
開発環境として、アプリの実行環境として、そしてWindows SDKの世代としてのバージョンの区別ができていないと思うんだわ >>54
わからん奴だなあ
お前の技術知識は正しいけど受け答えがおかしいって指摘しているんだよ
それが分からないのか?
マジでアスペルガーだな 俺からしたらID:o7S4Frmpがアスペルだと思うが
2chで正しい受け答えもくそも無い
一対多人数で見ず知らずの人たちが、各々のバックグラウンドもわからない状態で
やみくもに書き込んでいるのに
まともな会話が成り立つと思っているほうがアホ
とくに技術系の掲示板では正しい情報にしか意味ない
間違った書き込みがあれば、正されたほうが良い
正しい情報こそ重宝されるべき >>57
要は人の話は聞かない。
俺のオナニーだけするんだってことか。 それは極論というもので
正しい情報こそ重宝されるべきという話
ここは初心者用のスレであり、プログラミング経験者であっても
DirectX自体は初めての人もいるから
間違った書き込みは仕方ない、知らなくても仕方ない
確かにそれはそうかもしれないが
だからと言って間違った書き込みに対して
間違ってるからっつって、正しい情報を書き込む行為を
「空気読めない」とかそういう方向に持っていくのはおかしい
そんなことをしていたら、このスレは一体何になるんだって話
間違った情報を正せないのであれば、それこそ会話にならない
誤った前提の上でいくら会話を重ねても全くの不毛
そういうことがしたいならVIPに行けばよいわけで >>59
>>52に書いたように相手が望むものと回答が異なっていたら意味がない。
>>53に書いたようにプログラミング=Windowsと思っているのが最大の間違いなのに人の話を聞かない。
結局はオナニーしたいだけなんだよ君は ここまで観客そっちのけになってくると
どっちもどっちだし自演にすら見えてくる 俺もID:o7S4Frmpがおかしいと思うに1票
>>52
>お前は「Windows8上で開発しても7でも動作するアプリが作れる」って話。
vs2012入れればって話だったのに勝手にWindows8上って誤解してるし。
KB2670838の余談も含めて>>54さんの話は正しいと思うよ。
当時たしかKB2670838は半年遅れくらいでwindows7にやってきたんだっけ。 >>61
だな
>>62=59
お願いだからスレッドの趣旨と違いすぎる話を続けるのはやめてくれ
マジで迷惑 で、今からDirectXのプログラミングをスタートするには
どのサイトを見ながら何をセットアップして、どうすればハローワールド的なもんが書けるんだ?
DirectX7の頃はもっと手厚い何かがあった気がするんだが、ひさびさに出戻ったら何も情報がない ひさびさに出戻ったとあるけどDirectX7の頃にはどういうことまでやったの? >>64
Win10でやってるならストアアプリから始めるのがよろし
VS2015 Community突っ込むだけで始められるよ
ストアアプリという時点で言いたいことはあるかもしらんが
シンプルな導入と公式のチュートリアルが欲しいという点ではそう邪険にしたもんでもない
https://msdn.microsoft.com/windows/uwp/gaming/index >>64
DirectX11になってから英語ができるプロ以外お断りになったんですよ。
だから初心者向けの誘導が基本的にはないみたいです。 公式だとチュートリアル以外ではこの辺かな
https://github.com/Microsoft/DirectXTK/wiki/Getting-Started
テンプレートも用意されてるし初心者でも入りやすい
↑もそうなんだけど確かに英語は必須になったかもしれない
そんな難しい英語ではないけどね >>69
どこに情報があるか分かりにくいんだよなあ
MSがGitHubを使うなんて まあ導入のことも含めて考えてるとやっぱDXSDKはとりあえず入れといた方が良いのかもなあ
忘れられてる感があるけどDXSDKには昔ながらのまとまったチュートリアル&リファレンスやビルド済みサンプルもある
さらにちと古くなるがこれらのドキュメント相当の日本語訳もある(chm版も落とせたはずだがリンク切れてるな…)
https://msdn.microsoft.com/ja-jp/library/cc411364.aspx
https://msdn.microsoft.com/ja-jp/library/dd430306.aspx
実際はDirectX 11までは英語ができる必要もプロである必要もない程度のサポートはあったのよね
XP切りのせいで普及は極めて鈍足だったけど
ところがストアアプリを始めた途端に公式の導線が完全にそっちに向いてしまって
DirectXどころかデスクトップアプリ全体が難解な技術解説とAPIリファレンスのみ人知れず積み上げられ
日本語訳については完全に放置されてるのがMSDNライブラリの現状 >>71
APIについてはGoogleでMSNを検索できるので何とかなるかも DX8扱わないなら、DXSDKは不要だよ。DXライブラリは無いが全て扱える。 全て扱えるとはとても言えないしD3D8なんぞとっくにDXSDKからも削除されとるやん
最後に入ってたのAugust 2007…ってまだダウンロードできるのかコレ
https://www.microsoft.com/en-us/download/details.aspx?id=13287 DirectX SDK (June 2010) でも9/10/11だけだよね。 ここの住人はどっかに自作アプリ公開したりしてないのかい? 関係ないけど最近、強迫性障害だという事が発覚した。
でもその欠点の分DirectXの能力を与えられたのだと思って日々生きてる directx12とwin32apiってどっちむずかしいの? GLにもVulkanっつーしんどいのが出たからなぁ >>85
難しさは変わらん
複雑さならwin32apiかな http://www.dotup.org/uploda/www.dotup.org1024380.jpg
ゲーム中にdirectxのエラーが出てしまったのですが
わかる方はいらっしゃいますでしょうか?
これでOKを押すとソフトが強制終了してしまいます。 >>89
バカすぎるわ
ゲームエラーならメーカーサポートに連絡しろ DirectX11でswapChain->Present(0, 0)とした場合はGPUの処理を待たずにCPUに返し、Present(1, 0)とした場合はGPUの処理を待って処理が終わったあと次の画面更新のタイミングでCPUに返すという認識であっていますか? 測ったことはないから確信は無いけど、第1引数は垂直同期を待つかどうか、としかMSDNには書いてない ttp://www.rastertek.com/dx11tut04.html
このサイトに
dataPtr = (MatrixBufferType*)mappedResource.pData;
という記述があったのですが、どういう意味でしょうか? >>96
dataPtr(型MatrixBufferType*)にpDataのアドレスを型MatrixBufferType*にキャスト
して渡してるのかなたぶん・・ >>97
すみません、質問の仕方が悪かったです
D3D11_MAPPED_SUBRESOURCE mappedResource;
MatrixBufferType dataPtr;
unsigned int bufferNumber;
D3DXMatrixTranspose(&worldMatrix, &worldMatrix);
D3DXMatrixTranspose(&viewMatrix, &viewMatrix);
D3DXMatrixTranspose(&projectionMatrix, &projectionMatrix);
deviceContext->Map(m_matrixBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
dataPtr.world = worldMatrix;
dataPtr.view = viewMatrix;
dataPtr.projection = projectionMatrix;
memcpy(mappedResource.pData, &dataPtr, sizeof(MatrixBufferType));
deviceContext->Unmap(m_matrixBuffer, 0);
なら分かるのですが
>>96のサイトのやり方だとどのようにマトリクスをセットしているのでしょうか? 小生もよくわかってないけど
やってることは同じじゃないかな。
pDataってvoid型だからキャストしないといかんってことで・・ すみません
ポインタについて少し勘違いしていたみたいです
スレ汚し失礼しました DirectWriteで固定ピッチを作る場合どうすればよいでしょうか?
pRT->DrawTextでの描画だと、全角サイズを1倍とすると、半角の場合0.6倍のサイズが半角のサイズで見えるみたいです。
半角の長さを0.5倍になるように別途フォントを作ると1/6.0f*5.0fで
作成できなくはないのですが、約0.83倍高さも若干縮んでしまって困ってます。
pRT->CreateCompatibleRenderTargetでpBMPRTを作ってpRT->DrawBitmapで調整してみたんですが、半角フォントがぼやけてしまう。
pBMPRT->SetTransfromとかもうまくいかず。。
固定ピッチを作るために、pTextFormat->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_CENTER);
にして作ろうと試みているのですが。。。いい方法ありませんか?
GDI経由は今は考えていません。 103です。
例えば、"あいうえおabcdefかきくけこ"という文字列を表示
dの開始座標を調べたい場合どうすればよいでしょうか?
開始位置を調べる方法がわかれば、固定ピッチにこだわらないでもいいです。 自己解決
固定ピッチフォント指定してたはずで、変だとおもったら"MSゴシック" と "MS ゴシック"でスペースが抜けてたっぽい。。orz
IWICImagingFactoryとCreateBitmapFromWicBitmap経由でGDIに手を出すとこだった。。 >>105
自分もそのスペースにハマったことあるわw visualstudioアップデートしたら
なんか新たなエラーが出始めたわ
デバック能力が良くなったとでも? OSアップデートすると知らないうちにDXのデバッグレイヤー使えなくなっていて、バグに気づいていなかっただけじゃね?
SDKインストールのタイミングで機能有効化するんで、その可能性があるかと。 SendInputでキーボードをフックするプログラムを書いているのですが、方向キーがうまく動いてくれません
VK_UP、VK_LEFT、VK_RIGHT、VK_DOWNをnumlockを外して入力するようにしたのですが、
たしかに動くのですが、目的のゲームではテンキーと方向キーで意味が違って、
テンキーのほうの方向キー以外で方向キー専用のコードなどあるのでしょうか DirectX11とDXUTとDirectX Tool Kit の関係が理解できない。
DXUTを使う場合、DirectX Tool Kitは不要? >>111
馬鹿は不要
馬鹿には不要じゃない
馬鹿は不要 >>111
DXUTは11世代では廃止じゃなかったっけ?
いずれにしても、DXUTはウィンドウ生成含め、フレームワーク的な位置付け。
TKは便利なクラス群。 >>114
おお、まだあったんかw
9時代に使ってたけど、結局凝ったことしようとしたときにDXUTの作法が足枷になったんで、
普通にWinAPIの原始的な組み方でやるようになったなぁ。 DirectXは補助ライブラリがいつ廃止されるのか分からないのが怖い
11.0から11.1へ移行するときに補助ライブラリを廃止したのは酷い D3D11の補助ライブラリで消えて困るのなんてあったっけ?
D3DX9の頃を全てカバーしているわけではないとはいえ今は補助ライブラリはOSSだし
ただDirectX関連のコミッターがほぼChuck Walbourn氏一人ってのが色んな意味で恐ろしいけど >>118
少なくとも以下の2つはなくなった。
XNAMATH
D3DX (Direct3D Extension)
XNAMATHはXNAが死んだから当然だけどさ >>119
XNAMATHはまんまDirectXMathに名前変わっただけ
現行のWindows SDKに入ってるし、それより新しいバージョンがGitHubで更新されている
(もともと地味な存在だったSHやDSP関数もひっそりととGitHub版に入ってる)
11世代のD3DXにおいて実用性があるのはシェーダコンパイラとテクスチャファクトリだと思うけど
シェーダコンパイラも現行Windows SDKに同梱(d3dcompiler_4x.dll)、テクスチャファクトリはDirectTK(DirectTex)
でまあD3DX11だと残るはID3DX11ThreadPumpとかの謎機能なんだけど、このへん使ってたひと居るのけ? という…
D3DX9だとXファイル関連やアニメーションライブラリ等いくつか移行先が用意されていない部分はあるのはわかるんだけど
もうそのへんはD3DX11の時点で消えてたし テッセレーションでポリゴンを増やすのは見た目が細かくなるなどのメリットがあるのはわかるんですが減らすのはどのようなメリットがあるのでしょうか?
ぱっと思いつくのはジオメトリシェーダーの呼ばれる回数が減るくらいです 最近コードが増えるほどバックアップとか、雷サージとか
気になりまくって電源、回線用のサージ対策品つけたんだけど
結局その後回線無線にしてしまった。
ここまでくると病気か オープンソースで消えるのが怖いとか意味わからないんだけど >>124
消えなくても垢ロックとか怖いよ
だからローカルとリモートとあと出来ればもう一か所がベスト そもそも論で申し訳ないが
オープンソースとは誰も言ってないのでは?
どこから出てきた? 雷サージ製品が信用できなくて無線って気持ちはわかるけど
電源が繋がってるなら意味無いんじゃ 今は補助ライブラリがオープンソースになってるから恐れなくてもええんじゃねという話は出てるね
そういや懐かしのHoppe論文の実装がいつの間にかGitHubに公開されてんのな
https://rawgit.com/Microsoft/Mesh-processing-library/master/README.html 電源に関しては使い終わったらpc消した後電源タップのスイッチオフにしてるもんで
・・・
まあ、自宅の両隣の家がどちらもでかい家だから
こっちに落ちて来ることもないだろうけども・・ >>132
雷怖いんだったらスイッチオフじゃなくてケーブル抜いた方がいいよ
家を直撃しない限り平気だと思うけど、それなら雷サージで十分な訳で… Pocol ?@ProjectAsura 10月31日
ばるかんはこのよからほろびるべき
Pocol ?@ProjectAsura 10月31日
ばるかんはあぷりけーしょんのもの。えんじんやらいぶらりのものではないよ。えんじんやらいぶらりでたいおうするといたいめあうよ。
Pocol ?@ProjectAsura 11月1日
後でvulkanに関する記事とサンプルプログラムを全削除しますので、必要な方はバックアップを。
Pocol ?@ProjectAsura 20時間
20時間前
vulkanを流行らせると、仕事でvulkanを触る機会が増えて大変な目に合わないように情報提供元となってしまっているうちのホームページはvulkanの大幅な仕様変更があるまで、記事やサンプルを非公開にさせて頂くことにしました。 ↑
コンソールの低レベルAPI直接使った方が遥かに使いやすいから
完全に放置 UnityのせいでDirectXで開発する人が明らかに減ったな 質問させてください。
visualC++2010、DirectXでプログラムを作っているのですが
セカンダリバッファをLockするところでエラーが起きてしまいます。
デバッグの際に自動変数ウインドウのセカンダリバッファのポインタの値に0x000000000と表示されているのですが
これはポインタにアドレスが与えられていないということでしょうか。
宜しくお願いします。 Lockに失敗したならバッファのポインタには0が入るでしょう セカンダリバッファってDirectSoundだよね
再生カーソル付近をロックしようとするとセカンダリバッファでもエラーになる時があるよ
CAPSで厳密な再生位置を取得できるようにするとかでロックする位置を変えられないかなぁ やっぱDirectXじゃないとコンピューターを操っている感じがしない。 おれもDirectXじゃないと
コンピュータに操られている感じがしない ShaderResourceViewってなんでViewってつけたんだろう
用途がViewぽくないしShaderResourceで良かったと思う ShaderResourceだったら
まるで実体そのものであるかのようだろ まぁAdapterとかなら、われわれ日本人英語にはマッチしているように感じるが
ネイディブのそれは我々とは違うだろうから・・・
Viewというのは割と幾何学的で、外人さんはそういうの好きそうだから
似たような言葉だとWindowかな
でもWindowだと何か一部だけを覗くって意味合いが強くなるから
やっぱViewで良いんじゃね?かっこいいし >>156
分かる
>>158
たしかデータベースで馴染みのある概念なんだっけ?
自分も最初は違和感あったけど、
データの塊をどう見なすか、という意味で、悪くないと思った ネイティブの人だと、俺らのソース読みづらいらしいなぁ
オレ割とTOEIC良いだけに、ちとショックだったわ >>159-162
デバイスに入力としてセットするものVertexBufferとかConstantBufferとかSamplerStateとかはViewがつかないで
出力先としてセットするものRenderTargetViewとかDepthStencilViewとかはViewがつくからShaderResourceViewにはなんとなく違和感があったんだ >>164
入力か出力かではなくて、テクスチャかそうでないか、だね。 今自作ゲームにFBX取りいれようとしてFBX_SDK覚えようとしてるんだが
DirectXで鍛えられたおかげで思ったよりすんなり行けそうだわ 外人が書いたコードは難しく見えるな。
とりあえず何とかGURUとかって本見てるけどグルとか聞くと尊師思い出すわ・・ ID3D11DeviceのCreateBufferの第二引数でD3D11_SUBRESOURCE_DATA構造体を渡すとブレークポイントが発生してしまいます
NULLだと発生しません >>170
第一引数で指定したサイズ等の情報と実際に渡した構造体のサイズとで齟齬があったりするんじゃないの? >>171
memsetを使ってもZeroMemoryを使っても発生します >>172
初心者なのでよくわからないんですけど
D3D11_BUFFER_DESCのByteWidthと頂点構造体を動的確保するときもおなじ変数を使っています それ俺もなったけどnullptrで動くMapしてデータ入れられるし仕様だと思ってた 頂点数が24とか少ないと問題なく動くのですが
70000などと多すぎると発生するみたいです vertexCount = 79987;
VertexType* vertex = new VertexType[79987];
for(int i = 0; i < vertexCount; i++)
{
vertex[i].pos = XMFLOAT3(0.0f, 0.0f, 0.0f);
vertex[i].nor = XMFLOAT3(0.0f, 0.0f, 0.0f);
vertex[i].uv = XMFLOAT2(0.0f, 0.0f);
vertex[i].boneIdx[0] = 0;
vertex[i].boneIdx[1] = 0;
vertex[i].boneIdx[2] = 0;
vertex[i].boneIdx[3] = 0;
vertex[i].weight = XMFLOAT4(0.0f, 0.0f, 0.0f, 0.0f);
}
bufferDesc.Usage = D3D11_USAGE_DEFAULT;
bufferDesc.ByteWidth = sizeof(VertexType) * vertexCount;
bufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
bufferDesc.CPUAccessFlags = 0;
bufferDesc.MiscFlags = 0;
bufferDesc.StructureByteStride = 0;
initData.pSysMem = vertex;
initData.SysMemPitch = 0;
initData.SysMemSlicePitch = 0;
hr = device->CreateBuffer(&bufferDesc, &initData, &m_vertexBuffer);
if (FAILED(hr))
throw L"CreateVertexBuffer";
こんな感じです ハードウェアの頂点数制限に引っかかってるのかな?
点数を色々変えてみて、クラッシュするしないの境界が2のべき乗とかだったら、たぶんそれ。 >>180
調査してみたところ
5350までは問題なくて、それ以降は安定しないのでそれでもなさそうです 勝手にコンスタントバッファだと思ってた
>>181
5000ちょっとなら2万のモデル出したりしたことあるから違う気がするな
そしてMSDNのResource Limitも128MBって書いてるしfeature level 9_1でもプリミティブ数で65535って書いてるし容量的な問題ではなさそう >>183
>>184
すみません、自己解決しました
クラスを丸ごと書き直したら動くようになりました
何が駄目だったのかは分かりませんが・・・ 俺がコンスタントバッファ作ろうとしたときは
16バイトのアライメントにあってないサイズだと
エラーになって何じゃそりゃ?って感じだったんだが
それとは違いそうだな アラインメントってXMVECTORとかを迂闊に使ったんだろ アライメントという言葉が非常に良くなかった
シェーダーに渡す定数がintが3つ分だったので
12バイトのコンスタントバッファを作ろうとしたら失敗した
??????だったが16バイトにしたら成功した
その時は、よーわからん、と思ったものが、実は今もよーわからん コンスタントバッファ作成時のByteWidthは16の倍数にしろとリファレンスに記述されてるぞい コンスタントバッファの要件はめちゃくちゃ厳しいぞ。
よ〜く調べてみ。 テクスチャを2のべき乗にするの忘れるのは今でもよくやる 間違ってても中途半端に動いてしまうのが一番困る
間違ってたらきっちりエラー出して教えてください コンスタントバッファはエラーが出なくても変数の配置がズレることもあるからやっかいだよね
定数変数のパッキング規則
https://msdn.microsoft.com/ja-jp/library/bb509632(v=vs.85).aspx 1年半くらい前から9,11,12の順に使ってるけど
いまだに理解し切れてないまま使ってるわ・・
趣味レベルだけども・・ いや、ほんっと、複雑怪奇だから
全貌を理解しかけたあたりで次のバージョンになっちゃうしな! SIMD命令には、8byteの倍数しかない
64, 128, 256, 512bit
8, 16, 32, 64byte WindowsSDKを使って作ったDirectX11のアプリケーションはwindows7でも動きますか? >>198
Visual Studio 2012以降に付属のWindows SDKと仮定すると
Direct3D11/DirectSound/DirectInputを使うならそのままWin7上でも動作可能
XInput/XAudio2を使うならWin7上での動作にはDirectX SDKの導入が必要
このへんのややこしさについてはこのスレの>>30前後からも長めに話題に上がってる 文字列 buf を入力とし、buf を空白で分割する。
空白で分割した場合の数を返り値に、
分割した文字列のそれぞれのポインタを,charへの
ポインタの配列へ代入して返す関数を作成せよ。
int split(char buf[], char *out[]);
これ作れる神いませんか? >>201
istringstreamやstrtokを使えば比較的容易に作れるんじゃまいか? int split(char buf[], char *out[])
{
int c = 0;
for(char *p=strtok(buf,' '); p; p=strtok(p+1,' '))
out[c++]=p;
return c;
}
試してないけど 連投すいません&返答くださった方ありがとうございました DirectXMath.hをインクルードしているのですが
識別子XMFLOAT3が定義されていませんと出ます
なにか別にインクルードすべきものがあるのでしょうか?
visual studio 2015 communityです #ifndef XMFLOAT3
struct XMFLOAT3 {
float x;
float y;
float z;
};
#endif >>209
それでもできました。ありがとうございます。
しかし、できればDirectXMath.hをインクルードする方法でやりたいです。
参考にしているサイトがその方法なので
>>210
してあります 足りないんじゃなくて余計なものを入れてるんじゃないか? えー、何回かリビルドを繰り返していたら治りました
大変ご迷惑をおかけしました DirectX11で動的リンクを使うように変えるとうまく表示できなかったので出力を見てみると頂点シェーダのコンスタントバッファスロット1が96byteなのに64byteしか入ってないという警告が出てました
サイズがおかしいだけならいいのですが同じシェーダーしか使ってないのにも関わらず96byteが160byteになったり96byteになったりします
Visual Studio Graphic Analyzerでシェーダーファイルを確認しても96や160という数字がありませんでした
SM5.0や動的リンクを使うと必要な量が変動したりするのでしょうか? いろいろ試した結果動的リンクの設定がうまくいっておらず処理がおかしくなっていたようです プリミティブの法線を変更して両面に照明効果がでるようにしたいんですが
どう値を設定すればいいんでしょうか?
v[0].nz = -1.0f;
v[1].nz = -1.0f;
v[2].nz = -1.0f;
v[3].nz = -1.0f; 要するにこれは該当プリミティブが今どの方向を向いているかを算出して
そこから法線を(照明効果を有効にする面を)求める必要があるという事ですかね? シェーダ上で絶対値取るのではだめなん?
法線をどうこうするのでは無理な気が 照明の計算では
光源への方向とほうせんの内積をとるが箇所があるが
そこにabsかませばいーんじゃないかな カリングに引っかかって計算されないような?
普通に片面2枚書いたほうが楽? いやカリングは関係ないでしょ
あれは画面との角度だから別問題でしょ
今言ってるのは光源との角度でしょ つまり、裏側から光が当たっているのに
まるで手前に光源があるかのようにレンダリングするという
気持ちの悪いことがしたいんでしょ
なんでそんなことがしたいのかは謎だが >>230
両面ポリは指定できるくせに光源があると破綻するってほうが感覚的にはおかしい気もする すいません。質問者です。
両面を単に表示したいなら二枚描画するのが簡単だとは思ったのですが
一枚のみでもむりやり照明効果つける事は可能なのかなと疑問に思いまして。
ただ何か作る時は単純に表と裏、二枚表示するのが簡潔でいいですね。 >>232
一枚だけ前後でカリングon/offじゃいかんの 質問なんですけども
複数メッシュが有る場合ってメッシュ毎に描画が一般的?
ちなみにFBXSDKしようしております 俺もカリングoffで良いと思ったが、法線は向こう向きなのでライティングはどうなるんだろって思った やっぱり片面2枚だなって想う
ディフューズのuvひっくり返して表示してます面倒なのではデザイナも多分頂けない ステートの切り替えにコストがかかるから、マテリアル毎が普通だね マテリアルが増えてくると結局オーバーヘッドが嵩んでくるから、
ディファードレンダリングのほうがお得になってくるのかね? lines描画で、頂点位置のピクセルであることを、ピクセルシェーダに伝える方法あります?1passで。 ベクタースキャンディスプレイみたいに頂点部分を明るくするとか? >>245
いくつかの頂点位置に2パス目でビルボードを描きたい。
そのためにpsからuavに位置を出力しようとしてます。
vsからuav出力できない環境です。 結局半透明合成時のZソートの自動化はどうなったの?
Aバッファか何か知らないが、DirectX側が自動でピクセル単位で
Zソートをかけてくれるようにするだとかしないだとかの
話があったようななかったような >>248
12でサポートって話だったけど、どうなったんだろうね?
まぁいずれにせよ、12自体が11世代とHWは変わらないことを考えると、
HWアクセラレートでリーズナブルにはできないだろうね。 >>248
そんな話あったのか
めっちゃ欲しいですぅ…… DirectX12を勉強しているのですが、
for (UINT i = 0; i < RTV_BUFFER_NUM; ++i) {
//スワップチェインからバッファを受け取る
hr = g_swapChain->GetBuffer(i, IID_PPV_ARGS(&g_renderTargets[i]));
//以下略
の所で、アクセス違反が発生したのですが、原因がわかりません。
iが配列の範囲を超えたのかと思いましたが、RTV_BUFFER_NUM = 2 で、g_renderTargets
の要素数も2なので範囲を超えることはないと思うのですが、
他に原因として何が考えられるでしょうか? そんなもんVSのデバッグ機能で普通にわかるだろ
変数の中身くらいちゃんと調べろよw >>254 >>255
g_renderTargets が原因でした
よく見ていませんでした。失礼しました DirectX11からチュートリアルがないから手も足も出ないんだけど、どうやって勉強すればいいの?
俺の作るゲームなんてDirectX9でも十分なんだが、DirectX12でブイブイ言わせたいんだ。 やっぱ何でもなくないわ。
12は無理でも11はいけるだろ。
11でブイブイ言わせたい。
DirectX12ってWindows10からだったよな? >>258
公式のならこの辺から
https://code.msdn.microsoft.com/windowsdesktop/Direct3D-Tutorial-Win32-829979ef
ストアアプリで良いなら日本語のチュートリアルもある
https://msdn.microsoft.com/windows/uwp/gaming/index
SDK統合後のドキュメントはやる気無さすぎなのでとりあえずDirectX SDKも入れとくべし
そっちのドキュメントの方がはるかに優秀(わかりやすいと言わんが)
DirectX 12のことは忘れろ 9から11だとテセレーションとか出て来るから随分変わるんだけど
11から12ってそんなに変わらんよな。
どうやったら11より早くかけるんだろうな・・ それが12の難しい部分だろうな
11より遅くなるなら12にする意味ないしな
単に動かすだけなら何とかなると思うが
11よりも速く動かすとなると
OSやドライバの細かな動きまで把握しとかないと
最適化できないんじゃないかな
何も考えずにテキトーに書いたら11より遅くなったっていう報告もあったし
11が裏で自動でやっていたことを自分で書かなきゃダメなってのがね
果たして俺らの知識量と技量で11のMSのコード以上のものが書けるんだろうか
素人は速くするためのノウハウとか雛形が出回るまで
手を出さないほうが良いんじゃないかと思うね
手探りで最適解を探すのはかなり大変だし、Win10でしか動かんしね directXってチップ上に関数があるからDirectXのような
リアルタイム3Dライブラリーを作るには結局
DirectXを使わないといけないからパフォーマンスでは
directx未満の物しかつくれないんですか? AMDのOpenGPUってあったろ
参照してみれば?
まあこの手の質問してくる奴って
程度が決まってるから見もしないんだろうけど 程度が決まってるとは知りませんでした。
そんなことがわかるなんてあなたは天才ですね。 匂いまで感じるとは妄想力が素晴らしいですね。
さすがマイクロソフトのゲーム開発ライブラリーに詳しいだけあります。 directx12の開発をノートでやってる人いる?
いたらおすすめのノートpcおしえてくんろ ライトの方向ってライトの方向かよ。
普通光の向きだと思うだろうがハゲ。 ?
前の話題のことか?
ちゃんと光源への方向って書いてるけど・・ いやま、普通、点光源でも平行光源でも
「光の向き」と「光源への方向」は単に符号が反対になるだけだから
会話の上ではさしてどちらでも問題ないわな >ライトの方向ってライトの方向かよ。
意味分かんない… ライトの方向ってこと? >>277-279
気軽に愚痴ってごめん。
正確に書くと、
平行光線のライトを指定するためのベクトルって、原点からライトへのベクトルかよ。
普通は光線の向きを持った単位ベクトルだと思うだろハゲ。
知ってる人同士の会話ではあまり問題にならないのかもしれないが、
オブジェクトがずっと真っ黒で困ってた。
チュートリアルのサンプルと説明をもう一度じっくり読んでやっと解決した。 >>253
スワップチェインを初期化してない
そもデバイスを初期化してない
デバイスから無理やりスワップチェインをクエリで取った
てかスワップチェインに複数のスワップを確保させていないんだと思われる。 >>284
そういえばEyeベクトルでは引っかからなかった。
何でだろうな。
Eyeは多分ベクトルではなく座標で考えてたんだと思う。 フォグのかけかた教えてください
DirectX10です おめえら!
フォグのかけ方の話しろや!
まずは、フォグマップを作ります
↓次よろ それくらいの心意気が無いとdirectxなんて使いこなせん
>>288
とりあえず難しい事は抜きにしてピクセルシェーダー内で
頂点の色に白まぜてみたら?視点からその頂点までの距離計算して
距離に応じて白混ぜる割合変えたり マスターDirectXカッコイイぜ
unity使うわ 太陽とか月とか電球とか光ってるものってどうやって表現すればいいの? 影を付けずに発光色で描画すればよろし。
ぼや〜っとさせたいなら、マルチパスレンダリングでぼかした絵に係数を掛けて加算合成するよろし。 >>298
既存ゲームで気に入った表現を真似ろよ
ビルボードで加算合成じゃね〜のか?
凝ったのになると動画貼り付けてたりするな
レンズフレアも入ってたりとかあるしね unityだとレンズフレアをつけてくれる機能あったな
動作を真似てみては? >>292-293
まさか今日DirectXSDK使った開発やってないなんてことはないよな?
誰もデートに行くなとは行ってない。
彼女とホテルに行ってセックスしながらでもいいからDirectXSDK使った開発やれよ。
ノートPC持ち込んでバックでハメながら彼女の背中にノートPC乗せればできるだろ? ネットで性別とか聞いてもねえ…
言ったところでネカマ認定されるだけやろ いまスタバにいるけど
8人のテーブルに
6人くらい
くりぼっち女性いる サンクス
レンズフレアは難易度高そうだから、とりあえず何かビルボードで表示してみるわ
太陽とか遠くにあるものの場合、絶対位置よりカメラのベクトルに平行光源のn倍ベクトルを足した位置にしたほうが自然に見えるのかな レンズフレアって画面上の位置から画面中心に向かっての直線上に適当な間隔でフレア用のテクスチャを加算で描画するだけでそれっぽく見えるんじゃないの? >>316
そんなかんじだね
>>315
どっちにしても現在見ているものが
画面上のどの位置にあるのか変換できんとそれ系のはできんような?
ぐぐるとでてくるはず >>296
ピクセルシェーダだとむらを出すのが処理速度落としそう。
俺なら、むらを三角関数かテクスチャ参照でやりそうだ >>317
アンビエントを増やすだけでしょ
色をRGBで考えるのを止めるのが大事。
配色や減色は、色相、輝度、彩度で。
今のシェーダならば、一度HSLカラーシステムでエフェクトを作っても損は少ないように思える。 シャドウボリューム法って
どうなんかなあ?
ボリュームにモデルの4倍ポリ使うってのが
デメリットとして挙げられてるけど
ジオメトリシェーダとかうまく使って
解消出来たりしないの? >>323
現代って、ポリゴンコストが相対的にかなりリーズナブルになってきてるから、
再評価されても良いような気がする。
深度シャドウマップ法みたいな酷いエイリアスも出ない(んだったっけ?)し。 縮退ポリゴンを仕込まないと行けないのもあるし
全方位シャドウとかへの対応コスト考えたらシャドウマップでいいよねって気がする そもそもポリゴン数多いモデルだと計算量がかなり多くなるのも問題かな 影の輪郭をボカすのが、シャドウマップより面倒かな。 DirectX10以降、固定パイプラインがなくなって、
なんというか、あくまでイメージだけど、低水準になったよな
基本的に低水準のほうが痒いところを直接掻けるから好きなんだが、まだシェーだに慣れてなくて辛い DirectX10において、スワップチェインを作成する際に、
DXGI_SWAP_CHAIN_DESCのメンバBufferDesc.Formatへ設定するフォーマットについて質問です。
開発用の超絶アルティメットハイスペックデスクトップマシンでは、
チュートリアルと同じDXGI_FORMAT_R8G8B8A8_UNORMを指定すれば問題ありませんでしたが、
動作確認のために6年前に買ったノートPCで実行したところ、スワップチェインの作成に失敗しました。
IDXGIOutput::GetDisplayModeListでリストアップしたところ、
このフォーマットで指定可能な解像度は1つも出てきませんでした。
開発用の超絶アルティメットハイスペックデスクトップマシンではずらずらと出てきたのに、
ノートPCでは1つも出てきませんでした。
ネットを検索してサンプルで使われている以下のフォーマットでも試してみましたが、
1つも出てきませんでした。
DXGI_FORMAT_R8G8B8A8_TYPELESS
DXGI_FORMAT_R8G8B8A8_UINT
DXGI_FORMAT_R16G16B16A16_FLOAT
ロースペックノートPCでも作成できるフォーマットを教えてください。
複数対応しているPCもあると思いますので、
もし可能でしたら、超絶アルティメットハイスペックデスクトップマシンから
ロースペックマシンまで幅広く対応できるように、
スワップチェインを試みる際に指定するフォーマットの優先順位を教えてください。
特に優先順位をつけるものでなければ、おすすめのフォーマットを教えてください。 >>333
ロースペックのPCを買って試せ
できないならunity使え R8G8B8A8が使えないならDX10に対応してないとかじゃないのかな >>330
固定機能パイプラインってのは、結局、ワールド、ビュー、射影行列変換して、テクスチャをマップするだけ
わかれば、固定機能パイプラインは使いづらいと感じる。
CGではなくゲームを作りたいなら、ユニティのが目的合理だよ >>333
デバイスがreferenceになっているンじゃないかな
てか余計な修飾語が見下した印象を与えるから、真面目に回答が欲しいなら、きちんと適切な言葉を選ぶ
この場合、ノートのGPUを記した方が的を射た答えを期待できるよ >>334
質問の中のノートPCというのが低スペックです。
>>335
dxdiagで確認したところDirectX11が入っているので、その点は大丈夫ではないかと思っています。
低スペックPCなのでWindows7 Starterというエディションです。 dxdiagのバージョン表記はハードウェア対応の調査の参考にならんよアレ基本的にOS依存だし
Starter入りだと最底辺のゴミPCだろうからだいぶ怪しいなあ
R8G8B8A8_UNORMが一番対応の幅が広いはずってか対応してないドライバとか存在すんの?
SDKのCaps ViewerをゴミPCに突っ込んでDisplay Modesで確認するのが手っ取り早いかね >>323
計算量とメモリ量、速度と効果を鑑みるとリアルタイムを求めるゲームには不向きだとは感じる。
CADやプリレンダ用途ならシャドウボリュームが好ましい。
GPU性能よりニーズと付加価値が対価に合わない。影より指や動きを増やした方が喜ばれる。
敢えて、腕を削ったモデルを作るとか引き算の時期になっているように感じる >>339
おれは無いと思う。
型指定なし(unorm)が非対応ならdxgi非対応じゃないかと
デバイスやスワップチェーンの初期化パラメータを間違えているように見える。
フォーマットではなく、解像度0x0やでかすぎサイズを指定しているとかさ >>333
スワップチェイン作成可能条件を見つければいい。
おそらくパラメータ間違っているだけだから。 たくさんのレスが…。
ダイレクトエクサー、けっこういるんやな。 ああ、結構いると思うよ
最近では4Kディスプレイのおかげで
普通のアプリでもDirectXを使わないと
満足なパフォーマンスが出なくなってきたから
ゲーム以外でも使っている人多いと思うよ なるほど。
ユニチーにお株を取られた感が強いが、まだまだDirectXがんばるで〜。
エ〜ックス!! お株もなにもUnityもDirectXバリバリつかってるじゃん。 いや、ユーザーが直接触れるという意味で。
ダイレクトにDirectX。 >>348
NativeRenderingPlugin使えば自前でDirectX使って描画まわせるよ。
そこまでやる人はほとんど見かけないが・・・ シャドウボリュームのアドバイスどうも
やっぱジオメトリシェーダでやるには
ポリゴン1枚ごとに三角柱1本建てるぐらいしか
思いつかん
手が合いたら試してみようと思う dx10の人は素直に
sdkのサンプル動かして
どのフォーマットが列挙されるか
確認してみれば? >>345
コモンコントロールやプリンタはgdiエミュレートだしな
リストビューを使えばわかるが、書き換えが見えるわ、メッセージ交換するわで遅すぎる。
なのでウェブアプリケーション式でクライアントを誤魔化す始末
direct2dで7だとエフェクトがマトモにかけない >>348
使っていて分かるが、3Dグラフィックスの基礎を学ぶならユニティの方が楽だよ。
直接叩いたからユニティより速いという訳でもない。
プロダクションレベルの品質と精度を求めようとすると、ユニティはきつい。
よく言われるフラグバグに悩まされたり、よくわからん原因不明の短時間フリーズが不規則におきたりするからね すいません、原因が分かりました。
dxdiagではDirectX11まで入っているという結果が出ていましたが、
GPU-Zを使って調べたところ、
>DirectX Support 9.0c
と書いてありました。
OSはWindows7なのにGPUはDirectX 9.0cまでしか対応してないんですね・・・。
結構ショックです。
このノートPCは6年くらい前に買ったものですが、
安いPCだと2016年現在でもまだDirectX 9.0cまでしか対応してないものも多いのでしょうか? うんにゃ、ちゅーかfeature levelで9.0cハードウェアでも動作するはず……と書いてて気付いたけど
Direct3D 10.0ってそういやfeature levelの概念無かったな
もしかしてD3D10CreateDeviceAndSwapChain使ってて
デバイス作成失敗とスワップチェイン作成失敗の切り分けすら出来ていないオチか? >>349
>>354
おー、そうなんか。
知らんかった。
参考になったわ〜。
>>355
最近はAtomの付属GPUでもDX11対応してるで。 >>355
WDDIのレベルによるし、7のシステム要件はたしかdirectx9cだったはず。
7でノートなら9までってのは不思議じゃない。
これが8以降だと、だいたい11まで対応したドライバになるはず 最近盛んに4Kとか言われるが、その画質で撮影されたソフトウェアを観たことがない。
最近の映画やアニメは、4K画質で撮影するのが主力なのかね?
地上デジタル放送も4Kで配信なんかしてないし、中継網も4Kを配信できる容量がなかったような… >>356
すいません、そのレスを読んで初めてそういうオチだということに気付きました。
>>357-358
ではとりあえずDirectX 9以下は切り捨てで開発していこうと思います。
お騒がせしました。
みなさんありがとうございました。 調べてて思い出したので自分ツッコミ
> R8G8B8A8_UNORMが一番対応の幅が広いはず
↑これ間違ってるわけじゃないけど微妙に補足が必要で
D3D11.xデバイスかつlevel_9_1ハードウェアの条件下の場合B8G8R8A8_UNORMじゃないと駄目な場合があったと思う
(DXGI_FORMAT_B8G8R8A8_UNORMは9.0cのD3DFMT_A8R8G8B8に該当する)
余程の骨董品じゃなけりゃ気にする必要はまず無いんだけど
今の質問者の対象環境だとちょっと怪しいんで一応、ね
>>360
直面している問題については11.xのAPIに切り替えるだけで解決できる可能性は高いと思う
11.xじゃなくて10.xを使う積極的な理由はまず無いはずだし
まあlevel_9_xは11のAPIでも透過的に扱えるように見えて
その実色々と苦労する羽目になるから切り捨てる方がおすすめではあるんだがw 使ったことないが、あの機能レベルってまともに動作するのかな
シェーダレベルが4で機能レベル9cとか動くとは思えない。
9cで動かすなら、アプリケーションもシェーダレベル2のシェーダを別に準備しろ、みたいなオチにみえる。 >>362
実際その辺はシェーダコンパイル時にターゲットの場合分けが必要
https://msdn.microsoft.com/en-us/library/windows/desktop/jj215820.aspx#direct3d_9.1__9.2__and_9.3_feature_levels
ちゅーてもこういうドキュメント化されてるのはまだ全然良いのよ
11のAPIを幅広く使い始めるとlevel_9_xはもっと恐ろしい伏兵があちこちからな…
もはやうろ覚えで出鱈目書くかもしらんから具体的に例を挙げろというのは勘弁だがw >>363
俺も聞きたくないなw
9と11じゃ制限が全然違う。
9に代表されるのは、テクスチャサイズは2の累乗じゃなきゃダメとか、テクスチャはピクセルシェーダしか扱えないといった話だと思う。
ようは機能レベルは、エミュレーションではなく、9cとの互換性検証の為に使えという設計なんだと認識している。 64bitのWindowsで32bitのプログラムを動かしても
もちろんメモリは4GB以下しか使えないですよね?
内部処理が32bitなのでアドレスの上限もそうなりますよね? >>371
何がやりたいのか分からんけど、どうしても広いメモリ空間使いたかったらファイルマップとか使うしかないんじゃないかな >>372
メモリマップドファイルのことかな?
あれも32bitの容量制限かかるよ。 >>373
そうだっけ?
引数がDWORD2つだったから4G以上アクセスできたと思ったけど… セグメントディスクリプタの使い方を勘違いしていないか あ!
確かに一度にマッピングできるのは使えるメモリ空間以下になるから直接アクセスできるのは4G以下だね OSが4GBしかメモリ空間を管理していないから、OS以外の手段でアクセスは出来る。
要はDOS時代のXMSみたいなやり方で、環境依存するし、リニアにアクセスできないから使い勝手が悪いし、実質、そこにコードを置けない。
これ以外にもハードウェア自体が64ビットのアドレスバスをマザーに結線していない(48ビットのみ)場合もあるから、素直に64ビットプラットフォームにした方がよい。 なに急にわけのわからないこと言いだしているんだ
64bitのWindowsって書いてあるだろ
それとは関係ないけど、先の人も言っているように
メモリマップドファイルはかなり有効
一度にマップできるのが4GB以下ってのはそりゃそうなんだが
同時に4GB以上のメモリにリニアにアクセスしなければならないことは
現実的にはほぼ無いからな
必要な分だけ都度都度マップして処理すればよい
ただ、存在意義の意味で微妙っちゃ微妙な部分もあって
というのも4GB以上のメモリを搭載しているなら普通は64bitOSを使っているだろうから
普通に64bit版を用意すればよいし
32bitOSを使っているなら、たぶん搭載メモリは4GB以下だろうから
メモリマップドファイル使っても結局スワップしまくるだけで
現実的な速度では動かなかったり
使っているDLLやライブラリが32bit用のしか無いとかで
どうしても32bitプロセスにせざるを得ないけど沢山メモリも使いたい
って場合にのみ有効って感じ なんかあれだからちょっと
4GB以上のメモリを使うプログラムを作りたい
↓
4GB以上のメモリを搭載しているPCで使われることを想定する
↓
4GB以上のメモリを搭載しているなら
64bitOSを使っている可能性が非常に高い
↓
64bitプロセスでよくね?
ってことが言いたかった
メモリマップドファイルを駆使して32bitプロセスで
4GB以上のメモリを扱えるように頑張って
32bitOSと64bitOSの両方で動くように作りこんでも
結局32bitOSは元々3GBぐらいのメモリ容量しか認識しないし
搭載もしていないだろうから激しくスワップしまくるだけっていうね
4GB以上のメモリを扱うプログラムにおいては
32bitOSは足きりってのもアリだと思うよ 正月早々寝込んじまって全然directxできんかった・・ Xは1日離れると、本調子に戻るまで一週間かかるからな DirectXに限らず自分が書いたコードでもしばらく見ないと解読不能になるな DirectXのアイコンって今後変えないのかな
サンプルのモデルもそうだけどダサい気がする ダサくても100年200年経った頃にはダサいとかダサくないとかそういった領域を超えて
格式とかそういうのが感じられるようになるだろ。
市内にも100年単位での歴史ある老舗がいくつかあるが、
恐らくその当時からあるであろうその看板は
今見るとダサいとかダサくないとかではなく格式が感じられる。
DirectXのロゴでも同じことだろ。 あのロゴはどうだろうな
恥みたいな評価は残るかも?
にしても少しだけシェーダを理解できて、それなりに光を表現できるようになったが、
この先は、デザインやセンスに頼る所が大きいね
自作ツールでメッシュを作り、回転や波形な動きは実現できた。
だが、その先の壁にきた。
俺が作るモデルにはセンスがない。
どうしたものか 絵の次は動きだよ
directxはちょっと関係薄くなるけど
これは自作しないであるもの使った方が良いかもね
つらいよ〜 ブレンダー触ってモデルを作る気力が失せたのよ
マウスで造形するなら、粘土で素体つくって3dスキャナーなりキネクトでスキャンした方が楽だが、作りたい、動かしたいモデルがない。 DirectXはゲーム用途によく使われるけど、
時間かけて静止画をレンダリングしたって別にいいわけで。 >>394
Sayaがあなたのお部屋にDirectX >>391
彫像、彫刻を彫るのと3dモデリングは、道具が違うだけでしょ
プラモデルや樹脂人形と違いない。
実際、名品と呼ばれた仏像なんかは30年前から3dスキャナーで複製を盗作されている。
名前は3dスキャナーとはつけられておらず、レーザー計測器と呼ばれていた。
プラモデルなんかは、普通にこの恩恵だよ
それらの設計手法とモデリングは近しい。
昔は芸者家は生活できないと言われていたが、
今は、芸者家が食える社会になった。
でもレオナルド・ダ・ヴインチが出現しないのは、安く買い叩くからだね >>398
プロジェクション(投影)じゃなかったっぽいよ
最後の方しか見てないけど WindowsマシンをサーバーにすればサーバーサイドでDirectX動かせるよな。
サーバーサイドで3Dレンダリングができるということだ。
何か面白いサービス作れないかな。 >>402
5年前からHyperVにあるぞ
たしかRemotefxとかいうシンクラ機能 >>405
これ、リモートデスクトップでゲーミングpcに繋ぐだけにみえるのは気のせい? 連騰すまん。
鯖と雲のラグに、雲と倉のラグで悲惨なことになりそう。ゲームを選びそう
mitmでプレイヤーのプロファイルを横取り。
なんか、物流や仲介業のリストラクチャみたいだ。 しばらくDirectXしないと禁断症状が出る・・・ ここの住人はどれくらいのレベルのもんつくってるんだろ 作ってないでしょ
飽きて法治、答えないかな〜って見に来るだけ
はてなアンテナの端末だよ >>414
DirectXでは大したことはしてないが、
趣味でッモルピグ作ってて、
その描画部分にDirectX使ってる dx12触ってる人からするとvulkanってどうなの?
ここが糞とか羨ましいとことかありますか >>419
OpenGLがVB扱いってのは時代だなと思う。 興味本位でクラウドワークス登録してみたけどdirectxの仕事なんて無いんだな
登録する前にXファイルのパーサー作成依頼見かけたけど既に無くなってた >>422
クラウド系のアウトソーシングにないだけで、
PCゲーム作ってるような企業なら正社員求人でいくらでもあるだろ。
調べたわけじゃないから知らんけど。 いまのゲーム業界はほとんどスマホメインだからUnity使えた方が重宝される
コンシューマもOpenGLだし…
頑張ってPC系のゲーム作ってる会社に潜り込め >>426
簡単過ぎて笑えてくるよ
DirectXの方が断然楽しい DirectXでもOpenGLを使うにしても人数を必要としないからじゃね?
シェーダはセンスと理解度の深さが出るが、大量にゴリゴリつくることもない。
今いる人間が離れなければ、募集なんかしない。
コンシューマでゲームなら、普通にジヤバで書ければ充分でしょ。
当然、プロジェクトの期間限定のテンポラリ枠 使い捨てやね・・・。
やっぱDirectXは趣味でやるのが一番やで。 プログラムの楽しさなら、GLかhlslだね
ユニティは、アイディアを形にするときにストレスがある。
使い捨てのスクリプトなアプリを作る割り切りが必要 最近のコンシューマゲームはJavaで書いているのか
428がキチガイじゃなければびっくりだわ コンシューマーをJAVAとかいつの間に異世界に来たんだろうって思った。
オンラインゲームのサーバーすらC++でゴリゴリ書く時代だというのに もしかして、コンシューマー = ソシャゲ悩なんじゃwww 吊し上げ食らっている者だが、OpenGL-ESはJavaで書かないよ。
シェーダやESがらみのコードを大量の人間を投じて書くのは非効率って話だよ。
シェーダプログラムよりもJAVAのくそ面倒くさくてつまらない部分こそ人手を欲しがるってこと。誰でも書けるしレビューも簡単。
てか、ぷろぐらまスレの話題。 というか、今時だとシェーダプログラムなんか専門学校卒の7年以内の人間でも、それなりに書けると思うぞ。上位1割程度にはなるだろうが。 専門学校2年とかじゃなくて、卒7年なの…?
それもはや専門学校関係ないんじゃ JAVAが人手が必要なのとコンシューマーってなにも関係なくね。
androidでゲーム作るにも今はC++が当たり前だし。 俺も知り合いしかプレイしないMMORPGを趣味で作ってるが、サーバーサイドはC++。
データはPostgreSQLに入れてる。
クライアントはDirectX10で、C++使ってゴリゴリ書いてる。
プレイ人数が少ないから、へっぽこ自宅鯖で通信をSSLにしても遅延や負荷は皆無だった。 >>437
Androidは最近?はunityが多いぞ、iOSとマルチが当たり前でかつ低コストで作らなきゃいけないから
ゲームエンジン使ってるのがほとんど
スクエニかどっかは自前で作ってた気もするけど androidはcだとどうしてもできないことあるから、
いちいちjavaにお伺いたてないといけないのが面倒。 rootsignatureやrangeあたりを詳しく解説してあるサイトを教えていただけませんか?
英語で構いません
自分のレベルはDirectX12の描画手順がなんとなく理解出来た程度です ここの住人はやっぱ英語が堪能なのかい?
情報収集能力向上の為、中一英語からやり直してるわ
英検でもうけるか >>442
英語のドキュメントや論文を読むのに、大して英語力は必要ない。
出てくる単語が極端に偏っているし、堅い文法しか使わないし。
俺はプラグラム関係のドキュメントなら辞書なくても読めるけど、
小説とか日記は無理だ。 プログラムというか理系関係は
ほとんど語彙力勝負みたいなもんだから簡単だな 漏れは52歳だけど、マンガの「ドラゴン桜」で有名な英語教師、
竹岡広信のドラゴン・イングリッシュ・シリーズで勉強している
「必修英単語1000」「必修英文法100」の2冊やれば、英検準1級ぐらいかな? きちんとした数学や物理のしっかりとした基礎理解のほうが大事
英語は多少ガバガバでもでぃーぷらーにんぐでパワーアップしたgoogle翻訳でなんとかなる >>442
読んで欲しいページあったらURL貼ってみ JavascriptのThreejsのようなDirectXを簡単に扱えるC++のライブラリありますか DirectX12辺りから、難易度的に趣味人お断りの雰囲気があるが >>442
辞書片手に読むだけで、なんも苦労しないよ
上にもあるが、単語や動詞が偏っている。
たまに否定形になっていてイラッとしたりするが、問題なのは世界共通。
英文でも、大事なことは書いてない。
当然、必要知識の辿り方なんか書いていないし、前提知識の予備説明なんかも書いていない。
大学の教授や高校の教諭、教科書が如何に有難いものかを理解できるよ。
なので、最近(20年ぐらい)は書籍の専門書を定期チェックしてる。 >>455
結局は見ても分からんからサンプルコード自分なりに解析して
動かせるようになったわ DirectX11でXAMLって意味あるのかな
ゲーム内のUIが全て記述できるってわけでもないよね DXUTguiみたいなコントロールをサクッと乗せたい場合な便利なんじゃないかしらね
常に再描画される動的なテキストみたいなのは負荷的に任せちゃ駄目だろうけど
Win8.x以降は子ウィンドウのレイヤード化とDirectCompositionの組み合わせで
Win32の(コモン)コントロールでも同じようなことできたと思う SM6.0でコンパイラがfxcからllvm/clangに変わるってやつだっけ >>460
ビルド条件が微妙だった
VS2015、10SDK、DDK、pyton、cmake
ビルド済みバイナリは見当たらない。
バイナリだけください。、 それなりに作り込めたんだが、
なんかリソース管理ばっかでシェーダコード自体はあんま書かないもんなんだな
シェーダから無駄を省けば省くほど、リソース管理が複雑になる印象
計算回数を減らそうとすると、モデラに苛つく。
コンバータを書き、モデラの座標系にストレスを覚えて、GPUも大事だが、CPUもパワーが要ると分かった。
スキンメッシュには、今のシェーダモデルでは、どうしてもCPUが計算しなきゃならん部分がある。コンぴュートシェーダでも解決できない。
ただの愚痴 ネットワークゲームは、この辺から生まれた発想かな
ゲーム本体と画面処理を分離したくなるよね。これは。 DirectX12で、デスクリプタテーブルを生成する場所はルートパラメータ以外にはありますか? あいかわらず12の書籍は出る気配無いね
洋書1冊のみ。 質問なんですけど、
画像を分割してテクスチャ(複数)にしたいんですけど、どうすればいいですか?
よろしくお願いします
DirectX9です PhotoshopとかGIMPとか使ってがんばれば? DXライブラリのLoadDivGraphみたいのをつくりたいです 読み込みたい画像フォーマットの読み込み方を調べて、取得できたデータをテクスチャにコピーするだけだろ。
それを理解できないならLANケーブルで首吊ったほうがいい。 ファイルからデータ読み出して分割してメモリからテクスチャ作るまたはuv座標いじって表示させたらいいと思う T Umezawa
【Java】ゲームプログラミング超入門
YouTubeにある、T Umezawaの動画を見れば?
Javaだけど、基本的には同じ >>466
その洋書ってどんなレベル?
DX12の入門レベルだったら欲しいかも 12はリソース管理において、関係構造をOSからアプリケーションに委譲したいような雰囲気がある。
これは、マルチデバイスにしたてきに、どっちに何をやらせるかを分離できるようにするためかな?
13あたりになったら、描画パイプラインすらアプリケーションが弄れるようになりそう。 >>476
英語読めないからわかんない・・
amaでdirectx12で検索すれば出て来る Win10にdirectX9.0cをインストールしたんだけどDXDIAGコマンドで確認したらバージョン12になってるんだけど、9.0cをアンインストールする方法ってないですかね?
ベンチマークソフトを動かしたいだけだったから9.0cはもういりません
アンインストールは無理ですかね? 9.0cってかEnd-User Runtimeじゃろ?
アンインストーラは用意されてないので無理
まあ基本的に入るのは必要がなけりゃ呼び出されすらしない補助ライブラリだけだからあんま気にすんな >>483
アンインストールできないんですね…
今度グラボをGTX1050Tiに交換する予定なんですが、12と9.0cふたつあって、それが原因でグラボの動作が不安定にならないか心配で…
大丈夫なんでしょうか? どのバージョンで動作させるかはアプリケーションが決める事なんよ
仮に9.0cがアンインストールできたとしたらそれに依存しているゲームは起動すらしなくなる
だからアンインストールはデメリットしかない
あとここプログラム板だからな >>485
ありがとうです
しかもスレ汚しすまんす
該当スレを探しても見つける事が出来なかったので、どなたか誘導してくれませんか? それが原因で動作が不安定になることはないから、
安心してのんびり時間かけて自分でスレ探してこい directx12なんだけども
GPUで計算終わって描画後に頂点情報取得する方法ってなんかある?
ストリームアウトプットくらいしかないかな・・
ストリームアウトプット以外の方法で描画関数作っちゃったもんで
そのままでなんかいい方法無いかと思いますて・・ >>489
じつは現状CPU処理で座標がどうしても少しずれててどこで計算間違ってるのか
解決できずにいまして、それで描画に使った計算済みの頂点取れないかと
オモタところでした・・まあ、そもそも計算間違ってるのが1番の原因なので
もう少し見てみることにいたします
ありがとうございマスタ 12なんだが
D3D12_STREAM_OUTPUT_BUFFER_VIEWのBufferFilledSizeLocationがイマイチ
わからん
だれかわかる? 埋められたデータサイズ受け取り用の変数のアドレスじゃね?
使ったことないから正しいか知らんけど。 XMQuaternionSlerp(Q0,Q1,t)
で球面線形補間ができることは分かったんですが、
その補間経路間(Q0〜Q1)の角度ってどうやって求めたらいいんでしょうか?? プログラムももう少し幅広くやりたいと思ってるんだが気が付くと
directxいじってるな・・ 俺は良い質問だと思うよ
ただ、2chで答えられる奴はいないと思う
ここの連中のレベルは大体ここらが限界 クオータニオンからオイラー角を求めたいってことかな? いわゆる球面上の2点間の角度?
だとしたらそれこそXMQuaternionSlerpの実装読めばわかると思うんだが
2つの単位ベクトルの角度と同じやり方じゃなかったか >>501
>2つの単位ベクトルの角度と同じやり方じゃなかったか
これで分かりました!
ありがとうございました! 求:DirectX11でスキンメッシュアニメーションのやり方を解説しているサイトのURL バッファーに行列突っ込んでシェーダーリソースビューにしてbuffer<float4>ってやればDirectX9の頃とそんな変わらずできるよ directx11(windows sdkに統合された以降)のオヌヌメの入門本かサイトありませんか?
ずっと昔に9を触ったきりなんだけど、突然11を触らないといけなくなりました >>508
ありがとうございます
本屋で探してみます 工学社のDirectX 11 3DプログラミングってDirectX SDKを使った古代のコードじゃないの?
改訂版で新しくなってるかと思ったらサンプルのタイムスタンプを見る限り2010年のままだし https://web.archive.org/web/20090925225036/http://www.tkzdev.net/?p=12
続きが見られないから手さぐりするしかないか
Direct2D始めるのにいい書籍とかあるんだろうか directx12なんだが
コマンド関係の処理と並列にmallocやった場合
visual studio 2017のグラフィックデバックをやった時にmalloc失敗することが有る
通常のデバックだと失敗しない。
なんでグラフィックスデバックだけ失敗するのかわからんのだが
あんまきにしなくてもいい? >>513
コマンド処理してる間はmalloc排他処理しないとだめって事みたいね
サンクス directx11で3dモデルとレイの当たり判定ってどうしたらいいの?
調べてみたらdirectxcollision.hってのがあるみたいだけどどう使ったらいいのかさっぱりわからん... >>515
DirectXCollision.hの範囲で解説すると
o メッシュのすべての三角形で判定したいならTriangleTests::Intersects
o メッシュの大雑把な形状で判定したいなら各BoundingなんちゃらのCreateFromPointsにメッシュの頂点突っ込んで
ボリュームを作成しIntersectsメソッド
これでわからんかったらもーなんかとりあえず3Dゲームのための数学とかそんな感じの教科書一冊読んできて… directxmathかなんかに統合されてなかったっけ >>516
返信ありがとうございます
とりあえず適当な本買ってみます
もうひとつ質問なんですがどのポリゴンがレイと交差するかってどうやって判定するんですか?
そのあたりも数学の本でわかるんでしょうか 数学的に解ける問題よ。
まぁ、DirectXではAPI呼ぶかたちだけど。 今はとりあえずfor文でループさせて頂点インデックスを探すように実装してるんですけど
もしよろしければ効率的なやり方を教えていただけないでしょうか >>517
DirectXCollision.hはXNAMathからDirectXMathに名称変更後の定義ヘッダ
SDK統合後はインクルードするだけで使える
DXSDKの頃はXNACollisionというサンプルの方に実装されてた(衝突判定周りはだいぶ様変わりしてるけど)
>>518
ソースコードにもちゃんと書いてあるけど三角系とレイ判定はこのアルゴリズムの採用が多いかな
Moller Trumbore intersection algorithm
https://en.wikipedia.org/wiki/M%C3%B6ller%E2%80%93Trumbore_intersection_algorithm
ゲームエンジンの実装でも目指してるのでなければ理解する必要はあんまり無い DirectShowについての質問なのですが、生成されていくある動画ファイルを
追いかけ再生するものを作りたいと思っているのですが、
Stream Buffer Sinkフィルタを作成して、フィルタグラフに追加。
Stream Buffer Sinkに動画ファイルを繋ぐ。
Stream Buffer Source Filterをデコーダー、レンダーに繋いでいく感じでいいのでしょうか?
勉強しながらなのですぐに組めそうにはないのですが、処理の過程が知りたかったので質問した次第です。 >>522
完成されていないファイルを読み込ませることってできるのかな?
ソースフィルタをカスタムで組むなら可能かもしれないけど・・・。 インデックスチャンクが存在しない物は無理じゃね。そしてスレ違。 DirectShowと戦うスレ、なくなっちゃったからなぁ。
まぁ、ここで聞きたくなる気持ちは分かるよ。 亀レスすいません。
>>522です。
>>523
一応、普通の動画プレイヤー(Windows Media Player MPC-HC MPC-BE 他)でも再生できるので
開いた瞬間に制作されていたところまでなら読み込めるようです。
それは、DirectShowの動画を普通に再生した場合でも同じようです。
ただし、どの動画プレイヤーでも開いた後に追加されていく動画ファイルは読み込めないといった感じです。
>>524
ごめんなさい、スレチでしたね。
DirectShowと戦うスレがなくなっていたため、関連がありそうなスレで質問したのですが、申し訳ありませんでした。
別の掲示板等で質問してきたいと思います。
>>525
DirectShowを余り使う人が少ないんでしょうかね、残念です。 MediaFoundationへの移行は中途半端に終わり、
メディアプログラミングは暗黒時代へと入った・・・。 >>522
DirectX じゃなくてストリーミング再生の話じゃろ ちょっと質問なんだけどNowLoading表示させながらリソース読み込みとかってどんなやり方でやってる?
マルチスレッドでやったんだけどNowLoading表示時のコマンドリストとリソース読み込み時にやるNewとかmalloc
が競合してるみたいでmutexで処理したんだけどこのやり方が一般的なのか気になって・・ >>529
シーンのステータス自体にNowLordingを持たせてゆっくり処理すればいいよ 何でもかんでもマルチスレッドにしちゃわないで何が並列で動くのか冷静に分析するのが良さげ >>530
もっと勉強します
>>531
ありがとうございます。
参考にさせていただきます >>532
おっしゃる通りです。
最初競合してるのをしらずに排他処理もせず動かしていたんですがグラフィックデバックと
いうのをやった時にこの不具合に気が付き、色々やったら排他処理だらけになってしまった
といった感じでした。
でもまたひとつ覚えました。ありがとうございます。
皆さんまた何かありましたら宜しくお願いいたします WindowsPhoneとやらではDirectX動く? D3D11以降のグラフィックス体系(D3D11、DXGI、D2D、DWrite)は
割とそのまんまなAPIがあると思ってええよ
デスクトップ複製や共有テクスチャみたいなのは流石に無いけど https://goo.gl/Y4tSAe
これは嘘でしょ?
本当なら落ち込むわ。。 >>540
D3D9も無けりゃOpenGLも無いよ(Windows 10 Mobile以前は知らんけど)
まあ低スペックのSoCだとlevel9_3とかそんなんで戦う羽目になるが >>556
スペースハリアー作って!
スタークルーザーでも可!! 12でやってるんだがどうも未だにGPUの動きがわからん。
グラフィックデバックでやった時にたま〜にエラーがでるんだよな〜 >>566
SDKのサンプルも似たような現象が起きるの? >>567
いや、SDKは試してないけど
自作のゲームで起きてるんだわ。
イマイチ原因がつかめてなくて。
30秒くらいするとコマンドリストの処理のあたりでアクセス違反が出る。
通常のデバックだと出ない。
directxの初期化処理の後に
2スレッドでリソースの読み込み→シングルスレッドでゲームループ(ここで30秒くらいでエラー)
って処理やってるんだけども
実験的に画面クリアするだけのループを
directx初期化直後に置くとエラーが出なくて
リソース読み込み直後に置くと同じエラーが出るといった感じ・・
ちょっとサンプルもためしてみるお・・ よく12でマルチスレッドでエラーが出るってレスがされるけど11のときとは勝手が違う感じなの? コマンド実行中なのにバッファを再利用したりしてんだろ。
使用中というかリソースの状態を強く意識して扱わないと正常に動作しない。 シングルスレッドでもなるからそっちなのかな・・
もう少し検証してみるお
さんくす directx9にて、blenderでxファイルを出力して表示しようとするとモデルが真っ黒になります
xファイルをテキストエディタで開いてみるとMeshTextureCoordsブロックが出力されていません
どなたかお分かりになるでしょうか? blenderのxファイルの出力がその程度なんじゃねーの? blenderからゲームモデルを作るにはFBXとかいう形式を使うと上手く行くらしい よくわからんがそういうexporterプラグインを探せばいいんじゃね お騒がせしてすみません。
Blender歴3時間の私が作った立方体が悪かったみたいです。
フリーの3Dデータをダウンロードしてxファイルでエクスポートしたら表示されました。
モーションさせようとするとクラッシュしますが頑張って解析してみます。 >>577
いやFBXにしろ
何言ってるのかわからないレベルならunity使え directx12とdirectshowって一緒に使っても大丈夫?
競合とかある? 将来性皆無とはいえ、xファイルは良くできたフォーマットなので、勉強にはいいんでないかね
最低限のことはできるし、自分でパーサ作りやすいし
モデルの構造をある程度理解しちゃえば、FBXの読み込みなんてなんてことないわよ レスありがとうございます。
現状、Xファイルならマルペケさんのところのサンプルコードを使って
tiny.xというDirectXSDKに付属してるモデルのアニメーションはできてます。
Blenderから出力したXファイルだとアニメーションできないので調べてるところです。
FBXについても調べてみたのですがSDKのサンプルにDirectX9を使うサンプルがなく、
ぐぐってみましたがFBX&DirectX9でアニメーションさせてる記事みたいのがありませんでした。
DirectX9を使ってFBXファイルのアニメーションさせたい場合、
パーサを自力で書くしかないですよね?
であればFBX使うメリットがあんまりわかんないです。恐縮なんですけども。 >>581
ゲームモデル用にblenderが十分な出力ができる形式ってFBXしか持ってないはず
blenderのxファイル出力を研究するのは徒労
んな状況なのでガンバレ
無理そうだったらunityな >>583
レスありがとうございます。
どうしてもDirectX9じゃないといけないのでどうにかして頑張ります。
Blender以外のソフトでXファイルのアニメーションが再生できるか試してみて、
駄目ならBlenderのExporter作成に挑戦してみて
それでも無理ならFBXのDirectX用パーサ作成に挑戦して、
それも駄目なら独自形式でやるかしようとおもいます(ヽ´ω`) >>581
FBX SDKを使えば、データの読み込みまでは簡単
そのデータを、DirectX側に合わせて割り当てるだけ
割り当て場所が分からないとすれば、まだ勉強不足
(Xファイルのフォーマットはここが非常に分かりやすい。
逆に、ここを勉強する気がないなら、Xファイルの使用はやめた方がいい)
或いはD3DX系に頼っているためと類推
Xファイルは過去のものな上、当時ですらアニメーション情報までまともに吐けるソフトは数えるほど
最近のデータにも対応してないというデメリット(本当はテンプレートで何でも持てるんですが)
それでもスキンメッシュのアニメーションくらいまではできる、頑張って fbx2xfile
Softimage Mod Tool
とかイケるらしい
どこまでできるか知らんけど 度々すみません。
Blenderで出力したアニメーション付きXファイルですがDirectX9で再生できました(涙)
DirectXSDKのサンプルのSkinnedMeshというので確認しました。
SkinnedMeshはアニメーションが複数あった場合、最後のアニメーションを再生するらしく
フリーで拾ってきたモデルは複数のアニメーションが登録されてあって最後のアニメーションが
アニメーションしないアニメーションでした。
そのため最後のアニメーションを削除したら動くのを確認できました >>587
マジで
ちょっと必要なモデルをいくつか作ってみれ
俺はblenderのxfile出力は使えないと昔判断しちゃったけど
その理由が何だったのか思い出せない
今回必要な要件が満たされているなら気にしなくていいっす
すまんこ >>579
ひとつのプロセス内で一緒に使うだけなら特に問題無いけど
VMR9のレンダリングをGPU経由でD3D12のテクスチャに転送したいとかなら
いばらの道ってレベルじゃないと思う >>589
おおさんくす
じつは自作ゲーム内(dx12)の松明の火を
directshowで火の動画ファイルからサンプルグラバで毎フレーム取得して
透明ポリゴンに貼り付けって感じでずっとやってたんだけど
最近グラフィックデバック時にエラーが発覚して
directshowが直接の原因かははっきりしてないんだけどその処理をやらないでいると
エラーが起こらなくて何か関係あるのかなと・・ 連投で申し訳ないんだけども必死でググっても中々解決法が出なくて・・
グラフィックデバック使用時にCreateCommittedResourceで
ToolExseptionで例外出す時あるんだけどもこれってどういう意味なの? 例外は別原因では?
12はようしらんが、GPUにメモリ確保しようとして失敗するなら
・割り当てを指示したデバイスがない
・デバイスが指定した条件のメモリを確保できない
・メモリ確保量が大きい
・アライメントに丸まってない
・非対応のカラーフォーマット
とか、そんなんな気がする。
パラメータを提示した方が答えが得やすそう 12に特有な原因としては、マルチアダプタに起因するものかな。
複数のデバイス両方でアービトレーションしたら使える機能が制限されるとか >>592
>>593
コメントありがとうございます。
頂いたコメントを元にまた調査いたします。 ちょっと質問宜しいでしょうか・・
12何ですが描画をし始めて7分くらい経過すると
C++ の例外: _com_error (メモリの場所 0x024..
というのが連続で出始めるんですが一般的な原因として
何が考えられるんでしょうか? >>595
お前のコードが糞
マジでそれ以外ありえない >>595
言葉通りならリーク。地獄のRelease漏れ
デバイスドライバの不具合とか、ウィンドウシステムの御約束とかはそのあと。 たくさんの回答ありがとう
_com_errorが出る前にも
ある程度時間経ってからある操作をすると不具合が出るというのが有って
その辺が原因だったのだろうか
その線で調べてみます >>601
正解(サンプルなど)から逆算していったほうがいいぞ 人の3DCGモデルが武器のモデルを持って振る、という動作を実装したいのですが、
どうやって実装すればよいのか、全く検討もつきません。すみません。
方針だけでも教えてくださると助かります。 そのレベルじゃunity使えよ
んで入門書に金使え
今のDirectXって昔3Dエンジン作ってましたって人しかさわんねーよこんなの >>604
DirectX(というか、一般的なリアルタイム3Dグラフィックス)において、
どのようにスキンアニメーションをプログラミングするかを説明したサイトや本が参考になるよ。
ここでサラッと説明できるものじゃぁない。
でも、できると感動するし、基本的なプログラミング能力は劇的に向上するからがんばって。 おまいらスレタイ見なさいよ、初心者スレだっつーの
アニメーションはできてると仮定して、とりあえず手首当たりの
ボーンが持つローカル座標に武器のモデルを置いてみたら?
最もそんな汎用性持たせるより、武器ごとにデータ持たせた方が、データ作る側は楽よね だってDirectXだもの
ゲームエンジンがある時代に初心者がこんなもんさわんねーよーに追っ払ってやってるんじゃん
ぜってー間違えて迷い込んだだけだよ
本当はunityで十分のはずだよ あの、以前CreateCommittedResourceの件で質問した者なのですが、
CreateCommittedResource失敗してるのかと思いきや返り値はS_OKになっておりました
その状態でCreateCommittedResourceの所で止まり
『 ハンドルされない例外が 0x757EA9F2 で発生しました
(3DRPG.exe 内): Microsoft C++ の例外: GRFXTool::ToolException
(メモリの場所 0x023BE9E0)。 が発生しました』とでます。
ちなみにこんな感じです
if (FAILED(device->CreateCommittedResource(
&CD3DX12_HEAP_PROPERTIES(D3D12_HEAP_TYPE_UPLOAD),
D3D12_HEAP_FLAG_NONE,
&CD3DX12_RESOURCE_DESC::Buffer(mElementByteSize * elementCount),
D3D12_RESOURCE_STATE_GENERIC_READ,
nullptr,
IID_PPV_ARGS(&mUploadBuffer)))) {
char *str = "UploadBufferエラー";
throw str;
}
最初に確保した時は出ないのですが、その後7分程描画を行いその後別に確保
しようとすると発生します。取得するサイズを小さくしても発生します。
しかし通常のDebugと、Releaseでは発生しません
なにか考えられることは有りますでしょうか・・ >>610
そんだけ情報出てデバッグできないなんてVS使ってる意味がねーな 無理っしょ
こんなのわかんないレベルならDirectXはやめとけよ
何が最終目標なのか知らんけど
サンプルを軸にちょっとずつ足してor変えていって不具合見つけなよ え・・そんな初歩的な不具合なの・・?
なんか初めて見るやつだったから特殊なやつなのかと・・
まだ勉強不足という事で検証用のコード作って
検証してみますお・・
さんくす >>615
違うよ
問題の切り分け方がもう駄目だっていうの https://www.amazon.co.jp/dp/479812303X
酷いコメしてる馬鹿
自分が理解出来ないからって星一つとかω
5つ星のうち1
期待はずれ
本書はMMD経験者用の本だと思う。
内容のほとんどがボーンのモーションでしめられており、
超初心者が求めている「とにかく初めは単純でいいから簡単な3D作品を作りたい」
という要求には一切応じていない。
コメント1件
あたりまえ >>617
そいつがそう思ったんだからそれでいいだろ
全部高得点だと怪しいからそれはそれでいいんだ CreateCommittedResourceについて質問していた者です
原因はメモリ使用量の問題でした。メモリの空き容量は全く問題無くなぜこんな
エラーが出るのか悩んでいましたが
x86でビルトしていたのを思い出して
試しにx64でビルトしたら何の問題も無く動きました。
いずれにしてもメモリ使用量多すぎなので少しずつ改善しようかとおもいます
お騒がせしました
ありがとうございました それだとフラグメンテーションだろ。使用量が問題ではない。 フラグメンテーション!!
そういうのも考慮しなきゃならないんですね!! いやーマジで趣味なら止めないけど
いち早くグラボの性能が試したいとかさ
そういう理由でやる人は案外伸びる
今そのレベルで本当にゲームエンジン作ってって目標にしてるならライフワークになっちゃうけどいいのか? >>620
x86だと標準は2GBまでだと思ったけど、本当にメモリの空き容量に問題なかった? >>623
ゲーム作ってるのはプログラムの勉強の為といった感じで特にゲーム関連の仕事したいと
いうわけではありませんでした。でも正直何かしらプログラム関連で関わりたいと思っているところです
>>624, 625
空き容量に問題ないといったのはx86でやってたの忘れてて普通にメモリ全体の容量で見ていました。
その作ってるやつが700MBくらいメモリ食っててこれはひょっとしてと思いまして・・
700ったら多すぎですよね‥
buffersize指定ミス・・・その辺も見直してみます・・ スッキリわかる Java入門 第2版、2014
たのしいRuby 第5版、2016
C/C++は、素人がやるものじゃない。
複雑すぎるから、動かすのに時間を食うだけで、全体像は分からないまま。
つまり、体系的な勉強は出来ない
まずスッキリで、オブジェクト指向を学ぶか、
たのしいでRubyを学ぶのが先
プログラミングは、それらで基礎を作った後に学ぶ。
この2冊でみっちり勉強しておけば、Python, JavaScript, C# にも移行できる CASIOのPB700でポケコンBASICから入り、FORTRAN77(CP/M)、Z80アセンブラ、C言語(MS-DOS、UNIX、NS-OS/2)、VBAと来た俺は
どうすれば、RAD Studio10.2のC++に馴染めますか? エンジンといっても限界があるかな
フェイシャルアニメーションとかはエンジンうんぬん、アルゴリズムどうこうとは次元が違う問題があるからな。
感情を見せるには、決まった動きがあり、タイムラインデータを自作ってのは、個人じゃきつい。
噺は違うがx64にしたら収まったってのは、70時間のエージングテストする必要あり
たぶん、7時間で転ける >>635
ほんそれ
死ぬまでの時間が延びただけで
原因は取り除かれていないと思われ なんでDirectXでJavaとかRubyの話になるの?
意味が分からん。 自作ゲームのソースgithubに公開してるんだけど
exeファイルも公開したいと思ってるんだがgithubにexeファイル置くのって
なんか問題ある? 別に何も問題無いよ
強いて言うならスレの趣旨にかすりもしない質問をしてしまう脳みその方を心配した方が良いな ああ・・いっつもここしか来ないからつい書き込んじゃった☆
すまんの ノースブレインから12の本出るみたい
待望の日本語書籍が・・ 俺は球や三角錐、カプセルなど基本形状を大量に表示させるのに使ってる
まあ速くなってるかはわかんないけどね やば、ジオメトリシェーダの話だった
すまおまんこ
CSはMMDモデルのモーフぐらいだなあ 一本じゃダメなんじゃね?
俺はDirectXか良い部分って、テクスチャフォーマットの読み込みが楽だったり、行列やクォータニオンの計算が楽な部分だとおもって使ってるけど 環境:windows10、 DirectX11.1、C++
1920×1080の画面解像度でDirectXを初期化するとウィンドウサイズ自体が1920×1080になってしまい、
マウスポインタのY座標が画面下へ行けば行くほど狂ってしまいます。
どなたか解決方法等ご存知でしょうか? >>656
DirectX関係ない気もするが…
つ AdjustWindowRect どこで聞いていいかわからないのでここで質問させてください
オブジェクトのxyzを管理するVector3とVector型の変数って何が違うのでしょうか?
私の認識としてはVector3は要素が必ず3つ必要で、
Vector型は単に自由に継ぎ接ぎできる配列って認識してます >>659
Vector3とかVectorってDirectXであったか?
XMFLOAT3とかではないの? >>659
「ベクトル」でググると出てくるよ
1.大きさだけでなく、向きももった量。例、速度・力。
2.要素を(縦または横に)一列に並べたもの。
▷ ⑵は⑴を抽象化した考え。 質問からして文脈の欠落したウンコ故、致し方あるまい 質問する方も池沼
答えてる方も池沼
アホー知恵遅れよりレベル低くなった ああ。ベクターとベクトルの話か
std::vector<XMVECTOR> vertexBuffer;
ベクター型なんてのはやっぱりなくて、テンプレート型と4成分SIMDレジスタに最適化されるかもしれない型の違い。
前者は配列アルゴリズム、後者は頂点座標に使われやすい。
別にテクスチャの色情報に使っても、ニューラルネットの特徴点に使ってもかまわんのだが。 >>656
恐らく、期待する答え。
キャプションを消す。
あと、スクリーン座標とクライアント領域、ウィンドウ領域を調べる。
ウィンドウにメニューつけてみれば理解が鈴村。 もともとの質問はどうでもいいけど
XMVECTORを無節操にヒープに確保しかねないようなソースコードを載せるのはやめて 予測計算できない>o<
そうだ!ヒープに積もう!これでバッチリだねv(^u^)v
と、煽ってみる >Xbox 360 および Windows x64 では、すべてのヒープ割り当ては
>16 バイトにアライメントされますが、Windows x86 では 8 バイトにアライメントされます。
ってことみたいなんで、_aligned_mallocを使うvectorを作ってそっちを使わなきゃダメみたいね そも描画シーンで頂点バッファをベクターで管理する必要がない。
デザインフェーズでベクターを使うのはありだろうが。 旧バージョンのsdkとエンドユーザーランタイムはダウンロードできるものとできないものがバラバラだけどmicrosoftはやる気ないの? 最新(7年前)のがダウンロードできるのなら別にいいんちゃうの SDKは、プラットフォームSDKに含まれて久しいような。
VS2013あたりから。2010は最新2009で問題なし。
必要なのは、ヘッダとインポートライブラリだけ それすらできないアホには、そもそもプログラミングは無理w すんなり行くばかりとは限らないし
素直に同じバージョンで試したいでしょとりあえず 全バージョン保存してたやつとか絶対いると思うんだけど公開してくれないかなあ Summer2003とAugust2005がどっちも解凍形式のexeで、
先にSummer2003をインストールして解凍ファイルは削除して、
その後、August2005を解凍してインストール中に、
Summer2003の解凍フォルダがないみたいなエラーが出てインストールに失敗。
再度Summer2003の解凍フォルダをインストール時と同じ場所に同じ名前で作ってから
August2005をインストールしたら成功したんだけど、
なんか前のインストールバージョンのインストールファイルを参照してたりするの? RADEON HD 3850 @ Windows7 で D3D11CreateDevice が全く通らないのはそういうものですか?
D3D_FEATURE_LEVEL_10_1 とかが返ってくると期待してたんですが・・・ D3D11_CREATE_DEVICE_DEBUG 外したら通りました><
判ってからググったら症例沢山出て来た・・・アフォda あー、レガシーなDXSDKだとWindows 7 Platform Update後のデバッグレイヤーに互換性が無くなる話か
知ってた知ってた エルミタージュ秋葉原 ? 高解像化を果たした最新RGB深度センサー、ASUS「Xtion 2」の開発キットが来月発売
http://www.gdm.or.jp/pressrelease/2017/0726/215839 国内でdirectx12使ってるやつは何人いるんだい? ここの住人は3Dモデルどうしてる?
自分でつくってんの? 自作が基本だな。次に買ってる。
法律違反の道もあるが、中身がスカスカだから実用性がなかったりする。
3Dモデルは、ソースコードとオブジェクトのように機械的に変換するから、いつまでもマシン語にこだわると取り残される。
VisualStudioみたいな開発環境がほしいよ。 動かして学ぶ3Dゲーム開発の数学・物理
電子書籍のみ安売りキター レビュー拾うと依存SDKがDXSDKのままでクォータニオン解説はスルーとか書いてあるし駄本っぽ DirectX本って最近出てないよね
Unity本ばかりしかない directxなんて
マジで誰も触ってないんでは
XboxOneのゲーム開発者あたりは
Direct3d12を真面目に勉強してるんだろうか >>699
触ってないと俺も思う。俺自身、時間の無駄と実感した。
x11APIに絡む部分は、誰が書いても違いがない。手間が掛かる上に、その先が目的なので徒労しかない。 Microsoftが買収したHavok。
Windows10で提供されると思っていたが立ち消えたような静寂。
DirectXの周辺レイヤーみたいに機能が公開。提供されるようになれば、新しく風が吹くと思う。
XNALanaとかみたいなのがあるから、俺が知らないだけかもだけど。 Havokって物理エンジンだけじゃなくミドルウェアも提供してたのか 専門学校のゲーム科とかがC++とDirectXやってるんだろうと思ってたけど違うのか 専門学校でやってくれないと困る。
Unityの基本機能だけでゲームつくってゲーム会社に応募とか最近はマジでいるみたいだからなぁ。 ドラクエも格ゲーもUnrealEngineで作られる昨今だし おまえらもDirectXネイティブの凄いエンジン開発してみろや 俺はそれこそDirectX5の時代から開発しとるんやで!
30万もするNECの腐れDOS/V機と
3万もする腐れPermedia2ビデオカードからスタートしてな!
いまだに進捗は微々で休止中だけどな!
やべえ俺は20年もいったい何をしてきたんだ・・ Unity作品なんか送られても評価する側は困るわ
スマホメインの会社ならそれでもいいのかもしれないが 小生は22年前にポケコンでbasicやってその後20年プログラム離れて
2年前に再開、今はDx12でゲーム作り始めてるお。仕事じゃないけど 海外のエンジンの方が優秀だから皆そっちに行っちゃうんだね 日本社会は5倍の能力持ってても5倍報酬くれるどころか、報酬据え置きでどんどん仕事押し付けてくるだけだからなあ 未経験からのゲーム会社の転職って作品提出が必要だと思うんだけど
DirectX9で作ったゲームで採用される可能性あるかね〜?
ググった限りでは絶望感しかない >>716
ゲーム未経験のC++プログラマなら可能性あるんじゃ?
プログラマ未経験だと絶望的と思うけど、まだ若いなら可能性くらいはあるかと ゲーム会社っつっても・・・・
日本でDirectXメインで使ってるところなんか有るんかね DirectXは、エンジンではありません。
HALの上に咲いたAPIという花。
XNAとかいうフレームワークがゲームエンジンに近いが、調べた感じだと、あれはx9まで
x11も10も未対応 ライブラリだけでは使い物にならないのだ。
3Dデータを生成・編集するソフトもセットで作らないとダメ。
ポリゴンデータのコンバーターも要る。
さらにはそのデータを使ったマップエディタ、シーンエディタ、2D用スプライトエディタもないと、ゲーム(に限らないが)制作は始まらない。
これ考えると「UNITYあるいはUE使おう」ってなる。 結局シェーダーが書けたほうが良いって事なんだろうね 今時、DirectX使ってるやついるか!?男なら黙ってGDI+だろ >>722
うん。
ポリゴンモデル製作
ボーン(スキンメッシュ)埋め込み
ハイポリゴンからローポリゴンへの頂点圧縮(法線マップへのベイク)
シーン配置
ポリゴンアニメーションのモーション製作
ランタイムデータへの正規化
レンダリング(シェーダ)
ポストエフェクト(加工)
俺もUE使おうかなと思えてきた。 UEとUnityなら後者のほうがとっつき易そうかな? Unityの方が簡単だと思う
なによりその辺に転がってる情報量が違い過ぎる DirectX プロ、業界志望者
Unreal プロ、中級者
Unity 初心者
こんなイメージ 愚痴になるが聴いてくれ。
とあるXPSモデルをインポートして、自作プログラムで表示してみた。
取り敢えず、表示も出来たしテクスチャマップまでは難なく終わった。法線マップも出来た。
環境光が辛い。ここがモデルを綺麗に美しく魅せるひとつなんだと思う。
XPSのデータは、結局はにんじゃリッパーなんかで抜いただけのものだから、表面だけで、ボーンは後付けで違和感あるし、足りないのも沢山あるし、マテリアルが抜けてないから、色の再現性が低い。
やはり自作するしかないんだな。、
吐きそう ちなみに2017年8月現在、DirectXの求人は
日本に大阪でのパチンコ開発案件1件だけだ。 GM45 / Vista にて、1行目は通るのですが3行目で強制終了します。
(gFL には D3D_FEATURE_LEVEL_10_が返っています)
これは 7 にアップグレードすれば直ったりするのでしょうか?
D3D11CreateDevice( NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, 0, NULL, 0, D3D11_SDK_VERSION, &gpDev, &gFL, &gpDC );
SAFE_RELEASE(gpDeviceContext);
SAFE_RELEASE(gpDevice); 2,3行目、正しくは↓ですね。すみません
SAFE_RELEASE(gpDC);
SAFE_RELEASE(gpDev); いまのDirectXってFLACの再生に対応してるん?
FLACのストリーミング再生にも対応していたら神。 >>733
対応していると言えばしている。
非対応と言えば、そうでもある。
Flac再生に必要なのは、HD音源をリサンプリングせずに送り出せるコーデックと再生デバイスとスピーカ。
DirectShowやDirectSoundのハイレゾコーデックなんかみたことないし、windowsやMac、スマホでハイレゾ聴いている時点で察するものもある 少し調べたんだが、従来のポリゴンモデルは、トリッキーな環境光(GI)やマテリアルパラメータを使っているんだね。
そのゲームが採用したグローバル照明のテクスチャなしで投影すると「これは違う」感が激しい。
トライエースの方が7年前に言っていた記事を読んだが、確かに破綻しやすく、かつアンビエントBDRFは流石だと関心した。
とはいえ、物理ベースシェーディングは、面白いね。 3Dモデルのフォーマットって今何が主流?
3Dゲームの場合 >>731
Intel GMA 4500チップセットのことなら、Direct3D10まで。
11用の要件を満たすハード性能がないのだと思われる。 >>736
ウェーブフロントobj、fbx、max辺りじゃないかな。
今後、コンシューマ向けで主流になりそうなのは「3mf」、大人の事情だと「COLADA」、まれにあるのが泣く子もだまる「csv」大人も泣いた。
あくまでモデリングの話。 簡単なオブジェクトなら.objが鉄板だなぁ。
スキニングまで考えると何だろう? 趣味グラマの俺はフリー素材多そうなx、pmd、pmx、fbxに対応 スキンまでならobjの独自拡張が一番扱いやすそう。
fbxは構造が洗練されているが、マテリアルとテクスチャがイライラする。
そこにあるのを今すぐ寄越せと思う所を、あなたが望むのは、この緑のフォルダにある緑のテクスチャですか?
それともネズミのテクスチャですか?
では、そのテクスチャは、マルチですか?それとも単レイヤですか?
では、次の質問です。そのテクスチャは…
みたいな構造。
いいから、名前で紐付けたそれを画素とプロパティだけよこせ、と。 >>738
D3D11DeviceをReleaseをしなければそのまま10_0レベルで
SwapChainやBufferも作れて4.0シェーダも動いて
ふつーにBegin〜Draw〜Presentできてしまうのです・・・
とりあえずドライバがウ○コということで7にするまで無視しときます。
ありがとうございました。 >>745
ちゃんと破棄しきれていないだけのように見える >>746
最初そう思ってコードの切り分けをしてたら、
>>731 の3行だけのコードで落ちることが判明したのです・・・ リリースノートを漁る気もないが、
たぶん悪いのはビスタちゃんのDXレイヤーだと思う。
10しか対応してない。と返されて11のAPIを動かすのが色々おかしい。
ただ、この場合、ドライバが未対応なのに11をハードウェアで動かすのが間違いでもある。
でも機能レベルが低いと言われてデバイス解放しようとするにも落ちるから、やっぱりビスタちゃんに非があるように見えるが、
まあサポート終了していたはずだから、訴えても無理かもね。 話は変わって、機能から色々と物理ベースシェーディングの計算式を検討しているンだけど、ウェブの日本語情報は、ピンきりだね。
違和感がかなりある。説明が無かったり、難解な部分から逃げていたり、抜けていたりね。
本屋も回ったが流石に書籍はない。
まさか原文の論文読むことになるとは思わなかった。
BRDFは、Biinn-Phongも含む。 その辺はかなり面白いよな
まともにレイトレースやGIしようものなら遅すぎて動くはずもないから
適当にインチキしつつ、なおかつ視覚的に効果があるように
さらに汎用性も欲しい
テクスチャ書き込む職人芸は個人では無理だから
出来るだけパラメータだけで色々な素材を表現したいところ
GI、影、反射、半透明
やっぱこの辺だよなぁ、しかもどれも重い >>747
そりゃ731のコードの通りだったら駄目だろう。
gpDeviceContextとgpDeviceはどこから湧いてきたんだよ。 今のGPUならPRT方式(事前計算、レイトレース)でテクスチャに書き込むのは可能に見えた。
2010のアンリアルの数式によれば、
鏡面反射は、マテリアルのラフネスを正規分布関数で粗さの確率で計算するようだが、材質(ラフネス)が均一となっている。
ここを事前計算ってのは直ぐに思い付く。
粗さをテクスチャマップする要領。
幾何減衰は複雑な式だが、視点と法線、光源と法線の内積、ラフネスで減衰割合を計算している。ここも似たことができそう。
材質の表面密度みたいなテクスチャな この存在を初めて知った。教材に良さそう。
しかし、なぜtransmissionなんだろう
exchangeでなく 例えば炎の画像を用意して炎以外の部分が黒でも
加算アルファすると綺麗な自然な半透明になりますが
あんな感じで加算みたいにピカピカせずに自然に半透明にする方法はないでしょうか?
ブレンディングの計算方法はどうなりますか? github.com 落ちてる
llvm.org も落ちてる >>757
サイトが落ちてるわけじゃねぇよ
ネットを疑え、特にOCN系だよ、アホが ___
/ || ̄ ̄|| ∧∧
| ||__|| ( )
| ̄ ̄\三⊂/ ̄ ̄ ̄/
| | ( ./ /
___ ゴキッ
/ || ̄ ̄|| <⌒ヽ ))
| ||__|| < 丿
| ̄ ̄\三⊂/ ̄ ̄ ̄/
| | ( ./ / >>761
おまえが無知なのはよくわかったw
新しいPC買えよ、貧乏人 osに対応してないってことでしょうか?
外部デバイスつけたりして対応さす方法ないですか? >>762
ワロタw
>>761
GPUが対応してないんじゃね? >>761
原因:GPUがDX10までに対応
Nehalem(第一世代icore)の内臓グラフィック機能の製品規格が10まで
対処:グラボを繋げるて機能拡張する、プロセッサとチップセットを交換、マザボを交換、ラズパイに窓10をいれてそれを使う
とか色々な選択肢があるが、
ノートだと思うので、中古のデスクトップにグラボ指すのが早い。
尚、高いグラボを買う必要はない。
DDR5を載せた一番安く、パソコン筐体に差せる奴を使う。
ファンが邪魔で刺さらない、奥行き長くて閉まらない、電源ケーブルがない、足りない、コネクター形状が違う、電圧が過不足
そんな話になる。
いずれにせよ、そのパソコンには11の規格を満たしたハードウェアがない。 PBR実装、テスト一段落記念カキコ
フレネル項がカッコいい。
メッシュが単純なピラミッドだから、他はあんま印象がない。 >>768
おめ!
PBR実装は現代グラフィックスプログラマーの登竜門やね どこまで実装すればpbrを実装したと言えるのか?
ガンマ補正したから?
エネルギー保存を満たすBRDFなら?
Beckmann分布やGGX分布と、Smithのshadowmaskingあたりを使えば?
ラフネス-メタリックのパラレータ化ができたから?
はたまたIBLがあれば?
BTDFまで考慮してBSDFとして扱ってエネルギー保存しているから?
VCTとかでGI近似をしたなら?
16bit,floatとかで計算してトーンマッピングしているから? PBRの目的は、マテリアルパラメータの具象化
物理ベースって言葉は「本格推理RPG」の「本格」と同じ類いの言葉で玉虫色に受けてによって印象が変化する商材。
まあなんだ。ツールと目的を取り違えるな あとあれだ。
クックトーランスモデルは、金属の反射に適した(或いは特化した)光反射モデル
それを特徴付けるのは正規分布関数とフレネル反射。
瞳や肌なんかの半透明材質にクックトーランスモデルは適さない。
昨日実装して気づいた印象だが。 PBRを実装すれば、全ての物質をパラメータだけで表現可能になるの? いやそりゃ、テクスチャ要るでしょ
今まで、拡散光、反射光、環境光、とかやってたのが
別の名前のパラメータと計算式になるだけで
確かにリアルになるだろうが
圧倒的に作業量が減る、というわけじゃないでしょ
どちらにしてもテクスチャ作るのが一番大変な作業だし
一番見た目への効果も大きいから・・・
テクスチャの自動生成の技術の方が作業量的には効果ある UE4でマテリアル作成とかやり始めるとメリットというかコンセプトが学びやすいやね 確かに。今のテクスチャって頂点から参照する外部配列と言われている様だし、実際メッシュをマスターテーブルと見立てたとき、テクスチャは、参照テーブルみたいなものだと思う。
これも俺たちのトライエース社長の言葉だそうだが、テクスチャに光反射を事前計算した結果を入れてよりリアルにかつ計算速度を合理化しようって考え方がある。
テクスチャは、メッシュの一部。
ハイポリゴンを放線マップでベイクするように、材質もテクスチャにベイクすることが、物理ベースの潮流じゃないかと理解している。
材質が彩る陰影をPBR(クックトーランスモデル)一つだけで解決する万能関数がPBR!
なんてことにはなりえない。
配色、彩飾が映像芸術の特徴要素であるシーンでPBRを使うのは不適切。(材質を選択したくない、色を指定したい場面ね)
他にも自己発光する材質とかもPBRのマテリアルパラメータでは指定できない。
メソッドの一つ。 というか、PBRが尊ばれるのは、どうみてもCAD応用分野に適しているからじゃないかと。
自動車、航空機、重工業製品の製品設計には、最適な材質パラメータだし。 defferedの影響でレンダリングが分離して、
いろんなマテリアルを共通のパラメータで扱おうとして便利に使われてるのがpbrという理解だった。 ところで正規分布関数を見ると無性に苛立ちませんか? directx11で点光源を実装しようとしているんですが光源の座標がなぜかワールド変換行列
をかけた状態になっていしまいます
cbuffer PointLight : register(b0) {
float4 lightPos[4];
float4 lightColor[4];
float lightDis[4];
};
struct PixelInput {
float4 pos : SV_POSITION;
float3 nor : NORMAL;
float3 wpos : TEXCOORD;
};
float4 ps_main(PixelInput In) {
float3 color(0.3f, 0.3f, 0.3f);
float3 lightDir;
float intensity;
float lightDir;
float atten;
for(int i = 0; i < 4; i++) {
lightDir = (lightPos[i].xyz - input.wpos) / lightDis[4];
atten = saturate(1.0f - dot(lightDir, lightDir));
intensity = saturate(dot(input.nor, lightDir));
color+=lightColor[i] * intensity * atten;
}
color = saturate(color);
return float4(color, 1.0f);
} 「ワールド変換行列をかけた状態になって」
逆に聴くと、どういった原点を持つ座標系であって欲しいのか?
wposは、どういった原点を持つ座標系にあるのか?
ここを理解すれば解決するような。 なんか専門学校の課題みたいだ。
モチベーションをあげるモデルが欲しければ、XPSがオススメ ますます分からなくなってきました・・・
lightPosもwposもワールド空間の中心を原点に持つ座標という認識なんですが間違っているんでしょうか
http://imgur.com/a/Kqpjc
http://imgur.com/a/epVLv
上が光源の座標をそのまま渡した状態で、下が逆行列をかけて渡した状態です どちらもワールド座標系なら、実装したコードに問題は見当たらない。
光の当たり具合、期待する陰影がでない。
ここが疑問点なら、後は入力したメッシュ、法線に問題があるような。
六面体でありがちなのは、頂点を共有した面を構成しているメッシュで、面法線、頂点法線の計算を誤解しているとか。
面でシェーディングしたいなら、面の法線が各頂点になければならない。
いいかえると、六面体ならば、頂点情報は8では足りない DXGI_SWAP_CHAIN_DESCのBufferCountについて質問なんだが、
多くの解説サイトではバックバッファーの数、通常は1って書いてあるけど、MSDN読むと
スワップ チェーンのバッファー数を表す値です。フロント バッファーを含みます。
って書いてあるんだが、ダブルバッファにしたい場合ってここ1にすればいいの?
それとも2にすればいいの?
ちなみにDirectX11な >>787
1でいいよ。
実装にもよるが、スワップチェインからレンダリングターゲットを複数取り出すなんてことはしないような気がする。 とりあえず、presentを非同期処理しない限りは、スワップチェインは1でよいと思うの。
複数確保しても、presentがv-syncなりなんなりと動悸とって後続処理に続かない(ブロックする)し、マルチスレッドにコンテキストを操作すると拒絶される。
コンテキストは、コマンドリストだから、複数のコンテキスト作ればいけるように思うが、
真面目にフレーム単位で描画するフレーム毎のオブジェクトの姿勢を決めるパラメータをきちんと計算して絵をだすなんてしないと思う。
同じ絵になることを許容して、先行描画することでフレームレートを稼ぐとかはあるだろうが、この質問時点でそんなん気にしなくてもよいかと。
つまり、1でよろしい。 なるほど、とりあえず1にしたわ
ちなみにBufferCountを2にしてバックバッファを1枚取り出す場合でも普通に動いてた
presentを非同期処理っていうのはpresent(0, 0)での呼び出しかな?
今はpresent(1, 0)で呼び出してる >>791
英語で表示して、Google翻訳にかけた方がずっとましな日本語なる。
ただし、サイト全体を翻訳にかけると中身違うのか駄目。 MSDNのサイトは、もう死んでるような。
HLSLのリファレンスみると、もう英文ですら何も書いてない。
ヘッダーファイルを読んだ方がマシなレベル >>792
(100〜120fpsを割った頃にまた来てね?) MSDNとTechNetは捨てて、docs.microsoft.comに移行するらしいし。 まあ、HLSLのリファレンスは、英文よりも数式、計算式を書いてくれた方が有り難い。 >>796
そうなんだ。
何度も移転しているから、あんまどうでもいいが、取り敢えず、英文でよいから充実させてくれ。。。
dot(x, y)
Returns the dot product of two vectors.
…その通りなんだが、知りたいのは、そこじゃない、と。
「cos(θ)」の一文の方がまだマシ。
これが数式で表されていたら、かなり印象が違う。 保守としてドキュメントのスナップショットが必要なんだけどなぁ。
昔のようにパックしたMSDNライブラリを定期的に提供してくれないと。 なんだ。結構いるんだな。 過疎だから来週までコメント付かないと思ったのに…
「cos(θ) = dot(x, y); ではない」という指摘は巧く呑み込めないが、
説明文 1) cos(θ) = dot(x, y);
説明文 2) Returns the dot product of two vectors.
説明分 3) retirm = |x| |y| cos θ
説明文 4) とりま、おまえらレベルだとベクトルの近しさを計算するだけなんで、ざっくりベクトルの近似を指数で返してやんよ。 0.0〜+1.0だけ使って、あとは勝手にクランプしろ。 黙って使え
の場合、どれがいい?みたいな表現(=プログラマ エクスペリエンス)の議論かな ああ、太刀持ちバルバトスとリックUは同盟戦コンテナ報酬か
どうせ出ないけど dot(a,b) -> a.x*b.x + a.y*b.y + a.z*b.z … "dot" ってのは
a・b
↑ この鼻くそ記号のことだぞ
ちなみに "cross" は
a×b
↑ このバッテンな dot(a,b) = |a||b|cosθ = a.x*b.x+a.y*b.y+a.z*b.z+…
いくつか利用例も書いてくれると嬉しいけど
ドキュメント作成者が過労死しかねない >>798
>dot(x, y)
>Returns the dot product of two vectors.
>…その通りなんだが、知りたいのは、そこじゃない、と。
add(x, y)
Returns the sum of two vectors.
これでも「知りたいのはそこじゃない」とか言うか? >>809
lerp(x,y,a)
観ると不信感を感じるけどな 左の一覧と詳細表示の右側が区分がないフラットデザインなのがむかつく。
そして、改善する気がないのに「Is This page helpful?」って聞いてくるのがうざい。 最近、深層学習(語感がカッコいい)の本を眺め始めた。
今読んでいる本の事例だとザッくり描画パイプラインのベクトルと深層学習のベクトルは別物だな、と感じた。
前者は4成分のベクトルだが、深層学習のベクトルはアホみたいな次元(たぶん、シェーダでいう成分の意味)を使うそうな。
つまり、ベクトルというよりもベクターな印象。 >>814
意味が違っても数学的には同じことなら道具として利用可能 >>814
DirectXの出番はありそう?
DirectCompute使えるかな? ざっくり、成分数が全く違う。
認識を入れ換えないとダメっぽい
「頂点配列を成分」とみたて
「4成分レジスタ」を「32bitx1成分レジスタ」と扱う。
こんなことをするみたい。
まだ確度が低いから参考程度に。
計算シェーダは使えるが、性能だすなら頂点やピクセルシェーダと似た認識でコーティングする観点は忘れちゃダメ。
おれ最近、俺の配色、グラフィックスデザイン、紋様なんかの幾何学的な美しさを発想する感性に哭きたくなるようなセンスのなさを実感したから、深層学習に生きるわ。
みんな駄文に寛容でいてくれて、ありがとうね! 駄文にも程があるだろ……
最低限ゼロから作るDeep Learningでも読破してから高説垂れれば良いのに 突き放すのもなんだからと、俺が知ってる中で一番馬鹿でも読めそうなの書いといてやったのに。
人の親切になんてこと言うんだ ニューラルネットを関数近似と捉えて、構文解析や単語の関係評価をそれぞれ別々のニューラルネットと構成する事で、従来のやり方に近いことが出来るニューラルネットが実現出来たということが書いてあった。
かなり刺激的。
適切なタスク設定と損失関数選定が肝だろうが、これは面白い そんな本を読むより、まずはスレ違いな落書きを垂れ流さないという常識から身につけようか。 FBX SDKってスレッドセーフじゃないんですね・・ >>829
おまえが現状を認識してないアホなだけやんw 特定分野のAPIと言語を比べてるあたり知識以前に知能が足りて無さそう 何か面白い話題は無い訳?
みんなでさぁー盛り上げていかないとさぁー
分かってるわけえー?
頼むよまったくさぁー!?
俺?俺は別に無いけど OpenCV使わないでDirectXだけでカメラからの動画をキャプチャーする方法を教えてください >>836
ググれない馬鹿にはどうせ理解できないよ スレタイ読んでからこのスレ頭から読むとひでぇな
偉そうなのがずっと文句言うだけのスレという
そら廃れますわ、まぁおかしいのが一人、ずっと常駐しているだけかもしれないが >>836
答:MediaFoundation
メディアGUIDハードコーディング 愚痴だがWindowsのカメラフレームワークは、なんであんなに使いにくのか。
デバイスから取り出した映像と音源のストリームをそのまま寄越せといいたい。 Media Foundationが「DirectXのみ」に当てはまるかはびみょんなところね すいません教えてください。D3DX11CreateShaderResourceViewFromMemoryを使って、テクスチャの画像更新をしているんですが遅いんです。
FPSは1桁台になっています。テクスチャのサイズは1024×1024です。他で高速に処理できる方法を教えてください。よろしくお願いします。 予め画像を全部GPUに送り込む
画像の中味をCPUで触るのならば、定数バッファでレバ利かせる。 目的にもよるがCPUからのテクスチャ更新は基本的にUpdateSubresourceだぞ >>847 了解しました。UpdateSubresourceを調べてみます。 >>846
お前さ、
自分の回答がズレズレなのわかってる?それがわからないなら
迷惑だから答えるのやめろよ 色々なわけがあって、dx9で個人制作のゲーム作ってるんだけど、dx9の作品でゲーム業界行けるかねぇ
unity,ueのが断然良いってのはわかってるんだけどさー >>854
DX9で何をするかが大事。
APIはそれほど重要ではない。 vista以降DirectSoundの中はソフトウェアでやってるって聞いたけど回避策はないのかなあ ソフトウェアでなんか困るのけ?
レイテンシをタイトに突き詰めたいとかならWASAPIで自前で頑張るしかないんじゃね 自分で作るならそうなんだけど
他人のソフトだとそうもいかないしなあ オフラインで問題ないソフトなら、昔のハードを用意すりゃいい OSの仕組み上厳しいでしょ
SBのアルケミーみたいな仕組みでもないと WASAPIネタで便乗
排他モードで複数ソースを同時発音するには
自力でミキシングするしかない、という理解で正しい?
ていうかスレチ? サウンドカードが一個ならたぶん排他モードで専有しちゃうと思う
2つあれば1つを共有モード
1つを排他モードとかできるかもしれない
やってみないと
普通に作り混んでるとハードウェア列挙したりAPI選べるから行けそう なるほどー、たしかに複数デバイス使っての同時発音なら
出来そうだけど流石にニッチすぎるかな?w
自分はおとなしく共有モード使っときます・・・ 質問です。
DirectInputでゲームパッドをEnumDevicesしたのですが
引数をDIEDFL_ATTACHEDONLY | DIEDFL_FORCEFEEDBACK にすると
上手く取得できません。
引数をDIEDFL_ATTACHEDONLY のみにすると上手く取得できます。
という事はこれは自分が使ってるゲームパッドのフォースフードバック機能を
DirectInputから認識できないという事になるでしょうか?
パッドはEDGE301というものです。 そもそもEDGE301がDirectInput非対応のようだけど DirectShow/Media Foundation/Windows.Media.Captureだな
もちろんスレ違い >>865
そうなんですか?
DIEDFL_ATTACHEDONLYにすれば一応取得できて
方向キーと一部のボタンだけの情報はDirectInputから取得もできました。
XInputの方も試しましたが、どうしてもLT,RTの情報が取得できません…
XINPUT_GAMEPAD 構造体のbLeftTrigger, bRightTriggerも変化なく
ボタンの、XINPUT_GAMEPAD_LEFT_THUMB, XINPUT_GAMEPAD_RIGHT_THUMBも変化無しでした。
LB,RBの方はボタンのXINPUT_GAMEPAD_LEFT_SHOULDER, XINPUT_GAMEPAD_RIGHT_SHOULDERで取得できるのですが…
LT,RTの取得は無理なんでしょうか。 すいません。自分の勘違いでした。
XInputからはbLeftTrigger, bRightTriggerの値で取得できました。
お騒がせしました。 directxsdkのサンプルあるだろう
あれの結果はどうなのよ やはりこのパッドのフォースフィードバックの機能は
DirectInputからは見えないようです。
どのコードを動かしてもDIEDFL_FORCEFEEDBACKを指定すると
EnumDevicesでこけます。
という事で大人しくDInputから動かそうと思います。 × DInputから動かそうと思います。
〇 XInputから動かそうと思います。
お騒がせしました。 今ってXInput非対応のゲームコントローラどのくらい残ってるんだろう。
もう無視してよいくらいのレベルの話?
市販ゲームだとXInputのみ対応って結構あるよね。 >>875
Amazonとかではまだまだ売ってるよ。アナログスティックの無いシンプルなやつとかね
でも昔と比べると減った(XInput対応が増えた)から、
キーボードに対応してればゲームパッドはXInputのみ、でも問題ないかと >>861
たぶん正しい。
問題の根底にあるのは、
・ソースのサンプリング周波数のバリエーション
・再生デバイスの再生周波数
当たり前だが、再生周波数は一つを選択する必要
つまりリサンプリングは避けて通れず、リサンプリングするならば、ボリュームやイコライザーもソフトウェア処理する方が多様性(みんな大好き♥ダイバシティ)が増すので応用なら好ましい。 なんかカメラの質問に人気があるのね
カメラで盗撮したいなら、Linuxのが簡単だと思うの >>877
と、思いきや
基本的にWASAPIは共有モードでもサンプリングレートの変換は自前でするもの
デバイスの共有モードのサンプリングレートと再生したいソースのレートが合ってない場合は
自前で変換してから渡すのが普通
IAudioClockAdjustmentもあるけど音が悪いのと対応してないサンプリングレートもあるので >>879
IAudioClockAdjustmentは微妙なクロックのずれを補正するためのもので、所謂サンプリングレート変換は想定外だよ。
共有モードで良いなら、XAudio2でも使えば良いんじゃないかな。 Windowsの機能でサンプリングレート変換するなら、Media FoundationのResampler MFT
XAudio2のサンプリングレート変換は音が悪かったはず DirectSound.dllそのもののソースコードって公開されてないのかしら DirectSoundなんですが
DSBUFFERDESC::dwFlagsにDSBCAPS_CTRLFXを加えると
IDirectSound8::CreateSoundBuffer()でINVALIDPARAMが返ってきて失敗します…
DSBCAPS_CTRLFXは指定できないのでしょうか?
DirectSoundCreate8()のところで指定するデバイスのミスとかでしょうか…?
一応、DSBCAPS_CTRLFXを外せば普通に動きます。 面白い現象に出くわした。
Intel内蔵グラフィックスとnVidia
環境がd3d11、x64、7
同じバイナリを使って深度バッファシャドウで影をだしたら、影のでき方が違う。
インテルだと右に影ができる。
nVidiaだと左右に影がでる。
射影行列かラスタライザの生成座標(z成分)か出力マージャが深度値を出す部分に機種依存する所があるみたい。
不思議… >>887
未だに同じコードで絵が違うとかあるんだなw >>886
GetDeviceCaps()は
IDirect3DとIDirect3DDeviceにしか無いみたいなのですが。
それからIDirectSound8とIDirectSoundBuffer8の方にはGetCaps()がありますが
IDirectSoundBuffer8::GetCaps()の方はバッファ作成時に指定したフラグが何かだけが取得できるようです(dwFlagsに指定したものがそのまま取得できるようです)。
IDirectSound8::GetCaps()の方にはエフェクト関係の能力値は無いような気がします。
どこで調べれば良いのでしょうか? 自己解決しました。
dsbdesc.dwFlags = DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFX;
このフラグ指定でいけました。
DSBCAPS_STATICとDSBCAPS_CTRLFREQUENCYとDSBCAPS_CTRLFXは同時指定できないみたいですね。
今回はDSBCAPS_STATICを同時に指定してるのが原因でした。 インテルiGPUはちょくちょく仕様外の挙動するから困る
俺はテクスチャフィルタリングで悩んだ DirectX 9 シェーダプログラミングブック
古本探しまくったが、CD付きが売ってない。
なくても勉強する上で問題ない? >>892
なくても大丈夫。
昔のVisualStudioのアプリウィザードベースだから簡単に実行もできないだろうし。
今給黎本はとにかく本の内容が充実してるし、それ読めば十分。 質問があります。
当方、vvvvというフリーのソフトでシェーダーを書こうとしているものですが、
HLSLに関する質問です。
次のようなエフェクトを考えています。
@ビデオからの入力をリアルタイムに取る
Aそれをパーティクル化する
Bパーティクルをいろいろ動かす
@とBはどうにでもなるのですが、Aをどうやって実践したらよいかが色々調べましたが
分かりません。
テクスチャをサンプリングして、それをピクセル単位にスケーリングして(ここまではできます)、
それを分解するというか、とにかくテクスチャからパーティクルを生成したいのですが、
考え方等を教えて頂けないでしょうか。
よろしくお願いします。 >>896
要するに映像効果としては、画像をピクセルレベルで分解して好き勝手にいじりたいんです。
ダンサーさんとのセッションか何かで、動いているダンサーさんをパーティクル上にして縦横無尽に動かしたら、
面白い効果が得られるのではないかと思いまして。
ここ↓でやっているようなことを、HLSLの文法で実装したいのです。つまりテクスチャの対応する
ピクセルの色を取得したいのです。
https://mike-neko.github.io/blog/metal-image/
ですので、考え方というよりは↑のサイトのコードのHLSLへの翻訳をしたい、ということです。 >>897
ソースがあるんだから移植しろよ、アホか すみません、初心者なもので、HLSLの文法がよく分かっていないのです。
例えばこの一文にしても、
particles[index].color = image.read(id);
このままじゃHLSLでは使えませんよね、
じゃあ、済みません、一つだけに質問を絞って消えます。
上の変数particlesですが、Metalという言語において
元のテクスチャを格納したバッファだと思われます。
HLSLだと、サンプラーを使いたいテクスチャで定義することと同義だと思われます。
というかここまで書いてきて思ったのですが、要するにテキスチャを読みこむというのは、
文字通り画像を分解することじゃなくて、画像と同じスケールの板を用意して、それに画像の色を取得させて、
元画像をパーティクル化しているように見せている、ということですよね。
ですので、分からないのは、
particles[index].position = float4(id.x / (float)size.x, id.y / (float)size.y, 0, 1);
これをHLSLでどう表現するかです。変数パーティクルの後に配列[index]があり、
さらにpositionなるメソッド?が用意されている。ここでパーティクルが配置されているものと思われます。
とても直感的で分かりやすいですが、これをどうHLSLに翻訳するか、教えて頂けないでしょうか。 DirectXしかわからないけど
入力で座標とどのピクセルを描画するかの情報を送る
↓
頂点シェーダでパーティクルのポリゴン作る
↓
ピクセルシェーダで入力情報をもとにテクスチャの1pxを描画
って感じだと思う シェーダコード見てみたけど100行ぐらいしかないやん
しかもシェーダなんて似たようなコードだし
リファレンス見ながら書き直してもたいしたことないだろ
「真性の馬鹿なので勉強の仕方がわかりません。答え教えてください」
こういう風にしか見えんわ >>900-901
ありがとうございました。
もう少し自力でやってみようかと思います。 馬鹿だから無理でした。
内容としては、
頂点シェーダで、テキスチャのサイズにテキスチャ座標をスケーリングしたものと同様の変数を
x座標、y座標ように2つ用意する
↓
それをそのまま2つの配列にする
↓
頂点座標のx成分、y成分にそれぞれ配列を代入する
↓
確保していたテクスチャから色情報を取得してそれを頂点座標に代入
↓
頂点座標を出力(ピクセルシェーダはスルー)
そうしたら、何も映りませんでしたが、入力していたメッシュをワイヤーフレームワイヤーフレームとか
ソリッドとかで表示できる機能がvvvvにはあるのですが、それをポイントにしたら
点が一つだけ表示されました。
書いていて情けなくなるくらい自分馬鹿だなあと思っています。
でも実現の方法が分からず・・・優しい方教えてください。 VSとPSの最低限の物を理解してれば難しくないだろ とりあえず最低限の頂点シェーダだけです。配列index[],index2[]にはソフトウェアの方から、座標を任意個数リニアに出力してくれるノードを使っています。
入力してるメッシュは1つだけで、出力されてるのも1つだけなので、このコードをどういじってもせいぜい変形したメッシュにビデオ入力がそのまま映るだけです。目的としては320*240個のパーティクルを作りたいのですが、
ソフトウェア側でその数のパーティクルを用意するのでなく、単にその数の座標を入力しているだけの状態です。
struct vs2ps
{
float4 Pos : POSITION;
float2 TexCd : TEXCOORD0;
};
// --------------------------------------------------------------------------------------------------
// VERTEXSHADERS
// --------------------------------------------------------------------------------------------------
float index[320];
float index2[240];
vs2ps VS(
float4 PosO : POSITION,
float4 TexCd : TEXCOORD0
)
{
vs2ps Out;
PosO.x=index[TexCd.x * (ArrSize-1)];
PosO.y=index2[TexCd.x * (ArrSize-1)];
Out.Pos = mul(PosO, tWVP);
Out.TexCd = mul(TexCd, tTex);
return Out;
} あとPSとVSのバージョンは3.0までしかソフトウェアが対応していません。
DX9の環境です。
よろしくお願いします。 DX9だと入力のメッシュを320*240にしないと難しいよ その場合、単一のメッシュ(320*240)をピクセル毎になるように分割する、ということになるのでしょうか?
幸い、メッシュを任意個に分割するノードがvvvvにはあります。 流石に潮時ですかね
スレ汚し失礼しました
ただ、具体的な回答があればもっと早く消えていたのですが。
残念です。 CreateCompatibleBitmapでメモリビットマップを作成し、
それに対してGDIのDrawTextで描画し、それを画面にBitBltするという、
昔からよくある手法で画面に大量の文字を描画する処理があるのですが、
DirectWriteに置き換えると文字を綺麗にできると聞きました。
CreateCompatibleBitmapなどの仕組みは残したまま、
メモリビットマップへのDrawTextの部分を置き換えることは可能でしょうか?
よいサンプルがあれば勉強してみたいのですが。 >>919
GDIでTextOut/DrawTextやってる程度なら出力先をGDIとしてDirect2D上に描画
Direct2D and GDI Interoperability Overview
https://msdn.microsoft.com/en-us/library/windows/desktop/dd370971
Rendering DirectWrite
https://msdn.microsoft.com/en-us/library/windows/desktop/ff485855.aspx
文字単位で凝った処理してるならリンク先にもあるけどDrawGlyphRunというメソッド中心で調査されたし
リッチなレンダリング目的ならどの方法でやるにしても
既定だと基本的にGDI互換の方向で描画して大差無いので
IDWriteRenderingParamsを適切に設定する >>920
ありがとうございます。
わからない仕組みばかりですが、勉強してみます。 本当にやりたいことを聴かずに遠回しに質問するからだよ 質問の目的は明確だし1レス目の回答で完了してるのに
どんだけバカが揃えばこんなうんこみたいな流れになるんだ... 頂点を射影変換して、さらにクリッピングまでされた頂点をテッセレーションで分割したいのですが、
パイプラインの流れ的に普通にはできません。
やれるとしたら、ジオメトリシェーダでプログラマブルにクリッピングして、
それをストリームアウトし、再度頂点シェーダから読み込んでテッセレーションするというやり方でしょうか?
プログラマブルなクリッピングが可能かどうかが問題ではりますが・・・。
もっといい方法があれば教えてほしいです。 4ヶ月ぶりに覗いたけど
相変わらずかそってんのな
amdのfetch4ってgatherredで効くの?
Sample()で4点フェチして自前でバイリニアすると(dx9のshadowmapのサンプル)
ちゃんと補完されるのに
gatherredだとモザイクみたくなるんだよな
コツ教えて ピクセルシェーダはピクセル単位だし
クリッピングされた頂点が欲しいというなら
これは不適当だ
アンタの言うとおり
ジオメトリで三角形分割して
ストリームアウトプットしか無いんじゃないか 何がしたいのか、サッパリわからん。
この説明だと、二次元に落とし混んだ後に三次元計算したい!と無理なロジックを考えとるように聞こえるの。 そもそも「クリップ」が何を、どのような結果を期待しているのか?がわからない。
「ワールド座標内から三次元に空間を切り取りたい」
だけならば、頂点シェーダで空間外にある頂点を捨てれば済む訳なんだが、
するとドメイン、ハルシェーダに流し込むべきプリミティブの整合がなくなる。
そうなるとジオメトリシェーダでプリミティブ単位で落とすことになるが、これだとパイプラインの工程に制約され、テセレータに戻すには二バス目が必須となる。 書きながらなんとなく、メッシュをピクセル単位で落としたい、
メッシュの衝突をシェーダでやりたいのかと思ったが、そうなるとテセレータが欲しいという意図が不明。
もちっと具体的に実現したい結果を説明しないと有意義な答えは出てこないと思う。 シェーダは別に1パスであらゆることが実現できるようには設計されていない、
一般的な三次元描画のセオリーを基軸にして、高速に計算できるように設計している。
パイプラインのフローに合わないものを実現するならば、マルチパスにするか、アルゴリズムを変えないと実現できずにアシぶみするだけ。 930だがcapsviewerみたらshader _gather4がoffだった
このせいか?
GPUは超最新のRX470だから意外だ・・
クリッピングに関しては
やってることがおかしいのは
皆わかっていることだろう
大事なのは本人が満足することであって
忠告は余計なお世話だ 1パスでやるなら一つ方法がある。
頂点シェーダは頂点番号を引数に取れたはずだから、三角形リスト(ようはストリップとファン以外)を前提に頂点番号の剰余をとる。
あとは定数バッファにクリップしたい空間をいれるなりする。
というか、クリップしたいのが何なのかがわからんと、これでいけるのかもわからんが。 そうだ。俺が知る限り、ピクセルシェーダ以外にdiscard命令はないから、厳密にはクリップはできないと思う。
これはプリミティブの一貫性を担保出来なくなるからだと思う。
つまりクリップ後じゃないとダメというなら、それはかなり無理をしないと実装しにくいと思います。
おわり Direct3Dの描画はプリミティブ単位だからね
三角形や線とかな
だから頂点シェーダで頂点を破棄なんて
そもそもナンセンス
大体頂点を破棄したら三角が線になっちまうしな
クリッピングってのは平面に交差した三角形を破棄し
その接触してた境界線を使って
1〜2個の三角形を作って追加することだな
掻い摘まむと それにクリッピングしてない三角形と
クリッピングして半分サイズになった三角形を
それぞれテッセレーションかけたとして
描画に差が出るとは思えないんだよな
結局出来る絵は一緒だろみたいな みなさん、ご意見ありがとうございます!
ジオメトリシェーダーでプログラマブルにクリッピングし、
次のパスでテッセレーションさせる方法で思惑通りにできました。
品質、パフォーマンスともにばっちりです。
プログラマブルシェーダの威力を今までで一番実感できましたw
入力頂点や最終的な表現が少々特殊なアプリケーションなので、こんなことしてます^^; なんかできない理由を引き出すことが目的だったみたいだね。 プロかアマか知らんが
実際にテッセレーション使う
アプリがあることに驚きだ モデラーソフトウェアが曲面を出力しないからね。
俺はデザイン段階のメッシュ生成に使うぐらいだな
ランタイムは使い処がない。元が面しかないから DirectXからは外れるが
俺もクリッピングの処理作ってたんだが
単精度が誤判定が多くて苦労した
結局倍精度で作り直したよ
scalar * dot( vec4, vec4 ) と dot( vec4, scalar * vec4 )
これでさえ解が異なるからな
桁落ちしてるんだろーが
ひ弱過ぎてやってらんねーよ
お前等も内積使ってる箇所は
誤差りまくってると思った方がいいよ あれれ?
これは解が違ってて当たり前だな・・
もう引退するわ俺、、 >>950
そんなことでくよくよするな。
内積よりも項に入る浮動小数点の桁の差が誤差の原因
1e7 * 4e-8 なんかは普通に誤差がでる。
深度バッファシャドウなんか、もう泣けるはどにエイリアスがでるからね direct3d11でGPU利用率を出したいんだが
どうすればいい?
ID3DCounterってのも
リファレンスに何も載ってなくて
いまいち使い方がわからん >>955
Windows10のタスクマネージャで見れるヤツじゃアカンの? >>956
知らんかったわ
パーセンテージで見れればおkなんで
確認してみる 最近AIAI騒いでるのでDirectXついでにCSで人工知能やってるけど
directxって本当に何でもできる優れものですね!! DirectXのXはAIでも何でもありの意味なのだ Dwarf.xに不透明度0が設定されているせいで
何にもエラーがでないのに何も表示されなくて
泣きそうになりながらデバッグしてた。
俺の毛根が全てタヒんだ。絶対に許さない。 XMVECTORF32 v; ←不定値
v = XMVECTORF32(); ←(0.0f, 0.0f, 0.0f, 0.0f )が代入される
XVECTORF32の定義を見ても特に0初期化してるコードは見られないんだけど、どういうこと?? >>962
963の否定を書こうと頑張ったけど無理だった。 まるで、0次元に奥行きと時間軸があると証明しろ、という問題 ひょっとして内部的にはfloat()が呼ばれてるのかな?
プリミティブ型のコンストラクタは0になるし。 分かりました。
POD型の構造体ってやつですね。
デフォルトコントラスタがメンバを0初期化するっていう。
忘れてました^^; あのう、oswin8でdirectXのゲーム作ろうとしたらd3dx9.hが開けなくて何が悪いのか解らないんだけど誰か教えて
ちゃんとパスも通してるはずなんだけど開けない 一部はアプリ関係で入れられなかったけど入れた
DXSDK_Jun10
これ入れた >>970
visualstudioのバージョンを書くのを忘れてた
visualstudio2015 インクルードディレクトリもライブラリディレクトリでもパス通してるんだけどエラーが起きる
directX入れなおした方が良いかな? 1>------ ビルド開始: プロジェクト:oikake, 構成:Debug Win32 ------
1> Gameplay.cpp
1>c:\k013a2065\oikake\oikake\gameplay.cpp(8): fatal error C1083: include ファイルを開けません。'd3dx9.h':No such file or directory
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(356,5): error MSB6006: "CL.exe" はコード 2 を伴って終了しました。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== >>978
お前さー、もう出てくるなよ
自分がわかるクソみてーな質問には
偉そうに役に立たないレス返しやがって
ちょっと深い話になるとついてこれず
だんまり決めやがって
これからもそのスタイル続けるなら
コテハンにしろよ臆病者が エスパーするとおれが答えられない質問はするな、ということですな。 ちげーよヴァカ
無意味なレスを返すなって
言ってるんだよ
「馬鹿すぎる」ってレスに
どんな情報的価値があるの?
無駄な文章を載せるなよ
しかも随分昔から繰り返しやがって
言ってもわかんねーだろうがな
わからねー池沼だから繰り返す訳で ネットは答えを教えてくれる魔法の箱じゃない。
礼儀も立場も弁えず、垂れながすのも自由なら答えない自由もある。
ttps://social.msdn.microsoft.com/Forums/en-US/e8ecf535-c80d-4e9a-90f5-720e92a3cc43/including-d3d9xh?forum=vcprerelease もう解りやす過ぎるわ連投でID一致しないように日付変えて書き込んで特定されないよう対策してるやつ 最近グラボの調子おかしい・・忘れたころにピーピッピッピのピーブ音でるわ
GPU処理でエラー吐かせたり負荷掛かる処理やらせたりで
速攻寿命がきたんだろうか・・1年半・・ インクルード解決したわ、構成マネージャーのプラットフォームとディレクトリのプラットフォームでのインクルードディレクトリを設定してなかった
構成マネージャーがx86なのにディレクトリのプラットフォームがx86で設定してないんじゃあ通らねえわな DirectX初心者じゃなくてVisualStudio初心者だったでござるか ここの住人は何年単位でグラボ交換してる?やっぱ酷使してるから寿命も早い? direct3dのメジャーバージョンアップに合わせてかなあ
d3d12はスルーするんで買い換え予定は
今のところ無い >>991
そも壊れない。なんかの動機がないと替えないかな
ただ最近、AMDのプロセッサと内蔵グラボが欲しいと感じている。単にVulkan使いたいだけなんだけど。
デスクトップはGT740(DDR5か4だったはず)
ノートがインテル内蔵GPU
スマホがスナドラ(2017年のやつ) >>994
大ニュースだな。
ラスタライザあたりに固定機能で光線計算ぽいのを加えるような機能と説明されてるね。
リニア補完、重心補完に次ぐ新しい機能になるのかな。胸アツ このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 542日 6時間 31分 1秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。