【C++】 DirectX初心者質問スレ Part7 【C++】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/11/17(木) 17:36:51これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ
【C++】 DirectX初心者質問スレ Part6 【C++】
http://pc8.2ch.net/test/read.cgi/tech/1127198808/
0153デフォルトの名無しさん
2005/12/04(日) 17:35:43いや個人サイトでC++のソース(MFCじゃないやつ)置いてる場所教えてくれ
0154デフォルトの名無しさん
2005/12/04(日) 17:44:470155デフォルトの名無しさん
2005/12/04(日) 17:46:540156デフォルトの名無しさん
2005/12/04(日) 18:04:460157デフォルトの名無しさん
2005/12/04(日) 18:06:32(、ノ,. '" `ヽ、 ,
)) ヽ○ノ
/ ヘ ←>>156
<
0158デフォルトの名無しさん
2005/12/04(日) 19:21:14個人サイトのC++ソース探してたら人生そのものが自演なのかよ。ふざけんなよ。MSDNのサンプル
実行しても上手くいかなかったから参考までに教えて欲しかったのにぶざけんじゃねーよ。
それともMFC嫌いに焼いてんのか?なら許すけどさ。確かに見た感じはカッコイイから焼く
気持ちも分からないでもないけどだからって自演扱いは凄く失礼だぞ。
あとプログラミング始めたばかりでまだ個人サイトしか見てないからMSDNがどの程度凄いのか知ら
ないけどマジで個人サイトって個人でも激わかりやすの。サイトデザインは恐ろしいほど悪いけど
あの説明は本当に凄い。あと156さんは信じてないみたいだけど本当の本当に自演はしてない
んだって。これは神と仏と悪魔に誓ってネタじゃない。マジで151=153だけ。
0159デフォルトの名無しさん
2005/12/04(日) 20:32:04本当にありがとうございました。
0160デフォルトの名無しさん
2005/12/04(日) 23:47:23バイトが激しく違うんだが。
0161デフォルトの名無しさん
2005/12/04(日) 23:48:51>>159
0162デフォルトの名無しさん
2005/12/05(月) 00:04:32(、ノ,. '" `ヽ、 ,
)) ヽ○ノ
/ ヘ ←>>160
<
0163デフォルトの名無しさん
2005/12/05(月) 00:28:01あの時は正直スマンカッタ。今はマンセーしている
0164デフォルトの名無しさん
2005/12/05(月) 05:09:23ttp://www.codeproject.com/cpp/
ttp://www.codeguru.com/Cpp/
0165デフォルトの名無しさん
2005/12/05(月) 14:54:380166デフォルトの名無しさん
2005/12/05(月) 15:11:08商用のやつはみつかったんだがそれだけのために買うのもなぁ…。
blenderを一旦通して、xファイル入力obj出力やろうとしたんだけど
うまくimportしてくれない。うーん。
0167デフォルトの名無しさん
2005/12/05(月) 15:13:560168デフォルトの名無しさん
2005/12/05(月) 16:21:450169デフォルトの名無しさん
2005/12/05(月) 16:24:03本当にありがとうございました。
0170デフォルトの名無しさん
2005/12/05(月) 16:24:44しね
0171デフォルトの名無しさん
2005/12/05(月) 16:25:17どちらとも言えない。
表裏一体のような関係。
0172デフォルトの名無しさん
2005/12/05(月) 16:25:41しかも日本語なってないのにプログラム板とか流石ですね(´,_ゝ`)
0173デフォルトの名無しさん
2005/12/05(月) 18:12:510174デフォルトの名無しさん
2005/12/05(月) 18:13:30DirectXと何の関係が?
0175デフォルトの名無しさん
2005/12/05(月) 18:14:160176デフォルトの名無しさん
2005/12/05(月) 20:53:30ないので作れ。出来上がったらhighend3d.comに投稿してくれ。
0177デフォルトの名無しさん
2005/12/06(火) 03:07:20む・・・無理・・・
せめてobjファイルとかほかの形式でdirectxで保存できればいいのに・・・
D3DXSaveMeshToObjみたいな。ないよね。はい、ないですね。
0178デフォルトの名無しさん
2005/12/07(水) 00:52:05そこに山があるからだ、と答えたというが
プログラマーになぜコードを書くのか?と尋ねたら
そこにツールが無いからだ、と答えるだろう
0179デフォルトの名無しさん
2005/12/07(水) 17:01:45CD3DFontのDrawTextで文字を描画しようとしたところ、
> // Setup renderstate
> m_pd3dDevice->CaptureStateBlock( m_dwSavedStateBlock );
> m_pd3dDevice->ApplyStateBlock( m_dwDrawTextStateBlock );
のところで
Direct3D8: (ERROR) :Invalid state block handle
Nullpo.exe の 0x7c81eb33 で初回の例外が発生しました : Microsoft C++ exception: long @ 0x0012f4e4。
Direct3D8: (ERROR) :CaptureStateBlock failed.
Direct3D8: (ERROR) :Invalid state block handle
Nullpo.exe の 0x7c81eb33 で初回の例外が発生しました : Microsoft C++ exception: long @ 0x0012f4e8。
Direct3D8: (ERROR) :ApplyStateBlock failed.
Nullpo.exe の 0x00416ed1 で初回の例外が発生しました : 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。 。
Nullpo.exe の 0x00416ed1 でハンドルされていない例外が発生しました : 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。 。
プログラム '[6044] Nullpo.exe: ネイティブ' はコード 0 (0x0) で終了しました。
などとなって止まるのですが、何か心当たりないでしょーか。
CaptureStateBlock()が失敗する理由がぶっちゃけ分かりません。
CD3DFontなんか使うなとか、CD3DFont使うくらいなら素直にフレームワーク使えとか言われたら
それまでなんですが……。
0180179
2005/12/07(水) 17:07:15なんでこういうのって書き込むとすぐ解決するん?
0181デフォルトの名無しさん
2005/12/07(水) 17:49:410182デフォルトの名無しさん
2005/12/07(水) 17:51:480183デフォルトの名無しさん
2005/12/07(水) 17:52:20ヘルプが無いなら入手白
0184デフォルトの名無しさん
2005/12/08(木) 12:37:10ウィンドウにテキスト表示をしたいのですが、
表示部分で上手くいきません。
RECT rc;
rc.top = 0;
rc.left = 0;
rc.bottom = 16; ←現在は適当に設定してます
rc.right =160; ←現在は適当に設定してます
LPD3DXFONTオブジェクト->DrawText(
"あいうえお",
-1,
&rc,
DT_LEFT | DT_EXPANDTABS,
D3DCOLOR_XRGB(255,255,255));
とすると、画面には「あいいいい」と表示されます。
半角も表示してみたところ、どうも1,2バイト目を表示した後、
3〜4バイト目を文字数分だけ繰り返しているみたいです。
原因は何なんでしょうか。
0185directx noob
2005/12/08(木) 16:31:00Z値は2D頂点のほうを大きくしているのに2dポリゴンが3dポリゴンを塗り
つぶしてしまします。 (?ω?)
0186directx noob
2005/12/08(木) 16:33:54vc++ 6.0 + direct x 9.0c
0187デフォルトの名無しさん
2005/12/08(木) 16:37:14ZEnable、ZWriteEnableとかはどうなってる?
0188directx noob
2005/12/08(木) 16:41:40ZEnableはTRUEに設定していますが
ZWriteEnableは設定していません。
0189directx noob
2005/12/08(木) 16:55:05お騒がせしてすいません。
今後はもう少し落ち着いて質問させていただきます。
0190デフォルトの名無しさん
2005/12/09(金) 07:17:14direct3Dで描いたものを比べて同じものだと判定するプログラム
を作ろうとしているのですがどうしたら比較できるでしょうか?
自分の考えとしてはdirect3Dで描いたものをBITMAPに保存して比べよう
としたんですがどうやって保存すればよいかわかりませんでした。
BITMAPに保存する方法でも新しい方法でもいいのでどうか教えてください。
0191デフォルトの名無しさん
2005/12/09(金) 08:49:52このテーマだけで大量の論文が書けるぞ。
0192デフォルトの名無しさん
2005/12/09(金) 09:14:30GetRenderTargetData
GetFrontBufferData
誰かFAQ書こうよ〜
0193デフォルトの名無しさん
2005/12/09(金) 17:39:11directx 9.0bで平行投影は可能なのでしょうか?
自分は3d画像を利用した2dシューティングを作成しているのですが
透視投影ではオブジェクトの位置ごとに表示がかわってしまって
当たり判定などの処理が作成が困難なので平行投影を利用したいのですが。
0194デフォルトの名無しさん
2005/12/09(金) 17:43:500195directx noob
2005/12/09(金) 22:14:51どのようにすれば平行投影ができるのでしょうか?
0196デフォルトの名無しさん
2005/12/09(金) 22:27:430197directx noob
2005/12/10(土) 02:40:11プロダクション変換行列をその関数で作成すればうまくいきそうです。
0198デフォルトの名無しさん
2005/12/10(土) 07:12:520199デフォルトの名無しさん
2005/12/10(土) 12:47:580200デフォルトの名無しさん
2005/12/10(土) 13:03:56頭は大丈夫か?
0201ゲイツ
2005/12/10(土) 13:09:150202デフォルトの名無しさん
2005/12/10(土) 13:36:240203デフォルトの名無しさん
2005/12/10(土) 13:41:13出るってよ。
0204デフォルトの名無しさん
2005/12/10(土) 21:59:19交差してるポリゴンはどうやって前後処理するんでしょうか?
なんか上手い方法ないですかね・・・?
0205デフォルトの名無しさん
2005/12/10(土) 22:07:27半透明な交差ポリゴンはZバッファとZソートを組み合わせても駄目だけど、
普通の人間なら全然気づかないから放置
0206デフォルトの名無しさん
2005/12/10(土) 22:30:56(奥のポリゴンを常に最前のポリゴンで隠す)方法はあるわね。
0207デフォルトの名無しさん
2005/12/10(土) 22:42:48半透明の交差で、範囲でかいので結構目立つんですよ。
>>206
どういう描画ですか?
0208デフォルトの名無しさん
2005/12/10(土) 22:46:17一旦Zオンリーで描画してから、普通に半透明で描画。
一番手前に来るピクセルだけZ≦Zfを満たして描画できるわけね。
0209デフォルトの名無しさん
2005/12/10(土) 22:51:280210デフォルトの名無しさん
2005/12/10(土) 22:58:09もちろん不透明ポリゴンは全て先に描画しておくのが前提で、
同じ半透明のはあきらめるってことね。
0211デフォルトの名無しさん
2005/12/10(土) 23:05:02全部の半透明ポリゴンに対してでしょうか?
・不透明の下地を描画
・半透明のZ描画
・手前の半透明の色だけ描画
で、交差するポリゴンの、
手前の半透明がα=0.1
奥の半透明がα=0.8
だとすると、
奥の0.8が無視されて下地が思いっきり透けてしまいませんか?
>>210
うーん、諦めるって事ですか・・・。
0212デフォルトの名無しさん
2005/12/10(土) 23:17:30半透明率が違うのは想定範囲外ねw
今挙げたのは、視点によって描画順が変わって
半透明が多重に掛かったり一度だけ掛かったりするのを防ぐために、
常に一度だけ掛かるようにする方法ね。
こんなのもあるってことで。
0213デフォルトの名無しさん
2005/12/10(土) 23:22:200214デフォルトの名無しさん
2005/12/11(日) 03:13:24データを工夫すれば回避できることもある。
その他ZDEPTH値を持たせたり、ALPHATEST ALPHAREF ALPHAFUNCの設定でかなり改善できる。
0215directx noob
2005/12/12(月) 04:44:03プロジェクションの間違いです
0216デフォルトの名無しさん
2005/12/12(月) 09:11:11CDXUTMeshを使ってXファイルを表示しようとしております。
Xファイルを読み込んで表示することは出来たのですが、
一部の環境でそのプログラムを実行すると3Dオブジェクトの一部がちらつきます。
ポリゴン単位やオブジェクト単位ではなく、一部分が水平方向10ラインくらいが一気に
消滅してしまいます。
垂直同期とかの兼ね合いかと思ってVSyncは有効にしております。
どなたか解決方法を知らないでしょうか?
環境:DirectX 9.0 SDK (October 2005)
開発:VisualStudio.net 2003
OS:WindowsXp SP2
オブジェクト作成:Shade7
です。
よろしくお願い致します。
0217デフォルトの名無しさん
2005/12/12(月) 22:45:49DirectX7時代Direct3D-IMでちょこちょこ組んでて、久しぶりに戻った者なんですが
今の時代、D3DX当たり前でIMでごりごりやるってのは時代遅れなんでしょうか。
…というかIM自体なくなっちゃったんでしょうか
参考書とかほんのちょっと目を通したのですが、D3DXばかりだし
0218デフォルトの名無しさん
2005/12/12(月) 23:03:070219デフォルトの名無しさん
2005/12/13(火) 01:08:34とりあえずバンプマップ実装してからきて。
そのころにはすべてが理解できてるだろうけど。
0220デフォルトの名無しさん
2005/12/13(火) 13:58:17どうすればよいのでしょう?
よろしくお願い致します。
0221デフォルトの名無しさん
2005/12/13(火) 15:33:590222デフォルトの名無しさん
2005/12/13(火) 15:38:470223デフォルトの名無しさん
2005/12/13(火) 16:55:520224デフォルトの名無しさん
2005/12/13(火) 18:30:10フーリエ変換とかで周波数成分をスペクトル分解する
そこから曲の長さを伸ばして、フーリエ逆変換して元に戻す
多分こんな感じでいけるとは思うけど
ちゃんとしたものを作ろうとしたらかなり大変になるだろうなあ…
適当なものだと音の質が変わりそうだ
0225220
2005/12/13(火) 21:55:23回答ありがとう。
そうですか・・・大変ですか。
フリーのソフトで実現しているのがあったり、
.wmvだとMP9で出来たりするので、そんなAPIがあるのかと思っていました。
ある程度、音質が変わるぐらいなら許せるのだけど、
それでも大変でしょうか?
0226デフォルトの名無しさん
2005/12/13(火) 22:48:55数十〜数百サンプル単位でまとめて間引く。
小さくし過ぎると音程に影響するし、大きいとぶつ切りになるので適当に調整。
0227デフォルトの名無しさん
2005/12/14(水) 18:51:47てか多分私のせいだとは思うんだけれど、あまりにも不可解なんで腹が立ってきた…
SkinnedMeshサンプルをほぼ丸々コピーしてコンパイルしたんだけど
Textureを作成して関数終了直後に即Disposeされてしまいます。
参照はちゃんと持ってるんで、ガベコレが働くわけはないと思うのだけれど
0228デフォルトの名無しさん
2005/12/14(水) 19:59:48この記事の下の方にある
「擬似ボリュームパーティクル」の頂点ごとのライティングって
何を基準に明暗をつけてるんでしょうか?
一枚ポリゴン上の頂点でなぜ明度に違いがでてますか?
0229デフォルトの名無しさん
2005/12/14(水) 20:05:48球みたいなのを想定してるとか。
で、SkinMeshの謎がわからない.....
0230デフォルトの名無しさん
2005/12/14(水) 20:12:020231デフォルトの名無しさん
2005/12/14(水) 20:40:08丸ごとあげました。
アップしてすぐ気づいたんですが、
どうもAllocateHierarchy.CreateMeshContainerが、
マネージコード→アンマネージコード→マネージコード
と呼ばれてるのが怪しい気がします。。
この辺をもう少し調べてみます
0233デフォルトの名無しさん
2005/12/14(水) 23:40:44それが簡単にできたら特許とってぼろ儲けの気がする・・・
0234231
2005/12/15(木) 01:30:06一応原因とそれなりの解決策が分かったので参考に書いておきます。
AllocateHierarchy.CreateMeshContainerの中で、テクスチャ作成時に
meshTextures[i] = TextureLoader.FromFile(parent.m_dev,"tiny_skin.bmp");
とすると速攻でDisposeが呼ばれてしまいますが
次のようにstaticな一時記憶領域を用意してやるとDisposeされなくなりました。
s_temp = meshTextures[i] = TextureLoader.FromFile(parent.m_dev,"tiny_skin.bmp");
原因は、Mesh.LoadHierarchyFromFileがアンマネージコードを仲介してるためです。
アンマネージコードのところで変数のリンクが切れて、ガベコレ発動してるんだと思います。
DirectXのサンプルが落ちないのはテクスチャがグローバル領域にキャッシュされているためでした。
そこで階層読み込みが全て終了するまで
勝手にDisposeされないようにキャッシュに突っ込めば上手くロードできるようでした。
というわけで、お騒がせしました。
0235デフォルトの名無しさん
2005/12/15(木) 02:00:23ピクセル単位で法線データを持っているんじゃない?
原理はバンプマップと一緒。
ttp://developer.nvidia.com/object/Dot_Product_Texture_Blending.html
これが一番単純な説明かな。
0236デフォルトの名無しさん
2005/12/15(木) 02:17:33ttp://www.xucker.jpn.org/keyword/sox.html
ttp://www.xucker.jpn.org/pc/sox_use1.html
ttp://www.xucker.jpn.org/product/wavconvert.html
0237デフォルトの名無しさん
2005/12/15(木) 09:58:02ゲームとかで使われる視覚効果・エフェクトをまとめたサイトや本などありますでしょうか?
海や滝、炎の表現、ポイントスプライトとか、その辺なんですが、よろしくお願いします。
0238デフォルトの名無しさん
2005/12/15(木) 09:59:46DirectXゲームグラフィックスプログラミング Ver. 2.0
0239デフォルトの名無しさん
2005/12/15(木) 10:03:24あるけど、思ってるより超簡単なので、とりあえず作ってみたほうが感動を味わえる。
0240デフォルトの名無しさん
2005/12/15(木) 10:58:080241デフォルトの名無しさん
2005/12/15(木) 12:08:41Game Programming Gems
DirectX シェーダプログラミング
などなど
とりあえずt-potでググれ
0242デフォルトの名無しさん
2005/12/15(木) 17:41:38だから超手抜きと言ったのに。
区間をクロスフェードしたら?
どんな音になるのかわからんけど、少なくともブチブチはしないと思う。
0243デフォルトの名無しさん
2005/12/15(木) 18:03:58OpenGLで3Dゲームなどを作ったこともあるのですが、
Windowsについては全く分からず、VisualStudioも先日初めて触りました。
「リソースって何?」とか「新規プロジェクトを作るだけでなぜ勝手にソースが書かれるの?」とか
「main()がない!」とか、それくらいチンプンカンプンなのですが、
DirectXでのプログラミングをゼロから勉強するための、良い本やサイトを教えていただけないでしょうか?
・まったくゼロの状態から(main.cppを自分で書くくらいのところから)説明してくれる
・Windowsの関数をあまり使わず、なるべくピュアなC++で説明してある
・自前のライブラリなどを使っていない
というのが希望なのですが…。
漠然とした質問で申し訳ないんですが、アドバイスをよろしくお願いします。
0244デフォルトの名無しさん
2005/12/15(木) 18:08:040245デフォルトの名無しさん
2005/12/15(木) 18:19:120246デフォルトの名無しさん
2005/12/15(木) 18:32:460247デフォルトの名無しさん
2005/12/15(木) 18:40:120248デフォルトの名無しさん
2005/12/15(木) 21:28:180249デフォルトの名無しさん
2005/12/15(木) 21:42:22とりあえずWindows上でVisual Studioを使ってもOpenGLは使おうと思えば使えるよ。
まあDirectXスレでこんなこと言うのもどうかとは思うけど。
0250220
2005/12/15(木) 23:16:11やはり、手抜きは手抜きなりの結果でした。。。とほほ。
いろいろありがとうございます。
明日、「クロスフェードとは?」辺りから調べます。
0251デフォルトの名無しさん
2005/12/16(金) 02:02:18でも興味を持って勉強すると上達も早いよね
0252デフォルトの名無しさん
2005/12/16(金) 10:24:33DrawPrimitiveでのcolorのA(ARGBのA)の値での全体の半透明はわかったのですが、
テクスチャー(32bit)のAの値での半透明は、どういう風にすればいいのでしょうか?
Aの値が0だと、カラーキーみたいに非表示
128だと、半透明表示
255だと、通常表示みたいにしたいのです。
テクスチャ生成は、D3DXCreateTextureFromFileInMemoryです。
Aの値も0〜FFということも確認しました。
■ このスレッドは過去ログ倉庫に格納されています