【C++】 DirectX初心者質問スレ Part24 【C】at TECH
【C++】 DirectX初心者質問スレ Part24 【C】 - 暇つぶし2ch900:デフォルトの名無しさん
09/08/17 04:04:17
メッシュコンテナ(D3DXMESHCONTAINER 構造体)から面ごとのマテリアル対応情報を取りだそうとしてるんだけど、
pMesh->GetAttributeTable()メソッドで取り出した、属性テーブル(D3DXATTRIBUTERANGE 構造体)の中の「AttribId」ってのは
pMaterials[i]の添え字(i)に対応してるんでしょうか?

同じ属性テーブル内にある「FaceStart」というのも、インデックスバッファ内の面の構成データの格納順に対応してるのか疑問です・・・

901:デフォルトの名無しさん
09/08/17 05:41:26
プロジェクトの設定をマルチバイト文字を使用するに変更すればいいだけじゃない

902:デフォルトの名無しさん
09/08/17 05:44:49
>>900
出なかったからたぶんマテリアルとは関係ない
メッシュをマトリックスグループみたいに分割することが出来てそのインデックス情報を格納するんじゃないかと
でDraw???って関数でそのインデックスを指定するとその面だけが描画されるという

903:デフォルトの名無しさん
09/08/17 05:49:18
ああ、そうか
マテリアルのインデックスを入れといてSetMaterialと連動させて
その面だけを描画すればマテリアルのインデックスという意味にもなるのか
まあ、ただ数字を入れて描画グループを分割出来るだけの代物だよ

904:デフォルトの名無しさん
09/08/17 06:36:53
うーん、pMaterials[i]の添え字(i)と頂点番号(もとい、面番号)を関連付けるデータは
メッシュコンテナ内には無いのでしょうか?
メッシュデータ内の全頂点から、あるマテリアルが適用されている頂点を特定したいのですが・・・

905:904
09/08/17 08:19:54
多分、自己解決

ボーンコンビネーションテーブル(LPD3DXBONECOMBINATION型)に
サブセット番号からメッシュデータ(最適化後)の頂点インデックスまで全て格納されてたので
そちらを参照することにしました

906:デフォルトの名無しさん
09/08/17 12:04:53
URLリンク(marupeke296.com)
このサンプルプログラムを使って
tiny.xを読み込んでも何もアニメーションしないのですが
なぜでしょうか?
ヒントだけでもいいので後生ですから教えてください・・><!

907:デフォルトの名無しさん
09/08/17 12:37:41
DirectXで直線を引くにはどうすれば?(´・ω・`)
ポリゴンとかXファイルとかは表示できるのに・・・

908:デフォルトの名無しさん
09/08/17 12:50:40
DrawPrimitiveでいけるやないかアホでんねん(´・ω・`)

909:デフォルトの名無しさん
09/08/17 13:10:51
>>906
公式ならともかく、そこのページは管理人がちゃんと質問掲示板開いてるじゃないか
そっちで質問しる・;(`ε()゙

910:デフォルトの名無しさん
09/08/17 13:41:09
なんなんだ・・・
釣りなのか本気なのか・・・

911:デフォルトの名無しさん
09/08/17 18:35:49
残念ながら、釣りではありません。

912:883
09/08/17 19:09:07
>>885
ありがとうございます。
基本的にはカメラを固定した状態でも動き回るものはバンプ、
それ以外はパララックスという使い方が良さそうですね。
もちろん場合に寄りますけど。


913:デフォルトの名無しさん
09/08/17 20:17:35
>>907
URLリンク(homepage2.nifty.com)

914:デフォルトの名無しさん
09/08/17 21:41:59
現在DirectXを使ってゲームを作っているのですが、
ボタンが後ろに隠れてしまっています。
なので、ボタンがある位置にスプライトを使ってボタン用の画像を
表示しているのですが、時差が出来たりしてうまく機能しません。
どうすれば、ボタンそのものを前面に表示出るのでしょうか?

915:デフォルトの名無しさん
09/08/17 21:45:23
DirectXにボタンなど無い
DirectXにスプライトなど無い

916:デフォルトの名無しさん
09/08/17 22:07:50
「Direct3Dで作っているゲームのキャラと地形のことで質問ですが…」
「Direct3Dにキャラや地形などない」

917:デフォルトの名無しさん
09/08/17 22:09:25
>>915
ボタンはウィンドウズの標準のもので、
スプライトはID3DXSpriteです。

918:デフォルトの名無しさん
09/08/17 22:21:26
ID3DXSpriteを使ってボタンの画像を描画しているのなら、
そもそも標準コントロールを使う必要性がない。

919:デフォルトの名無しさん
09/08/17 22:51:14
>>918
それもそうですね。
DirectXのサンプルに使われているボタンは
標準コントロールを基にしてるのかと思ってましたが
今調べてみたら違いますね。
ご迷惑をおかけしました。

920:デフォルトの名無しさん
09/08/17 22:53:43
まぁ、ツールを作る際にDirectXで描画されたものとWindosのコントロール併用することがあるから
色々試しても無駄にはならないことだけどね。


921:デフォルトの名無しさん
09/08/18 01:52:08
Vistaか7ならどっちでも同じことだが

922:デフォルトの名無しさん
09/08/18 08:20:52
同じじゃねえよ。
どれだけ馬鹿なんだ?

923:デフォルトの名無しさん
09/08/18 08:36:24
D3DXLoadMeshHierarchyFromX
の必要な
LPD3DXALLOCATEHIERARCHY pAlloc,がインターフェイスのポインタと
なっているのですが
COMインターフェイスってなんでしょうか?
調べてもプログラムの再利用としか出てこないので全くわかりません。

924:デフォルトの名無しさん
09/08/18 08:42:21
COMインターフェイスで検索しろ


925:デフォルトの名無しさん
09/08/18 09:54:49
Direct3D 11.0, Direct3D 10.1/10.0, DXGI 1.0/1.1, Direct2D 1.0, DirectWrite, Windows Imaging Component (WIC) APIs. (DirectWrite and WIC have partial support)
あたりのサンプル実装がMSから出たぞ。
URLリンク(code.msdn.microsoft.com)

926:デフォルトの名無しさん
09/08/18 10:52:08
>>923
そのあたりは、とにかくまずはサンプルコピペして、動きを見て、内容を理解し、自分で改良するしかない。
マジ。
理解しないままゲームとか作ると、あと後絶対苦労するから

927:デフォルトの名無しさん
09/08/18 15:48:21
1000に近づいてますが、質問させてください。
2D板ポリゴンの描画についてなのですが、DrawPrimitive系は重いので
1回で複数枚の板を表示するようにしてみました。

D3DXVECTOR4 vPos;
D3DCOLOR color;
D3DXVECTOR2 vTex;
上のようなメンバーを持った頂点オブジェクトの配列Vertexを作り、
for(int i = 0; i < Max; i++){
Vertex[i*4].vTex=D3DXVECTOR2(0.0f, 0.0f);
Vertex[i*4+1].vTex=D3DXVECTOR2(1.0f, 0.0f);
Vertex[i*4+2].vTex=D3DXVECTOR2(0.0, 1.0f);
Vertex[i*4+3].vTex=D3DXVECTOR2(1.0f, 1.0f);
}
とu, vを初期化。そして、描画処理が入った数だけ
Vertex[Cnt*4].vPos = D3DXVECTOR4(left, top, 0.0f, 1.0f);
Vertex[Cnt*4+1].vPos = D3DXVECTOR4(right, top, 0.0f, 1.0f);
Vertex[Cnt*4+2].vPos = D3DXVECTOR4(left, bottom, 0.0f, 1.0f);
Vertex[Cnt*4+3].vPos = D3DXVECTOR4(right, bottom, 0.0f, 1.0f);
※color省略
Cnt++;
とし、SetTextureして
DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, Cnt*2, Vertex, sizeof(VERTEX);
としたらテクスチャがあらぬ方向に伸びました。何故か正しく表示できてるものもあるのですが・・・。
どこか根本的に勘違いしてるのでしょうか?ご指摘いただけませんか・・・。

928:デフォルトの名無しさん
09/08/18 15:51:04
TRIANGLESTRIPがどういうものか調べてくるといい

929:デフォルトの名無しさん
09/08/18 15:56:02
>>928
さっそくのご指摘ありがとうございます。
全部プリミティブが繋がってると言うことでしょうか?
他の部分は問題ないものとしてTRIANGLELISTで実装してみます。

930:デフォルトの名無しさん
09/08/18 16:36:00
>>928
TRIANGLELISTでできました!1枚の板に6つ頂点使ってますが、
ちゃんとu,vと対応させたらOKでした。後は頂点インデックス使ったほうがいいですかね。
どれくらいパフォーンマンスに影響するかはわかりませんが。ともあれ即レス感謝です!

931:デフォルトの名無しさん
09/08/18 16:42:06
>>930
すぐに非効率性に気づいてTRIANGLELIST+IndexBufferに移行するだろうがな。

932:デフォルトの名無しさん
09/08/19 00:54:18
解決したんじゃなくて先送りしただけという事に気づくんだw

933:デフォルトの名無しさん
09/08/19 06:23:18
D3DXMATRIX mat;
D3DXVECTOR3 vec;

パターン1:
lpdevice->SetTransform( D3DTS_WORLD, &mat );
→vec(頂点)をDrawPrimitivで描画

パターン2:
vec = vec * mat;
→vec(頂点)をDrawPrimitivで描画(SetTransformしない)


この2つは同じ結果になると思ってたんですが、どうやら違うらしいです。
SetTransformをせず、パターン1と同じ結果を得るためにはどうすればいいのでしょう?

934:933
09/08/19 07:24:03
計算ミスってました(ノ∀`)

サーセン orz

935:デフォルトの名無しさん
09/08/19 10:33:40
>>933
SetTransformしないってのは、座標変換しないって意味じゃないぞ。

初期値として単位行列が設定されているから、起動時から一度も設定してなければ
結果的に入力と出力が同じ座標になるが。

何もセットしなけいと別の場所でSetTransformした値が残っているので、
明示的に単位行列をセットすべき。

936:デフォルトの名無しさん
09/08/19 14:55:22
ガラスのコップみたいな透明な物体を描画するには、
テクスチャーを透過するだけでいいんだな

937:デフォルトの名無しさん
09/08/19 15:10:03
>>966
DeffUseのαを設定する形にすれば透過率を後から変更できるけどな。
いずれにせよ描画順に制約を受けるので注意。

938:デフォルトの名無しさん
09/08/19 15:46:26
グラスの表現は透過率の調整だけじゃ出来ねえよ
プログラム以前に最低限のモデリングを経験してからにしろ。

939:デフォルトの名無しさん
09/08/19 17:22:15
>>937
deffuseのアルファ値か、ありがとう!

>>938
屈折の話とかかな?
ヒントサンクス!


940:デフォルトの名無しさん
09/08/19 20:09:42
マウスの左ボタンを押しているときにprintfDx関数で"Hello C World!\n"と出力し、
押してないときはclsDx関数で消すというコードを書いたつもりなのですがうまく消えてくれません。
どうしてでしょうか?初歩的な質問ですいませんが、よろしくおねがいします。

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
char Key[256];

//ループ開始
while(ProcessMessage()==0 && ClearDrawScreen()==0 && !GetHitKeyStateAll( Key )){
//↑メッセージ処理   ↑画面をクリア  
//ココ↓
if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 )
{ // 押されている
printfDx( "Hello C World!\n" ) ;
}
else // 押されていない
{
int clsDx( void );
}
//ココ↑
ScreenFlip();
}
DxLib_End();
return 0;
}

941:デフォルトの名無しさん
09/08/19 20:18:12
>>940
ここはDirectXのスレです。

942:デフォルトの名無しさん
09/08/19 20:21:55
>>941
スレ違いでしたか、すいませんでした

943:デフォルトの名無しさん
09/08/20 17:55:06
DirectX9とc++でゲームを作っているのだが、ゲーム会社に就職する
には、どれくらいの技術が必要ですか?

よく聞く基準
ライブラリを作れるとか
簡単な3Dゲームが必要とか
2Dだったら、完成度が高くないといけない

だいたいでいいから基準みたいなものはありますか?

944:デフォルトの名無しさん
09/08/20 17:57:57
ゲーム1本作れればおkよ

945:デフォルトの名無しさん
09/08/20 19:03:07
人事担当じゃないから詳しいことは分からないけど、DirectXでゲームとして完成度の高いものを作っても意味ないよ。
一番は表現力。HLSLでSDKのサンプル以上の何かを出来ればそれだけで十分だったりも。
小規模な企業ならそれでいいけど、中規模以上の企業であれば数学・物理が人に教えることが出来るレベルじゃないとダメ。
ハードが変わっても求めたい答えとその計算方法が分かっていれば問題ないしね。

ちなみにバンナムは数学・物理中心で、簡単なC言語ソースの問題(穴埋め)。
任天堂は数学・物理中心、あとは一般常識と発想力。
大企業になると技術力をアピールする機会がなかったり、それ以前に蹴落とされるから注意してね。

まぁ、場違いな書き込みなんですけど。


946:デフォルトの名無しさん
09/08/20 19:38:01
板違いな奴は入れないお
レスする方もたいがいだけどな

947:デフォルトの名無しさん
09/08/20 19:45:42
ゲームとして完成度の高いもの(笑)

948:デフォルトの名無しさん
09/08/20 21:04:59
そもそもここは進路相談のスレじゃない

949:デフォルトの名無しさん
09/08/21 00:03:24
>>947
面白いゲーム作れなくて、数学物理が出来ても仕方ないと思うけどな。
単なる技術のデモンストレーションみたいなゲームは嫌だろ。
ゲームとしての捻りが無ければ売れんだろうし。

ま、だからって数学物理がいらないとは言わないが。

950:デフォルトの名無しさん
09/08/21 00:09:04
>>949
そういう人ばかりいたら駄目だろうが、当然面白いゲームを作るための人というのもまた別に雇用するだろう。

951:デフォルトの名無しさん
09/08/21 00:23:24
ゲームが面白いかどうかなんて、グラフィックや企画、仕様による所が大きいだろーが

つーか、ここはプログラマ板だろ
プログラマ(だぶん一人)が作った、転職、就職用ゲームが面白いかどうか、
なんて言ってるのは、ロートルの分って無いオッサンにしか見えん

挙動とかタイミングなんて言うなよ?
それこそ、そのサンプルプログラムで言い訳だろ

つまり、数学物理とは言わないが
技術スキルが分るサンプルやデモで十分

採用に面白い完成したゲームとか言ってる奴は、マジで組織のお荷物ぽっい
いい年して技術が無く、技術的な問題可決もトンチレベルの発想で
結局、若い技術ある奴が残業や休日出勤でカバーとか、ねw

952:デフォルトの名無しさん
09/08/21 00:26:00
ゲームってこれからも
どんどんどんどんどんどん
難しくなってくのかな?
昔はフォトンマップとか非線形計画問題とか考えなくても
ゲーム作れたのに。
うざい、皆死ねばいいのに。

953:デフォルトの名無しさん
09/08/21 00:36:28
うんうん、板もわきまえずに語りだす奴は皆氏ねばいいね

954:デフォルトの名無しさん
09/08/21 02:14:38
ツールが増えてるからむしろ簡単になってるんじゃない?

955:デフォルトの名無しさん
09/08/21 03:28:34
Physixスレがないのだがここでいいのかな


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch