トップページ⇒tech
1001コメント306KB

【C++】 DirectX初心者質問スレ Part4【C++】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/05/08(日) 01:53:41
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する香具師 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

前スレ
【C++】 DirectX初心者質問スレ Part3【C++】
http://pc8.2ch.net/test/read.cgi/tech/1108987183/
0002デフォルトの名無しさん2005/05/08(日) 02:04:56
ところで、「DirectX総合スレ」ってどこ逝っちゃった?
0003デフォルトの名無しさん2005/05/08(日) 02:06:37
おまいが建てる予定だってさ
0004デフォルトの名無しさん2005/05/08(日) 02:32:33
DirectXプログラマのコーヂングスタイルってどんなの?
やっぱMS風のハンガリアン?
俺DirectXでプログラム覚えてライブラリ作ってきたから
100%MS準拠だったんだけど、最近きもくなって
過去のライブラリ書き直ししようか迷ってるマンコ。
0005デフォルトの名無しさん2005/05/08(日) 02:46:03
前スレこぴぺ。
シミュレーションゲームで、敵の行動思考を計算する時、
市販のゲームとか、別スレッドで計算してるのですか?
自分の場合、適当に時間持たせて考えてる「フリ」にするつもり。

ハンガリアン気にしない。割には使ってます。
いちいち書き直すなんて。
0006デフォルトの名無しさん2005/05/08(日) 08:20:20
マジレスすると、ゲームに依る。以上。
0007デフォルトの名無しさん2005/05/08(日) 09:32:11
一人で作るなら俺ルールでいいとおもうけど
ルールがないのはやばいが
0008デフォルトの名無しさん2005/05/08(日) 15:07:23
DirectXの入門書で「これを買え」っていう本、何でしょうか?
CやJAVAなどの本なら書店で立ち読みして良書を見極めて買ってるんですが、
DirectXの本って僕のいきつけの書店に置いてなくて、
通販で買おうと思ったんですがDirectXの本って結構たくさん
あって選ぶのに苦労してます。
値段も結構張りますし。

0009デフォルトの名無しさん2005/05/08(日) 15:27:49
 マジレスすると、DirectX SDKについてくるHelpファイルが最強のチュートリアル。
その名の通りチュートリアルってプロジェクトがあるからそれを頭からみれば大体の
事は解る。
0010デフォルトの名無しさん2005/05/08(日) 15:44:27
>>8
t-potの人のDirectX9 シェーダプログラミング
工学社のDirectX9 実践プログラミング
DirectX SDK ヘルプ
GPU Gems
0011デフォルトの名無しさん2005/05/08(日) 15:55:07
>>9
SDK見れっつーのは確かにそうなんだが
それ言うと初心者質問スレの意味が無くなっちゃう気が。

DirectXゲームグラフィックスプログラミング Ver. 2.0
http://www.amazon.co.jp/exec/obidos/ASIN/4797329807/qid=1115534492/sr=8-1/ref=pd_ka_0/250-6648048-1546651
書籍版 DirectX9実践プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4875934998/qid=1115534492/sr=8-2/ref=pd_ka_1/250-6648048-1546651
DirectX 9 DirectX Graphics
http://www.amazon.co.jp/exec/obidos/ASIN/477751112X/qid=1115534492/sr=8-8/ref=sr_8_xs_ap_i8_xgl14/250-6648048-1546651

今の所、これくらいしか無いのが現状。
変日本語SDKの代わりに、リファレンスとして見るなら、
下2つのI/O books系が良いかもしれんが・・眠くなる。
「で?何しよう・・」となると、一番上の本が役に立つかもしれん。

ハッキリいって良書と呼べるかどうかは微妙過ぎるが、総数が少ないしな。。
SDKでチュートリアルと、DX用語のイメージを掴んでから書籍を買ってみれば?

ま、漏れも最初は良書探しをしたんだが、結局SDKチュートリアルから始めて
なんとなく理解できたわけで。。どうにも楽には行かないべ。
0012デフォルトの名無しさん2005/05/08(日) 15:58:58
SDK!SDK!言ってるがSDKに付いてくる日本語ヘルプの事ね・・('A`)
0013デフォルトの名無しさん2005/05/08(日) 16:35:17
DirectX7のDirect3Dで、
頂点にDIFFUSE色を含ませて、その色のアルファ成分を利用して、
アルファブレンドしたいのだが、これってできる???(できなかったので)

ブレンド方法は、
SetRenderStateを使って、SRCBLENDとDESTBELND を使ってやるやつ。

頂点にカラーがあるから、ライティングは不要にしてる。(無効にする)
一応なぜか、マテリアルを割り当ててるが、マテリアルの要素は全て無効だろう。(ライティングなしだから)
ライティングを有効にしても、頂点のディフューズカラーのアルファ成分を使った、ブレンディングはできなかった。

アルファ成分は、常に1.0だと判断されてるようで、
これは、ピクセルカラーに含まれるアルファ成分を使ってるのではないかと思われるが。
001482005/05/08(日) 16:47:27
皆さんのおかげで、購入する本を決められます。
皆さん、どうもありがとうございました。
0015デフォルトの名無しさん2005/05/08(日) 17:08:27
テクスチャを2D的に表示する為、
変換済み頂点のバーテックスバッファを作って
トライアングルファンで四角ポリを表示させているのですが、
これを拡大する時はVBの頂点を直接弄るしかないでしょうか?
変換済み頂点なんで、
D3DXMatrixScalingとかかけてSetTransformしても意味ないですよね?
0016デフォルトの名無しさん2005/05/08(日) 17:11:30
↑テクスチャっていうのは、画像ファイルという意味です。
0017132005/05/08(日) 18:06:09
COLORVERTEX をfalseにしてますた。。。
0018132005/05/08(日) 18:39:24
COLORVERTEX をTRUEにしたけど、アルファ値が変わらない。。。
0019132005/05/08(日) 19:42:56
できた。。。(T_T)...
こんなことで半日かかったよ。ヽ(`Д´)ノUWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANNNNNN!!!!!
0020デフォルトの名無しさん2005/05/08(日) 21:18:05
>>19
つまんねー日記でレス消費してんじゃねーよ
0021デフォルトの名無しさん2005/05/09(月) 09:50:45
画像ファイルをスクリーン座標で表示する為、
変換済み頂点のバーテックスバッファを作って
トライアングルファンで四角ポリを表示させているのですが、
これを拡大表示したい時はVBの頂点を直接弄るしかないでしょうか?
変換済み頂点なんで、
D3DXMatrixScalingとかかけてSetTransformしても意味ないですよね?
0022デフォルトの名無しさん2005/05/09(月) 15:31:09
>>21
その通り。
0023132005/05/09(月) 18:08:45
D3DXMatrixScaling
0024デフォルトの名無しさん2005/05/09(月) 18:45:20
変換済み頂点だって言ってんだろうが
0025デフォルトの名無しさん2005/05/10(火) 08:09:54
ちょとイタイ>>13が居るスレは此処ですか?
0026デフォルトの名無しさん2005/05/10(火) 13:11:11
D3DXCreateTextureFromFileExがDirectXデバイス既に作成したのに
「デバイスの準備ができてません」とHRESULT値を返す。
NULLチェックして確かめてるから間違いない。
しかも、引数に渡したファイル名の文字列が関数実行後「""」になってる。
const のはずなのに、デバッガが間違ってるのか、なんなのか、わけわかめ。
憂さ晴らしに書いた。
0027262005/05/10(火) 13:13:01
「デバッガが間違い」というのは、深い意味で考えないでください...
0028262005/05/10(火) 13:37:29
少し前にあるassert関数を省いたらバグ取れた。わけわかめ
0029デフォルトの名無しさん2005/05/10(火) 14:04:31
VCでのプログラミングの経験はあるのですが、DirectXは初めてです。お薦めの本を教えてください。
0030デフォルトの名無しさん2005/05/10(火) 14:22:24
>29
C,C++、win32APIでウインドウぐらい作れるのか?
0031デフォルトの名無しさん2005/05/10(火) 15:40:01
↑何で偉そうなんだろう。
個人的にはDXでお勧めの本はない。
とりあえず工学者とかI/Oのは終わってる。
量産してるけど全部糞。
シェーダーとかグラフィックに特化したのは高いけど比較的まとも。

最初はSDKチュートリアルと個人サイトのチュートリアルをやって、
リファレンスとしてはSDKドキュメントがあれば十分いけると思う。
0032デフォルトの名無しさん2005/05/10(火) 16:18:31
まあ、SDKのヘルプとサンプルが確実に最良の教科書なので、読みまくれってこった。
DirectX Graphicsだけなら、ノート取りながら読んで1日かからんはずだ。
0033デフォルトの名無しさん2005/05/10(火) 16:28:18
つーか俺の経験だと、初心者が一段登る程度の情報だったらどんな本を買っても書いてあるよ。
本屋に行って適当なのを選んで来たら医院ジャマイカ
0034デフォルトの名無しさん2005/05/10(火) 18:05:29
>>28
assertをとったらバグ取れたってのは表面的だな。
メモリリークしてる場合の症状だろ、それ。
0035262005/05/10(火) 18:50:59
assertは、D3DXCreateTexture..の前にあるから、無関係。
assertで引っかかってるわけではないです。

assert(size);
..
D3DXCreateTextureFromFileEx(...);

で、最後の引数に帰ってくるポインタ(テクスチャ)はNULLではなく、
変な値。
メモリ配置に関するエラーだと思われますが。
0036デフォルトの名無しさん2005/05/10(火) 19:19:52
レンダリングターゲットにアルファ値を書き込む方法ってありますか?
ターゲットのアルファ値は常に0xFFだと思ってるんですが。
(アルファ値の計算で色が決定され、ターゲットにその色が反映されて、
ターゲットにアルファ値は本来不要だと思われるから)
HPゲージのような一部分(矩形のような単純な形ではない)にだけ
塗ろうとして、その一部分のみを透明にして、その他部分は不透明
を表現しようとしてます。
0037デフォルトの名無しさん2005/05/10(火) 20:03:22
>>36
常に0xFFだったらアルファブレンディグできないだろ。
0038362005/05/10(火) 20:55:29
普通に考えたら、そんな遠回りする必要なく、
その形をかたどったモノをそのまま転送すればいい事に気づいた。
0039デフォルトの名無しさん2005/05/10(火) 21:38:09
>>38
そんなことしないで、転送先ピクセルのアルファ値を使用した、
ブレンディングを学べ
0040デフォルトの名無しさん2005/05/10(火) 22:03:28
メモリリークした箇所をデバッガで知ることが出来ますが、アホなものでその情報を生かせません。

Direct3D9: (ERROR) :Memory Address: 00c64028 lAllocID=1 dwSize=000047f8, ReturnAddr=017134c8 (pid=00000584)

例えば上記のような情報から、どうやってリークした対象を特定するのでしょうか。
デバッガでメモリの状態を見ることが出来ますが、それで確保された瞬間を見るとD3DのDeviceだったりしてお手上げでした。
IDというのが便利そうなのですが…。
0041デフォルトの名無しさん2005/05/11(水) 02:03:59
メモリリークしたら、企画ごとボツが定石
0042デフォルトの名無しさん2005/05/11(水) 02:17:56
サーフェスを画面に表示するにはどうやるの?
0043デフォルトの名無しさん2005/05/11(水) 04:35:09
>>37
アルファブレンディングで、ターゲットのアルファは使わないのでは?普通の式だと。

Result = Src * Src_α + Target * (1 - Src_α)
0044デフォルトの名無しさん2005/05/11(水) 05:15:21
http://www112.sakura.ne.jp/~kaientai-project/creategame2.htm

0045デフォルトの名無しさん2005/05/11(水) 13:04:12
>>41
昔初心者の頃マジでそうしてた(;・∀・)
■ このスレッドは過去ログ倉庫に格納されています