【C++】 DirectX初心者質問スレ Part21 【C】at TECH
【C++】 DirectX初心者質問スレ Part21 【C】 - 暇つぶし2ch2:デフォルトの名無しさん
08/12/12 20:20:42
とりあえず>>1

3:デフォルトの名無しさん
08/12/12 20:24:53
このスレは荒らしの立てた重複スレです
こちらのスレをご利用下さい

【C++】 DirectX初心者質問スレ Part20 【C】
スレリンク(tech板)


4:デフォルトの名無しさん
08/12/15 23:11:03
>>1
のちのち再利用をするとは思うが、無駄なスレは立てんなよ
お前が一番のカスだぞ

5:デフォルトの名無しさん
08/12/23 07:49:33
ほっしゅーと

6:デフォルトの名無しさん
08/12/29 17:08:46
すみません、前のスレに書いてしまったため、こちらに書かして頂きます。
何回も書いてしまって申しわけありません

初めまして、DirectX初心者のものですが皆様にご質問させていただきます。
現在DirectX9のノートパソコンでVisualStdioでプログラミングを行っております。しかし使用しているパソコンがノートなので
処理が重く効率が悪いのでパソコンの購入を考えているのですが、お店で売っている商品は
DirectX10ばかりです。DirectX10のパソコンでDirectX9のプログラミングを今までどおり
行う事は可能でしょうか?

7:デフォルトの名無しさん
08/12/29 17:54:21
なんでそんな簡単に答えが帰ってきそうな質問まで
マルチポストするんだ

8:デフォルトの名無しさん
09/01/05 20:58:57
HRESULT CString::Draw(LPTSTR str, INT iX, INT iY, D3DCOLOR color)
{
RECT rect = { iX, iY, 0, 0 };

// 文字列のサイズを計算
m_pFont->DrawText(NULL, str, -1, &rect, DT_CALCRECT, NULL);

// そのサイズでレンダリング
m_pFont->DrawText(NULL, str, -1, &rect, DT_LEFT | DT_BOTTOM, color);

return S_OK;
}

引数のD3DCOLORをD3DXCOLORにしても正常に実行できました。

D3DCOLORは0xff00ff00とか16進数はよくわからないので
簡単に指定したいのですがD3DXCOLORでもいいのですか?

前スレでD3DCOLORとD3DXCOLORは文字は似てるけど内容は全然違うと言われたので
どうしていいか迷っています

アドバイスよろしくお願いします

9:デフォルトの名無しさん
09/01/05 21:04:56
>>8
16進数が分からないのは致命的なので勉強した方がいい。

色指定を16進数でしたくないなら、D3DCOLOR_ARGBマクロや
D3DCOLOR_COLORVALUEマクロを使う方法もある。

D3DCOLOR_ARGBマクロは0~255の整数で色を指定する。
D3DCOLOR_COLORVALUEマクロは0.0~1.0の実数で指定する。

10:デフォルトの名無しさん
09/01/06 09:14:57
分からないなら黙っていてください。うざいだけです。

11:デフォルトの名無しさん
09/01/06 09:38:21
>>10
分からないなら黙っていてください。うざいだけです。

12:デフォルトの名無しさん
09/01/06 13:49:21
全スレで違いが問題になったのは
シェーダーがカラー情報をD3DCOLOR(2byte)だと認識しているのに
実際の頂点情報がD3DXCOLOR(16byte)だったために
どんどんずれて正常に描画されくなっていただけ
そのm_pFontがなんなのかがわからんが
正常に描画されるというならDrawTextが
D3DCOLORでもD3DXCOLORでもOKなようにオーバーロードしてあるだけだ

13:デフォルトの名無しさん
09/01/06 14:03:00
D3DCOLORは4バイトだろ

14:デフォルトの名無しさん
09/01/06 14:10:10
正直すまんかった
その通りでございます

15:デフォルトの名無しさん
09/01/06 15:40:30
>>10

16:デフォルトの名無しさん
09/01/06 15:48:43
>>11

17:デフォルトの名無しさん
09/01/06 19:51:38
子曰く
「どうすればいいのか、どうすればいいのか、と考え悩みぬいた者でなければ
 私にもどうしようもない」

最初から他人をアテにしてるようじゃダメってことだな。


18:デフォルトの名無しさん
09/01/06 21:11:54
DirectMusicを使おうと思い最新のSDKを入れました。
しかし、d3dx9.hなどはインクルード出来たんですが、dmusici.hが見つからないといわれます。
DirectMusicはなくなったのでしょうか?

19:デフォルトの名無しさん
09/01/06 21:17:12
ない

20:デフォルトの名無しさん
09/01/06 21:19:18
頂点バッファをロックするとき

void *vert= NULL;
if(FAILED(pVB->Lock(0, 0, &vert, 0))) {
return E_FAIL;
}



BYTE *vert = NULL;
if(FAILED(pVB->Lock(0, 0, (VOID**)vert, 0))) {
return E_FAIL;
}

使用用途によって変わると思いますがどっちがいいですか?

21:デフォルトの名無しさん
09/01/06 21:20:34
BYTE *vert = NULL;
if(FAILED(pVB->Lock(0, 0, (VOID**)&vert, 0))) {
return E_FAIL;
}

です

22:デフォルトの名無しさん
09/01/06 21:27:46
>使用用途によって変わる

23:デフォルトの名無しさん
09/01/06 22:02:18
そもそも
>(VOID**)&vert
とか無駄なキャストをしている時点で、DirectX以前に言語の基礎からやり直せ。

24:18
09/01/06 22:09:26
>19
やはりなくなったんですか…
DirectSoundを使うことにします。
ありがとうございます。

25:デフォルトの名無しさん
09/01/06 22:17:59
DirectMusicの代わりならDirectSoundじゃなくてmidiOutとかだろ

26:デフォルトの名無しさん
09/01/06 22:18:22
>24
ウインク一発決めてやらぁ

27:18
09/01/06 22:52:11
>25
こういう関数があるとは知りませんでした。
ただ、Waveを再生しようと考えていたのでDirectSoundを使ってみます。

28:デフォルトの名無しさん
09/01/07 01:18:05
DrawIndexedPrimitive(D3DPT_LINELIST,~ で線をたくさん描画しており、
線の色はD3DXCOLORで指定しています。
しかし、D3DXCOLORで色はしっかり反映されるのですが、アルファ値が反映されず、半透明や透明にできません。

すいませんが原因をエスパーしてください。

29:デフォルトの名無しさん
09/01/07 01:20:36
レンダーステートのアルファ関連が適切に設定されていない。

30:デフォルトの名無しさん
09/01/07 02:44:21
LPDIRECT3DDEVICE9 p;
p->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
p->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
p->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);

とかやってみたらどうだろう

31:デフォルトの名無しさん
09/01/07 15:46:52
質問させていただきます。
独自のxファイルを読み込みについて質問させていただきます。
Lightwaveで作った単一のアニメーションを再生させることには成功したのですが、そこから別のアニメーションにつなごうとすると一気に表示がおかしくなります。
具体的な方法は、まずメッシュ情報だけのファイルを読み取り、その後でアニメーション情報だけを全て読み込んでいきます。
そこで、たとえば最初のコンストラクタでキャラクターに立ちポーズのアニメーションをセットして、
立った状態で肩を揺らすようなモーションを再生させることはできるのですが、
そこからパンチを出すようなモーションに切り替えようとすると、キャラクタのルートフレームの合成行列やほかのフレームの行列が著しく変わってきます。
単一のアニメーションでしたらどちらも問題なく再生できるのですが・・・
同じような経験をされた方はいないでしょうか?


よろしくお願いします

32:デフォルトの名無しさん
09/01/07 15:52:23
モーションブレンドの前提条件として、回転をクォータニオンで持っていること。
行列で線形補完しているのなら問題外。

33:デフォルトの名無しさん
09/01/07 16:10:33
質問お願いします。
XYZ座標,頂点法線ベクトル,UV座標の情報を持つ構造体をxファイルから独自形式に変換して作りたいとおもっています。
xファイルにXYZ座標,UV座標,面法線ベクトルがあるのは分かるのですが頂点法線ベクトルがどうやったら得られるのか分かりません。
構造体はx,y,z,nx,ny,nz,u,vになります。
xファイルから頂点法線ベクトルはどうやったら得られるのでしょうか?

34:デフォルトの名無しさん
09/01/07 16:13:16
MeshNormalsに入っているだろ。
無ければ元から無いだけ。

35:デフォルトの名無しさん
09/01/07 16:26:52
そもそもX-Fileを経由なんて回り道をしなくても、自分の使っているモデリングソフトのエクスポータを作った方が手っ取り早いだろ。

36:デフォルトの名無しさん
09/01/07 16:47:38
>>34
ありがとうございます。
見つかりました。
ただ頂点の数と頂点法線ベクトルの数が合っていませんでした。
別のソフトを使って試行錯誤していこうと思います。

>>35
エクスポータですか。
確かに便利そうです。
ありがとうございます。
調べてみようと思います。

37:デフォルトの名無しさん
09/01/07 17:22:50
>ただ頂点の数と頂点法線ベクトルの数が合っていませんでした。
ベクトルの方の配列じゃなく、きちんとインデックスの数で比較したか?

38:デフォルトの名無しさん
09/01/07 17:40:21
>>32さん
まさに二つのモーションの割合を行列にかけて計算していました・・・
本当にありがとうございました。クォータニオンの勉強をします。
しかし線形ではなぜダメなのでしょう。読んだ本でも同じようにモーションの割合を掛けていたはずなのですが

39:デフォルトの名無しさん
09/01/07 17:54:07
箱を想像してみろ
適当な軸から中央を起点にして180度回転させて以前の座標との平均をとったら箱の形はどうなる?

40:デフォルトの名無しさん
09/01/07 18:12:31
>>39さん
平面が想像されました・・・
確かに180度とかだとモデルの形は維持できませんね。分かりやすいです。

クォータニオンでやってみて無理でしたらまた相談させていただきます。
ありがとうございました。

41:デフォルトの名無しさん
09/01/07 19:18:02
>>37
すいません。
勘違いしていました。
インデックスの配列合っていました。
お騒がせしました。

42:デフォルトの名無しさん
09/01/07 22:32:12
アニオタうざい

43:デフォルトの名無しさん
09/01/07 23:44:46
>>29-30
まさにそれでした!
エスパーありがとうございました。

44:デフォルトの名無しさん
09/01/08 08:32:30
テレポーテーション~♪

45:デフォルトの名無しさん
09/01/08 09:18:35
質問なんですがvisualC++を使っていてなぜかcout endl が定義されていませんと出たのですがどうすればいいのでしょうか

46:デフォルトの名無しさん
09/01/08 09:58:16
coutもendlもDirectXじゃないだろう。

47:デフォルトの名無しさん
09/01/08 10:05:05
知らないなら黙っててください

48:デフォルトの名無しさん
09/01/08 12:24:46
#include <iostream>

49:デフォルトの名無しさん
09/01/08 19:58:16
質問者、知らないのに書き込むなよ
ここに書き込んでいいのは知ってる奴だけだ

50:デフォルトの名無しさん
09/01/08 20:12:39
<usingnamespace std>

51:デフォルトの名無しさん
09/01/08 20:17:46
URLリンク(research.microsoft.com)

52:デフォルトの名無しさん
09/01/08 23:12:39
仕事で普段.netフレームワーク(主にC#)を使ってて
趣味でゲーム作りしてみようと思ったんだけど
VC++.netでDirectX開発(DirectX+.netフレームワーク)って可能ですか?

C#でManagedDXとかXNAも検討して
結局、不都合が多く
C++かなと考えたんだけど
.netフレームワークは使いたいと思い、このスレで質問しました。

53:デフォルトの名無しさん
09/01/08 23:30:30
D3DXRotation○ と D3DXVec3TransformCoordの違いは

軸を中心に回転とその場で回転って感じでいいんですか?

54:デフォルトの名無しさん
09/01/08 23:36:58
>D3DXRotation○
そもそもそんな関数は存在しない

55:デフォルトの名無しさん
09/01/08 23:39:27
ごめんなさい
D3DXMatrixRotation○です

56:デフォルトの名無しさん
09/01/08 23:41:03
回転行列を作る関数と、ベクトルをトランスフォームする関数で、
全く違う用途が違う関数なんだが何を言っているんだ?

57:デフォルトの名無しさん
09/01/09 02:42:39
DirectSoundについて質問です。
色々なサイトを見ると最初にプライマリバッファを作り、次にセカンダリバッファを作ると載っているのですが、
MSDNのリファレンスを見ると少なくとも1つのセカンダリバッファが必要であるとしか書いていません。
実際にプライマリバッファを作らず、セカンダリバッファのみを作って音を鳴らしたところしっかり鳴りました。
プライマリバッファを弄らない場合でもプライマリバッファは作る必要があるのでしょうか?

58:デフォルトの名無しさん
09/01/09 08:47:11
プライマリのフォーマットを変更するために作る。
変更する必要がないなら作る必要もない。

59:57
09/01/09 10:39:31
>58
なるほど。
分かりやすい説明ありがとうございます。

60:デフォルトの名無しさん
09/01/09 11:43:12
Cについての質問です
CSVファイルをカンマ区切りで読み込みたいのですがやり方を教えてくれませんか?
今までVBAしかやっていなくて混乱しています

61:デフォルトの名無しさん
09/01/09 12:08:31
>>60
DirectXと何の関係が
↓で聞いてみたら
C言語なら俺に聞け(入門篇) Part 42
スレリンク(tech板)

62:デフォルトの名無しさん
09/01/09 12:46:27
>>61
すいません。ありがとうございます

63:デフォルトの名無しさん
09/01/09 23:47:58
質問させていただきます。
サンプルのスキンメッシュと、こちらのサイトを参考にアニメーションの勉強をさせていただいているのですが
URLリンク(www.shader.jp)
こちらのサイトのコードを見て実行してみたところ、F5でHLSLに切り替えようとしましたら
// setup the material of the mesh subset - REMEMBER to use the original pre-skinning attribute id to get the correct material id
m_pd3dDevice->SetTexture( 0, pMeshContainer->ppTextures[pBoneComb[iAttrib].AttribId] );

// Set CurNumBones to select the correct vertex shader for the number of bones
m_pEffect->SetInt( "CurNumBones", pMeshContainer->NumInfl -1);

// Start the effect now all parameters have been updated
UINT numPasses;
hr = m_pEffect->Begin( &numPasses, D3DXFX_DONOTSAVESTATE );
for( UINT iPass = 0; iPass < numPasses; iPass++ )
{
hr = m_pEffect->BeginPass( iPass );
// draw the subset with the current world matrix palette and material state
pMeshContainer->MeshData.pMesh->DrawSubset( iAttrib );
}

このあたりで、どうも挙動がおかしくなりHLSLでの描画ができない状態です。。
何が原因かわかる方はいないでしょうか・・

64:デフォルトの名無しさん
09/01/10 01:16:32
別に特に問題なく実行できるけど?
どうおかしくなるのか
なぜ、そこがおかしいと思ったのか書こうぜ
あとビデオカードの種類とか
頂点シェーダのバージョンとか定数レジスタの数とか

65:デフォルトの名無しさん
09/01/11 14:24:09
画面のカラー品質を16ビットに固定したいのですが
Direct3Dの機能で変更することはできるんでしょうか?

66:デフォルトの名無しさん
09/01/11 15:20:36
21世紀に32bppより下を使う意義とは…

67:デフォルトの名無しさん
09/01/11 15:30:01
ゲームのHPゲージの部分など大体ビルボードで描画されているのが多いですか?

68:デフォルトの名無しさん
09/01/11 15:45:41
たとえば3D格ゲーとかだと、ゲーム世界を描画するレイヤと、ステータスを表示するレイヤを分けてるから
ビルボードとかあんまし関係ないような気もする

逆にゲームキャラクターの脇にゲージを表示するような場合ならビルボードで描いてる気がする。

69:デフォルトの名無しさん
09/01/11 15:58:19
無きにしも非ずってことですな、
子官庁が泣く前に巣にもどるとしますわ。

お暇します。

70:デフォルトの名無しさん
09/01/11 16:00:46
スマートポインタとCOM理解できないやつはプログラムやらなくていい。

71:デフォルトの名無しさん
09/01/11 16:23:27
お前は本当にCOMを理解してんのかよ
どうせインタフェース取得して使ってるだけだろ

72:デフォルトの名無しさん
09/01/11 16:29:29
>>71

お前がCOMがC++のクラス(仮想クラスの延長)
ってことも知らないくせに出しゃばるなよ。

73:デフォルトの名無しさん
09/01/11 16:31:59
独り言はチラ裏に書いてろカス

74:デフォルトの名無しさん
09/01/11 16:41:13
COMなんて過去の技術で
知る価値なんてないのに・・

75:デフォルトの名無しさん
09/01/11 17:14:12
>>74

使いこなせないからって負け犬の遠吠えはするなw

恥を知れ。

76:デフォルトの名無しさん
09/01/11 17:22:41
>スマートポインタとCOM理解できないやつはプログラムやらなくていい。
何の脈略もなく、流れと関係ないことを突然喚く>>70みたいな奴って、
リアルでもコミュニケーションがまるでとれないんだろうね。

77:デフォルトの名無しさん
09/01/11 17:26:23
>>74
今会社で使いまくりだぞ・・・。

78:デフォルトの名無しさん
09/01/11 17:30:49
馬鹿が一つ覚えてはしゃぎ回る光景が、正に今ここに。

79:デフォルトの名無しさん
09/01/11 17:33:23
また質スレで雑談してるハゲ共がいるのか

80:デフォルトの名無しさん
09/01/11 17:43:39
COMないとWindows動かねーしw

81:デフォルトの名無しさん
09/01/11 17:49:23
>>80
そもそもWindows95発売当時はCOMが存在していないんだが、一つ覚えの知識はその程度。
どうせこの後、真っ赤になりながら恥の上塗りで言い訳を続けるんだろうけどさ。

82:デフォルトの名無しさん
09/01/11 18:10:08
95なんて化石を持ち出されても・・・

83:デフォルトの名無しさん
09/01/11 18:16:13
>>82
>81はWin95でゲーム作ってんだろうし別にいいんじゃないの?

84:デフォルトの名無しさん
09/01/11 18:16:40
COMについて熱く語るスレはここですか

85:デフォルトの名無しさん
09/01/11 18:23:39
てかCOMって何?w

86:デフォルトの名無しさん
09/01/11 18:27:50
>>82-83
顔を真っ赤にしながらの自作自演オツ

87:デフォルトの名無しさん
09/01/11 18:29:43
DirectX使うのに必要なCOMの知識なんてインターフェイスがどうとか
その程度あれば十分だと思うけどな

88:デフォルトの名無しさん
09/01/11 18:30:03
>スマートポインタとCOM理解できないやつはプログラムやらなくていい。

>COMないとWindows動かねーしw
>COMないとWindows動かねーしw
>COMないとWindows動かねーしw
>COMないとWindows動かねーしw

89:デフォルトの名無しさん
09/01/11 18:36:13
誘導
スレリンク(tech板)

適切なスレの選択も出来ない馬鹿はプログラムがどうこう言う以前だろ

90:デフォルトの名無しさん
09/01/11 18:46:32
COMにこだわってる阿呆は一人だけだろ。

91:デフォルトの名無しさん
09/01/11 18:48:05
.NETでおk

92:デフォルトの名無しさん
09/01/12 13:14:47
某ブログから抜粋
---------------
こんにちわ プログラム担当Uです。
私は主に3Dプログラミングとシステム周りの設計をしています。
使用言語はC++とOpenGLです。あえてOpenGLを選んだ理由は最近の3DプログラミングはDirectXなどの左手座標系から右手座標系に移動しつつあるからです。
(現にOpenGLはプレステ3のメインエンジンとして使用)

最近の私の仕事はグラフィクのUとIが作ったモデルデータを読み込んで動かす仕事をしています。
これからが大変だと思いますが、卒業制作や作品集に入れるつもりなので休日返上?で頑張りたいです。
----------------
そうなのか・・・?

93:デフォルトの名無しさん
09/01/12 13:19:39
なにがそうなの?

94:デフォルトの名無しさん
09/01/12 13:31:50
世界的にプレステより売れてるXBOXはDirectX9なの知ってて書いてるなら大したやつだと思うけど。
そもそも行列の問題でしかねぇんだし、DirectXでも右手座標が普通に使えるじゃねーか。

95:デフォルトの名無しさん
09/01/12 13:58:34
完全に座標系を誤解しているな。

96:デフォルトの名無しさん
09/01/12 14:02:09
そもそもOpenGLもDirectXもエンジンじゃなくてAPIだろって話

97:デフォルトの名無しさん
09/01/12 14:13:36
ビデオカードのアンチエイリアス設定をプログラムから制御したいのですがどうすればいいでしょうか?
ビデオカードのアンチエイリアス設定の「アプリ制御」に対応するようにしたいんですが・・・
検索して色々レンダーステートなど試してみたんですが中々上手く行かないので質問させてください。

具体的には

自分のPCのビデオカード(GeForce4 Ti4200)のアンチエイリアス設定には
オフ 2x 2xQ 4x 4xS 制御されるアプリケーション の6種類があるんですが

これを「制御されるアプリケーション」に設定して
プログラムを実行したら「4xS」のアンチエイリアスが効くようにしたいのです。

directXのバージョンは9.0cを使用しています。
よろしくお願いします。

98:デフォルトの名無しさん
09/01/12 14:16:20
SDKのサンプルコピペじゃ駄目なのか?

99:デフォルトの名無しさん
09/01/12 15:13:57
サーフェイスをMSAA対応で作成してちゃんと対応したプログラムを組む必要がある。

アプリでコンパネのヤツを気軽に設定してアンチエイリアスが使えたりはしない。

100:デフォルトの名無しさん
09/01/12 16:22:47
>>97
D3DPRESENT_PARAMETERSのMultiSampleType

101:デフォルトの名無しさん
09/01/12 23:01:34
VS2008でのプロジェクトの作成で少し疑問に思ったことが・・・

Visual C++ の win32API でDirectXを使用する 〇
Borland C++ の win32API でDirectXを使用する 〇
ならば
Visual C++ の C++/CLI でDirectXを使用する ?
これはどうなんでしょうか?
ライブラリを組み込んだら普通に使える予感がするんですが・・・


102:デフォルトの名無しさん
09/01/12 23:37:49
XNAやMDXが何で書かれているとお思いで?

103:デフォルトの名無しさん
09/01/12 23:41:34
んー独学で、感覚で打ってるのでそういうツールやインターフェイス、専門用語には疎いんです・・・
わかりやすくお願いします

104:デフォルトの名無しさん
09/01/12 23:47:05
URLリンク(slimdx.mdxinfo.com)
これのソースでも見れ。
ようは、こーゆーの作るための言語なんだから当然使える。

105:デフォルトの名無しさん
09/01/12 23:57:33
DirectXのライブラリはC++でできているので、WinAPIやC++/CLIも元を辿ればC++であることから使える
てところでしょうか?とりあえず使えることが分かったのでほっとしました。ありがとうございます。

106:デフォルトの名無しさん
09/01/13 10:29:31
全然違うけど結果は同じだからいいか・・

107:デフォルトの名無しさん
09/01/14 02:26:54
DirectX 10 って、Xp で動かないんですか?

108:デフォルトの名無しさん
09/01/14 02:29:18
そうだよ

109:デフォルトの名無しさん
09/01/14 04:03:34
#include <d3d9.h>
#include <d3dx9.h>
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#pragma comment(lib, "dxguid.lib")



って入れてっても'g_pD3DDevice' : 定義されていない識別子ですって出る
どうしてだろう
libフォルダとincludeフォルダは設定してある

110:デフォルトの名無しさん
09/01/14 05:52:34
DirectX以前だからスレ違い

111:デフォルトの名無しさん
09/01/14 08:22:31
>>109
それは自分で定義しないとだめでしょう

112:デフォルトの名無しさん
09/01/14 10:06:53
g_がつくとこみるとグローバル変数だな。
どこからコピーしてきてんだか知らないけど、全部持ってくれば。

113:デフォルトの名無しさん
09/01/14 19:06:03
ていうか根本的な部分が理解できてないだろ
Cからやり直せ


114:デフォルトの名無しさん
09/01/14 21:21:37
意味不明な質問かもしれませんが・・・。

DirectMusicの解放処理をするタイミングはDirectMusicクラスのデストラクタで大丈夫ですか?

CDXMusic::~CDXMusic()
{
m_performance->Stop(NULL, NULL, 0, 0);
m_performance->CloseDown();
m_loader->Release();
m_performance->Release();
m_segment->Release();
CoUninitialize();
}



115:デフォルトの名無しさん
09/01/14 21:37:05
終了処理メンバ関数作ってもいいし、好きにすればいいと思うけど何が不安なの?

116:デフォルトの名無しさん
09/01/14 21:50:30
>> 115 エスありがとうございます

もうひとつ質問なのですが

1>_Lib_DXMusic.obj : error LNK2001: 外部シンボル "_CLSID_DirectMusicPerformance" は未解決です。
1>_Lib_DXMusic.obj : error LNK2001: 外部シンボル "_IID_IDirectMusicPerformance8" は未解決です。
1>_Lib_DXMusic.obj : error LNK2001: 外部シンボル "_CLSID_DirectMusicLoader" は未解決です。
1>_Lib_DXMusic.obj : error LNK2001: 外部シンボル "_IID_IDirectMusicLoader8" は未解決です。
1>_Lib_DXMusic.obj : error LNK2001: 外部シンボル "_GUID_StandardMIDIFile" は未解決です。
1>_Lib_DXMusic.obj : error LNK2001: 外部シンボル "_CLSID_DirectMusicSegment" は未解決です。
1>_Lib_DXMusic.obj : error LNK2001: 外部シンボル "_IID_IDirectMusicSegment8" は未解決です。
C:\Documents and Settings******** : fatal error LNK1120: 外部参照 7 が未解決です。

と出るのですが何が原因でしょうか?

これはインクルードしてあります #include <dmusici.h>

117:デフォルトの名無しさん
09/01/14 21:59:29
何を見て勉強してるのか知らないけれど、資料どおりに書くことからはじめた方がいいと思う。

118:デフォルトの名無しさん
09/01/14 22:03:05
>>166
DirectXSDKインストールしろよw

119:116
09/01/14 22:24:35
ゲームコーディング2を見ながら勉強しています。

サンプルをビルドしてみたのですが 116 と同じエラーが出ます。

DirectXSDK 2008 Novenber
DirectXSDK 2007 August
インストールしてあって両方VC++ディレクトリのインクルードファイルとライブラリファイルに追加してあります

リンカ→入力のdxguid.libなど本に書いてあるやつはすべて追加されています

誰か解決方法ご教授お願いします

120:デフォルトの名無しさん
09/01/14 22:26:41
本に書いてあるやつ、なんていわれてもわからん
ちゃんとリンクしてあるlibを全部書け

121:デフォルトの名無しさん
09/01/14 22:27:10
>両方VC++ディレクトリのインクルードファイルとライブラリファイルに追加してあります

海に帰れ

122:デフォルトの名無しさん
09/01/14 22:29:19
申し訳ございません

dxerr9.lib gdiplus.lib d3dxof.lib d3dx9.lib d3dx9d.lib d3d9.lib
dxguid.lib winmm.lib Version.lib comctl32.lib

です

123:デフォルトの名無しさん
09/01/14 22:50:32
とりあえず2007と2008のライブラリの優先順位をいれかえてみたら

124:116
09/01/14 22:50:35
原因がよく分からないのでSDKを再インストールしてみます

125:デフォルトの名無しさん
09/01/14 22:52:07
>>123

もうアンインストールしちゃいましたw

たぶんそれかもしれません

お昼にビルドできたノートパソコンは優先順位が逆だったと思います

結果が出たら報告します

レスありがとうございます

126:デフォルトの名無しさん
09/01/14 23:09:08
優先順位以前に混在させるなよ

127:デフォルトの名無しさん
09/01/14 23:17:24
色々アドバイスありがとうございます

優先順位を変えたら、無事ビルドできました


128:デフォルトの名無しさん
09/01/14 23:54:34
DirectMusicで音楽を再生するプログラムを勉強しているのですが
wavだと要領をかなり取るのでoggで再生しようと思うのですが

oggを読み込む→wavに変換→wavを再生 って感じでおkですか?

129:デフォルトの名無しさん
09/01/14 23:56:18
容量です すいません;

130:デフォルトの名無しさん
09/01/15 00:00:18
wavはコンテナであって、容量を食うかどうかは中の圧縮形式次第
DirectMusic云々以前に基本的なところから出直せ

131:デフォルトの名無しさん
09/01/15 00:05:03
そのまま再生する関数あるぞ?
教えないけどな

132:デフォルトの名無しさん
09/01/15 01:04:42
不動高校のまとめ

●殺人者    :10名
●犯罪者    :2名
●死亡者    :19名
●行方不明者 :1名


133:デフォルトの名無しさん
09/01/15 06:22:51
>>128

そんな古臭い方法誰も使わないぞ

134:128
09/01/15 07:45:17
>> 130

勉強不足でした、すいません

128のはogg再生の手順としては一般的ですか?

135:デフォルトの名無しさん
09/01/15 09:38:34
ビルボード用のテクスチャも2のn乗正方形にしないとまずいですか?

136:デフォルトの名無しさん
09/01/15 09:42:39
なにをもってまずいとするのか、まずは定義を明確にしろ。

137:デフォルトの名無しさん
09/01/15 15:33:33
135じゃないが、テクスチャのサイズは2のn乗にしないと
ビデオカードによっては正常に動作しないらしいが
レンダリングターゲットのサーフェイスとして生成したテクスチャも
2のn乗のサイズにしなきゃいけないの?
それかなり無駄な領域があるし絶対おかしいと思うんだけど
そこんとこどうなの?

138:デフォルトの名無しさん
09/01/15 15:37:37
普通のテクスチャでも無駄な領域はあるがこっちは絶対おかしいとは思わないんだな

139:デフォルトの名無しさん
09/01/15 15:41:01
で、実際のところどうなんですか?

140:デフォルトの名無しさん
09/01/15 15:45:38
ビデオカード次第
それ以上でもそれ以下でもない

141:デフォルトの名無しさん
09/01/15 15:48:02
そっちの方がビデオカード的に都合がいいんだからしょうがない

142:デフォルトの名無しさん
09/01/15 16:30:17
都合が良いかどうかもビデオカード次第

143:デフォルトの名無しさん
09/01/15 16:41:02
2のn乗じゃないと不具合が出るビデオカードってそんなに多いの?
ていうか具体的にはどんな不具合が発生するの?

144:デフォルトの名無しさん
09/01/15 16:48:50
メーカーにお聞きになればいいと思いますよ

145:デフォルトの名無しさん
09/01/15 16:53:51
不具合が出るビデオカードは現在ほとんどないと思われる
しかし、2のn乗じゃないとパフォーマスンが落ちる場合があると
公式でアナウンスされている以上従っといた方が無難
ターゲットとなり得る全てのビデオカードで
パフォーマンステストして問題ないと判断したなら別だが・・・
開発マシンでは問題ないが別のビデオカードだと処理落ちなんて
原因のよくわからない不具合で悩みたくないしな

146:デフォルトの名無しさん
09/01/15 16:57:20
見かけ上は2の累乗でないテクスチャでも
VRAM上では2の累乗になるように
余分な(無駄な)領域が確保されている場合もあるそうだ
あくまでビデオカード次第だが

147:デフォルトの名無しさん
09/01/15 17:11:07
なるほどー
ありがとうございます

148:デフォルトの名無しさん
09/01/15 17:11:30
ここで2の累乗云々騒いでいる奴って、ビデオカードの能力の確認方法や、
どのCAPSが該当する制約を示しているかすら調べてないんだろうな。

149:デフォルトの名無しさん
09/01/15 17:13:23
なぜそうなるw

150:デフォルトの名無しさん
09/01/15 17:26:04
むかーし、あったね
256 までの 2の累乗の正方形でないと受け付けないビデオカード

RivaTNT とかがまだ最新だった時代。

151:デフォルトの名無しさん
09/01/15 17:37:25
CAPS上は制約がないけど内部では何やってるか分からんって話

152:デフォルトの名無しさん
09/01/15 17:57:39
質問です。

D3DXMatrixRotationYawPitchRoll で作った行列を、逆にオイラー角度式に逆算するD3DX関数はありますでしょうか?
いや、一応一通り見て「なさそうだ」とは思ったのですが・・・

一応、YawPitchRollのように角度のかけ方を定めれば、逆算自体は可能なようなのですが。
URLリンク(www7.atwiki.jp)

153:デフォルトの名無しさん
09/01/15 18:13:32
スレリンク(tech板)

詰め物に関してはここの最後のあたり読むとよろしい。


154:デフォルトの名無しさん
09/01/15 18:49:39
Direct3D10+DXUTの組み合わせで、表示色がおかしくなるんだがだれか同様の現象を体験したことない?
例えばTutorial12のエフェクトファイルの110行目、ピクセルシェーダの出力部分に
cTotal.rgb = float3(.5, .5, .5)
と追加してから実行すると、なぜか#bcbcbcの色で表示される。
グラボはGeForce9600MGT。
Tutorial3みたいにDXUTを使っていないのでは正常に表示されるから、DXUTのせいだと思うんだけど。

155:デフォルトの名無しさん
09/01/15 19:37:55
>>153
CPUじゃねーか

156:31
09/01/15 23:18:53
31です。以前質問させていただいたきり他の事で忙しくプログラミングできませんでした。
あのあと、結局いろいろ試してみましたが結局アニメーションのつなぎはうまくいきませんでした・・・
そもそも、ほとんど同じモーションなので座標変換や回転もないようなモーションですら変更できないという。
何がいけないのでしょう。。xファイル出力するときに何か他の設定が必要なのだろうか・・

157:デフォルトの名無しさん
09/01/15 23:54:05
ソースも出さずにその「独自」仕様とやらをエスパーしろとな?

158:デフォルトの名無しさん
09/01/16 01:25:05
>>何がいけないのでしょう

こんなところで聞いてるのがいけない。

159:デフォルトの名無しさん
09/01/16 06:37:45
main.obj : error LNK2019: 未解決の外部シンボル "long __cdecl LoadTextureFromImageFiles(char const *,struct IDirect3DTexture9 * *,char const *,struct IDirect3DDevice9 *)" (?
LoadTextureFromImageFiles@@YAJPBDPAPAUIDirect3DTexture9@@0PAUIDirect3DDevice9@@@Z) が関数 "long __cdecl SetupFVFTexture(struct IDirect3DDevice9 *)" (?SetupFVFTexture@@YAJPAUIDirect3DDevice9@@@Z) で参照されました。

これがどうしても解決できません。ライブラリとの整合性が取れてないエラーとのことで、インクルード/ライブラリのフォルダ設定・並び順、プロジェクトとの.libの関連付けもいじってみましたが上手くいきません。
それ以外に何が問題として考えられますか?

160:デフォルトの名無しさん
09/01/16 07:34:05
>>159
LoadTextureFromImageFiles に一致する情報は見つかりませんでした。
Googleに聞いてもわからない

161:デフォルトの名無しさん
09/01/16 08:56:56
>>159
自分で定義した関数だろどう考えても。

162:159
09/01/16 09:19:13
>>161の言う通り、プロトタイプ宣言した物を実装していませんでした。サンプルからコピペのミスでした。

163:デフォルトの名無しさん
09/01/16 10:31:05
陰線消去したくてZバッファ法というのをやってみたのですがうまくいきません
エスパーお願いします

164:デフォルトの名無しさん
09/01/16 10:51:03
>>163
それはグラボのせい
GeForce GTX 285を使うときっと治る

165:デフォルトの名無しさん
09/01/16 13:04:27
試しにZバッファ法というのをやってみたらうまくいきました

166:デフォルトの名無しさん
09/01/17 17:34:41
D3D の質問です。

フルスクリーンでない、ウィンドウのアプリを作っているのですが、
ウィンドウのサイズが変更されたときに、画像が縦に伸びたり
横に伸びたりするので困っています。
正方形が正方形のまま、拡大して欲しいのですが、どうすればいいのでしょうか

C# とかじゃなくて、Windows API で作っています。
よろしくおねがいします。

167:デフォルトの名無しさん
09/01/17 18:00:11
矩形を指定してdevice.Presentする。

168:デフォルトの名無しさん
09/01/17 19:51:21
Reset

169:デフォルトの名無しさん
09/01/18 02:43:41
>>168さんの reset でできましたー!
>>167さんのは、ごめん、うまくいきませんでした。

170:デフォルトの名無しさん
09/01/18 02:44:25
>>169です。

テクスチャを一度 Release して、もういちど読み直さないと行けないのがすこし面倒でした。

171:デフォルトの名無しさん
09/01/18 10:33:18
こんにちわ、DirectSoundでwavファイルを再生しようと思い
ゲームコーディング2という本を見ながらコードを書いていたのですが
同じようにやっても再生されません
コードに間違いがないか5回くらい見直しました

全てのコードを書くと長くなるので大まかな流れだけ書きます

DirectSoundオブジェクトを生成 Wavファイルを読み込む セカンダリバッファ作成
バッファに音データを書き込む 再生という手順です

一応コードをUPするので違うところがあれば指摘してもらえると幸いです
URLリンク(www7.uploader.jp)

宜しくお願いします

172:デフォルトの名無しさん
09/01/18 11:07:48
>>171
Play()の戻り値見てないだろ?
DSERR_PRIOLEVELNEEDED が返ってきてるよ。
SetCooperativeLevel()呼べばいいと思うよ。

173:デフォルトの名無しさん
09/01/18 12:12:25
DirectSoundを初期化する時に

// 協調レベルの設定
if(FAILED(m_pSound->SetCooperativeLevel(hWnd, DSSCL_EXCLUSIVE))) {
return E_FAIL;
}

としてありますが上手くいきません

174:デフォルトの名無しさん
09/01/18 12:34:22
やってみたのかよ。
Play直前に呼んだら鳴ったぞ

175:デフォルトの名無しさん
09/01/18 12:36:11
実際やりもしない、戻り値を確認もしないでただ質問するだけってどうなんだろうね。

176:デフォルトの名無しさん
09/01/18 12:42:20
ところで実際の本ではどうなってるんだ?
ウィンドウができる前にSetCooperativeLevel呼んだって意味がないだろうに。

177:デフォルトの名無しさん
09/01/18 12:49:10
ついでにデバッグしてみたが、、、

// gamemainの初期化
_gamemain = new CGameMain();
hr = _gamemain->FInit(m_device);
_gamemain->GetHWND(m_hwnd);

これを
_gamemain->GetHWND(m_hwnd);
hr = _gamemain->FInit(m_device);
のように入れ替えれば動作した。元はどうなってんの?

178:デフォルトの名無しさん
09/01/18 12:52:30
ごめんなさい

戻り値の確認方法分からなくてクラスビューとかブレークポイントとかいろいろ試してました

179:デフォルトの名無しさん
09/01/18 13:05:14
>>178

かわいいなお前w

180:デフォルトの名無しさん
09/01/18 14:21:13
Zバッファと深度バッファというのはまったく同じと考えていいんですか
それとも、文書を読むときは微妙な差異に気をつけるべきですか


181:デフォルトの名無しさん
09/01/18 16:36:07
DirectInputってライブラリに組み込んだほうがいいですか?

182:デフォルトの名無しさん
09/01/18 16:57:44
何のライブラリよ

183:デフォルトの名無しさん
09/01/18 17:32:02
DirectInput を使わないで、
やりたいことが全て出来てる or 出来るのだったら
組み込まなくていいんじゃね?

184:デフォルトの名無しさん
09/01/18 17:50:02
リティアクス・ネマインズライブラリーです

物理演算なども組み込まれています

DirectX9対応です

185:デフォルトの名無しさん
09/01/18 17:57:28
URLリンク(www.google.co.jp)

186:デフォルトの名無しさん
09/01/18 18:00:59
>>185

自作の物理演算ライブラリなので探しても出ないです

187:デフォルトの名無しさん
09/01/18 18:06:38
>>181
ポールペンって絵を描くための道具に含んだほうがいいですか?

188:デフォルトの名無しさん
09/01/18 18:15:52
俺の環境では、なくても動くから必要ないと思うな。
そのライブラリの中に使いたいものがあるなら別だけど

189:デフォルトの名無しさん
09/01/18 18:19:25
DirectInputを使うかどうかは別として
入力インターフェースの提供は最優先だと思うが

190:デフォルトの名無しさん
09/01/18 18:24:57
>>181
必要かどうかは仕様を知っている自分が判断しろ。
指示待ち人間で、他人の指示がないと動けないのなら、
他人にわかるようにきちんと仕様を説明しろ。
中途半端な情報で説明した気になるな。

191:デフォルトの名無しさん
09/01/18 18:26:57
質問する場所を間違えてね?
内容を加味すると、もっとも適切な相手は占い師だろ。

192:デフォルトの名無しさん
09/01/18 18:27:43
公開して他人に使わせようって言うんだろ?
変わった用途じゃない限りInputは付けておくべきだろ

193:デフォルトの名無しさん
09/01/18 18:30:27
演算ライブラリならDirectInputどころか、
そもそもDirectXスレとは何の関係もない。

194:デフォルトの名無しさん
09/01/18 19:00:52
誰か>>154再現しない?
再現しなかったって報告ならそれはそれでありがたいんだけど……

195:デフォルトの名無しさん
09/01/18 23:39:33
引数を渡す方法が分かりません

inline void SetAmbient(D3DCOLORVALUE &col) { m_material.Ambient = col; };

CDXMaterial material;

material.SetAmbient();

1つ例を見せていただけませんか・・・


196:デフォルトの名無しさん
09/01/18 23:40:15
MSNDでD3DCOLORVALUEについて調べたのですが解決方法が分からなくて・・・

197:デフォルトの名無しさん
09/01/18 23:46:42
まずはC言語の勉強が先だ

198:デフォルトの名無しさん
09/01/18 23:50:45
>>196

D3DCOLORVALUE col;
col.r = 1.0f;
col.g = 0.0f;
col.b = 0.0f;
col.a = 1.0f;
material.SetAmbient(col);

こんな感じ?
なんか別に変なところ無い気がするけど・・・

199:デフォルトの名無しさん
09/01/18 23:52:05
参照渡しが解からんと言う意味ならC++の領分だが
そもそも質問の意図が良くわからんので
「日本語でおk」としかいいようがない

200:デフォルトの名無しさん
09/01/19 00:13:20
もしかして入れても反映しないから悩んでるんじゃね?
光源計算してないときはLightEnableをオフに設定しないと表示されなくてだな

ってそんなこと聞いてない?

201:デフォルトの名無しさん
09/01/19 11:54:28
例を見せてと言ってるんだし、>>198でよさげ・・・

202:デフォルトの名無しさん
09/01/19 11:55:20
失敗してるんなら、自分のとこでどうやったらどうなったくらい書けば早いのにな。

203:デフォルトの名無しさん
09/01/19 17:07:08
test

204:198
09/01/19 17:08:22
D3DCOLORVALUE col = D3DCOLOR_COLORVALUE(, , ,);

でcolを引数で渡そうとしてました・・・

205:デフォルトの名無しさん
09/01/19 17:14:35
やっぱり判らない。 ていうかお前が判ってないから無理。
さっさとCの初心者スレでソース*全部*晒して質問してこい。

206:デフォルトの名無しさん
09/01/19 17:16:02
>> すいません勉強不足でした

ちなみに187さんの例で解決しました

207:デフォルトの名無しさん
09/01/19 17:34:24
初期化したいってことか?
D3DCOLORVALUE colorValue = {0,0,0,0};
ってC/C++の話だな。参照(&が付いてる)の話だったらこれもC++


208:デフォルトの名無しさん
09/01/19 22:29:43
D3DXMATRIXA16
をnewした後にdeleteするとメモリーのバグを引き起こすんだが、解決策はないものか・・

209:デフォルトの名無しさん
09/01/20 12:35:27
D3DXMATRIXを使うとか。

210:デフォルトの名無しさん
09/01/21 00:17:09
そもそもバグがあるとは思えないが、
A16の実装自体たいしたことないし
自前の作れば?

211:デフォルトの名無しさん
09/01/21 08:46:50
>>208
ヘッダファイルを見れば分かるけど、
A16系は16byteアライメントのためにnewをオーバーロードしてる。
ステップ実行でちゃんとこのnew/deleteが呼ばれてるか確かめてみれば?

#define new DEBUG_NEW

とかやってて死亡とかありがち。

212:デフォルトの名無しさん
09/01/21 17:02:37
トゥルータイプ形式のアンチエイリアスがかかったフォントを表示するにはどのようにすればいいのでしょうか。
GetGlyphOutlineのAPI使ってもグレースケールのビットマップデータしか得られませんでした。

213:デフォルトの名無しさん
09/01/21 17:24:46
そのグレースケールのデータを
α値としてテクスチャに書き込んで表示

参考
URLリンク(marupeke296.com)

214:デフォルトの名無しさん
09/01/21 17:29:34
それって結局出力も一色になりませんか?
それとも半透明化するときに、うまい方法があるのでしょうか・・・

215:デフォルトの名無しさん
09/01/21 17:37:19
グレースケールのフォントをα値にして半透明で描画すれば、それでちゃんと
アンチエイリアスかかるが、何を求めているんだ?

216:デフォルトの名無しさん
09/01/21 17:39:45
>>214
言ってる意味が分からん
A8R8G8B8とかA4R4G4B4とかαチャンネル付きテクスチャを作る
RGBは表示したいフォントの色にして
Aの値にグレースケールの値を入れる

αの設定(テクスチャのα値*ポリゴンのα値)
デバイス->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
デバイス->SetTextureStageState(0, D3DTSS_ALPHAOP , D3DTOP_MODULATE );
デバイス->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );

217:デフォルトの名無しさん
09/01/21 17:40:38
XPだと、ディスプレイのRGB出力の並びに応じて、ピクセル未満の補間をするために
文字のRGBを設定していると思うのですが、その情報をどのように手にすればいいのかと思いまして・・・

218:デフォルトの名無しさん
09/01/21 17:43:14
ClearTypeをしたいなら、GetGlyphOutlineにはそういう機能はない。
GetGlyphOutlineは単純に大きめに描画して縮小したデータを返すだけ。

219:デフォルトの名無しさん
09/01/21 17:44:59
それ以前にアルファチャンネルを理解してない悪寒

220:デフォルトの名無しさん
09/01/21 17:48:39
端的にいうと、Color=AARRGGBB
             ↑ここでしょ
普通にフォントを表示することはすでにできています。

221:デフォルトの名無しさん
09/01/21 17:52:57
じゃあ、そこの色(値)がどうRGBに影響するのか言ってみろ

222:デフォルトの名無しさん
09/01/21 18:10:06
描画先 Ad Rd Gd Bd 描画元 As Rs Gs Bsとすれば
As/255=a 1-a=bとおいて
結合後 (Ad) (Rs*a+Rd*b) (Gs*a+Gd*b) (Bs*a+Gd*b)でしょ。
単にかけ合わせの比率じゃないんですか?

223:デフォルトの名無しさん
09/01/21 18:11:48
ClearTypeは、CLEARTYPE_QUALITYかCLEARTYPE_COMPAT_QUALITYを
指定してフォント作って、GDIのテキスト描画機能を使うくらいしかAPIでの
サポートは無いと思う。

224:デフォルトの名無しさん
09/01/21 18:28:05
文字の縁の外にむかって透明度を上げていけば
背景と馴染んでアンチエイリアスがかかるよね?って話
どういう段階で透明度を変えるかの情報としてグレースケールの情報を使う

225:デフォルトの名無しさん
09/01/21 21:58:00
デバイスをリセットする時に、テクスチャとかも一度破棄しないといけない場合があるけど、
その場合って元の画像ファイルを再び最初から読み込むのがいいの?
それとも、アプリケーションの一時ファイルみたいなのに画像のビット列だけ保存してしまうとか、どうしてるの?

226:デフォルトの名無しさん
09/01/21 22:10:18
状況に合わせて自分の好きなようにやれよ。
なんで何でもかんでもお伺いを立てて、逐次指示されないと行動出来ないんだよ?

227:デフォルトの名無しさん
09/01/21 22:12:07
好きにすればいいんじゃない?
その辺の判断がつかないならおとなしくD3DPOOL_MANAGED使っとけ
DirectX10からデバイスロストなくなるみたいだし
いずれは気にしなくてよくなる領分だ

228:デフォルトの名無しさん
09/01/22 00:29:38
>>DirectInputのDIJOYSTATE2のlYって下が+で上が-ですか?

229:デフォルトの名無しさん
09/01/22 05:51:55
LightWaveでボーン仕込んでXファイルのエクスポータで出力した。
そのファイルを読み込んでウエイトの値を調べたらどの頂点も0だったんだけど
これって正常に出力されてないってこと?

230:デフォルトの名無しさん
09/01/22 06:31:05
エクスポータがどこまで対応してるのか調べた方がいいんじゃないかな。
あとたぶんここじゃなくてLightWaveのスレで聞くべきじゃないかなそれは。

231:デフォルトの名無しさん
09/01/22 18:10:03
// DirectInputオブジェクトを作成
if(FAILED(DirectInput8Create(GetModuleHandle(NULL), DIRECTINPUT_VERSION, IID_IDirectInput8, (VOID**)&m_pDInput, NULL))) {
return E_FAIL;
}

// DirectInputDeviceオブジェクトを作成
if(FAILED(m_pDInput->CreateDevice(GUID_SysMouse, &m_pKeyDevice, NULL))) {
return E_FAIL;
}

// デバイスをマウスに設定
if(FAILED(m_pKeyDevice->SetDataFormat(&c_dfDIMouse2))) {
return E_FAIL;
}

// 協調レベルの設定
if(FAILED(m_pKeyDevice->SetCooperativeLevel(hWnd, DISCL_NONEXCLUSIVE | DISCL_FOREGROUND))) {
return E_FAIL;
}

// デバイスを取得する
m_pKeyDevice->Acquire();

この設定で初期化して実行したのですがこのアプリが起動しているときに他のウィンドウをクリック
すると強制終了してしまいます

原因エスパーしてみてもらえませんか
お願いします

232:デフォルトの名無しさん
09/01/22 18:11:51
デバッグしなさい

233:デフォルトの名無しさん
09/01/22 18:56:16
解決しました

return E_FAILで落ちてました

ありがとうございます

234:デフォルトの名無しさん
09/01/22 21:23:31
スレリンク(gamedev板:609-番)

235:デフォルトの名無しさん
09/01/22 21:33:01
すくなくとも公式サイトのはちゃんと出力される

236:デフォルトの名無しさん
09/01/22 22:35:00
229です
もしかして、D3DXLoadMeshFromXで読み込んだメッシュの頂点情報ってウエイトは含まれてないんですか?


237:デフォルトの名無しさん
09/01/22 22:44:34
ファイル自体のウエイトはどうなってるんだ?


238:デフォルトの名無しさん
09/01/22 23:33:50
>>237
ファイル見たら、ちゃんと設定されてました
ってことは読み込みがだめなのか・・・

239:デフォルトの名無しさん
09/01/23 00:18:05
>>238
スキンメッシュは専用の関数が合ったはずだが

240:デフォルトの名無しさん
09/01/23 09:09:25
\(^o^)/ I'm a dreamer! ひそむパワー!

                      ヘ(^o^)ヘ
                        |∧  私の世界
                    /  /
                (^o^)/
               /(  ) 夢と恋と不安で出来てる
      (^o^) 三  / / >
\     (\\ 三
(/o^)  < \ 三 でも想像もしないもの
( /
/ く 隠れてるはず!

241:デフォルトの名無しさん
09/01/23 09:10:16
DirectInputでマウスやキーボード使うなよ
てかXInputの時代

242:デフォルトの名無しさん
09/01/23 12:23:34
Direct3Dで複数のウィンドウに同一のテクスチャを表示したいのですが、
この場合、ウィンドウごとにデバイスを作成して、
デバイスごとにわざわざ同じテクスチャを何度も読み込むしかないのでしょうか。
・一つのテクスチャを複数のデバイスで共用する
あるいは
・一つのデバイスで複数のウィンドウに描画する
というようなことは出来ないのでしょうか。どなたがご教示下さい。


243:デフォルトの名無しさん
09/01/23 12:28:45
DirectX3D始めようと思うんですが、なにからすればいいですか?
どのぐらいの期間である程度使えるようになってくるんですか?

244:デフォルトの名無しさん
09/01/23 12:35:54
なにが分かっていないのかも分かってない人間に
ものを教えることは非常に難しい
とりあえず出来る範囲で自分でやって
具体的な質問が出来たときにもう一度おいで

245:デフォルトの名無しさん
09/01/23 13:12:03
>>243
sample動かしてソースを眺めてあきらめろ

246:デフォルトの名無しさん
09/01/23 13:24:42
もう一度おいでとか言われるとつらい
あきらめろとか言われると燃える
しかしthx

247:デフォルトの名無しさん
09/01/23 14:05:04
>>242よく知らんけどデバイスの画素フォーマットが同じなら使い回せんじゃねーの

248:デフォルトの名無しさん
09/01/23 14:14:03
1. 開発環境をダウンロードする。
2. 現在の技量と熱意次第だね。とりあえず、そんなことも判らない君は技量は初学者レベルですぐ飽きると思うので 100年はみておこう。


249:デフォルトの名無しさん
09/01/23 14:19:22
D3DPRESENT_PARAMETERS で hDeviceWindow をとっかえひっかえして reset
すればいけるんじゃねーの?

あ、そうすると、テクスチャいちいち読み直す必要があるのか。だめじゃん。

250:デフォルトの名無しさん
09/01/23 14:25:53
>>242
つCreateAdditionalSwapChain

251:249
09/01/23 14:30:40
なんだ、Present の第三引数を描画したいウィンドウにすれば良さそうじゃん。

252:デフォルトの名無しさん
09/01/23 15:31:21
IDirectXFileから、ID3DXFileに変わって、
保存方法の流れがヘルプにかかれなくなったこともあって、
なんかアホみたいに使いにくくなっている気がするんですけど、
IDirectXFileData::GetData的なものは諦めるとしても、
IDirectXFileSaveObject::SaveTemplatesの様な動作をさせるコトてできないんですか?

253:デフォルトの名無しさん
09/01/23 16:47:47
質問です。
何か手順の間違いの指摘や、避ける方法はないでしょうか?

下記のように、すでにAnimationSetに登録されているAnimationを削除した後、新たにアニメーションを追加するとメモリーリークするようです。
DirectXの初期化と、下記コードのみの最小構成でも起こりました。

下記ですと
D3DX: MEMORY LEAKS DETECTED: 4 allocations unfreed (54 bytes)
54byteということで、"1\0"で2バイト、RSTそれぞれを合計すると20+16+16=52ですから、丁度アニメーションがそのままリークした換算となります。
これは数を増やしてみたり、渡すRSTの量を変えたりしても同様の結果がでました。

削除だけ。追加だけという場合はリークせず、削除&追加をした時のみリークするようです。
察するに、削除といっても内部ではカウンターを減らしているだけで、追加の際「delete せずに上書きしてしまう」ことによるライブラリ側のケアレスミスな気がします。

Microsoft DirectX SDK (March 2008)
Microsoft DirectX SDK (November 2008)
両方で再現しました。

以下コードです。
CComPtr<ID3DXKeyframedAnimationSet> test;
D3DXCreateKeyframedAnimationSet("Test", 4800, D3DXPLAY_LOOP, 2, 0, NULL, &test);
D3DXKEY_QUATERNION r; // 中身を入れていませんが、中身をきちんとした値にしても結果は同じでした
D3DXKEY_VECTOR3 s;
D3DXKEY_VECTOR3 t;
HRESULT hr;

hr = test->RegisterAnimationSRTKeys("1",1, 1, 1, &s, &r, &t, NULL);
hr = test->RegisterAnimationSRTKeys("2",1, 1, 1, &s, &r, &t, NULL);
hr = test->UnregisterAnimation(0);
hr = test->RegisterAnimationSRTKeys("3",1, 1, 1, &s, &r, &t, NULL);


254:デフォルトの名無しさん
09/01/23 16:50:08
追加情報です。
どうやらリークするのは、上書きした側の "3" のアニメーションのようです。
"3AAAA"など、最後のアニメーションの名前を長くしたところ、それにあわせてリーク量が増えました。

つまり「新規登録したアニメーションはちゃんとdeleteするが、上書き登録したアニメーションはdeleteしない」という動きのようです。

255:デフォルトの名無しさん
09/01/23 18:18:34
容易にライブラリのバグだと疑うな。

256:242
09/01/23 18:49:22
>>247 >>249 >>250
いくつも方法があるみたいですね。一つ一つ検討してみることにします。
御回答どうもありがとうございました。


257:デフォルトの名無しさん
09/01/23 20:36:57
勝手に Release されてたら気持ち悪いだろうが。

258:デフォルトの名無しさん
09/01/23 20:42:13
ID3DXFileSaveObject使って、STRINGをXファイルに保存するとき、
何故か2バイト文字が変に変換されて保存されてしまいます。
たとえば、
"田中太郎 -abcd- 鈴木次郎"
なら、
"\223\田\222\中\221\太\230\郎\201\ -abcd- \227\鈴\226\木\216\次\230\郎"
の様な具合です。
\223は、C言語のエスケープシーケンスで8進定数のことらしいと言うことまでは分かったのですが
(田は\0x93,\0x63(\223,\143)なので) '\田'とか出てきたり動作がかなり変です。
始末の悪いことにID3DXFileEnumObjectで読み込んでも元に戻りません。
何か問題の所があるのでしょうか。

char strDxTemplate[] ="xof 0303txt 0032\ntemplate ID { <60F23340-4686-472f-AA91-4D1212D26476> STRING strName; DWORD dwID;} ";
std::vector<char> Buff; DWORD dwBuff = 0xff00;
const char strName[] = "田中太郎 -abcd- 鈴木次郎"; LPCSTR strNameBuff = strName;
LPD3DXFILE pDxf; LPD3DXFILESAVEOBJECT pDxfSaveObj; LPD3DXFILESAVEDATA pDxfIDData;

D3DXFileCreate(&pDxf);
pDxf->RegisterTemplates(strDxTemplate, strlen(strDxTemplate));
pDxf->CreateSaveObject("test.x", D3DXF_FILELOAD_FROMFILE, tc - _T('0'), &pDxfSaveObj);
Buff.resize(Buff.size() + sizeof(strName));
memcpy(&Buff[Buff.size() - sizeof(strName)], strName, sizeof(strName));
Buff.resize(Buff.size() + sizeof(dwBuff));
memcpy(&Buff[Buff.size() - sizeof(dwBuff)], &dwBuff, sizeof(dwBuff));
pDxfSaveObj->AddDataObject(IDID, NULL, NULL, Buff.size(), &Buff[0], &pDxfIDData);
pDxfSaveObj->Save();

pDxfIDData->Release(); pDxfSaveObj->Release(); pDxf->Release();

SDKのバージョンは たぶんMarch 2008
そして、std::vectorの使い方が無茶苦茶なのは気にしないでください。

259:デフォルトの名無しさん
09/01/23 21:04:13
もう1ヶ月やってるのにウィンドウ作ってテクスチャを表示することすらできない・・・
本とか見ても著者が作ったクラスとか構造体のことについて触れてなくて解析するのが大変だ
手取り足取り教えてるサイトとかありますか?

260:デフォルトの名無しさん
09/01/23 21:29:20
本とか読むより、DirectX SDK のチュートリアルやった方がいいぜ?


261:デフォルトの名無しさん
09/01/23 22:01:37
>>258
const char strName[] = "田中太郎 -abcd- 鈴木次郎";
この時点でおかしくね?

262:デフォルトの名無しさん
09/01/23 22:11:38
今時Ansiでビルドなんて天然記念物級だよ

263:デフォルトの名無しさん
09/01/23 22:24:46
でも、XFileのリファレンスをみると
STRINGテンプレートはASCIIのBYTE列ってあるぜ
やっぱ、これが原因じゃね?

264:デフォルトの名無しさん
09/01/24 01:12:43
ウィンドウが作れないならDirectX以前の問題。
DirectXの本なんて読んでもWindows初心者には理解できないのは当然だ。

265:デフォルトの名無しさん
09/01/24 01:16:02
GAME CODINGって本のサンプルは書き写せばそのまま動くから
Windowsプログラミングに不安の残る貴方にもおすすめですよ

266:デフォルトの名無しさん
09/01/24 02:37:03
PIX って便利だね。

初めて知った。

267:デフォルトの名無しさん
09/01/24 03:04:02
まるぺけの最小コードを動かしてみて、猫でもも読んで、MSDNで確かめて、
ウィンドウが作れたのが1年半前
今では立派なサンデーコピペプログラマですw
まー、APIスレの範疇なのかな

268:デフォルトの名無しさん
09/01/24 03:41:14
ビルボードの縮小に、Lanczos フィルタとか使えない?

269:デフォルトの名無しさん
09/01/24 03:43:28
mipmap

270:258
09/01/24 04:11:48
>>261,262
Unicode非サポートなんですわ。

>>263
つまり、2バイト文字非対応ってこと?

仕方がないので、古いIDirectXFile系のインターフェース使ったら、
2バイト文字でも書き込めたけど、
今度は配列に配列いれたら(2次元配列という意味ではない)、
ちゃんと書き込めるのに、
読んだとき外側の配列が全て始めのデータで同じになってしまう…

なんでこんなに挙動変なんだ…
動作確認しないなら、カスタムテンプレートなんか作るなよ…

271:デフォルトの名無しさん
09/01/24 08:49:19
拡張するなら自前のフォーマットを作れって話ですわ。

272:デフォルトの名無しさん
09/01/24 19:35:54
>>271
そらそうですわな…

273:デフォルトの名無しさん
09/01/24 19:38:46
DirectXを最初から勉強するにあたってこれだけは読んどけって本ない?

274:デフォルトの名無しさん
09/01/24 20:38:18
SDKのヘルプ

275:デフォルトの名無しさん
09/01/24 20:59:16
>>273
高額社の本でもよんどけ。
全く使えないというほどひどくもないから。

シェーダーにHLSLを使ってないのが時代遅れだが
インフィニティの本はそれなりの質だと思う。

276:デフォルトの名無しさん
09/01/24 21:49:16
サンクス!
早速注文してくるわ

277:デフォルトの名無しさん
09/01/25 12:17:42
SPRITEでの移動は画面のサイズが単位ですか?
800*600や1024*768など

278:デフォルトの名無しさん
09/01/25 12:19:57
DirectXにSPRITEなど存在しない

279:デフォルトの名無しさん
09/01/25 12:31:21
Spriteです
すいません

280:デフォルトの名無しさん
09/01/25 13:48:27
DirectXにSpriteなど存在しない

281:デフォルトの名無しさん
09/01/25 13:51:33
正直初心者って最初はソース見れるライブラリで何か作ってみて、
そのあとライブラリの中を調べながら学習していくのがベストだと思う。

282:デフォルトの名無しさん
09/01/25 17:58:01
DirectSoundCaptureBuffer8でバッファのロック後データの移動をしたいんですが
これロックしたらデータ書き込めなくないですか?
2つバッファ作って一方に書き込み、一方をデータ移行、で繰り返すならわかるんですが、
もしかして、次の書き込みが来る前にアンロックできないと音飛びする仕組みなんですか?

283:デフォルトの名無しさん
09/01/25 18:04:24
>>282
ストリーム再生なら次の再生位置に来る前の書き込み終わってなきゃ
どう考えても音飛びするだろ。

そもそもストリームのバッファ内でのデータの移動なんて意味不明なことをなんでするんじゃ。

284:デフォルトの名無しさん
09/01/25 18:24:36
ループスタートでキャプチャをしてバッファの一周したら動的メモリに書き込みを繰り返すと
ヘルプに書いてあるんですが、ロックした
あーすいません。lockのパラメータとしてサイズの指定がありました。バッファ全体をロックするのかと思いました
すいませんでした!

285:デフォルトの名無しさん
09/01/25 18:36:55
「タスクシステム」でググって出てきた本全部買っとけ

286:デフォルトの名無しさん
09/01/25 18:53:12
URLリンク(books.google.co.jp)

287:デフォルトの名無しさん
09/01/26 00:14:57
IUnknown派生のAddRef, Release両関数にはアトミック性はありませんか?
代入などコピー時に参照数を加増したいのですが、自前で管理したほうがいいのかな。

288:デフォルトの名無しさん
09/01/26 09:11:44
マルチスレッド下ではInterlock系APIによって保護されている
らしい
てか、そこを疑ったらCOMを使ったプログラムは
全てスレッドセーフではないことになってしまう

289:デフォルトの名無しさん
09/01/26 10:05:55
テクスチャをWrapで繰り返し表示させると負荷が高いって聞いたんですが、これって本当ですか?

290:デフォルトの名無しさん
09/01/26 10:47:09
何と比較しての話なのかも明示せず、本当なのかもへったくれもないだろ。
どれだけ能無しなんだよ?

291:デフォルトの名無しさん
09/01/26 11:02:36
まぁそういう現象の起きるハードウェアは実際に結構あるので
Wrapに頼る設計はWindowsではやらん方がいいね

一応言っとくが、↓でマップチップ使う使わないのケンカは禁止な

292:デフォルトの名無しさん
09/01/26 21:05:58
↑てめーがな

293:デフォルトの名無しさん
09/01/26 23:35:29
PIX for Windowsを使ってフレームの情報をキャプチャしようとしているのですが、
自分で書いたプログラムを起動すると、"PIX Experiment File Version Mismatch" というエラーのようなものが出て、キャプチャが出来ません。
このエラーは何が原因なのでしょうか?
DirectX SDKのバージョンは August 2007 です。

DirectXのサンプルをコンパイルしたものは上記のエラーは出ずに正常に動作して、キャプチャも出来ます。

294:デフォルトの名無しさん
09/01/27 00:08:54
>>293
ファイルパスに全角文字があるとダメな場合があるわよ。

295:デフォルトの名無しさん
09/01/27 00:37:53
>>294
実行ファイルをドライブのルートに置いて試したところ、正常に動作しました
ありがとうございました

296:デフォルトの名無しさん
09/01/27 02:34:41
HLSLを使って描画したいんですが、IDirect3DDevice9::CreateVertexShader メソッドの引数の
const DWORD *pFunction,
[in] 頂点シェーダ機能トークン配列へのポインタ。このパラメータでは、各頂点に適用する処理を定義する。
の意味がよくわからないんですけど、いったい結局何を渡せばいいんでしょう?

297:デフォルトの名無しさん
09/01/27 06:15:44
>>289
めちゃくちゃ重い
uvの値を5,6・・・10,11,
って上げるほど恐ろしく重くなる
っていうかいくつかのPCでやってみろよ
少なくとも自分の環境でやって報告しろ
すぐにわかる

>>290
知らないなら黙ってろよ
ためしたことあるやつならわかる

298:デフォルトの名無しさん
09/01/27 06:43:29
>>296
URLリンク(msdn.microsoft.com)

>>297
試してみたけど別に何も変わらん
GeForce7900GT
GeForce 8600 GT
Quadro FX 3700

てか、別に全ての環境で落ちるわけじゃなくて
落ちる場合もあるのでそれに頼るのは止めようねって流れだろ?
なんか前にも同じ事書いてスルーされて切れてた奴と同じ匂いがする

299:デフォルトの名無しさん
09/01/27 08:28:42
>>288
明らかに古いごみドライバ使ってるとか
いんてるwのオンボードとかの話なら論外だぞ。

自前でソフトレンダラー組んだことあれば分かるが
WRAPのアルゴリズムは&演算1個だからどう考えても重くなりようがない。

300:デフォルトの名無しさん
09/01/27 08:32:22
ソースのピクセル量が増えて負荷が増えるだけなんだから、
それで遅くなるビデオカードならwrapしようが、
パターンを敷き詰めてた大きなテクスチャを使おうが、
同じように遅くなるだけ。

301:デフォルトの名無しさん
09/01/27 08:44:31
>>300
テクスチャキャッシュのキャッシュミスか・・・。
つーかそれならよほどデカイテクスチャ使ってるか
貧相なグラボつかってるかのどっちかだな。

302:デフォルトの名無しさん
09/01/27 10:30:28
描画サイズが変わらないなら
何回wrapしても
ソースのピクセル量は変わらないし
サンプリング回数も変わらないし
フィルレートも変わらないと思うんだけど
もしかして何か別の話してる?

303:デフォルトの名無しさん
09/01/27 12:05:03
wrapするかしないかの話をしているんだろ。
wrapせず描画色が決定して範囲外を単一カラーで塗りつぶす処理と、
何度もパターンを敷き詰める処理、当然前者の方が軽くなるというだけの話。

304:デフォルトの名無しさん
09/01/27 12:10:44
塗りつぶしてる時点でコストは一緒でそ

305:デフォルトの名無しさん
09/01/27 12:38:31
全然違うぞ。
どれだけ頭が悪いんだ?

306:デフォルトの名無しさん
09/01/27 12:42:35
>>304
ミップマップ計算で重くなるという話ならこの辺に出てるね。

URLリンク(forums.microsoft.com)

307:デフォルトの名無しさん
09/01/27 12:44:41
とりあえずWrapの定義をはっきりさせようぜ

1、テクスチャ・アドレッシング・モード
(D3DSAMP_ADDRESSxのD3DTADDRESS_WRAP)

2、テクスチャ・ラッピング・モード
(D3DRS_WRAPxのD3DWRAP_x)

3、それ以外の何か

308:306
09/01/27 12:47:18
さっきの書き方だと語弊があるか。

ミップマップを作っていない場合に極端に遅くなったって話ならここにでてる。
URLリンク(forums.microsoft.com)

309:デフォルトの名無しさん
09/01/27 14:46:26
なんかWrapを
スタンプみたいに敷き詰めてると勘違いしてるお馬鹿さんが混じってない?
単なるテクスチャ座標の扱いの違いだろ

310:デフォルトの名無しさん
09/01/27 14:55:25

一番馬鹿

311:デフォルトの名無しさん
09/01/27 15:08:04
UVが0-1の範囲を超えていたらスタンプのようになるし、
Wrapが設定されていなければ境界色なりで塗りつぶされる。

312:デフォルトの名無しさん
09/01/27 15:13:56
違うだろう
結果的にスタンプになるだけで
やってることは
たとえば(u,v)=(2.5,3.8)を(u,v)=(0.5,0.8)
としてサンプリングしてるだけだ

313:デフォルトの名無しさん
09/01/27 15:18:19
Windows via C/C++みたいなコンセプトがわかる書籍ってありますか?
ここにいる人は詳しそうなのでどういったもので勉強しているのか教えてください。

314:デフォルトの名無しさん
09/01/27 15:42:08
DirectXのコンセプト?

315:デフォルトの名無しさん
09/01/27 15:57:49
>>312
繰り返しにならなければ範囲外の色が決定できるんだから、
そのぶんの読み出しコストが無くなるだろ。
もう頭が悪いのは仕方がないから、せめて自分で塗りつぶし処理を書いてみろよ。

316:デフォルトの名無しさん
09/01/27 16:08:18
話噛み合ってねーーー!!

317:デフォルトの名無しさん
09/01/27 16:38:49
第三者だが噛み合ってなさ過ぎワロタ

318:デフォルトの名無しさん
09/01/27 16:54:24
だれか助けてやれよw

319:デフォルトの名無しさん
09/01/27 18:03:03
たとえばスクリーン上の100x100の領域に描画するとしましょう
この描画はどこで行っているかというとピクセルシェーダです
自分で塗りつぶし処理を書く必要はありませんね
以下が最小のテクスチャ付きピクセルシェーダです
固定機能パイプラインであっても見えていないだけで似たような処理をしています
float4 PixScene( float4 Diffuse : COLOR0,float2 Tex0 : TEXCOORD0 ) : COLOR0
{
 return tex2D( g_Texture, Tex0 ) * Diffuse;
}
これは、アドレッシングモードが違ってもまったく同じものが
ピクセルの数だけ、つまり100x100=10000回呼び出されます
たとえ広範囲に同じ色が固まっていっても関係ありません、どのモードでも1フレームあたり10000回です
ここでピクセルシェーダーの中をみてみましょう
tex2Dとはg_Texture(テクスチャです。ここでは256x256のテクスチャを既にセットしてあるとします)
のTex0(uv座標、頂点シェーダで計算済み)の色をサンプリングしてくれる関数と考えてください
例えば、Tex0.x=0.25、Tex0.y=0.5だったときはフィルタリングの状況にもよりますが
テクスチャの(64, 128)ドットの位置の色を返します
この色とDiffuse(ポリゴンの色、頂点シェーダで計算済み)を合成して最終的に塗りつぶす色を決定しています。
アドレッシングモードの違いはTex0の値が0.0~1.0を超えたときのtex2Dの挙動を決定します
Tex0.x=1.25、Tex0.y=1.5だったとしましょう
CLAMPでは0.0以下であれば0.0、1.0以上であれば1.0として扱います
つまりTex0.x=1.0 Tex0.y=1.0と同じ色、テクスチャの(256, 256)ドットの位置の色を返します
WRAPでははみ出た分は巻き戻って計算します
つまりTex0.x=0.25、Tex0.y=0.5と同じ色、テクスチャの(64, 128)ドットの位置の色を返します
当然では在りますが、PIXで処理時間を計測しても両者に差異は見当たりません

320:デフォルトの名無しさん
09/01/27 18:06:21
そういえば
nVidia系のボードだと
同じ処理を固定機能で書いた場合とシェーダーで書いた場合で
結構処理速度に違いがでるんだけど
ATI系だとほとんど差がでないんだけどこれって何でだろう?

321:デフォルトの名無しさん
09/01/27 18:33:15
>>319
恥の上塗りをしてるだけだからやめとけって……

>>320
どっちの方向に違いが出るのよ?

322:デフォルトの名無しさん
09/01/27 19:23:04
>>306,308
これだ

GeForce8300Gsでも激重になる現象確認
>>306,308の対応をしたら直った

というわけでmipmapに気をつけないと糞重くなります

323:デフォルトの名無しさん
09/01/27 20:39:27
今まで気をつけていなかった方が逆に不思議なんだが。

324:デフォルトの名無しさん
09/01/27 20:43:10
>>323
そこまでいうほどじゃねぇと思うな
俺なんか全く知らなかったしw

325:デフォルトの名無しさん
09/01/27 21:42:40
なんでミップマップ使うと軽くなるか分かってないんだろうな・・・

float4 PixScene( float4 Diffuse : COLOR0,float2 Tex0 : TEXCOORD0 ) : COLOR0
{
 return tex2D( g_Texture, Tex0 ) * Diffuse;
}

このソースで速度が上下するのはtex2D()の部分。
テクスチャが大きすぎてキャッシュに乗らない場合は1サンプルごとに
メモリからの読み込みで帯域を食ってしまうが、キャッシュに乗るくらい
小さければキャッシュからの読み出しができるので大変高速に読み出せる。
ミップマップを使うと過剰なサンプリングを回避できる。

命令数と描画ピクセル数だけでは速度は決まらない。

テクスチャサイズが256x256で、-2.5をサンプリングしたら
-640&(256-1)の計算でサンプルピクセルが出る。
この計算がどの程度重いかは考えてくれ。

326:デフォルトの名無しさん
09/01/27 21:50:23
でかいテクスチャを使うと重くなる理由がキャッシュだけしか思いつかない馬鹿が、
知ったかを晒す悲しいスレ。

327:デフォルトの名無しさん
09/01/27 21:59:58
素直に感心した。なるほどな

328:デフォルトの名無しさん
09/01/27 22:12:57
>>325
おおー
俺も理解できた
すごいね

329:デフォルトの名無しさん
09/01/27 23:36:16
なんで、ATI系はおそくならないの?
多少大きいテクスチャを参照したぐらいで
露骨に性能減するって、しょぼい木がするけど
そんなもんなの?

330:デフォルトの名無しさん
09/01/27 23:40:02
>>329
前、Radeon9600proもってたけど
遅くなった気がするけどな

331:デフォルトの名無しさん
09/01/28 00:13:01
ドライバーのバージョンによっても変わるし、
実際のゲームだと描画するたびにテクスチャ切り替えとか
複数のテクスチャを1度の参照したりとかで重くなったりするから、
正確に何が重くなってるか測らないとあかん。


332:デフォルトの名無しさん
09/01/28 05:57:00
>>331
変わるか?
あんまり大差ないよ

333:デフォルトの名無しさん
09/01/28 13:12:45
同次座標(D3DFVF_XYZRHW)での表示はビルボードと同じ効果が得られますか?

334:デフォルトの名無しさん
09/01/28 13:18:27
はい

335:デフォルトの名無しさん
09/01/28 13:29:32
>>334 ありがとうございます

336:デフォルトの名無しさん
09/01/28 16:36:54
まぁそういう現象の起きるハードウェアは実際に結構あるので
Wrapに頼る設計はWindowsではやらん方がいいね

337:デフォルトの名無しさん
09/01/28 21:23:38
XFileでアニメーションを実装するのとObjファイルを書きだしてモーションパスでアニメーションを実装するのはどちらがいいですか?

XFileは簡単だけど処理が重いと聞きました

この2つならどちらがいいかアドバイスお願いします

338:デフォルトの名無しさん
09/01/28 21:41:32
ファイル形式が違うだけで処理の重さは処理を作るやつ次第だと思うが・・・

339:デフォルトの名無しさん
09/01/29 07:15:44
Xファイルは処理が重いって言うより、単純にアニメーション再生させるなら簡単だけど
それ以上のことをやろうとすると難しいっていう感じだな

340:デフォルトの名無しさん
09/01/29 07:19:50
>> 339

なるほど 例えばOBBで衝突判定をしたりとかですか?

341:デフォルトの名無しさん
09/01/29 07:27:22
>>337
objファイルでアニメーションしたほうが何かといいよ

342:デフォルトの名無しさん
09/01/29 15:54:56
URLリンク(up2.viploader.net)
これだろ

343:デフォルトの名無しさん
09/01/29 16:27:31
半透明のポリゴンを持つメッシュを表示したいんですが
普通に描画すると、半透明ポリゴンを先に描画してしまった時に後ろのポリゴンが表示されない場合があると思うんですが
どうすればいいでしょうか?

344:デフォルトの名無しさん
09/01/29 17:02:21
Zバッファ法の限界なのでどうにもならない
半透明ポリゴンは最後に書き込む何らかの仕組みが必要

345:デフォルトの名無しさん
09/01/29 20:37:16
URLリンク(www.hsjp.net)
販促チラシ


346:デフォルトの名無しさん
09/01/29 20:48:17
ここんとこずっと朝から晩まで本見たりネット見たりしているのにいまだに画面に何か出すことすら出来ない

347:デフォルトの名無しさん
09/01/29 20:54:56
Javaでもやれば?手っ取り早いし、それなりに実用的だぞ

348:デフォルトの名無しさん
09/01/29 22:42:13
DirectMusic8で音鳴らしてるんだが
エラーでないのに音が鳴らないときとかあって困る

DirectMusicLoaderは1つしか使うなっていうから
1つしか使わないようにコードかえたが
やっぱり音が鳴らないときがある

349:デフォルトの名無しさん
09/01/29 22:49:49
>>346
だせぇなゆとりにもほどがある

350:デフォルトの名無しさん
09/01/29 23:02:52
>>348MIDI?WAV?そもそもキミのPCは正常に音は再生できてるのかい?

351:デフォルトの名無しさん
09/01/29 23:11:26
>>349
みんなできててすげーな
これでも高校のとき成績は理系でトップクラスだったんだぞ

352:デフォルトの名無しさん
09/01/29 23:18:12
>>351
ケツからだろ
夢みんな

353:デフォルトの名無しさん
09/01/29 23:32:02
そもそも発想がイケてない
画面に何か出てるサンプルからみろよ

っていうかそこまでアフォならちょっとしたゲームを作れる入門書から買ったほうが速いだろ?
VCとかDirectXとかもうダウンロードしてきたのか?

354:デフォルトの名無しさん
09/01/29 23:37:27
VC++もSDKももうある
サンプルを改変して.xを表示することくらいはできた
自分で1から作ることができない。"概念"さえ掴めばパッパといける気はするが

355:デフォルトの名無しさん
09/01/29 23:41:07
>>350
WAV 正常に再生できてるよ
DirectSoundのサンプルはちゃんと再生されるけど
DirectMusicのサンプルは再生されないときがある
ワケワカラン
おとなしくDirectSound使いたいところだが
SDKのVerがアレなので(ry


>>346
WIN32APIプログラムとかの入門をとばして
いきなりDirectXの入門書を見てたりしないか?


356:デフォルトの名無しさん
09/01/29 23:52:36
>>354
なんだできてんじゃん

>自分で1から作ることができない
1からってどういうこと?
なにもみないで書くって意味だったら10年やってる俺でも無理だ
テキトーに必要なもんかき集めてぺたぺた貼って動かすぐらいならできるがな
初期化処理の書き方なんてその時代時代でやることかわるし
大事なのはサンプル理解して応用していける力なので
そういう自分で・・・っていうのは必要ない
まずはなんでもいいからゲームを作ってみろ
それ以外のことは無駄だから考えるな
そうだ、テトリス作れ3Dテトリスな(ゲーム的には2Dの)ハイ決定さっさと作れ

357:デフォルトの名無しさん
09/01/30 00:31:25
頭が悪い奴って勉強頑張れるらしい

358:デフォルトの名無しさん
09/01/30 03:52:30
ID3DXSpriteはIDirect3DDevice9のように2つのテクスチャを合成してから表示させたり出来ないんでしょうか?

359:デフォルトの名無しさん
09/01/30 19:18:22
質問です
Direct3Dで線分を描画したいんですけど、どうすればいいんでしょうか?

360:デフォルトの名無しさん
09/01/30 19:23:30
これはググレカスといわざるを得ない

361:デフォルトの名無しさん
09/01/30 19:31:36
DrawPrimitiveで引数にLINELIST

362:デフォルトの名無しさん
09/01/30 19:58:38
なるほど、DrawPrimitiveでできたんですね
ありがとうございました

363:デフォルトの名無しさん
09/01/30 23:00:59
DirectXのプロジェクトってユニコードビルドにしないとだめなのでしょうか、
単にデフォルトがそうなっているだけなのでしょうか?
チュートリアルのプロジェクトがデフォルトがユニコードになってます。

364:デフォルトの名無しさん
09/01/30 23:15:07
サンプルフレームワークのDXUTがUnicodeビルド前提ってだけだ。
DirectX SDK使う分にはどっちでもいいよ。

365:デフォルトの名無しさん
09/01/31 01:40:58
トンクス!

366:デフォルトの名無しさん
09/01/31 18:19:59
中国人ですらこれ位作れるのにお前らときたら

URLリンク(www.amazon.cn)

367:デフォルトの名無しさん
09/01/31 18:33:34
画面にピクセル単位で指定して描画したのですが

D3DFVF_XYZRHWで描画したポリゴンではできるのですか?

368:デフォルトの名無しさん
09/01/31 18:38:10
画面にピクセル単位で指定して描画したいのですが

D3DFVF_XYZRHWで描画したポリゴンではできるのですか?

訂正ですすいません

369:デフォルトの名無しさん
09/01/31 18:40:31
>>366
ただのBitBltじゃん

370:デフォルトの名無しさん
09/01/31 18:45:50
既に描画したポリゴンでできるのかと聞かれても、よくわからない。
D3DFVF_XYZRHWを使って作った頂点バッファだったら簡単にできると思う。

>>369
どういうこと?話が見えないんだけれども

371:368
09/01/31 18:50:16
>>370

レスありがとうございます

とりあえずやってみます><

372:371
09/01/31 20:13:11
タイトル画面を表示させようと思い試しに作ってみました

URLリンク(appleloader.bbsnow.net)

上の画像は512*512のテクスチャをD3DFVF_XYZRHWを使って作ったポリゴンに貼り付けて
表示させたやつです

下の画像は1024*768のテクスチャを・・・

512*512のほうは正常に描画されるのですが1024*768のほうは変になってしまいます

これはDirectXが2のべき乗の大きさのテクスチャしかサポート?していないからですか?
他に理由あったら指摘お願いします

373:デフォルトの名無しさん
09/01/31 20:17:52
なんで1024×1024で試してみてから質問しないのですか?

374:デフォルトの名無しさん
09/01/31 20:23:01
>>373

1024*1024で貼り付けてUVで調整したら解決しました

お手数掛けて申し訳ありません

375:デフォルトの名無しさん
09/01/31 20:23:34
テクスチャの画像はどうやって作ってるの?
それのために呼び出したAPIを全部調べたの?

376:デフォルトの名無しさん
09/01/31 20:30:33
D3DXCreateTextureFromFileEx です

API調べてませんでした

次から調べてから質問します 申し訳ございません

377:デフォルトの名無しさん
09/01/31 22:02:43
DirectXに、次はねぇ・・・

378:デフォルトの名無しさん
09/01/31 23:09:12
if(diks[DIK_UP] & 0x80) {
m_dir = FOR;
Sleep(500);
}
DirectInputでキーボードから入力値を取得しています
Sleep()を抜くととてつもない速さでカーソルが移動してしまいます
Sleep()を使うとほかの処理も止まってしまうので
他の処理をとめないで同じようなことできる方法ありませんか?

379:デフォルトの名無しさん
09/01/31 23:50:11
押しっ放しじゃなくて
押した瞬間だけ検出するようにしろよ

380:デフォルトの名無しさん
09/02/01 01:24:16
>>378
マルチ

381:デフォルトの名無しさん
09/02/01 02:41:44
D3DPRESENT_PARAMETERSのPresentationIntervalをD3DPRESENT_INTERVAL_ONE
にするとリフレッシュレートに勝手にあわせてPresentが行われまする。
普通1フレーム当たり1/60秒になるので、待たせたい秒数になるように
フレーム数をカウントして、一定数ごとにカーソルを移動とかじゃだめ?
間抜けな回答してたらどうしよう・・・。

382:デフォルトの名無しさん
09/02/01 04:11:24
>>381
SDKのサンプルみろ
それが一番速い
設定選べるようになってるサンプルあるだろ?

383:デフォルトの名無しさん
09/02/01 04:13:23
> 普通1フレーム当たり1/60秒になるので、

とはかぎらない。

384:デフォルトの名無しさん
09/02/01 04:16:10
まあ、だいたい液晶だからなるっちゃなるなw

385:デフォルトの名無しさん
09/02/01 04:17:04
よくいるよね、一般的な例の話をしてるのに特殊な例を持ち出してこれは違う!って言う奴。
そんなことは百も承知だってのに。 そんなに自分が物知りだってひけらかしたいのかね。

386:デフォルトの名無しさん
09/02/01 04:29:04
URLリンク(www-06.ibm.com)


387:デフォルトの名無しさん
09/02/01 04:30:52
>>386
>>385を読めばそれが反論になってないことは理解できるだろ、馬鹿?

388:デフォルトの名無しさん
09/02/01 04:49:27
お前らよくこんなカス共の質問に回答してやれるなw

389:デフォルトの名無しさん
09/02/01 04:52:54
そもそもマルチだしな。

390:デフォルトの名無しさん
09/02/01 07:07:06
60にすると具合悪い事はままある

391:デフォルトの名無しさん
09/02/01 14:17:41
V-Syncって普通自前でやるのかな?

392:デフォルトの名無しさん
09/02/01 16:07:32
>>382の言ってるサンプルがどれかわかんなかったw
よく調べたらうちのはディスプレイモードによってリフレッシュ
レートが56~75の間で4種類くらいあるから、フレーム数決め打ち
だと環境によって変わっちゃうなあ。>>386は50Hzだったし。
QueryPerformanceCounterとかからミリ秒算出して、前のカーソル
移動時の時間と比べて一定時間たったら再実行とか。だめ?だめ?

393:デフォルトの名無しさん
09/02/01 16:09:49
液晶でも最近のフルHDのTVにつなぐとデフォが24Hzになったりするしな。

394:デフォルトの名無しさん
09/02/01 16:24:32
QueryPerformance系使うくらいならtimeGetTime()の方が制約が少なくてらくだけどね
どうせミリ秒単位を扱うわけだし

395:デフォルトの名無しさん
09/02/01 16:30:29
DirectXのVSyみそなんかリフレッシュレートっぽい
時間でウェイトかけてるだけだから。
ゲーム機の実Vクロックでループ回すのとはわけが違う。

396:デフォルトの名無しさん
09/02/01 17:32:20
>>395
タイマでウェイトかけるのはウインドウモードのときだけだよ。

397:デフォルトの名無しさん
09/02/01 17:37:00
>>392
>サンプルがどれかわかんなかったw
全部見ろよ

398:デフォルトの名無しさん
09/02/01 17:38:53
サンプル連呼されても初心者にはわからんものだよ
頭の固い奴にはそれがわからんのです

399:デフォルトの名無しさん
09/02/01 17:39:41
ゲームで複数のXFileを読み込むときのロード時間が気になっているのですが
これを高速化したりするのは可能でしょうか?

ネットで調べたところ、一度DirectXの「Xファイル読み込み関数」で
ロードしておいたメッシュデータをバイナリで保存して、次回起動時に
そのデータを直接読み込むという手段を取られていた方がいるのですが
具体的にどうやるのでしょうか?また、本当に早くなるのでしょうか?

D3DXLoadMeshHierarchyFromXなどのXファイルロードルーチンはそのマシン
で描画が早くなるようにロードしたメッシュを最適化しているという
話を聞いたことがあるので、このやり方で本当にロードが早くなるのか
心配です・・・。

どなたかXFILEのロードの高速化について詳しい人がいたらアドバイスを
お願いします。

400:デフォルトの名無しさん
09/02/01 21:36:01
どれだけ速くなるかは知らないけど
頂点バッファとインデックスバッファ、あと属性テーブルみたいなの取得すればいいじゃん

401:デフォルトの名無しさん
09/02/02 04:57:21
>400
ありがとうございます、階層化されたメッシュの場合にかなり面倒そうですが
今度の週末にでも一度組んでみようと思います。

402:デフォルトの名無しさん
09/02/02 23:55:43
>>401
最近その問題(遅い)にぶちあたったが、遅いのはアニメーションのロードだった
アニメーションのロードだけ自前でやるのお勧め
メッシュのロードはそこそこに早かったよ

403:デフォルトの名無しさん
09/02/03 00:21:39
カメラの回転での質問です。

横回転は問題ないのですが、縦回転すると90度を超えると
急に視界が反転してしまいます。

90度になったらD3DXMatrixLookAtLHのpUpを逆方向にすると
縦回転だけする場合は良いのですが、
少しでも縦回転した状態で横回転すると、視点がぐるぐる
変に回ってしまいます。
どうすれば良いでしょうか?

404:403
09/02/03 00:32:03
すいません
横回転が加わっている状態で縦回転すると、でした。
横回転はどの場合でも普通に回転してくれます。

405:デフォルトの名無しさん
09/02/03 01:12:25
まわす順番がおかしいんじゃねーの?
とりあえずその部分のコード貼れや


406:デフォルトの名無しさん
09/02/03 02:39:51
D3DXMatrixLookAtLHの引数で回転するんじゃなくて
注視点を原点とするカメラのローカル姿勢を回転させて
そこからビュー行列を逆算すればおk

407:403
09/02/03 06:23:07
>>406
すいません具体的にどのようにすれば良いでしょうか?
今現在は

D3DXMatrixRotationX(&mat, g_CameraAngle.x);
D3DXVec3TransformCoord(&g_Camera.vecEyePt, &g_Camera.vecEyePt, &mat);

という感じでカメラの座標を変換してから

D3DXMatrixLookAtLH(&matView, &vecEyePt, &vecLookatPt, &vecUpVec);
pDevice->SetTransform(D3DTS_VIEW, &matView);

でカメラ位置を変更しています。

408:デフォルトの名無しさん
09/02/03 11:04:16
// カメラの初期姿勢(視点(0,0,-10)、注視点(0,0,0)の場合)(変更しないで保持する)
const D3DXVECTOR4 vecEyePt(0,0,-10,1) ;
const D3DXVECTOR4 vecLookatPt(0,0,0,1) ;
const D3DXVECTOR4 vecUpVec(0,1,0,0) ;//ここだけw成分が0であることに注意(回転のみ反映)

// 初期姿勢からどれくらい移動したいかの行列
// 回転だけでなく拡大縮小移動なども合成できる
D3DXMatrixRotationY(&mat, g_CameraAngle.y);

D3DXVECTOR4 Eye, Look, Up
D3DXVec4Transform ( &Eye, &vecEyePt, &mat ) ;
D3DXVec4Transform ( &Look,&vecLookatPt, &mat ) ;
D3DXVec4Transform ( &Up, &vecUpVec, &mat ) ;

D3DXMatrixLookAtLH(&matView, (D3DXVECTOR3*)&Eye, (D3DXVECTOR3*)&Look, (D3DXVECTOR3*)&Up);


もうちょっとスマートなやり方あるけどそれは少し考えればわかるよね

409:デフォルトの名無しさん
09/02/03 18:17:31
最初はスマートなやりかたより理解しやすさを追求すればいいじゃない

UpVectorが0成分だと気づかなくて
3日くらい悩んでたのを思い出した

410:デフォルトの名無しさん
09/02/03 19:00:34
>402
ありがとうございます、時間が取れたのでアニメーションの書き出しを
試してみたのですが、アニメーションコントローラにアニメーションデータの
実体が見当たりません。

アニメーションデータの実体とサイズはどうやって取得したら
宜しいのでしょうか?

411:デフォルトの名無しさん
09/02/03 20:59:38
>>410
sizeof()じゃだめ?

412:デフォルトの名無しさん
09/02/04 05:07:11
Xファイルを読み込むためのD3DXLoadMeshHierarchyFromX関数にて
LPD3DXANIMATIONCONTROLLERというアニメーションコントローラに
値を入れてアニメーションを管理しているんですが、どうもこの
LPD3DXANIMATIONCONTROLLERに実体が無いというかsizeofしても
4の値しか返ってこないんですが・・・。

413:デフォルトの名無しさん
09/02/04 05:20:33
C/C++の基礎を勉強したらどうかね?

414:デフォルトの名無しさん
09/02/04 08:22:41
DirectXの前のCの本読んだほうがいいなコレは。

415:412
09/02/04 09:57:16
日頃の勉強不足を晒してしまい申し訳ございませんでした。
DirectXでゲームを何本か作った事はあるのですが、DirectX側で
保持しているアニメデータを直接いじった経験が無く、ネットで色々
調べてみたのですが、どうにもお手上げな状態です。

アニメデータ等が読み込まれているメモリ配列部分がどこにあるのか
皆目見当がつかないのです。
なにかアドバイス等もらえないでしょうか・・・?

416:デフォルトの名無しさん
09/02/04 11:47:54
>>415
頭に LP がついているのは、ポインタだ。
ポインタは(32bitOSなら)4バイトで当然。
あと、アニメーションコントローラーの内部が確保したメモリーに直接アクセスする手段はない。
AnimationSetを取得したり、そこからさらにAnimationを取得したりという間接的な手段でアクセスするべし

あと、AnimationControllerをいじるのはやめたほうがいいぜ。
メモリーリーク含め、バグが多すぎる。
例えば時間0の情報を書き換えると、アニメーションが正常に行われなくなる。
取得したAnimationSetを、他のコントローラーにセットしてもまともに再生されない。
Animationを削除してから追加すると、メモリーリークする。などなど

417:デフォルトの名無しさん
09/02/04 12:40:57
ウィンドウの左端を画面外に移動させると画像も画面外から描画されることを期待していたのですが
画面端から表示されてしまいます。
画面外に移動させてもクライアント座標の(0, 0)から描画させるにはどうすればいいのですか?

// これだとウィンドウの左端が画面外に出たときに(0, 0)から描画されない
LPDIRECT3DDEVICE9 pD3Ddev;
pD3Ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
pD3Ddev->BeginScene();
Draw();
D3Ddev->EndScene();
if( FAILED(pD3Ddev->Present(NULL, NULL, m_hWnd, NULL)) )
{
pD3Ddev->Reset(&g_pDirectX->d3dpp);
}



418:デフォルトの名無しさん
09/02/04 17:24:28
つーかアニメデータなんて自分用の形に吐き出して自分で管理クラスつくれよ

419:デフォルトの毛無しさん
09/02/04 19:49:35
>>417
Presentの引数を全部NULLにするとか。

ごめん、勘で言った。

420:デフォルトの名無しさん
09/02/04 21:46:56
>>417
ウィンドウサイズを変える毎にクライアント領域のサイズに合わせてデバイスを作り直す

421:デフォルトの名無しさん
09/02/04 21:51:39
デスクトップ領域からウィンドウが外れたときの話だと思うが

422:デフォルトの名無しさん
09/02/04 21:56:26
無知発見。

423:デフォルトの名無しさん
09/02/04 22:51:27
>>417
そのソースコピペ?
コピペじゃないならコピペにしてくれ。
他にも書き写しのときにミスがありそう。

ああ、あと、俺の環境では画面からはみ出しても普通にクライアント座標の端っこから描画されるぞ。
はみ出した部分は画面外だから当然見えない。
<環境>
WindowsXP Home Edition SP2
DirectX 9.0c (4.09.0000.0904)
DirectX SDK Novemver 2007
こんぱいら BCC 5.5

424:デフォルトの名無しさん
09/02/04 22:57:09
だからクライアントサイズとデバイスサイズが合ってないとそうなるんだよ

425:403
09/02/04 23:06:07
>>408
とても参考になりました
わかりやすいコメントまでつけてくださって
本当にありがとうございます

426:デフォルトの名無しさん
09/02/05 07:31:39
DirectinputのDIK_LEFTとかを引数で渡したい場合は

どうやるんですか?

intなら

foo(int i);

foo(??? DIK)

427:デフォルトの名無しさん
09/02/05 07:45:17
BYTEでいいんじゃね?
>Dinput.h に定義されているキーボード デバイス定数は、キーボード デバイスの
>データ パケット (256 バイト配列) 内でのオフセットを表す。

428:デフォルトの名無しさん
09/02/05 07:52:20
ありがとうございます><

429:412
09/02/05 08:21:42
>416
丁寧な解説ありがとうございました。
自前でアニメーションの仕様を0から組むのはあまりにも敷居が高いですし
メモリリークなどが発生してしまうようではどうも面倒の方が多そうですね。

430:デフォルトの名無しさん
09/02/05 15:04:07
現在頂点カラー(0xFFFFFFFF)で描画しているテクスチャを
頂点カラー(0xFF000000)に変更して全く同じように描画、
つまり、テクスチャのポリゴンとの合成方法を加算合成にしたいのですが、
どの設定メソッドを使用すればいいのでしょうか?
ピクセルシェーダを自作すべきなのでしょうか?

431:デフォルトの名無しさん
09/02/05 18:58:25
DirectInputやDirectSoundについて質問です

ゲームループをタイトルとゲームで分けています

タイトルが呼ばれたらインプットデバイス・サウンドデバイスを作る
ゲームが呼ばれたらタイトルを破棄してゲームでインプットデバイス・サウンドデバイスを作る

というやり方でいいでしょうか?

432:デフォルトの名無しさん
09/02/05 19:51:35
>>430
デバイス->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );// 合成元1(テクスチャ)
デバイス->SetTextureStageState( 0,D3DTSS_COLORARG2, D3DTA_DIFFUSE );// 合成元2(頂点カラー)
デバイス->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_ADD );// 合成方法(加算)

433:デフォルトの名無しさん
09/02/05 19:55:41
>>431
タイトルとゲームでウインドウ遷移したりするの?
しないならデバイス作り直さなくてもよくね?
別に作り直ししちゃいけないわけでもないし
そのやりかたでもいいんじゃね?

シーンごとにリソース解放するってならわかるけど
デバイスを無理して作り直す必要はないとは思うけどね

434:デフォルトの名無しさん
09/02/05 20:21:31
>>433

ありがとうございます

435:430
09/02/06 13:53:26
>>432
ありがとうございました

436:デフォルトの名無しさん
09/02/06 16:01:00
最近3Dの勉強を始めた者ですが、質問です。

人間モデルがあったとして、手に別のモデルをくっ付けたい場合は、その座標等を取得する関数のような
モノがあるのでしょうか?

いまいちその辺のスタンダードな取得方法がわからなくて迷走してます。
3Dモデルのノード?に名前をつけれるのでその名前から取得したりするのかなぁと思ったりしてるんですが
どうなんでしょう?

ググッて調べても検索ワードがまずいせいか、その辺がまったくわからなくて…Orz

437:デフォルトの名無しさん
09/02/06 16:06:28
ボーンの座標計算を自前で行えば自由自在

438:デフォルトの名無しさん
09/02/06 16:07:26
一発で座標を取得できるような便利関数は無い
しかし、どんな方法であれアニメーションをさせている限り
ボーンが今現在どんな姿勢をしているかは取得できるはずなので
自力で目的のボーンの変換行列を探せばOk

439:436
09/02/06 16:31:55
>>437
>>438
なるほど、モデルじゃなくボーンの方を何らかの方法で調べて
目的の行列が見つかりさえすれば座標が取得できるわけですね。

もやもやした感じが少し晴れました。
その方向で調べてみます。
ありがとうございました。


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