【C++】 DirectX初心者質問スレ Part31 【C】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/09/30(木) 21:45:21これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ
【C++】 DirectX初心者質問スレ Part30 【C】
http://hibari.2ch.net/test/read.cgi/tech/1278214135/
0657デフォルトの名無しさん
2010/10/22(金) 19:30:060658デフォルトの名無しさん
2010/10/22(金) 20:33:53何億発打てばメモリ不足になるんだよ?
というか馬鹿?
0659デフォルトの名無しさん
2010/10/22(金) 20:37:41動的確保にしても予め確保しといたヒープ内からとかにしたい所だ
0660デフォルトの名無しさん
2010/10/22(金) 20:39:32馬鹿の考え休むに似たり
>メモリ不足より分断化の方が気になる
馬鹿の考え休むに似たり
0661デフォルトの名無しさん
2010/10/22(金) 20:48:250662デフォルトの名無しさん
2010/10/22(金) 21:01:53しらないけど、動的に取るならテスト項目に上がるでしょ?
0663デフォルトの名無しさん
2010/10/22(金) 21:07:500664デフォルトの名無しさん
2010/10/22(金) 21:14:44じゃ何発打てばメモリー不足になるんですか?
0665デフォルトの名無しさん
2010/10/22(金) 21:43:26解放とか忘れちゃうだろ
0666デフォルトの名無しさん
2010/10/22(金) 21:52:340667デフォルトの名無しさん
2010/10/22(金) 21:55:41最初にある程度大きく確保しておいてその範囲内の内はそこから確保されるので
結局配列で確保したのと一緒になる
0668デフォルトの名無しさん
2010/10/22(金) 22:22:32重い仮想関数とか使わずとも多態化できますし。
嘘です。上のようなこと書くとスレがと荒れるらしいです。
0669デフォルトの名無しさん
2010/10/22(金) 22:36:44特定のアルゴリズムの限定的な話を突然始める>>667みたいな馬鹿って何なの?
0670デフォルトの名無しさん
2010/10/22(金) 22:58:38デメリットは穴ぼこメモリもたしかに気になるけど
それも極小すぎてデメリットといえるかどうかっつーとよくわからないな
ガベコレ動き出したコレ!とかいうjavaみたいな環境ならデメリットありまくりだけどw
まあ、でもかっちょよく(?)動的にしたいなら
「意味はないけど好きやりたいなら好きにしたらいーんじゃないですか?
それであなたが気持ちよくゲームを作れるならそれもいーんじゃないですか」でFA
0671デフォルトの名無しさん
2010/10/23(土) 04:03:240672デフォルトの名無しさん
2010/10/23(土) 04:53:320673デフォルトの名無しさん
2010/10/23(土) 05:02:26メモリ管理とかどうなってるの?
0674デフォルトの名無しさん
2010/10/23(土) 05:15:30なんか語りたい話題があるならどうぞ
0675デフォルトの名無しさん
2010/10/23(土) 07:02:57COMはインタフェイスの実装手法であって、ドライバ云々との関連は通常のAPIと同じでしかない。
0676デフォルトの名無しさん
2010/10/23(土) 10:44:07収まっているかどうかわかる方法はありますか?
0677デフォルトの名無しさん
2010/10/23(土) 11:12:560678デフォルトの名無しさん
2010/10/23(土) 11:16:33点を座標変換して射影空間内に収まってるかどうかをチェックする
D3DXMATRIXA16 matWorld,matView,matProj;//各変換行列
D3DXVECTOR3 v ;// 空間上の点
D3DXVec3TransformCoord ( &v, &v, &(matWorld*matView*matProj) ) ;//既に移動済みの点ならmatView*matProj
-1.0 <= v.x <= 1.0
-1.0 <= v.y <= 1.0
0.0 <= v.z <= 1.0
でどうだろう?
0679デフォルトの名無しさん
2010/10/23(土) 14:26:290680デフォルトの名無しさん
2010/10/23(土) 18:36:230681デフォルトの名無しさん
2010/10/23(土) 20:55:22どうしたら起動出来ますか?
0682デフォルトの名無しさん
2010/10/23(土) 20:58:56エンドユーザーの方はご遠慮下さい
0683デフォルトの名無しさん
2010/10/23(土) 21:42:360684デフォルトの名無しさん
2010/10/23(土) 22:54:35Machine name: EPSON112157501
Operating System: Windows XP Home Edition (5.1, Build 2600) Service Pack 3 (2600.xpsp_sp3_gdr.100427-1636)
Language: Japanese (Regional Setting: Japanese)
System Manufacturer: EPSON DIRECT CORP.
System Model: P4BGV-ED
BIOS: Award Modular BIOS v6.0
Processor: Intel(R) Celeron(R) CPU 2.40GHz
Memory: 1016MB RAM
Page File: 487MB used, 1131MB available
Windows Dir: C:\WINDOWS
DirectX Version: DirectX 9.0c (4.09.0000.0904)
DX Setup Parameters: Not found
DxDiag Version: 5.03.2600.5512 32bit Unicode
これがスペックです。
0685デフォルトの名無しさん
2010/10/23(土) 23:08:350686デフォルトの名無しさん
2010/10/23(土) 23:10:000687デフォルトの名無しさん
2010/10/23(土) 23:25:40もっと噛み砕いた文章にしないと伝わらんと思う
>>681
このスレは作り方の質問スレなので、使い方の質問は他所でやってくれ
0688デフォルトの名無しさん
2010/10/24(日) 00:12:320689デフォルトの名無しさん
2010/10/24(日) 02:06:15これに紐づいた文字列データとか無いかな。
キーコンフィグで今登録されてるキーが何かって表示したいんだけど、
自分で文字列登録していくしかないかな。
0690デフォルトの名無しさん
2010/10/24(日) 02:14:310691デフォルトの名無しさん
2010/10/24(日) 02:22:23ありがとう、安心して作れるよ
0692デフォルトの名無しさん
2010/10/24(日) 03:00:580693デフォルトの名無しさん
2010/10/24(日) 03:55:100694デフォルトの名無しさん
2010/10/24(日) 04:19:390695デフォルトの名無しさん
2010/10/24(日) 04:35:41DirectX SDK 日本語
で検索して出てきたのがこれだったので
英語出来ないからこれ使おうとおもったんですが他にありますか?
0696デフォルトの名無しさん
2010/10/24(日) 04:40:10ヘルプとSDKは別物ですけどそのへんわかってますか
0697デフォルトの名無しさん
2010/10/24(日) 04:52:37ヘルプだけ翻訳されてるってことでしょうか?
で、よく見てみたら2009版のヘルプもあったのでそれと2009sdkをインストしてみます
0698デフォルトの名無しさん
2010/10/24(日) 04:56:22ドキュメントには日本語版がありますが最新の情報は基本的に英語です、慣れて下さい。
0699デフォルトの名無しさん
2010/10/24(日) 05:06:58辞書片手に何とかやってみます
深夜にあほな質問してすみません 有難うございました
0700デフォルトの名無しさん
2010/10/24(日) 12:07:160701デフォルトの名無しさん
2010/10/24(日) 12:32:120702デフォルトの名無しさん
2010/10/24(日) 12:34:39SlimDX
0703デフォルトの名無しさん
2010/10/24(日) 13:28:010704デフォルトの名無しさん
2010/10/24(日) 16:23:27箱とマルチしたいならXNAでいいけど、そうでないならSlimDXオヌヌメ
0705デフォルトの名無しさん
2010/10/24(日) 16:41:330706デフォルトの名無しさん
2010/10/24(日) 19:44:51”初心者”質問してる人らに冷たすぎないか?
もちろんちゃんと答えてあげてる人もいるし、ひどい質問してる人らもいる。
でも見てると初心者脱却したてのやつらが”初心者”いじめて気持ちよくなるスレに思えて来るんだが。
0707デフォルトの名無しさん
2010/10/24(日) 19:46:590708デフォルトの名無しさん
2010/10/24(日) 19:47:500709デフォルトの名無しさん
2010/10/24(日) 20:06:37普段はスルーしてるんだけど、
このスレの存在意義とかあり方についてどうなのかなって思って
0710デフォルトの名無しさん
2010/10/24(日) 20:08:38具体的にどのレスにどう答えてほしいのか言え
抽象的過ぎてさっぱりわからない
0711デフォルトの名無しさん
2010/10/24(日) 20:09:090712デフォルトの名無しさん
2010/10/24(日) 20:31:09あくまで具体的な質疑応答のみがスレを形作ります。
自分の好みのスレにしたいなら一晩中張り付いて全ての質問に対応するぐらいの気概が必要です。
0713デフォルトの名無しさん
2010/10/24(日) 20:34:060714デフォルトの名無しさん
2010/10/24(日) 21:02:25DrawIndexedPrimitiveUPを使って描画しようとしています。
これを使って描画する場合、頂点デクラレーションを自分で定義したものを
セットして使用することはできるのでしょうか?
それともSetFVFしか使えないのでしょうか?
0715デフォルトの名無しさん
2010/10/24(日) 21:14:08自分で定義したものを使える
ただしストリームは0番しか使えないので頂点情報は1つに纏める必要がある
0716デフォルトの名無しさん
2010/10/24(日) 21:29:30ありがとうございます!
追加で質問させてください。
VERTEX v[400]//頂点バッファ
WORD iv[600]//インデックスバッファ
上記の配列にそれぞれ、値が格納されているとします。
VERTEXは頂点データの構造体です。
その状態で、下記のように実行するとします。
DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST,0,8,4,iv,D3DFMT_INDEX16,v,sizeof(VERTEX));
この場合頂点バッファとインデックスバッファの配列にデータが全部埋まっていたとしても、
上記で指定した通りに四角形が二つ(三角形が4つ)描画されるのでしょうか?
ちょっとやってみたら、上手く描画できなかったものでして^^;
0717デフォルトの名無しさん
2010/10/24(日) 21:30:59三角形が4つ「だけ」描画されると思ってていいのでしょうか?
配列に入っている他のデータは無視されるのかが聞きたいです。
0718デフォルトの名無しさん
2010/10/24(日) 21:42:08その認識で合ってるよ
頂点の指定の順番が逆周りになってて裏面が表を向いてるとかってオチはない?
カリングモードをNONEにして試して見るとか
0719デフォルトの名無しさん
2010/10/24(日) 21:51:38カリングモードをNONEにしても駄目でした。
でも認識は合ってるとのことですので、もう一回色んなところ見直してみます。
ありがとうございました。
0720デフォルトの名無しさん
2010/10/24(日) 23:03:18(1)ある軸まわりにベクトルを回転した時の、回転前のベクトルr1と回転後のベクトルr2の間の関係
を表す回転変換行列E (r2 =E * r1) を生成している (座標系は基本的にWorld座標系O-xyzの一つだけ)。
(2) あるベクトルを、モデルに固定されたローカル座標系O-ξηζで成分表示した時の成分
(ξ, η,ζ)と、World座標系O-xyzで成分表示した時の成分(x,y,z)との間の関係を表す座標変換行列R
(x, y, z)T = R * (ξ, η,ζ)T、
Tは転置記号で(x,y,z)T、(ξ, η,ζ)Tは列ベクトル
を生成している。複数個のローカル座標系とworld座標系が存在する。
のどちらなのかわからない。
自分としては、(1)の方が理解し易い。最初、O-ξηζ座標系はworld座標系0-xyzと一致していて、
ξ、η、ζ軸の単位ベクトルi',j',k'に回転変換行列Eをかけることによってξ、η、ζ軸と
O-ξηζ座標系で成分表示されたベクトルを回転させる。
が、DirectXの参考書をみると座標変換行列という言葉を使っている本もある。
(1)(2)のどちらで解釈してもいいかもしれないが(EとRの要素は一致する)、(1)(2)のどちらの立場で
話をしているか明確にしておかないと話がかみ合わないと思う。
皆さんは(1)(2)のどちらで解釈してますか? それとも、私が勘違いしてるんでしょうか?
0721デフォルトの名無しさん
2010/10/24(日) 23:09:15http://sequoia-web.hp.infoseek.co.jp/tsudoi/tsudoi06.shtml
0722デフォルトの名無しさん
2010/10/24(日) 23:11:55その話はおいといて
0723デフォルトの名無しさん
2010/10/24(日) 23:17:110724デフォルトの名無しさん
2010/10/24(日) 23:27:25反転してるんだ。
post-vertex-shaderの方では思ってる通りの頂点順になってるんだ。
これってどういう原因が考えられますか?
preの方は半時計まわり。
postの方は時計周り。
になってます。
カリングモードは左周りをカリングするように設定してます。
頂点データを作ったときは、時計周りに定義してるんですけどね。
0725デフォルトの名無しさん
2010/10/24(日) 23:28:08すみません。で、どちらの立場なんですか?
0726デフォルトの名無しさん
2010/10/24(日) 23:28:080727デフォルトの名無しさん
2010/10/24(日) 23:29:450728724
2010/10/24(日) 23:30:510729デフォルトの名無しさん
2010/10/24(日) 23:32:350730724
2010/10/24(日) 23:33:200731デフォルトの名無しさん
2010/10/24(日) 23:36:340732デフォルトの名無しさん
2010/10/24(日) 23:36:460733724
2010/10/24(日) 23:55:080734デフォルトの名無しさん
2010/10/24(日) 23:55:46> D3DXMatrixRotationX(&matWorld, cta);
> pDevice->SetTransform(D3DTS_WORLD, &matWorld);
>
> におけるマトリックスmatWorldの解釈は次のどれが正しいでしょうか?
>
> (1)World座標系XYZにおいて、3Dモデル(の頂点ベクトル)をX軸まわりに
> θradだけ回転させるためのベクトル回転変換行列。
>
> (2)3Dモデルの各頂点座標(ξ,η,ζ)を記述しているξηζ座標系が
> ワールド座標系XYZに対してX軸回りにθradだけ回転している(3Dモ
> デルもX軸回りにθradだけ回転している)。matworldは3Dモデルの
> 各頂点座標(ξ,η,ζ)を(X,Y,Z)座標に変換する座標変換行列。
>
> (3)どちらの解釈でもいい。
>
> (4)どちらの解釈も正しくない。
>
> ベクトルの回転変換行列であろうと座標変換行列であろうと両者の要素の中身
> は一致するから(3)でいい気がしますが、回転、移動操作に対応した行列
> 乗算の順序が右側にかけていくか、左側にかけていくかの違いが生じるのでは
> ないか? という気もします。
> 403 名前:デフォルトの名無しさん[] 投稿日:2010/02/13(土) 20:32:15
> はあ
0735デフォルトの名無しさん
2010/10/24(日) 23:57:25> >>415
>
> 回答ありがとう。
> directXは(行列*列ベクトル)の演算と違って(行ベクトル*行列)の演算
> だから行列を転置にしなければならない。したがって、行列の積ではかける
> 順序が逆になる、というのはあなたの指摘どおりだ。
>
> ところがベクトルを回転させる回転変換行列か、座標軸(もの指し)を
> 回転させた座標系間の座標変換行列かによっても乗算の順序は違う。
>
> >>412 >> 414 >> 428
> わかりもしないくせに偉そうなこと言うな雑魚! ひっこんでろ
>
> >>416
> お前も黙ってろ。
>
> (1)の解釈で納得していたんだが、(2)の解釈でないと説明できない
> 問題が発生したんで(と、その時は思ってた)。
>
> DirectXでは回転、移動の操作順ごとに行列を右側にかけていくよう
> だから(そして転置行列の積だから)、(1)の解釈でいいようだ。
>
> ただ、DirectXの関数が(1)(2)のどちらの考えにたって実装されているのか
> 確認したかったから聞いたのに >>410 の馬鹿が仕様を調べれば、とアホな
> 回答をしているのには閉口した。そんな事しか言えないなら黙ってろや。
>
>
> わかっている人からのアドバイスには感謝するが、アホ相手するのも
> 面倒だからもう書かない。
>
> アホはまた何か書くだろが、相手しない。
0736デフォルトの名無しさん
2010/10/25(月) 00:34:44(1)でも(2)でもない場合はどうやって理解しようとしてるわけ?
0737デフォルトの名無しさん
2010/10/25(月) 00:36:570738デフォルトの名無しさん
2010/10/25(月) 00:43:29どちらですか?って聞いてもどっちでもねぇときはどうやって受けとる気なんだろねw
0739デフォルトの名無しさん
2010/10/25(月) 01:52:00ほらっ、お前の嫌いな初心者イビリが始まったぞ
助けてやれや
0740デフォルトの名無しさん
2010/10/25(月) 06:47:16いや、違うって
どういう脳みそしてんだよ
つまり、こういう状況だろ↓
このパンはなんのパンですか?
(1)あんパン
(2)クリームパン
(1)か(2)のどっちですか?
正解はジャムパンなのに回答が(1)か(2)に固定されてて答えようがないよw
0741デフォルトの名無しさん
2010/10/25(月) 09:28:37過去ログからわざわざ挙げる奴もひまと言うか、何と言うか。
ひょっとしたら、わかる人がいるかもしれないと期待したんだが。
0742デフォルトの名無しさん
2010/10/25(月) 12:27:20数学それほど詳しくはないが、そういう関数で生成できる行列って、
変換元座標系からみた変換先座標系への差分を表してる。
どっちでもあってるんじゃない?回転だけ考えれば(1)もあってるし、行列全体の動作として見たら(2)でもあってる
つか釣りだろ?
0743デフォルトの名無しさん
2010/10/25(月) 13:45:27最終的にDirectXを使いたいんだったら最初からDirectX使った方が良いのかな
0744デフォルトの名無しさん
2010/10/25(月) 13:45:570745デフォルトの名無しさん
2010/10/25(月) 13:48:46そっか、俺の知能だとかなり厳しいががんばってみる 即レスありがとう
0746デフォルトの名無しさん
2010/10/25(月) 13:54:300747デフォルトの名無しさん
2010/10/25(月) 14:00:17う…む…?
無意味になるの前提でもdxライブラリから入るのは有りって事?
0748デフォルトの名無しさん
2010/10/25(月) 14:18:320749デフォルトの名無しさん
2010/10/25(月) 14:19:32それよりマクロ定義の意味とかDLL回り固めて
意味不明なメソッドやクラスの詳細を片っぱしからコメントアウトした方が早いかとおも
0750デフォルトの名無しさん
2010/10/25(月) 14:25:19根気があるならいきなりいってもいいけど
0751デフォルトの名無しさん
2010/10/25(月) 14:35:010752デフォルトの名無しさん
2010/10/25(月) 14:48:31「あぁ、あれはコレを内部でやってたのね」と思い当たる的な役立ちかたはするかもしれんが
DXライブラリを事前にやっておくことで
DirectXが理解しやすくなるような役立ち方はあまりしない気がする
0753デフォルトの名無しさん
2010/10/25(月) 14:56:29それで駄目だったらライブラリ使う事にするよ 皆さんどうもありがとう
0754デフォルトの名無しさん
2010/10/25(月) 15:05:580755デフォルトの名無しさん
2010/10/25(月) 15:49:51ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.htm
カメラとか行列とか3D独特なものには触れれるから3Dの感触を確かめる意味ではいいんじゃないかな。
0756デフォルトの名無しさん
2010/10/25(月) 15:53:02俺もそれで3Dをマスターした。
■ このスレッドは過去ログ倉庫に格納されています