■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

【C++】 DirectX初心者質問スレ Part7 【C++】
1 名前:デフォルトの名無しさん :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/


2 名前:デフォルトの名無しさん :2005/11/17(木) 17:39:24
【関連スレ:1】

鬱だ氏のう DirectX (Part 15)
http://pc8.2ch.net/test/read.cgi/tech/1096649788/

C#でDirectX9 初心者の館 2頂点目
http://pc8.2ch.net/test/read.cgi/tech/1103998649/

Managed DirectX vol.2
http://pc8.2ch.net/test/read.cgi/tech/1061285378/

VB.NET で DirectX 初心者の箱庭
http://pc8.2ch.net/test/read.cgi/tech/1106216291/

Direct3D
http://pc8.2ch.net/test/read.cgi/tech/1011762546/

3 名前:デフォルトの名無しさん :2005/11/17(木) 17:40:20
【関連スレ:2】

DirectShowと戦うスレ
http://pc8.2ch.net/test/read.cgi/tech/1026666092/

SDL=Simple DirectMedia Layerでゲームだ
http://pc8.2ch.net/test/read.cgi/tech/1103655588/

OpenGL VS Direct3D
http://pc8.2ch.net/test/read.cgi/tech/1044308707/

OpenGLスレ Part8
http://pc8.2ch.net/test/read.cgi/tech/1126267690/

くだすれOpenGL(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1131208166/

OpenGL 2.0 専用スレ
http://pc8.2ch.net/test/read.cgi/tech/1126268759/

4 名前:デフォルトの名無しさん :2005/11/17(木) 17:56:08
【関連スレ:3】

Direct 3D
http://pc8.2ch.net/test/read.cgi/gamedev/1005293179/

2D!!のDirectXをやってみるかもな
http://pc8.2ch.net/test/read.cgi/gamedev/1005133911/

━━━━Direct Draw━━━━
http://pc8.2ch.net/test/read.cgi/gamedev/1031289035/

ゲームを作るための素材を集めよう! Part2
http://pc8.2ch.net/test/read.cgi/gamedev/1113207836/

ゲームプログラミング相談室【Part6】
http://pc8.2ch.net/test/read.cgi/gamedev/1078503950/

■3Dツール総合@ゲーム製作■
http://pc8.2ch.net/test/read.cgi/gamedev/1094144808/

【フリー】モーション付きXファイル出力【ツール】
http://pc8.2ch.net/test/read.cgi/gamedev/1068375798/


5 名前:デフォルトの名無しさん :2005/11/17(木) 17:58:25
【関連サイト】

MSDN DirectX
http://www.microsoft.com/japan/msdn/directx/default.aspx

DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.mspx

BBX (掲示板)
ttp://isweb8.infoseek.co.jp/computer/bbx/

DXライブラリ置き場
ttp://homepage2.nifty.com/natupaji/DxLib/

Lamp:ゲーム開発とその学習をサポートするミドルウェア
ttp://lamp.sourceforge.jp/

TWINTAIL LOVERS.
ttp://www.twin-tail.jp/

Pastel's Laboratory
ttp://www.roy.hi-ho.ne.jp/pastel/home/index.html

GamDevPukiWiki - DirectX総合スレ (過去ログ等)
http://gamdev.org/w/?%5B%5BDirectX%C1%ED%B9%E7%A5%B9%A5%EC%5D%5D

GamDevPukiWiki - 3DCG製作ソフト (過去ログ等)
http://gamdev.org/w/?%5B%5B3DCG%C0%BD%BA%EE%A5%BD%A5%D5%A5%C8%5D%5D

ゲームを作るための素材を集めよう まとめサイト
http://paw.my-sv.net/index.html

6 名前:1 :2005/11/17(木) 18:06:56
前スレ、その他スレにあったリンクをざっとまとめてみますた。
古いものや抜けはあると思いますが、それはそれで。
では、DirectX初心者に幸多からん事を。

7 名前:デフォルトの名無しさん :2005/11/17(木) 21:11:07
流れのシミュレーションをしていて可視化で躓いています。
DirectXでベクトル表示は出来るのでしょうか?
また、出来ない場合どのようなものを使ったらよいのでしょうか?

8 名前:デフォルトの名無しさん :2005/11/17(木) 22:09:10
表示したいものを表示したい通りにプログラムすればいいだけの話。

9 名前:デフォルトの名無しさん :2005/11/20(日) 05:39:32
>>7
ベクトル表示とかはDirectXが行う処理ではない。(一応近い機能はある)

極端な話、Direct3Dはポリゴンを表示するだけの機能しかない。
だから、そのポリゴンを使ってどのようにベクトルを表示するかは私たちの仕事になる。

DrawPrimitiveでD3DPT_LINELIST系統を使うとか、
ID3DXLineを使ってみるとか、自力でビルボードを実装するとか。
その辺は仕様とかにしたがって決めればいいかと。。。

10 名前:デフォルトの名無しさん :2005/11/20(日) 17:04:32
DirectAudioを使って音鳴らしてるんですが周波数を上げすぎたり下げすぎたり
すると音がきれます。なんでなんでしょうか?

11 名前:デフォルトの名無しさん :2005/11/20(日) 17:24:07
周波数を上げすぎたり下げすぎたりするからです。
上げすぎたり下げすぎたりしないように、上げたり下げたりしてみてください。

12 名前:デフォルトの名無しさん :2005/11/20(日) 18:01:39
テクスチャサイズについて、質問させてください。
ビデオカードによってサイズに制限があるそうですが(最大 256*256 など)
大きな絵をテクスチャで表示するには、分割する必要があり厳しいです。

最近のGPUはテクスチャサイズ制限が緩和されていくようなので
あまり制限を気にしないで大きなテクスチャを使うほうがよいのでしょうか。
よろしくお願いします。

13 名前:デフォルトの名無しさん :2005/11/20(日) 18:04:44
10です。
周波数を上げ下げすると音に対してどういったことをしているのでしょうか?

14 名前:デフォルトの名無しさん :2005/11/20(日) 18:28:07
音が高くなったり低くなったりします。

15 名前:デフォルトの名無しさん :2005/11/20(日) 18:41:48
周波数を上げすぎたり下げすぎたりすると、人間の聞き取れない音域になるから、聞こえなくなる。
と思う。

16 名前:デフォルトの名無しさん :2005/11/20(日) 18:49:32
>>10
頻繁に周波数をいじりすぎ

17 名前:デフォルトの名無しさん :2005/11/20(日) 19:11:58
>>12
そういった話は他人がとやかく言える話ではない。
具体的に何のビデオカードまで対応させるのか明確にしろ。
自分が何をターゲットにするかだ。

18 名前:デフォルトの名無しさん :2005/11/20(日) 19:15:40
>>12
そのサイズ制限は古代の遺物みたいなものだ。気にしなくて良し。
古い制限にしがみついてプログラミングしてもそんなものに価値は全くない。

19 名前:12 :2005/11/20(日) 19:32:46
>>18さん
なるほどです。制限を気にしても得るものが少ないようですので
あまりこだわらないようにしたいと思います。
的確なご助言を頂き、本当にありがとうございました。
これで先に進めます。感謝します。

20 名前:デフォルトの名無しさん :2005/11/20(日) 19:45:36
今時テクスチャサイズ制限のあるビデオカードなんて
探そうと思っても見つからないぞ。

21 名前:12 :2005/11/20(日) 20:06:02
あうう、そうなんですか。
今の時代の流れをまったく知りませんでした。。。
どうやって分割しようか、正直頭を痛めていたので
助かりました。 m(__)m

22 名前:デフォルトの名無しさん :2005/11/21(月) 02:22:47
対象環境にGeForceまたはRadeon以降って書くのを忘れずにな

23 名前:デフォルトの名無しさん :2005/11/21(月) 07:04:59
DirectMusicでMIDIマッパーをポートに設定したいのですけど、
どうすれば良いのでしょうか?
DirectMusic::EnumPort で列挙したまでは良いのですが、
DMUS_PORTCAPS のどのメンバを見て MIDIマッパーと判断すれば良いのでしょう?

24 名前:デフォルトの名無しさん :2005/11/21(月) 07:41:05
DMUS_PC_EXTERNAL

25 名前:デフォルトの名無しさん :2005/11/23(水) 18:52:18
XファイルのSkinWeightsのmatrixOffsetってどのタイミングでかければいいのでしょうか?

float3 vPosition =
mul(v.vPosition, mWorld[v.vBlendIndices.x]) * v.vBlendWeights.x +
mul(v.vPosition, mWorld[v.vBlendIndices.y]) * v.vBlendWeights.y +
mul(v.vPosition, mWorld[v.vBlendIndices.z]) * v.vBlendWeights.z +
mul(v.vPosition, mWorld[v.vBlendIndices.w]) * fLastBlendWeight;

これ↑ってシェーダの頂点の計算ですよね?
SkinWeightsに登録されている頂点に対してmatrixOffsetをかければいいんですよね?
それってこの式のどの値に反映するものなんでしょうか?

26 名前:デフォルトの名無しさん :2005/11/23(水) 18:54:04
あ、sageちゃった・・・

27 名前:デフォルトの名無しさん :2005/11/23(水) 19:30:14
あーあ、sageのままだったら教えたのに。

28 名前:デフォルトの名無しさん :2005/11/23(水) 20:31:12
>>25
まず v.v これがバカにしてるみたいで気に入らないムカツク

29 名前:デフォルトの名無しさん :2005/11/23(水) 20:54:14
>>28
そこはヘルプからの丸写しなんですよ。

30 名前:デフォルトの名無しさん :2005/11/23(水) 21:01:25
v(v.v)vヤッピー

31 名前:デフォルトの名無しさん :2005/11/23(水) 22:37:16
C++は分かるけど
DirectXに関しては何から手をつければ良いわからない
初心者以前の人はどうすればいい?

32 名前:デフォルトの名無しさん :2005/11/23(水) 22:39:22
チュートリアルを順番に動作を確認しつつ確実にやる。

33 名前:デフォルトの名無しさん :2005/11/23(水) 22:53:58
>>32
サンクス

34 名前:デフォルトの名無しさん :2005/11/24(木) 00:29:25
>>32
サンクス

35 名前:デフォルトの名無しさん :2005/11/24(木) 08:30:31
リアルチュー

36 名前:デフォルトの名無しさん :2005/11/24(木) 15:38:45
質問させてください、
デバッグのために、グラフのようなものを毎フレーム書き換えて
画面の隅にテクスチャとして貼って表示したいのですが、

自分で作ったDIBビットマップとかをテクスチャにして表示させるには
どうしたらいいのでしょうか?

サーフェスにテクスチャを対応させて、そのサーフェスにレンダリングして
そのテクスチャをプリミティブに貼って描画、、とかはやったことがあります。
が、ビットマップを毎フレームいじってそれをテクスチャとして・・・だと
よくわからないので、教えてください。


環境はVC6 + DX9 Oct.2004です。
宜しくお願いします。

37 名前:デフォルトの名無しさん :2005/11/24(木) 15:41:41
>>36
毎フレーム、テクスチャに描画して画面に表示させる、でいいんじゃない?
遅いんだけどね。

D3DUSAGE_DYNAMICで作ったテクスチャはAGPに確保されるのでアクセスが早い。
こいつを直接いじるという手もある。

38 名前:36 :2005/11/24(木) 16:31:35
>>37
レスありがとうございます。
テクスチャに描画して・・というのがいまいち掴めないのですが、
もしかしてIDirect3DTexture9::Set/GetPrivateData()で指定するpDataが
生のビットマップデータで、そこにビットマップを渡せということなのでしょうか?

39 名前:デフォルトの名無しさん :2005/11/24(木) 17:46:25
LockしてDIBの内容をテクスチャフォーマットに沿うように形式を整え転送するだけ。

40 名前:36 :2005/11/24(木) 18:23:48
>>39
ありがとうございます、大体わかってきました。
今サーフェスのメソッドを調べてGetDCとかあることを初めて知りました・・・
とにかくやってみます、どうもありがとうございました。

41 名前:デフォルトの名無しさん :2005/11/24(木) 23:22:12
SDL-IMというSDLへのパッチに手を入れているのですが、SDL自身はDirectInput経由でキーを取得しているのに、それとは別にWM_IME_COMPOSITIONなどを捕まえて日本語入力を処理するという魔境になっておりました。
変換中は無理やりDirectInput経由の出力をカットしたりするのでキーリピートに関して整合性が取れず、困っております。
なんか直すのが面倒なので、ふつーのキー入力もWM_KEYDOWN/UP,WM_CHARを捕まえるように書き換えてしまおうかと思っているのですが、DirectInputと比べて応答性などパフォーマンスの面で違いはあるのでしょうか?
現在は変換中のイベントブロックをやめさせ、プログラムの方で変換中ならKEYDOWNイベントを捨てるようにして応急処置しています。

42 名前:デフォルトの名無しさん :2005/11/24(木) 23:57:27
Directmusicで周波数を変更して音を鳴らしてるんですが音がきれます。
原因はhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/DirectX9_c/directx/htm/changingthepitchofwaveforms.asp
ぽいんです。直す方法も書いてるんですがコードにしようとしてもわかりません。
どなたか助けていただけませんでしょうか?

43 名前:デフォルトの名無しさん :2005/11/25(金) 18:13:01
数学の知識って必要?

44 名前:デフォルトの名無しさん :2005/11/25(金) 18:50:24
高校程度の知識は必要だと思う。

45 名前:デフォルトの名無しさん :2005/11/25(金) 23:17:07
必要な知識は大して無いが、
少なくとも高校程度の数学なら理解できるくらいの知能は必要だな

46 名前:デフォルトの名無しさん :2005/11/26(土) 00:02:05
すいません、どう調べていいかも分からなくて困ってます
質問させてください。

音声レベルのリアルタイムモニタ機能が付いているアプリケーションを見かけるんですが、あれはどうやって実現しているのでしょう?

DirectSoundでは、マイクから取得した音の音レベルを取得するような関数を見つけることができませんでした
Bufferオブジェクトのメンバ変数を、どうにか演算したら求まったりするのでしょうか?
よろしくおねがいします。
m(_ _)m

↓音レベル表示しているプログラム
http://www.sp.m.is.nagoya-u.ac.jp/people/banno/spLibs/spwave/index-j.html
http://hp.vector.co.jp/authors/VA021605/ChatJam/TabVOICE.htm


47 名前:デフォルトの名無しさん :2005/11/26(土) 00:17:42
聞いたことあるくらいの知識でしか説明できないのだけれど…

音量は音波の振幅で表すことができる。
だからデジタルデータの絶対値=その瞬間の出力レベルってことになる

あと音量は線形では表されず対数化されて聞こえるらしい(db=デシベルとか参照)。
音程ごとに振幅を表示したいならフーリエ変換でスペクトル分解し、
各周波数ごとに絶対値を取ればいいんじゃないかな?

48 名前:25 :2005/11/26(土) 00:46:45
解決しました。
BBXで検索したらでてきました。

>例えば、Xfileの自前再生をした事がある方なら分ると思いますが
>スキニングの場合、Xfileの FrameTransformMatrix と matrixOffset は使わずに、
>AnimationSet の 各Animation を各フレームに適応させるだけでアニメーションします。
>ですので最初のレスで FrameTransformMatrix と OffsetMatrix は使わないと言いました。

ということで
matrixOffsetは使わなくていいっぽいです。

49 名前:デフォルトの名無しさん :2005/11/26(土) 09:10:04
アニメーションしてようがオフセットは使うが、使わないで出来るというならやってみるといい。
そもそも使わないでどうやってボーンからメッシュまでの相対位置を割り出すのか、
異次元から情報を取得する方法に興味がある。

50 名前:デフォルトの名無しさん :2005/11/26(土) 09:12:13
できるって言ってるんだから、いいんじゃないの?
やってみて、そして悩み考える。

そして大人の怪談を一歩一歩昇っていくのさ。

51 名前:43 :2005/11/26(土) 11:58:04
>>44-45
ありがとう
2Dでもそれなりに求められますか?

52 名前:デフォルトの名無しさん :2005/11/26(土) 12:03:41
始める前から質問攻めか・・・

53 名前:デフォルトの名無しさん :2005/11/26(土) 14:05:49
>>51
必要かどうかは、やってみりゃわかる。
今からその姿勢じゃ、何一つ作り出せないと思うが。

54 名前:デフォルトの名無しさん :2005/11/26(土) 17:57:03
42 です。
どなたかわかる方いらっしゃいませんか?

55 名前:デフォルトの名無しさん :2005/11/26(土) 18:24:21
>>54
症状が「音がきれます」だけでは漠然としすぎてて分からん
まずはソース晒してみては?

56 名前:デフォルトの名無しさん :2005/11/26(土) 20:05:18
モーションブラーを作りたいのですが、
GetSurfaceLevelで取得したサーフェイスを
SetTextureに設定できるようにするにはどうすれば良いのでしょうか?
サーフェイスをテクスチャに変換する方法があれば教えてください。

57 名前:デフォルトの名無しさん :2005/11/26(土) 20:25:22
いったんターゲットに出した後、描画内容を再びテクスチャにコピーするだけ。

58 名前:デフォルトの名無しさん :2005/11/26(土) 20:27:05

  \(⌒-⌒)
   (・(ェ,,)・ ) < そんなエサで俺様がクマー!!
    `つ   `つ      (´⌒(´
     ゝ_つ_`つ≡≡≡(´⌒;;;≡≡≡
              (´⌒(´⌒;;
      ズザザザ

59 名前:56 :2005/11/26(土) 21:04:08
>>57
> いったんターゲットに出した後、描画内容を再びテクスチャにコピーするだけ。
いや、ですから、ターゲットに出すときにバックバッファを
どうやってSetTextureするかという質問なのですが…。

60 名前:デフォルトの名無しさん :2005/11/26(土) 21:14:59
だーかーらー、SetTexture可能な別のテクスチャにコピーするだけ。

61 名前:デフォルトの名無しさん :2005/11/26(土) 21:22:55
>>49
使わなくてもできたんだけど?

62 名前:デフォルトの名無しさん :2005/11/26(土) 21:35:35
始皇帝氏厨はお帰りください。

63 名前:デフォルトの名無しさん :2005/11/26(土) 22:05:13
>>61
そりゃできるよ。
だってoffsetMatrixはboneMatrixの逆行列だもの。

64 名前:デフォルトの名無しさん :2005/11/26(土) 22:09:49
>>63
余計わからなくなった。
責任取れ。

65 名前:デフォルトの名無しさん :2005/11/26(土) 23:05:54
逆行列じゃなくてBoneMatrixを辿って作る行列じゃなかったっけ?
オブジェクト座標系の頂点をボーンを原点とした座標系に飛ばす行列なんだから。
確かに無くてもできるけど、再計算が阿呆らしいからOffsetMatrixがあるんじゃないの?

66 名前:65 :2005/11/26(土) 23:12:11
間違えた。逆行列で良いのかorz

67 名前:デフォルトの名無しさん :2005/11/27(日) 00:08:42
>56
テクスチャとして使用できるサーフィスに出力する

68 名前:デフォルトの名無しさん :2005/11/27(日) 00:48:13
アホ。
レンダーターゲットのテクスチャはSetTexture不可能。

69 名前:デフォルトの名無しさん :2005/11/27(日) 00:59:40
出来るがな

70 名前:デフォルトの名無しさん :2005/11/27(日) 01:21:46
とりあえず、スキニングの頂点の変換手順は
1.メッシュ空間→ボーン空間
2.ボーン空間→ワールド空間
だ。

1をやるのがoffsetMatrix
2をやるのがAnimationSetに入ってるAnimationをルートからずらずらかけたものだ。(親もな)

>>25の質問に答えるなら、
mWorld = offsetMatrix * AnimationSet * 親・・・
という感じになる。

スキンメッシュで面倒なのはシェーダに突っ込む前に
mWorld = offsetMatrix * AnimationSet * 親・・・
をSkinWeightの分だけ作らないといけないところだけだな。

と、よく知らないのにいってみるテストw

71 名前:56 :2005/11/27(日) 02:15:14
>>60
>>67
レンダーターゲットを退避用のバッファにコピーということは、
基本的にCreateDeviceで作成されたバッファは使わずに、
自分でD3DUSAGE_RENDERTARGETフラグを指定して作成した
テクスチャを作って、バックバッファに指定して使っていくということでしょうか?


72 名前:デフォルトの名無しさん :2005/11/27(日) 02:41:19
>>71
↓こういう事をやりたいんじゃないのか?
ttp://tpot.jpn.ph/t-pot/program/30_blur2/blur2.html

73 名前:デフォルトの名無しさん :2005/11/27(日) 09:10:16
とりあえずその手の簡単な処理で困ったときはt-potのソースを見ることだな。

74 名前:デフォルトの名無しさん :2005/11/27(日) 09:12:10
DirectX9b SDK & VC++ で勉強し始めたものです。
目的はシンプルなウィンドウに3Dポリゴンで
簡単な図形(三角形とか)を描いてみたいのですが、上手く行きません。

WebでDirectX8のいい参考HPを知り、
DirectXのバージョンが違うと知っていましたが、わかりやすいので
d3d8.h などを d3d9.h などに読み替えて作り続け、途中まで順調でした。
ところが、シェーダーのところで躓いてしまいました。

Webを漁ってみて、鬱だ氏のう のページ↓
http://pc5.2ch.net/tech/kako/1054/10545/1054553472.html
の 386 さんと同じ状態だったので、389 を試してみました。
すると、コンパイルは通って実行できるのですが、
ウィンドウに図形は表示されません。

DX8 > DX9 に読み替える過程で抜け落ちているものがあるのでしょうか。

なお、dxdiag での診断で DX9 のサイコロは表示されました。
また、ハードウェアデバイスの取得に成功しています。
他の場所から落としてきたサンプルコードは同様のことができているので、
ハードウェア的な問題ではないと思っています。

75 名前:デフォルトの名無しさん :2005/11/27(日) 09:21:16
>>74
理解できてないのに、なぜ移植なんかしようとする?
DX9付属か、DX9に対応したサンプル使え。

76 名前:デフォルトの名無しさん :2005/11/27(日) 10:26:21
>>75
そのページが、説明の進め方など
自分にとってとてもわかりやすかったからです。
にしても、もっともなご意見ですね。
やっぱりDX8と9の知識がいるから、難しいのか・・・。

77 名前:デフォルトの名無しさん :2005/11/27(日) 11:17:45
そのページとはどこやねん。

78 名前:デフォルトの名無しさん :2005/11/27(日) 11:19:05
エスパーの方はいらっしゃいませんか?
>>74様がお待ちです

79 名前:56 :2005/11/27(日) 12:09:22
>>72-73
なるほど。
画面を組み立てるのは別のテクスチャに2枚入れ替えながら描いて、
最後表示するときにバックバッファに転送していますね。
参考になりました。ありがとうございます。

80 名前:デフォルトの名無しさん :2005/11/27(日) 14:25:40
>>75 >>77-78
要領を得ない質問ですみません。
スレ汚し失礼しました。

81 名前:デフォルトの名無しさん :2005/11/27(日) 16:15:51
すみません、directXので、directinfoとかいうハードのスペックが見られるところがあったような気がしたのですがどこに入っているのでしょうか?

82 名前:デフォルトの名無しさん :2005/11/27(日) 23:46:02
ピクセルシェーダー(HLSL)とDrawPrimitiveについての質問です。
シェーダープログラムを複雑にして描画に時間がかかるようになると
CPU負荷が上がるのですが、これは正常な状態なのでしょうか。

具体的には、トライアングル一つでPixelShaderプログラムが
{c=tex2D(texture, InTexcoord);}
だけの場合、Begin-DrawPrmitive-Endの描画処理はすぐに終わり、
1/60毎のタイマで描画するとCPU負荷は0〜数%です。
ところがシェーダープログラムを{c=tex2d();c=complexCalc(c);}等に変更し
シェーダーに負荷をかけるとCPU負荷が徐々に上がり、さらにloop等で処理量を
をふやすとCPU負荷が100%にまで達します。
シェーダーは完全にGPUによる処理でCPUはIdle状態だと考えていたのですが、
処理によってはCPUを使う場合もあるのでしょうか?
(CompileShaderは"ps_3_0"指定。CPU負荷はタスクマネージャ読み)

83 名前:デフォルトの名無しさん :2005/11/27(日) 23:56:53
>>82
そうなったんならそうなんじゃね?
パフォーマンスに関してはやってみて測ってみたならそれが正解って
誰かいってたじゃん。

84 名前:デフォルトの名無しさん :2005/11/27(日) 23:59:24
>>82
PixelShader3.0対応のビデオカード使ってる?
GPUが対応してない場合はソフトウェアで(CPUで)処理するしかないんだが

85 名前:デフォルトの名無しさん :2005/11/28(月) 00:03:51
どっちかっていうと、この場合は計り方が悪いんじゃね?って思うけどな。
GPUの処理待ちでPresentのあたりで処理が止まっているだけとか。

86 名前:デフォルトの名無しさん :2005/11/28(月) 00:18:48
>>83
なるほど
SDKのtutorialやt-potサンプルをちょっと改変している程度なので
何か前処理が足りないのかとも思ったのですが……

>>84
7800なのでps_3_0対応のはずです
対応GPU使わないSetPixelShader辺りでエラーになるのかと思ってましたよorz
本来はCapsで調べて予めエラー処理しないといけないのでしょうね

>>85
むむ、DrawPrimitive()で止まっているとは限らないのですね

単にタスクマネージャ上で負荷が上がって見えるだけなのかとも疑っていたりするので、
どこでCPU側の処理が止まっているのか、もうすこし調べてみます

87 名前:デフォルトの名無しさん :2005/11/28(月) 19:27:14
質問させてください。
MSDNのチュートリアルを見ながら、ポリゴンにテクスチャマッピング
できるようになったのですが、複数枚のポリゴンに複数枚のテクスチャを
貼り付けようとしています。

それぞれのテクスチャ毎にステージを変えて貼り付けているのですが、
一枚のテクスチャが他のテクスチャに影響を与えてしまって
うまくいきません。

調べてみた所、複数枚のテクスチャを一枚に纏めるのがよさそうですが
テクスチャを動的に作っているので、あらかじめ一枚に纏められなくて、
テクスチャを動的に一枚に纏める方法がどうにもわかりません。
よろしければ教えてください。

環境はVC7+DX9(Summer 2004)です。
よろしくお願いします。

88 名前:デフォルトの名無しさん :2005/11/28(月) 20:34:49
テクスチャをロックして書き出せば良い。

89 名前:デフォルトの名無しさん :2005/11/29(火) 05:09:54
DirectInputとGetKeyboardStateなどのAPIでは、
DirectInputの方が早いと聞いたのですが、
体感に差が出るほど速度は違うのでしょうか。

90 名前:デフォルトの名無しさん :2005/11/29(火) 07:48:47
ttp://blog.livedoor.jp/hirai_jp2000/archives/cat_1471021.html

>キーボードの情報を得るためにWin32APIのGetKeyboardState()を
>使っているのですが、最初に入力を感知してから次に検出するまでに結構間があります(その後は連続して検出される)。

ベストを尽くす/ゲーム向きならDirectInputだろう。

91 名前:デフォルトの名無しさん :2005/11/29(火) 07:49:59
>>89
試せばわかる

その前に聞きたいんだけど
君は1秒間に60回とか120回とか入力できる人?
もしそうならDirectInputのほうが速いと体感できるでしょう

92 名前:デフォルトの名無しさん :2005/11/29(火) 12:47:09
>>88
ありがとうございます。
テクスチャをロックしてメモリに直にアクセスしてコピーなどすればいいということでしょうか?
テクスチャを範囲でコピーできるような関数を探していましたが、やはり直アクセスが一番早そうですね。

93 名前:87 :2005/11/29(火) 14:55:28
テクスチャをロックしてコピーしたらうまく3枚のテクスチャを1枚にまとめることができました。
ありがとうございました。

1枚にまとめてそのテクスチャを張り合わせるよりも、ステージを使って
うまく重ね合わせるほうがコピーが無い分早そうですね・・・。

94 名前:デフォルトの名無しさん :2005/11/29(火) 16:58:50
d3dx9d_2x.dllを配布するにはインストーラを作る必要があるそうですが
そのインストーラを作る方法はどこに書かれてますか?

95 名前:デフォルトの名無しさん :2005/11/29(火) 17:05:19


96 名前:94 :2005/11/29(火) 17:19:51
なにか不思議なことを言いましたか?

97 名前:デフォルトの名無しさん :2005/11/29(火) 17:37:22
d3dx9d*は再配布禁止です。

98 名前:94 :2005/11/29(火) 17:40:21
そうです!単体では配布禁止です
そこでMS推奨のインストーラに添付する形での配布をしたいのです

99 名前:デフォルトの名無しさん :2005/11/29(火) 17:44:09
単体じゃなくても、どんな形でも禁止。

100 名前:94 :2005/11/29(火) 17:46:36
インストーラを作れば配布可能だとDirectXヘルプで読んだのですが
誤読だったみたいですね。もう一度英語辞書引っ張って読み直してきます。
お騒がせしました。

101 名前:デフォルトの名無しさん :2005/11/29(火) 19:38:05
日本中が大騒ぎしたよ
まったく

102 名前:デフォルトの名無しさん :2005/11/29(火) 20:08:20
>>100
MSが緊急会議してたぞ!どうすんだ!

103 名前:デフォルトの名無しさん :2005/11/29(火) 23:00:58
今日は冷えるなぁ

104 名前:89 :2005/11/30(水) 01:06:21
>>90-91
体感できるほどの差ではないけど、やっぱり影響はあると・・・
そうでしたか・・・

そうですよね、実際に比べるのが一番ですよね。
いや、実はDirectInputが上手くいかなくて、
APIに逃げようかtゲフンゲフン!!

もう少しガンバってみます。ありがとうございました。

105 名前:デフォルトの名無しさん :2005/11/30(水) 06:17:27
結果が同じなら楽なほうに流れるのはよいことだと思うけど
DirectInputが分からないから使わないっていうのはどうかなと

106 名前:デフォルトの名無しさん :2005/11/30(水) 06:20:38
>>94
d3dx9d_2x.dllを配布するには(DirectXの)インストーラを「使う」必要がある

107 名前:デフォルトの名無しさん :2005/11/30(水) 07:02:15
>>106
嘘教えるなよ。使ったって無理だよ。

108 名前:デフォルトの名無しさん :2005/11/30(水) 10:09:27
>>94
知りたいのはこれけ?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/directx9_c/Installing_DirectX_with_DirectSetup.asp

109 名前:デフォルトの名無しさん :2005/11/30(水) 19:28:08
ゲーム製作技術板の新スレたちました
長期間立たずに不便をかけてごめんなさい
ゲームに関連した話題が得意なので以後よろしくお願いします

DirectX総合スレ (Part4)
http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/

110 名前:デフォルトの名無しさん :2005/11/30(水) 19:50:35
だからそれは、d3dx9_2x.dllの配布方法だろ。d3dx9d_2x.dllは再配布禁止。

本当にd3dx9d_2x.dllを要求してるなら、d3dx9d.libではなくd3dx9.libをリンクしろ。

111 名前:デフォルトの名無しさん :2005/11/30(水) 20:09:17
>>110
英語読めないのか・・・w

112 名前:デフォルトの名無しさん :2005/11/30(水) 20:20:52
>>111
よめねーよ!

113 名前:デフォルトの名無しさん :2005/12/01(木) 14:40:55
DirectSoundで、waveの任意位置へのループをやりたいのですが、
どうしたらよいでしょうか。
SDKを見ても、最初にループする方法はわかりましたが、
途中からループする方法がわかりませんでした。
mmio関係の関数を使うようなのですが・・・。

こんな感じ何ですが
→→→→→
   ↑   ↓
    ←←←

114 名前:デフォルトの名無しさん :2005/12/01(木) 18:37:28
>>113
WAVEデータの途中からバッファに書き込めばいいんじゃないの

115 名前:デフォルトの名無しさん :2005/12/01(木) 20:13:23
そのシークの仕方がわからんのでげすorz
mmioSeekはなにか違うし・・・

116 名前:デフォルトの名無しさん :2005/12/01(木) 21:37:49
ばれないから平気だよ。d3dx9_2x.dllだけ自分のソフトで配布。
市販ソフトでもけっこうやってる

117 名前:デフォルトの名無しさん :2005/12/02(金) 02:57:47
>>115
シークのためにはWAVEデータとは何なのかを知らなきゃならない。
たとえば16ビット、ステレオ、44100HzのWAVEデータなら、
1秒間に16[bit]*2[channel]*44100[Hz]のデータが詰まってる。
これでシークの仕方は大体想像つかないか?

ところで、やりたいことは前奏つきの音楽の無限ループ、でいいのかね。

118 名前:デフォルトの名無しさん :2005/12/02(金) 08:20:10
>>113
ループする場所が固定ならば(動的に変化しないならば)
あらかじめイントロ部とループ部にファイルを分割しておくのもひとつの手


119 名前:デフォルトの名無しさん :2005/12/02(金) 09:08:30
>113
とりあえず事前条件として、ストリーミング再生はできてるんだろうな?

120 名前:デフォルトの名無しさん :2005/12/02(金) 11:14:59
>>117
実は、oggでの無限ループはすでに出来てるんです。
シークは、ov_pcm_seek(サンプル数)で。
で、wavができねーって話です。
いや、wavいらんといえばいらんのですが。

>前奏つきの音楽の無限ループ
そのとおりです。

>>118
それも考えました。
ただ、2つのファイルを切れ目なく、うまくつなぐ処理を考えたら、
1ファイルで完結するのが楽かな、と思ってやってます。


>>119
ストリーミング再生はできてます

121 名前:デフォルトの名無しさん :2005/12/02(金) 11:48:30
>>120
だから、>117にも書かれている通りwavのデータならどこにシークするかは自明だろ。
ヒント:wavファイルのファイルサイズと演奏時間

122 名前:デフォルトの名無しさん :2005/12/02(金) 13:22:33
理論的な話ではなく、実際の実装はどうなりますか、ということです。

123 名前:デフォルトの名無しさん :2005/12/02(金) 13:35:59
バイトオフセット = サンプリング周波数 * 秒数 * 量子化バイト数
例えば、22kHzサンプリングで16ビット量子化なら、0.1秒オフセットするには
4410バイトオフセットすればいいということだな。
厳密にはヘッダの分が必要かも知れんが、その辺はヘッダの資料でも見て計算してくれ。

124 名前:デフォルトの名無しさん :2005/12/02(金) 13:45:53
まえにやったことある方法。

A.前奏
B.ループ部分
C.ループ部分の頭の数秒末尾に付けておく

WAVデータはこんなふうにしておいて、
演奏位置がCを超えたら、超えた分(現在位置-C)を
Bからのオフセットとして(B+(現在位置-C))にシーク。

この方法だと現在演奏位置を常に監視する必要があるけど
C部分を多めに取っておけば監視回数は減らせる。

125 名前:124 :2005/12/02(金) 13:51:39
長さが分かってるから常に監視する必要はないか

126 名前:デフォルトの名無しさん :2005/12/02(金) 18:09:09
>>122
理論が分かってたら実装なんて一発だろ、こんなん。

1サンプル当たり、2チャネルで各チャネル16ビットのデータを持っているんだから、
1サンプル=4バイトのデータがあることになる。
それが1秒間に44100個詰まってるんだから、
開始位置から1秒後にシークしたいならオフセットは44100*4だろう。

127 名前:デフォルトの名無しさん :2005/12/02(金) 18:19:35
>>123に書いてあることを、改めて偉そうに話す>>126に乾杯!

128 名前:デフォルトの名無しさん :2005/12/02(金) 19:25:05
いやだから、oggだと出来たんだって・・・
waveが出来なくて泣きそうなんです
mmio系wakewakame

129 名前:デフォルトの名無しさん :2005/12/02(金) 19:51:53
まるでDirectXと関係がなくなってるが
>128
mmio程度を理解でいないのもアレだが、mmioなんか使わんでいい。
自前でRIFFチャンクを処理してファイルポインタを操作しろ。

130 名前:デフォルトの名無しさん :2005/12/02(金) 21:15:58
つーかこういうものはoggでできる前にWAVEでできなきゃ駄目だと思うんだが

131 名前:デフォルトの名無しさん :2005/12/02(金) 21:19:53
うわ、馬鹿親の見本だな

132 名前:131 :2005/12/02(金) 21:20:51
誤爆失礼。

133 名前:デフォルトの名無しさん :2005/12/03(土) 07:38:57
RIFFにはMP3さえも入れられるからなあ
Waveは仕様が奥が深いというか。
煩雑で良いドキュメントも無いし俺は使ってないな

今懐かしくなって何年か前のコードを見てみたんだけど WAVE のやつでは
シークは先頭から読み飛ばして実装してた 効率悪そうだw
先頭まで戻って::acmStreamPrepareHeader,::acmStreamConvert...を
繰り返すって感じ 今見ても嫌なコード..

134 名前:デフォルトの名無しさん :2005/12/03(土) 11:10:27
 いま3Dゲームみたいなものを作成しようと頑張っています。
地形(山とか家とか)を作成しようと試みている最中です。

いろいろ試してみたいのですが、
テクスチャを貼ったXファイルを読み込んで表示するのが
手っ取り早いかと思っています。簡単ですし・・

直接DirectXとは関係ないかと思いますが、
簡単にテクスチャを貼るツールなどありましたらお教えください。

135 名前:デフォルトの名無しさん :2005/12/03(土) 11:15:29
めたせこいあ

136 名前:デフォルトの名無しさん :2005/12/03(土) 11:17:48
>>134
最近のツールはほとんどモデルに直接描きこめると思うんだが
それでは不足ということか?
アジの開き系のツールとか試した?

137 名前:デフォルトの名無しさん :2005/12/03(土) 13:02:32
直接描きこめる系って実用性あるのかな
いやリアル系ならいけるんだろうけど、ゲーム用途だとどうなんだろ
いまいちなイメージがあるなぁ…まぁデザイナじゃないから良く知らないが

138 名前:デフォルトの名無しさん :2005/12/03(土) 22:33:08
レースゲームのベース用のハイトマップを巨大な1枚のテクスチャにするとか。
細かい質感はディティールマップ等を併用する前提で。


139 名前:デフォルトの名無しさん :2005/12/04(日) 03:52:42
バイナリエディタの作り方キボン

140 名前:デフォルトの名無しさん :2005/12/04(日) 03:54:01
↑馬鹿の作り方。

141 名前:デフォルトの名無しさん :2005/12/04(日) 08:12:07
>>139
いや、てゆうか普通に表示するだけっしょ。
なにか問題でも?

142 名前:デフォルトの名無しさん :2005/12/04(日) 08:27:47
パイズリエディタ

143 名前:デフォルトの名無しさん :2005/12/04(日) 08:44:52
>>141
編集は?

144 名前:デフォルトの名無しさん :2005/12/04(日) 09:00:34
バイナリエディタならプログラム途中にバイトコード挿入したときに
相対ジャンプのオフセットを判断して全部書き換えてくれると嬉スィ

145 名前:デフォルトの名無しさん :2005/12/04(日) 09:28:48
>>143
普通のエディタと同じでいいじゃん。
VCと同じような作りにしたいなら自作エディタでも作ればいいんじゃない?
そんな難しくないとおもうけど。
まあ、それはお便利機能だから、とりあえず次のステップとして横においておくとして、
バイナリエディタを作るだけなら基本的には数字を表示するだけで終了じゃね?

146 名前:デフォルトの名無しさん :2005/12/04(日) 09:32:03
バイズリエディタならオルガズム途中にマイマラーヲ挿入したときに
早漏ランプのコースセットを判断して全部カキカイテくれると嬉スィ

147 名前:デフォルトの名無しさん :2005/12/04(日) 12:29:32
バイナリエディタがDirectXと関係あるのか?

148 名前:デフォルトの名無しさん :2005/12/04(日) 13:53:07
俺C++しかもってないのでCのソース組みたいんだけど。

149 名前:デフォルトの名無しさん :2005/12/04(日) 13:59:40
>>148
大抵のC++コンパイラはCコンパイラを兼ねていて、拡張子cのファイルはCとしてコンパイルしてくれる。
そうでなくとも大体はCのコードはC++のコードとしても通用する。

150 名前:デフォルトの名無しさん :2005/12/04(日) 15:13:54
>>149
CとC++はあまり書式変わりが無いから気にしなくていいかと。

151 名前:デフォルトの名無しさん :2005/12/04(日) 16:51:33
C++のソースコードとか沢山置いてるサイトのアドレス誰か出せ。

152 名前:デフォルトの名無しさん :2005/12/04(日) 17:03:32
>>151
ttp://www.microsoft.com/japan/msdn/

153 名前:デフォルトの名無しさん :2005/12/04(日) 17:35:43
>>152
いや個人サイトでC++のソース(MFCじゃないやつ)置いてる場所教えてくれ

154 名前:デフォルトの名無しさん :2005/12/04(日) 17:44:47
MFCは好きじゃないからな。

155 名前:デフォルトの名無しさん :2005/12/04(日) 17:46:54
つかMFC組めないしビルドに失敗する。

156 名前:デフォルトの名無しさん :2005/12/04(日) 18:04:46
ここまで俺の自演

157 名前:デフォルトの名無しさん :2005/12/04(日) 18:06:32
  ○    _,. - ‐‐ - .,,_
  (、ノ,. '"        `ヽ、 ,
  ))           ヽ○ノ
                / ヘ  ←>>156
                <

158 名前:デフォルトの名無しさん :2005/12/04(日) 19:21:14
おいおい、なんだよこの反応。マジムカツク。なんで自演扱いなのよオレ。なんだよ、
個人サイトのC++ソース探してたら人生そのものが自演なのかよ。ふざけんなよ。MSDNのサンプル
実行しても上手くいかなかったから参考までに教えて欲しかったのにぶざけんじゃねーよ。
それともMFC嫌いに焼いてんのか?なら許すけどさ。確かに見た感じはカッコイイから焼く
気持ちも分からないでもないけどだからって自演扱いは凄く失礼だぞ。

あとプログラミング始めたばかりでまだ個人サイトしか見てないからMSDNがどの程度凄いのか知ら
ないけどマジで個人サイトって個人でも激わかりやすの。サイトデザインは恐ろしいほど悪いけど
あの説明は本当に凄い。あと156さんは信じてないみたいだけど本当の本当に自演はしてない
んだって。これは神と仏と悪魔に誓ってネタじゃない。マジで151=153だけ。

159 名前:デフォルトの名無しさん :2005/12/04(日) 20:32:04
どう見てもスレ違いです。
本当にありがとうございました。

160 名前:デフォルトの名無しさん :2005/12/04(日) 23:47:23
リリースフォルダにある完成ファイルとデバッグフォルダの完成ファイルはどう違うんだよ。
バイトが激しく違うんだが。

161 名前:デフォルトの名無しさん :2005/12/04(日) 23:48:51
>>160
>>159

162 名前:デフォルトの名無しさん :2005/12/05(月) 00:04:32
  ○    _,. - ‐‐ - .,,_
  (、ノ,. '"        `ヽ、 ,
  ))           ヽ○ノ
                / ヘ  ←>>160
                <


163 名前:デフォルトの名無しさん :2005/12/05(月) 00:28:01
2年前、俺が立て逃げしちゃったスレ、ここまで続いてたのか・・・
あの時は正直スマンカッタ。今はマンセーしている

164 名前:デフォルトの名無しさん :2005/12/05(月) 05:09:23
>>151
ttp://www.codeproject.com/cpp/
ttp://www.codeguru.com/Cpp/


165 名前:デフォルトの名無しさん :2005/12/05(月) 14:54:38
2Dでスプライトを表示する時に透過していない所だけを虹色で描画するにはどうすればいいでしょうか?

166 名前:デフォルトの名無しさん :2005/12/05(月) 15:11:08
mayaに.xファイルをimportするプラグインってあります?

商用のやつはみつかったんだがそれだけのために買うのもなぁ…。
blenderを一旦通して、xファイル入力obj出力やろうとしたんだけど
うまくimportしてくれない。うーん。

167 名前:デフォルトの名無しさん :2005/12/05(月) 15:13:56
テクスチャの透過していないところを虹色で塗ればいいのではないでしょうか。

168 名前:デフォルトの名無しさん :2005/12/05(月) 16:21:45
Win32は上級者向けでMFCは初心者向けですか?

169 名前:デフォルトの名無しさん :2005/12/05(月) 16:24:03
どう見てもスレ違いです。
本当にありがとうございました。

170 名前:デフォルトの名無しさん :2005/12/05(月) 16:24:44
>>169
しね

171 名前:デフォルトの名無しさん :2005/12/05(月) 16:25:17
>>168
どちらとも言えない。
表裏一体のような関係。

172 名前:デフォルトの名無しさん :2005/12/05(月) 16:25:41
>>169
しかも日本語なってないのにプログラム板とか流石ですね(´,_ゝ`)

173 名前:デフォルトの名無しさん :2005/12/05(月) 18:12:51
「どう見ても○○です。本当にありがとうございました。」って最近よく見かけるけどなんか元ネタがあるの?

174 名前:デフォルトの名無しさん :2005/12/05(月) 18:13:30
>>173
DirectXと何の関係が?

175 名前:デフォルトの名無しさん :2005/12/05(月) 18:14:16
http://ex13.2ch.net/test/read.cgi/gline/1132234454/l50

176 名前:デフォルトの名無しさん :2005/12/05(月) 20:53:30
>>166
ないので作れ。出来上がったらhighend3d.comに投稿してくれ。

177 名前:デフォルトの名無しさん :2005/12/06(火) 03:07:20
>>176
む・・・無理・・・
せめてobjファイルとかほかの形式でdirectxで保存できればいいのに・・・
D3DXSaveMeshToObjみたいな。ないよね。はい、ないですね。



178 名前:デフォルトの名無しさん :2005/12/07(水) 00:52:05
なぜ山に登るのか?と聞かれた登山家は
そこに山があるからだ、と答えたというが
プログラマーになぜコードを書くのか?と尋ねたら
そこにツールが無いからだ、と答えるだろう

179 名前:デフォルトの名無しさん :2005/12/07(水) 17:01:45
えーと、DirectX 8.1で自分でウィンドウとDirect3Dデバイス作って
CD3DFontの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使うくらいなら素直にフレームワーク使えとか言われたら
それまでなんですが……。

180 名前:179 :2005/12/07(水) 17:07:15
すいませんわかりました。RestoreDeviceObjects呼び出されてなかった(ワラ
なんでこういうのって書き込むとすぐ解決するん?

181 名前:デフォルトの名無しさん :2005/12/07(水) 17:49:41
自分で調べずに、困ったらすぐ書き込んでるから。

182 名前:デフォルトの名無しさん :2005/12/07(水) 17:51:48
今後は解決してから書き込むように!

183 名前:デフォルトの名無しさん :2005/12/07(水) 17:52:20
ヘルプに書いてあるよな。ちゃんと嫁。
ヘルプが無いなら入手白

184 名前:デフォルトの名無しさん :2005/12/08(木) 12:37:10
VC++ と DirectX9b で、LPD3DXFONT を使用して
ウィンドウにテキスト表示をしたいのですが、
表示部分で上手くいきません。

  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バイト目を文字数分だけ繰り返しているみたいです。

原因は何なんでしょうか。

185 名前:directx noob :2005/12/08(木) 16:31:00
2d頂点ポリゴンと3D頂点ポリゴンを同時に描画しているのですが、
Z値は2D頂点のほうを大きくしているのに2dポリゴンが3dポリゴンを塗り
つぶしてしまします。 (?ω?)


186 名前:directx noob :2005/12/08(木) 16:33:54
環境書き忘れました。
vc++ 6.0 + direct x 9.0c

187 名前:デフォルトの名無しさん :2005/12/08(木) 16:37:14
>>185
ZEnable、ZWriteEnableとかはどうなってる?

188 名前:directx noob :2005/12/08(木) 16:41:40
>>187
ZEnableはTRUEに設定していますが
ZWriteEnableは設定していません。

189 名前:directx noob :2005/12/08(木) 16:55:05
単純に計算ミスでz値が3dポリゴンの方が大きかっただけでした。 orz
お騒がせしてすいません。
今後はもう少し落ち着いて質問させていただきます。

190 名前:デフォルトの名無しさん :2005/12/09(金) 07:17:14
VC++,DirectX9.0bを使っているのですが、現在画像と撮影対象を
direct3Dで描いたものを比べて同じものだと判定するプログラム
を作ろうとしているのですがどうしたら比較できるでしょうか?
自分の考えとしてはdirect3Dで描いたものをBITMAPに保存して比べよう
としたんですがどうやって保存すればよいかわかりませんでした。
BITMAPに保存する方法でも新しい方法でもいいのでどうか教えてください。

191 名前:デフォルトの名無しさん :2005/12/09(金) 08:49:52
それ以前にビットマップにしてどうやって比較するつもりなんだ?
このテーマだけで大量の論文が書けるぞ。

192 名前:デフォルトの名無しさん :2005/12/09(金) 09:14:30
それはともかく

GetRenderTargetData
GetFrontBufferData

誰かFAQ書こうよ〜

193 名前:デフォルトの名無しさん :2005/12/09(金) 17:39:11
投影について質問です。
directx 9.0bで平行投影は可能なのでしょうか?

自分は3d画像を利用した2dシューティングを作成しているのですが
透視投影ではオブジェクトの位置ごとに表示がかわってしまって
当たり判定などの処理が作成が困難なので平行投影を利用したいのですが。

194 名前:デフォルトの名無しさん :2005/12/09(金) 17:43:50
可能

195 名前:directx noob :2005/12/09(金) 22:14:51
<<194
どのようにすれば平行投影ができるのでしょうか?


196 名前:デフォルトの名無しさん :2005/12/09(金) 22:27:43
D3DXMatrixOrthoLH等


197 名前:directx noob :2005/12/10(土) 02:40:11
ありがとうございます。
プロダクション変換行列をその関数で作成すればうまくいきそうです。


198 名前:デフォルトの名無しさん :2005/12/10(土) 07:12:52
プロダクション?

199 名前:デフォルトの名無しさん :2005/12/10(土) 12:47:58
SDK Decemberは出るのでしょうか?

200 名前:デフォルトの名無しさん :2005/12/10(土) 13:03:56
ここに答えられる人間がいると思っているのか?
頭は大丈夫か?

201 名前:ゲイツ :2005/12/10(土) 13:09:15
December、かぶるから出さないよ

202 名前:デフォルトの名無しさん :2005/12/10(土) 13:36:24
Februaryが出る、とか言った奴がいて、予言どおり出たことがあったな。


203 名前:デフォルトの名無しさん :2005/12/10(土) 13:41:13
http://www.gamedev.net/community/forums/topic.asp?topic_id=362875

出るってよ。

204 名前:デフォルトの名無しさん :2005/12/10(土) 21:59:19
半透明のポリゴンは画面奥から描くのがセオリーだけど、
交差してるポリゴンはどうやって前後処理するんでしょうか?
なんか上手い方法ないですかね・・・?

205 名前:デフォルトの名無しさん :2005/12/10(土) 22:07:27
半透明でない交差ポリゴンはZバッファで大丈夫。

半透明な交差ポリゴンはZバッファとZソートを組み合わせても駄目だけど、
普通の人間なら全然気づかないから放置

206 名前:デフォルトの名無しさん :2005/12/10(土) 22:30:56
一応、2パス描画でオーバードローを防ぐ
(奥のポリゴンを常に最前のポリゴンで隠す)方法はあるわね。

207 名前:デフォルトの名無しさん :2005/12/10(土) 22:42:48
>>205
半透明の交差で、範囲でかいので結構目立つんですよ。

>>206
どういう描画ですか?

208 名前:デフォルトの名無しさん :2005/12/10(土) 22:46:17
>>207
一旦Zオンリーで描画してから、普通に半透明で描画。
一番手前に来るピクセルだけZ≦Zfを満たして描画できるわけね。

209 名前:デフォルトの名無しさん :2005/12/10(土) 22:51:28
それだと後ろ側に回ったポリゴンは描画できなくない?

210 名前:デフォルトの名無しさん :2005/12/10(土) 22:58:09
>>209
もちろん不透明ポリゴンは全て先に描画しておくのが前提で、
同じ半透明のはあきらめるってことね。

211 名前:デフォルトの名無しさん :2005/12/10(土) 23:05:02
一旦Zオンリーというのは、
全部の半透明ポリゴンに対してでしょうか?

・不透明の下地を描画
・半透明のZ描画
・手前の半透明の色だけ描画

で、交差するポリゴンの、
手前の半透明がα=0.1
奥の半透明がα=0.8
だとすると、
奥の0.8が無視されて下地が思いっきり透けてしまいませんか?


>>210
うーん、諦めるって事ですか・・・。

212 名前:デフォルトの名無しさん :2005/12/10(土) 23:17:30
>>211
半透明率が違うのは想定範囲外ねw
今挙げたのは、視点によって描画順が変わって
半透明が多重に掛かったり一度だけ掛かったりするのを防ぐために、
常に一度だけ掛かるようにする方法ね。
こんなのもあるってことで。

213 名前:デフォルトの名無しさん :2005/12/10(土) 23:22:20
そんなに精度が重要ならポクセルでソフトレンダリングすればいい。

214 名前:デフォルトの名無しさん :2005/12/11(日) 03:13:24
レンダリングの手法にばかり目が言ってるけど
データを工夫すれば回避できることもある。
その他ZDEPTH値を持たせたり、ALPHATEST ALPHAREF ALPHAFUNCの設定でかなり改善できる。

215 名前:directx noob :2005/12/12(月) 04:44:03
>>198
プロジェクションの間違いです

216 名前:デフォルトの名無しさん :2005/12/12(月) 09:11:11
はじめまして。

CDXUTMeshを使ってXファイルを表示しようとしております。
Xファイルを読み込んで表示することは出来たのですが、
一部の環境でそのプログラムを実行すると3Dオブジェクトの一部がちらつきます。
ポリゴン単位やオブジェクト単位ではなく、一部分が水平方向10ラインくらいが一気に
消滅してしまいます。
垂直同期とかの兼ね合いかと思ってVSyncは有効にしております。
どなたか解決方法を知らないでしょうか?


環境:DirectX 9.0 SDK (October 2005)
開発:VisualStudio.net 2003
OS:WindowsXp SP2
オブジェクト作成:Shade7

です。
よろしくお願い致します。

217 名前:デフォルトの名無しさん :2005/12/12(月) 22:45:49
質問です。
DirectX7時代Direct3D-IMでちょこちょこ組んでて、久しぶりに戻った者なんですが
今の時代、D3DX当たり前でIMでごりごりやるってのは時代遅れなんでしょうか。
…というかIM自体なくなっちゃったんでしょうか
参考書とかほんのちょっと目を通したのですが、D3DXばかりだし

218 名前:デフォルトの名無しさん :2005/12/12(月) 23:03:07
ちょこっとじゃなくて、しっかり目を通せ。

219 名前:デフォルトの名無しさん :2005/12/13(火) 01:08:34
>>217
とりあえずバンプマップ実装してからきて。
そのころにはすべてが理解できてるだろうけど。

220 名前:デフォルトの名無しさん :2005/12/13(火) 13:58:17
音程を変えずにwaveファイルの再生速度を変更したいのですが
どうすればよいのでしょう?

よろしくお願い致します。


221 名前:デフォルトの名無しさん :2005/12/13(火) 15:33:59
思えば、バンプマップって確かにほどよく全体を理解できるいい課題だな

222 名前:デフォルトの名無しさん :2005/12/13(火) 15:38:47
そうかなぁ、バンプマップってVS1.1で出来る?

223 名前:デフォルトの名無しさん :2005/12/13(火) 16:55:52
シェーダなんて無くてもできる。

224 名前:デフォルトの名無しさん :2005/12/13(火) 18:30:10
>>220
フーリエ変換とかで周波数成分をスペクトル分解する
そこから曲の長さを伸ばして、フーリエ逆変換して元に戻す

多分こんな感じでいけるとは思うけど
ちゃんとしたものを作ろうとしたらかなり大変になるだろうなあ…
適当なものだと音の質が変わりそうだ

225 名前:220 :2005/12/13(火) 21:55:23
>>224
回答ありがとう。

そうですか・・・大変ですか。
フリーのソフトで実現しているのがあったり、
.wmvだとMP9で出来たりするので、そんなAPIがあるのかと思っていました。
ある程度、音質が変わるぐらいなら許せるのだけど、
それでも大変でしょうか?


226 名前:デフォルトの名無しさん :2005/12/13(火) 22:48:55
超手抜きな方法。
数十〜数百サンプル単位でまとめて間引く。
小さくし過ぎると音程に影響するし、大きいとぶつ切りになるので適当に調整。

227 名前:デフォルトの名無しさん :2005/12/14(水) 18:51:47
誰かManaged DirectXのテクスチャ関連のバグって聞いたことないですか?
てか多分私のせいだとは思うんだけれど、あまりにも不可解なんで腹が立ってきた…

SkinnedMeshサンプルをほぼ丸々コピーしてコンパイルしたんだけど
Textureを作成して関数終了直後に即Disposeされてしまいます。
参照はちゃんと持ってるんで、ガベコレが働くわけはないと思うのだけれど

228 名前:デフォルトの名無しさん :2005/12/14(水) 19:59:48
ttp://www.watch.impress.co.jp/game/docs/20051207/3dwa.htm
この記事の下の方にある
「擬似ボリュームパーティクル」の頂点ごとのライティングって
何を基準に明暗をつけてるんでしょうか?
一枚ポリゴン上の頂点でなぜ明度に違いがでてますか?

229 名前:デフォルトの名無しさん :2005/12/14(水) 20:05:48
ビルボードの中央を基準に法線つけてんじゃない?
球みたいなのを想定してるとか。

で、SkinMeshの謎がわからない.....

230 名前:デフォルトの名無しさん :2005/12/14(水) 20:12:02
ソースを

231 名前:デフォルトの名無しさん :2005/12/14(水) 20:40:08
http://gamdev.org/up/img/4049.zip
丸ごとあげました。

アップしてすぐ気づいたんですが、
どうもAllocateHierarchy.CreateMeshContainerが、
マネージコード→アンマネージコード→マネージコード
と呼ばれてるのが怪しい気がします。。
この辺をもう少し調べてみます

232 名前:220 :2005/12/14(水) 23:39:35
>>226
回答ありがとう。

やってみましたが、ブチブチと雑音が多くて。。。


233 名前:デフォルトの名無しさん :2005/12/14(水) 23:40:44
>>232
それが簡単にできたら特許とってぼろ儲けの気がする・・・

234 名前:231 :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されないようにキャッシュに突っ込めば上手くロードできるようでした。

というわけで、お騒がせしました。

235 名前:デフォルトの名無しさん :2005/12/15(木) 02:00:23
>>228
ピクセル単位で法線データを持っているんじゃない?
原理はバンプマップと一緒。

ttp://developer.nvidia.com/object/Dot_Product_Texture_Blending.html
これが一番単純な説明かな。

236 名前:デフォルトの名無しさん :2005/12/15(木) 02:17:33
>>220 >>232-233
ttp://www.xucker.jpn.org/keyword/sox.html
ttp://www.xucker.jpn.org/pc/sox_use1.html
ttp://www.xucker.jpn.org/product/wavconvert.html


237 名前:デフォルトの名無しさん :2005/12/15(木) 09:58:02
質問です。
ゲームとかで使われる視覚効果・エフェクトをまとめたサイトや本などありますでしょうか?
海や滝、炎の表現、ポイントスプライトとか、その辺なんですが、よろしくお願いします。


238 名前:デフォルトの名無しさん :2005/12/15(木) 09:59:46
>>237
DirectXゲームグラフィックスプログラミング Ver. 2.0

239 名前:デフォルトの名無しさん :2005/12/15(木) 10:03:24
>>237
あるけど、思ってるより超簡単なので、とりあえず作ってみたほうが感動を味わえる。

240 名前:デフォルトの名無しさん :2005/12/15(木) 10:58:08
gemsでいいんじゃね

241 名前:デフォルトの名無しさん :2005/12/15(木) 12:08:41
GPU Gems
Game Programming Gems
DirectX シェーダプログラミング
などなど

とりあえずt-potでググれ

242 名前:デフォルトの名無しさん :2005/12/15(木) 17:41:38
>>232
だから超手抜きと言ったのに。
区間をクロスフェードしたら?
どんな音になるのかわからんけど、少なくともブチブチはしないと思う。

243 名前:デフォルトの名無しさん :2005/12/15(木) 18:03:58
Unix/Linuxを10年ほど使っており、C/C++はほぼ理解していて、
OpenGLで3Dゲームなどを作ったこともあるのですが、
Windowsについては全く分からず、VisualStudioも先日初めて触りました。

「リソースって何?」とか「新規プロジェクトを作るだけでなぜ勝手にソースが書かれるの?」とか
「main()がない!」とか、それくらいチンプンカンプンなのですが、
DirectXでのプログラミングをゼロから勉強するための、良い本やサイトを教えていただけないでしょうか?

・まったくゼロの状態から(main.cppを自分で書くくらいのところから)説明してくれる
・Windowsの関数をあまり使わず、なるべくピュアなC++で説明してある
・自前のライブラリなどを使っていない

というのが希望なのですが…。
漠然とした質問で申し訳ないんですが、アドバイスをよろしくお願いします。

244 名前:デフォルトの名無しさん :2005/12/15(木) 18:08:04
その知識があるならPetzoldのプログラミングWindowsかなあ。

245 名前:デフォルトの名無しさん :2005/12/15(木) 18:19:12


246 名前:デフォルトの名無しさん :2005/12/15(木) 18:32:46
Windowsの関数をあまり使わずにDirectXとはこれいかに

247 名前:デフォルトの名無しさん :2005/12/15(木) 18:40:12
てか、その質問がDirectXと関係が有るように見えない。

248 名前:デフォルトの名無しさん :2005/12/15(木) 21:28:18
>>243 は自分が知識があると勘違いしていただけだろ

249 名前:デフォルトの名無しさん :2005/12/15(木) 21:42:22
>>243
とりあえずWindows上でVisual Studioを使ってもOpenGLは使おうと思えば使えるよ。
まあDirectXスレでこんなこと言うのもどうかとは思うけど。

250 名前:220 :2005/12/15(木) 23:16:11
>>242
やはり、手抜きは手抜きなりの結果でした。。。とほほ。
いろいろありがとうございます。
明日、「クロスフェードとは?」辺りから調べます。



■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.