2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2009/10/25(日) 02:06:24
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part25 【C】
http://pc12.2ch.net/test/read.cgi/tech/1251208220/

2 :デフォルトの名無しさん:2009/10/25(日) 02:50:26
>1乙です さっそく質問ですが、
ポリゴン1にテクスチャ1とテクスチャ2を重ねて貼って、
ポリゴン2にはテクスチャ1だけを貼りたい場合、どうすればいいんでしょうか?
頂点デクラレーションとか頂点ストリームとかできるだけ使いまわしてやりたいのですが

ポリゴン2にはテクスチャ2の変わりに全体が白あるいは透明のテクスチャを貼るなどすればできそうですが、
他に簡単な方法ありますか?

3 :デフォルトの名無しさん:2009/10/25(日) 03:07:59
DirectInputでのマウスの動きを読み取るのは実装できたのですが
それでFPSゲームのようにカメラを中心に視点を回転させたいのですが
どのようにすればよいのでしょうか?
よろしくお願いします

4 :デフォルトの名無しさん:2009/10/25(日) 03:16:52
>>2
テクスチャ2を使用するパターンと使用しないパターンの
ピクセルシェーダプログラムを記述して、techniqueで切り替えればよい。

>>3
確か2つか3つほど前のスレに同じ話題があった。
探せないならぐぐったほうが早いだろう。

5 :デフォルトの名無しさん:2009/10/25(日) 03:25:23
前スレの998の繰り返しになりますが、
DirectInputでジョイスティックの軸入力の分解能とか取得できますか?

6 :デフォルトの名無しさん:2009/10/25(日) 04:28:38
>4
できました ありがとうございました
テクニックで切り替えられるということを知らなかったです

7 :デフォルトの名無しさん:2009/10/25(日) 06:32:16
前スレでリストボックスを実装しようとしていたものです
とりあえずためしにビルドしてみたんですが、DXUTmisc.hの109行目のアサーションに引っかかりました

TYPE& GetAt( int nIndex ) const
{
assert( nIndex >= 0 && nIndex < m_nSize ); return m_pData[nIndex];
}

こういうのが出た場合、どこを調べればいいんでしょうか?

8 :デフォルトの名無しさん:2009/10/25(日) 08:43:41
Pシェーダーで普通にテクスチャを貼ったように
テクスチャを貼るにはどうすればいいの?

もしかして普通はテクスチャは複数より一枚だけなの?

9 :デフォルトの名無しさん:2009/10/25(日) 12:17:41
>>8
お前、学校で国語をもう一度勉強しなおせ。
お前のPCのディスプレイが他のヤツの目の前にあるわけでもないのに
その説明で質問の意図が伝わるわけ無いだろ。

プログラマブルシェーダーでテクスチャ貼るれてるのに
貼り方が分からんってどういうことだ。

テクスチャは複数より一枚だけってなんだ。日本語になっとらん。

10 :デフォルトの名無しさん:2009/10/25(日) 13:37:51
なにあんた
きもちわるい

11 :デフォルトの名無しさん:2009/10/25(日) 15:05:36
確かに日本語にはなっていない。
しかしこれ以上まともな質問文を書けるかなると
最近の若い子にはそれも難しいのかもしれない。

12 :デフォルトの名無しさん:2009/10/25(日) 15:19:03
日本語がまともに書けない人間がプログラムをまともに書けるかというと、
やっぱり無理というものだろう。

13 :デフォルトの名無しさん:2009/10/25(日) 15:49:47
自分の頭をまともに操れないひと
それを頭が不自由な人と呼びます
最近はめっきり殖えましたね

14 :デフォルトの名無しさん:2009/10/25(日) 16:16:36
ここって脳とか精神のスレだっけ?

15 :デフォルトの名無しさん:2009/10/25(日) 16:48:54
x めっきり

o めっぽう


16 :デフォルトの名無しさん:2009/10/25(日) 16:52:36
滅法界

17 :デフォルトの名無しさん:2009/10/25(日) 17:02:52
・何がしたいのか
・現状どうなっているのか
・それに対する自分の意見
・自分の環境は何なのか(OS,CPU,GPU)
・DirectXのランタイムをDebugRuntimeにして実行してエラーがあるのかどうか、あるならそのエラーは何なのか。

・可能ならサンプルをアップローダーに。

このくらいは質問するなら情報として欲しいわ。


18 :デフォルトの名無しさん:2009/10/25(日) 17:04:15
CPUってそんな影響する?

19 :デフォルトの名無しさん:2009/10/25(日) 17:09:45
ちょっとかまって欲しかっただけなんだ
ごめん

20 :デフォルトの名無しさん:2009/10/25(日) 21:05:16
D3DPOOL_MANAGEDで確保した頂点バッファって
速度気にしないなら頻繁に書き換えても支障はないですよね?

21 :デフォルトの名無しさん:2009/10/25(日) 21:17:17
お前らDX11使えよ!話がレガシーすぎる。

22 :デフォルトの名無しさん:2009/10/25(日) 21:20:37
>>21
バカはブログにでも書いてろ

23 :デフォルトの名無しさん:2009/10/25(日) 22:40:02
11の解説してるサイトなんて1箇所しかしらねぇ

24 :デフォルトの名無しさん:2009/10/25(日) 22:58:38
そんなことより忘れられそうなDX10の話してやれよ

まあメリットがわかんねえけど

25 :デフォルトの名無しさん:2009/10/25(日) 23:06:21
DirectX11で9,10,11対応のハードが使えるんだからDirectX10使う意味がねえ

26 :デフォルトの名無しさん:2009/10/25(日) 23:30:00
25の言ってることは正しいが、きっと伝えたい事とは別なんだろうな

27 :デフォルトの名無しさん:2009/10/25(日) 23:32:38
テッサレータでよりリアルな乳揺れを表現できるとなれば移行するしかないだろ

28 :デフォルトの名無しさん:2009/10/25(日) 23:39:10
もうOpenGLでいいや

29 :7:2009/10/26(月) 02:05:08
リストボックス実装しようとしてエラー出しまくってたけど、
結局、リストボックスの機能だけを実装するのは諦めて
DXサンプルの方を本体にして自分で作ったやつをそこに移しました
初期化とかウィンドウの作成とかDXUTの内部でやってて見えない所が多すぎて
正直これでいいのかとは思うけど、とりあえず望む画面はできました

30 :デフォルトの名無しさん:2009/10/26(月) 02:49:24
ソース公開してるのに・・・

31 :デフォルトの名無しさん:2009/10/26(月) 16:30:03
シェーダーをスキンメッシュに実装するのって
やっぱり各ブロックに適応するようにすればいいの?

それとももっと簡単な方法があったりするの?

32 :デフォルトの名無しさん:2009/10/26(月) 17:09:54
>シェーダーをスキンメッシュに実装
意味不明、プログラムの前に日本語を勉強してこい。

>各ブロック
ブロックの定義が不明。

33 :デフォルトの名無しさん:2009/10/26(月) 17:14:33
やっぱりザギンでシーメですかね?

34 :デフォルトの名無しさん:2009/10/26(月) 17:16:42
何この状況

35 :デフォルトの名無しさん:2009/10/26(月) 17:26:48
国語の先生がいるくさいです

36 :デフォルトの名無しさん:2009/10/26(月) 20:48:28
>31
各ブロックじゃなくて、各頂点のボックスに入れて実装する。
たぶんこれが一番簡単かな。
シェーダをボックスごとに対応させると高速化されてお勧め。



37 :デフォルトの名無しさん:2009/10/26(月) 20:52:07
DX11が本格的に流行るのはいつ頃に何だろ・・・
でも流行る頃には最初といろいろ仕様が変わってるんだろうなあ・・・

38 :デフォルトの名無しさん:2009/10/26(月) 21:25:14
シェーダーでスキンメッシュ
ttp://www.twin-tail.jp/wiki/index.php?%E3%82%B9%E3%82%AD%E3%83%B3%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AB%E6%8C%91%E3%82%80%E3%81%B9%E3%81%8F

39 :デフォルトの名無しさん:2009/10/26(月) 21:31:16
第一要因はWindows7の普及速度。
現時点で、DirectX11が使えるPCは1.52%、Windows7のみ。
10/28からはWindows UpdateによってVistaでDX11が使用可能になるので、計20.14%。
ただ、Vistaのシェアはもう落ち始めているので、XPユーザーの7への移行がどれだけ早く進むかが鍵になる。
Vistaのシェアがピークを超えて初めて減少へ : [特集]Windows 7 - Computerworld.jp
ttp://www.computerworld.jp/topics/win7/163870.html
ttp://www.computerworld.jp/images/_main/200910/1638702.jpg

第二要因はハードの普及。
AMDはほぼ全レンジでDX11を展開しつつあるが、NVIDIAは来年3月までにハイエンド〜ミドル、
そこから下はDX10.1でお茶を濁しただけでDX11対応予定は未定。
グラフィックチップ最大シェアを占めるIntelのDX11対応予定は、Larrabeeを除いて全く不明。

以上から、個人的にはDX11の本格利用は早くとも2011年以降で、それまではDirectX9で引っ張るんじゃないかと思う。
もしかしたら、移行期間の落としどころとしてDX11のDX10モードでの使用が流行る可能性も無いとはいえないがかなり微妙だな。
少なくともネイティヴDX10が闇から闇へ葬られるのは確定だろう。

40 :デフォルトの名無しさん:2009/10/27(火) 01:15:47
多分初歩の初歩過ぎてどこにも書いてないんだけど
3DにおけるX,Y,Zはfloatで設定するようなのですが
これがどういうことなのかまったくわかりません
どの初心者サイトもfloatで頂点を座標を記入していて
どうやってその数値を導き出したのか解説がありません

2Dの座標の場合はピクセル座標を入力すれば
思ったような図形がでわかりやすいのですが
2Dのように、ピクセルのX,Y座標を入力して点を描くには
どうすればいいでしょうか?

41 :デフォルトの名無しさん:2009/10/27(火) 01:22:53
ん?
いまいち意味がわからないんだが
それは3Dにおける(0,0,0)はどこなのかってこと?
それともある座標に配置するのに必要な行列はどうやって用意するのかってこと?

42 :デフォルトの名無しさん:2009/10/27(火) 01:32:51
画面左から10ピクセル上から10ピクセルの場所に点を打ちたいです
みたいな話じゃないのか

43 :デフォルトの名無しさん:2009/10/27(火) 01:38:58
D3DXVECTOR3 A(x,y,z)
か?

44 :40:2009/10/27(火) 01:49:17
>>41>>42>>43
そうなんです
うまく説明できないのですが
ローカル座標に対してワールド座標変換などいろいろ使って
画面に図形を表示すると思うのですが、
(x,y)の位置に点を打つにはその座標変換にどのように値を入れればいいのかが
よくわからないんです。すべてfloatの値で入力するようになっていて
そのfloatの値が意味するものが何かがわからないので、どうすればいいかわからないのです

最終的にやりたいのは、囲碁の盤面のように、長方形のマスを並べて格子状を描きたいだけです

45 :デフォルトの名無しさん:2009/10/27(火) 01:53:15
なんか完全な初心者くさいけど
int a;
みたいに
float x,y,z;
D3DXVECTOR3 point(x,y,z):
っていう
または
D3DXMATRIX matWorld;
D3DXMatrixTranslation(&matWorld,x,y,z);
か・・・

うーん・・・よくわかんねえ
少なくとも何も表示されてない
ウィンドウを表示するくらいはできてないとなんとも・・・

46 :デフォルトの名無しさん:2009/10/27(火) 01:54:18
3D空間の長さの単位は特に決まってるくて自分で決めるもの
長さ1をタバコ1個分としてもいいし東京ドーム1個分としてもいい

47 :40:2009/10/27(火) 02:05:13
>>46
なるほど、ローカル座標はとくにこだわらなくていいということですよね?
ローカル座標のプリミティブをどれぐらいの大きさにするかは
あとの座標変換で処理すると・・・
でも、そこで問題なのが

2Dのピクセル座標の場合は、回転行列や平行移動行列を使って
直線を任意の位置に回転させたり移動させたりするのはできるけど

3Dの場合は座標がfloatで入力しないといけないのですが
平行移動行列にどういう値をいれれば任意の位置に移動できるかがわかりません

例えば、1.0fにすると画面の端まで直線が伸びる
ということは1.0fの頂点がビューポートの最大値のピクセル座標の点という風に自動で計算されているということですよね?
0.5fだと画面の半分の位置。ビューポートは4:3のアスペクト比なので座標変換しないと
0.5fの4辺の長さを持つ長方形は正方形で表示されないですよね?

48 :デフォルトの名無しさん:2009/10/27(火) 02:08:01
>47
割合で座標を指定すると考えればいいよ

X=0.5,y=0.5の場所に表示を画面(640,480)に対して行えば(320,240)になるってこと
そのために小数点で細かく指定できたほうがいいよねっていう

49 :デフォルトの名無しさん:2009/10/27(火) 02:24:59
とおもったら
>最終的にやりたいのは、囲碁の盤面のように、長方形のマスを並べて格子状を描きたいだけです

ならば
変換済み頂点(ディスプレイ座標)を使っておくれ
ttp://marupeke296.com/DXG_CreateBorad.html
参考になるかな

50 :40:2009/10/27(火) 02:25:42
>>48
なるほど、割合ですか
平行移動行列も割合で入力するということですね

あと、ワールド座標の(0,0,0)は画面の中心になるというのも混乱してた理由でした
(ワールド座標変換したら左上が原点になると思ってた)
もう少しいろいろやってみます
ありがとうございます

51 :40:2009/10/27(火) 02:42:39
>>49
まさにこういうのを探していました。
参考にさせていただきます
ありがとうございました

52 :デフォルトの名無しさん:2009/10/27(火) 03:01:56
ある頂点が画面のどこに表示されるかなんて予測できないよなあ。
視点の手前にあればきっと画面のどっかに表示されるだろレベル。
綿密に計算すればできるけど。

53 :デフォルトの名無しさん:2009/10/27(火) 03:04:49
その頂点座標がわかってれば簡単に出るだろ

54 :デフォルトの名無しさん:2009/10/27(火) 03:07:05
>>52
( ´・ω・)つ D3DXVec3Project

55 :デフォルトの名無しさん:2009/10/27(火) 03:08:12
ageちゃったスマソ(´・ω・`)

56 :40:2009/10/27(火) 06:06:12
dx=ディスプレイのX座標、width=ディスプレイの幅
float x=-1f + dx/ width/2;

これでできました

57 :デフォルトの名無しさん:2009/10/27(火) 07:08:02
そもそもきちんと理解して使っているのなら、
特定のZ位置で、スクリーン座標と座標体系を一致させたカメラぐらい、
簡単に作れるんだが。

58 :デフォルトの名無しさん:2009/10/28(水) 19:48:03
int image1 = LoadGraph("char.png");
int image2 = LoadGraph("back.png");

if(Buf[KEY_INPUT_Z] == 1)
{
DrawGraph( 0 , 60 , image1 , FALSE ) ;
}
if(Buf[KEY_INPUT_X] == 1)
{
DrawGraph( 0 , 60 , image2 , FALSE ) ;
}

これを実行して
キーを押すと
数秒間、画面が真っ暗になって
もどって
右下に「ディスプレイ ドライバの応答停止と回復」って出るんですけど
パソコンの問題でDirectXとは関係ないですか?
OSはVistaです

59 :デフォルトの名無しさん:2009/10/28(水) 19:58:21
そもそも
LoadGraphとかDrawGraphとかの独自関数の中身なんてしったこっちゃないんだけど
毎ループ画像読み込みしてるから死んでるとか

60 :デフォルトの名無しさん:2009/10/28(水) 20:02:26
DXライブラリとかそんな感じの関数だったなゲ製作該当スレあるんじゃない

61 :デフォルトの名無しさん:2009/10/28(水) 20:08:05
初期化し忘れがあるとそういう状態によくなる

62 :デフォルトの名無しさん:2009/10/28(水) 21:25:28
まずライブラリの作者に聞け馬鹿。
ってこったなぁ。

63 :デフォルトの名無しさん:2009/10/29(木) 00:14:50
たまにDXライブラリの質問が来るよな。
DirectX=DXって勘違いするのかな。

64 :デフォルトの名無しさん:2009/11/01(日) 18:35:16
DirectXの質問ではないのですが、ゲームを作る場合3Dオブジェクトやテクスチャ作成の必要がありますが、
皆さんはどういうソフトを使ってますか?
お勧めのものがあったら教えてください

65 :デフォルトの名無しさん:2009/11/01(日) 18:39:48
スレチ

66 :デフォルトの名無しさん:2009/11/01(日) 19:49:23
ゲーム製作技術板にそんな内容のスレがあった希ガス

67 :デフォルトの名無しさん:2009/11/01(日) 21:25:07
D3DX: ID3DXEffect::GetParameterElement: Root handle has no elements

Direct3D9: (ERROR) :Stream 0 size is too small

エラーの意味がよくわかりません
ひとつめのファイルを読み込んだときは正常に動作するけど、
ふたつめのファイルを読み込むと、初期化失敗してるのか上記のエラーがでます
Root handleってなんですか

68 :67:2009/11/01(日) 22:38:30
エラーの意味はよくわからないけど、とりあえずエラーは出ないようにできました
ただ、大したことしてないのにCPU使用率が思ったよりいってて不安なんですが、
(Core2DuoE8400でCPU使用率5〜15%、メモリ22MB使用)
DirectXで作るとこんなものなんでしょうか?
フレームとかを作って秒間60回以上は描画しないようにしたら下がるでしょうか?

69 :デフォルトの名無しさん:2009/11/01(日) 23:00:15
>>68
お前の作ったプログラムの内容も分からないのに、
「大したことをしていない」という情報だけで「こんなもの」と聞かれたって、
それで他人に説明したつもりなのか?
いったいどれだけ脳みそが腐っているんだ?

70 :67:2009/11/01(日) 23:11:35
>68
すいません、説明不足でした
ファイルの情報をもとに数十個の四角ポリゴンをテクスチャをつけて描画しています
ユーザ側の入力がなければ画面は変化しません
できれば、67の質問の方にも答えてもらえると助かります

71 :デフォルトの名無しさん:2009/11/02(月) 07:00:12
DirectXに四角ポリゴンなど無い

72 :デフォルトの名無しさん:2009/11/02(月) 08:17:59
CPU100% 使って処理し続けているなら 100% 使う
使っていないなら使わない

73 :デフォルトの名無しさん:2009/11/02(月) 08:40:17
"DirectXで作るとこんなもの"じゃなくて
"67の技術力がこんなものしか作れない程度"だろ

74 :デフォルトの名無しさん:2009/11/02(月) 08:54:40
>数十個
いくつなのか分からない
>テクスチャ
解像度も枚数も分からない
>エラーの意味はよくわからないけど、とりあえずエラーは出ないようにできました
何を直したのかも分からない

自ら情報を出さずに勝手に考えてくれるだろうと怠ける人間は、
プログラムを組むのには向かない

75 :デフォルトの名無しさん:2009/11/02(月) 10:49:37
言葉の意味はわからんが、とにかくすごい自信だ。

76 :デフォルトの名無しさん:2009/11/03(火) 00:40:44
なんでおまえらは変な奴が来たら全力で相手をするかな。

77 :デフォルトの名無しさん:2009/11/04(水) 10:40:39
ポストエフェクトをかけようと思って
テクスチャをRenderTargetに据えてレンダリングしてるんだけど、
RADEON、Intelオンボードでは正常に表示されるのに、
GeForceだけ表示がおかしくなる。

同じようなことになったことある人っていない?

78 :デフォルトの名無しさん:2009/11/04(水) 11:20:37
そのGeForceの型番は?

79 :デフォルトの名無しさん:2009/11/04(水) 13:03:21
DXUTのsimplesampleがノートン2010のファイルインサイトという機能に引っかかり実行を停止されます

これってこのプログラムを使ってる人がそんな多くないから、とりあえず引っ掛けておくかとかそういう意味であってます?

80 :デフォルトの名無しさん:2009/11/04(水) 13:12:36
質問する場所が違うだろ。
ここは個別ソフトのサポート場所じゃない。
サポセンにでも聞けよ。

81 :デフォルトの名無しさん:2009/11/04(水) 14:02:17
>>78
GeForce 9800GT と、
GeForce GT 220 。

RADEON HD 4850、
Intel GMA X4500
だと問題なかった。

DirectX9を使用。

XP、Vista、7、x86/x64と比べてるけどOSの差は見られない。


82 :デフォルトの名無しさん:2009/11/04(水) 15:02:23
>>81
ソースうp


前にインデックスバッファを途中から読もうとしたら
GeFoとIntelは想定通りに動いたのに
Radeは先頭からしか読めなかったとかはあった

83 :デフォルトの名無しさん:2009/11/04(水) 15:57:30
>>82
了解。

プログラム本体はC#で書いていてサンプルにならないので、HLSLだけアップロードした。
http://www.dotup.org/uploda/www.dotup.org330068.zip.html

>前にインデックスバッファを途中から読もうとしたら
>GeFoとIntelは想定通りに動いたのに
>Radeは先頭からしか読めなかったとかはあった
かなり試行錯誤が必要だったけど、一応3機種ともうまく動く方法があったと思う。
今はそういう動かし方(インデクスバッファを途中から使用する)をしてないのでよく分からない。

84 :デフォルトの名無しさん:2009/11/04(水) 16:33:05
こういうのは大抵バグがあってラデでたまたま動いてるだけ

85 :デフォルトの名無しさん:2009/11/04(水) 16:35:07
アルファブレンド使うならSrcBlendとDestBlendだけじゃなくてBlendOpも明示的に指定しようね。
デフォルト値がADDだから、恐らく今回の問題とは関係ないだろうけど。

86 :デフォルトの名無しさん:2009/11/04(水) 23:27:45
>>84,85
どもども。
色々試してみた結果、どうもポストエフェクトをかける前の段階、
DPOOL_DEFAULTで確保したRenderTargetのテクスチャに正しく書き込めていないor読み出せていないことが分かった。
DPOOL_DEFAULTで確保したテクスチャって画像のデータを取り出す方法ありますか?
フレームバッファはGDI経由で取れるんだけどなぁ。

87 :デフォルトの名無しさん:2009/11/05(木) 00:10:00
ふーん

88 :デフォルトの名無しさん:2009/11/05(木) 01:49:54
>>86
GetRenerTargetDataとか

89 :デフォルトの名無しさん:2009/11/05(木) 18:33:35
IDirectInputDevice8::GetDeviceState メソッドが0x8007000cを返します
ttp://msdn.microsoft.com/ja-jp/library/cc351886.aspx
ttp://msdn.microsoft.com/ja-jp/library/cc351820.aspx
MSDNを読んでもどのエラーが返ってきているのか分かりません
エラー値はどうやって調べればいいのでしょうか?

90 :デフォルトの名無しさん:2009/11/05(木) 18:43:23
DXGetErrorString
DxGetErrirDescription

91 :デフォルトの名無しさん:2009/11/05(木) 19:13:09
ありがとうございました

92 :デフォルトの名無しさん:2009/11/05(木) 19:15:40
>>89
DirectX Error LookupっていうツールがSDKに入ってるよ。
エラーコード入れたら詳細を教えてくれる。

93 :デフォルトの名無しさん:2009/11/05(木) 21:26:09
Direct3D9: (ERROR) :   [0] ADDRESS
終了するとこんな感じのエラーが続くんですが、メモリリークというやつでしょうか?
与えられた数値からポリゴンの頂点情報の作成を行う関数があり、
その関数を二度目に使用する行をコメントアウトすると発生しなくなるので、そこが原因だと思われます
頂点バッファを毎回Release→Createするようにしてみましたが変わりません
頂点情報を書き換える場合、何か別に開放しなければいけないものがあるんでしょうか?

94 :93:2009/11/05(木) 22:02:57
問題の関数は、最初は初期化のときに呼び出して(このときは問題ない)、
次からはメッセージループ中に呼び出しています
頂点情報を書き換えてポリゴンを移動させているのですが、
pd3dDevice->CreateVertexBufferもしくは
D3DXCreateTextureFromFileをその関数内で行うと
アプリケーションの終了時に必ず上記のようなエラーが出てしまいます
LPDIRECT3DTEXTURE9およびLPDIRECT3DVERTEXBUFFER9を
デストラクタから呼び出した関数で全てリリースしているのは確認しているのですが、
その後にエラーが起きてしまいます
分かる方いたら教えてください

95 :デフォルトの名無しさん:2009/11/05(木) 22:05:25
説明100行書くよりも10行のコードを見た方が早い、
問題と思われる部分を貼り付けてみれ

96 :デフォルトの名無しさん:2009/11/05(木) 22:30:34
質問があります。
DirectX9環境で、
pD3DDevice->CreateTexture(1024,1024,1,0,D3DFMT_A8R8G8B8,D3DPOOL_MANAGED,&pTexture,NULL);
で作成したテクスチャーをSetTexture → DrawPrimitiveUpで描画したいのですが上手く表示できません。
Spriteを使って表示させた場合は上手く表示できるのでテクスチャの作成に問題はないと思うのですが、
表示方法の問題でしょうか?

Spriteでは正常に表示でき、DX8上の同様なコードではうまく動きましたが、
DX9上でSetTextureでは表示出来ないのです。
D3DPOOL_MANAGEDが臭いのですが、動的にテクスチャーを変化させるため、
D3DPOOL_MANAGEDを使わなくてはならないのです。
何かおかしいところがあったら教えてください。m(__)m



97 :デフォルトの名無しさん:2009/11/05(木) 22:31:36
↓表示周りのルーチン
#define D3DFVF_VERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1)
typedef struct _D3DVERTEX_ {
float x,y,z;
float rhw;
DWORD color;
D3DXVECTOR2 tx;
}D3DVERTEX;

void drawtexture(int n,int x,int y,int a)
pD3DDevice->SetFVF(D3DFVF_VERTEX);
pD3DDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
pD3DDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAOP,D3DTOP_MODULATE);
pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAARG2,D3DTA_TEXTURE);
pD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_CURRENT);
pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,TRUE);
pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
pD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);



98 :デフォルトの名無しさん:2009/11/05(木) 22:32:33
なんで毎度毎度まともにソースを出さずに、断片的な情報しか出さないんだろう?

99 :デフォルトの名無しさん:2009/11/05(木) 22:33:13
pD3DDevice->BeginScene();
pD3DDevice->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0x00,0x00,0x00),1.0,0);

D3DVERTEX pV[4];

// 座標設定
float w = (float)800/(float)1024;
float h = (float)600/(float)1024;
pV[0].x = (float)x;
pV[0].y = (float)y;
pV[0].z = (float)0;
pV[0].rhw = 1.0f;
pV[0].color = D3DCOLOR_ARGB(a&0x0FF,0,0,0);
pV[0].tx = D3DXVECTOR2(0.0f,0.0f);

pV[1].x = (float)(x+800);
pV[1].y = (float)y;
pV[1].z = (float)0;
pV[1].rhw = 1.0f;
pV[1].color = D3DCOLOR_ARGB(a&0x0FF,0,0,0);
pV[1].tx = D3DXVECTOR2(w,0.0f);


100 :93:2009/11/05(木) 22:33:29
TranslateMessage(&msg);
DispatchMessage(&msg);
}else {
m_draw->Move(pd3dDevice, 1, L"Data\\maru.png", 300 + mx, 300 - my, 200, 200);
m_draw->Draw();

    }
    return( int ) msg.wParam;


以上がメインのcppファイルの問題部分を削ったものです 4行目をコメントアウトするとエラーは消えます
以下が描画クラスの関数です

HRESULT MyDraw::Move(LPDIRECT3DDEVICE9 pd3dDevice, int id, WCHAR* str,int m_x, int m_y, int width, int hight)
{
pD3DDevice->CreateVertexBuffer( 4*sizeof(VERTEX_POS),D3DUSAGE_WRITEONLY,0,D3DPOOL_MANAGED, &m_pV_POS[id], NULL );
MY_VERTEX_POS* v0;
m_pV_POS[id + 110]->Lock( 0, 0, (void**)&v0, 0 );
v0[0].p = D3DXVECTOR3((float)(m_x - 400), (float)(m_y - 300 + hight), 0.0f );
v0[1].p = D3DXVECTOR3((float)(m_x - 400 + width), (float)(m_y - 300 + hight), 0.0f );
v0[2].p = D3DXVECTOR3((float)(m_x - 400), (float)(m_y - 300), 0.0f );
v0[3].p = D3DXVECTOR3((float)(m_x - 400 + width), (float)(m_y - 300), 0.0f );
m_pV_POS[id]->Unlock();
D3DXCreateTextureFromFile(pD3DDevice, str, &m_pTexture[id + 110]);
return S_OK;
}
頂点の作成、テクスチャの読み込みは、どちらか片方をコメントアウトしてもエラーは消えません
両方ともコメントアウトするとエラーは消えます

頂点、テクスチャ、どちらのオブジェクトもデストラクタから呼び出した関数でReleaseしています

101 :デフォルトの名無しさん:2009/11/05(木) 22:34:16

pV[2].x = (float)(x+800);
pV[2].y = (float)(y+600);
pV[2].z = (float)0;
pV[2].rhw = 1.0f;
pV[2].color = D3DCOLOR_ARGB(a&0x0FF,0,0,0);
pV[2].tx = D3DXVECTOR2(w,h);

pV[3].x = (float)x;
pV[3].y = (float)(y+600);
pV[3].z = (float)0;
pV[3].rhw = 1.0f;
pV[3].color = D3DCOLOR_ARGB(a,0,0,0);
pV[3].tx = D3DXVECTOR2(0.0f,h);

//表示
pD3DDevice->SetTexture(0,pTexture0[n]);
pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,2,pV,sizeof(D3DFVF_VERTEX));

pD3DDevice->EndScene();


102 :デフォルトの名無しさん:2009/11/05(木) 22:39:54
テキストファイルでくれ。

103 :96:2009/11/05(木) 22:45:50
ttp://www.dotup.org/uploda/www.dotup.org333682.lzh
お願いします。

104 :デフォルトの名無しさん:2009/11/05(木) 22:50:18
>>100
メモリリーク。デストラクタで開放してるって言うけど、
同じポインタに何度も上書きして、昔使ってたリソースを行方不明にしてるんじゃないの?
つまりデストラクタでは、最後に作成したリソースしか開放できてないんじゃないの?
毎フレーム、リソースを作成する必要もないし。

105 :93:2009/11/05(木) 22:56:54
>104
ありがとうございます 開放できてなかったんですね
頂点バッファ作成ととテクスチャ読み込みの前の両方に、開放処理を入れたら解決しました

106 :ダッックス ◆0Gq0NobOa. :2009/11/05(木) 23:24:11
> pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN,2,pV,sizeof(D3DFVF_VERTEX));
最後の引数おかしくね?

107 :デフォルトの名無しさん:2009/11/05(木) 23:24:55
某板で使ってたコテ出してしまったorz

108 :96:2009/11/05(木) 23:41:21
>>106
ご回答ありがとうございます。
色々いじってみても表示されません(T^T)
D3DFVF_VERTEXと一致させないといけないのではないのでしょうか?
この場合には、値をどうすればいいのでしょうか。

109 :デフォルトの名無しさん:2009/11/05(木) 23:49:35
sizeof(D3DVERTEX)
頂点配列の要素の間隔だから、(余計なことを考えないなら)一頂点辺りのバイト数になって、単純にこうなる。

110 :96:2009/11/06(金) 00:00:08
ありがとうございます。
なぜか動かないようです。
今日は遅いので、また明日実験してみます。

111 :デフォルトの名無しさん:2009/11/06(金) 01:38:45
m_pV_POS[id + 110]->Lock( 0, 0, (void**)&v0, 0 );



m_pV_POS[id]->Unlock();

これがあやしいぞ

112 :93:2009/11/06(金) 02:12:18
>111
それは自分の質問したやつで、もう解決済みです
同時にソース貼ったからややこしいですが
配列の数字がおかしいのは、いろいろいじってる途中だったのがが残ってしまってました

113 :デフォルトの名無しさん:2009/11/06(金) 07:03:18
http://www.google.co.jp/search?q=%83_%83b%83b%83N%83X+%81%9F0Gq0NobOa.

114 :96:2009/11/06(金) 14:28:20
今朝、ソースを吟味して再度やってみたら表示出来ました。
>>106
>>109
さん、ありがとうございます。

115 :デフォルトの名無しさん:2009/11/06(金) 17:50:07
質問です、2Dゲームを作るためのスプライトがありますけど
ここを見たところ評判があまりよろしくないようなので別の方法でやろうと思っているのですが、
スプライト以外で2Dゲームを作る場合は板ポリゴンを作成して、そこにSetTexture関数で画像を張り付けるというのが
主流なんでしょうか?

116 :デフォルトの名無しさん:2009/11/06(金) 18:08:31
俺はそんな感じだけど機能に不満が無ければ既にあるものを使えばいい

117 :デフォルトの名無しさん:2009/11/06(金) 20:37:29
実際D3DXのスプライトもXNAのスプライトもそうしてるんだろ。

118 :デフォルトの名無しさん:2009/11/06(金) 20:59:24
そもそもの考え方がおかしい。
>スプライト以外で2Dゲームを作る場合は板ポリゴンを作成して
全く逆。
3Dデバイスを経由する場合は、板ポリゴンを作成してスプライトを実装しているのであって、排他な物ではない。

119 :デフォルトの名無しさん:2009/11/06(金) 21:16:00
マウスの状態取得にDirectInputを利用するメリットは何かあるんでしょうか?
GetCursorPos()とかWM_LBUTTONDOWNなんかのメッセージとかを使うよりも
場合によって良いことがあるなら教えてください

120 :デフォルトの名無しさん:2009/11/06(金) 21:20:50
単純に移動量を受け取りたい場合以外は利用価値無し。

121 :デフォルトの名無しさん:2009/11/06(金) 21:25:19
ありがとうございました

122 :デフォルトの名無しさん:2009/11/06(金) 22:30:07
クラス設計ってどうしてますか?
メインwindowsを生成するクラス、direct3d関連のクラス、ゲーム関連のクラスって分けたほうがいいですか?




123 :デフォルトの名無しさん:2009/11/06(金) 22:35:41
DirectX関係ないし好きにすればいいと思うよ
設計は口で言われて動こうなるものじゃないし
「あーしとけば良かった…」という失敗を何度か繰り返して身につくものだ

124 :デフォルトの名無しさん:2009/11/06(金) 22:47:05
とりあえずハードに依存する部分は完全に切り離すように心がければいい希ガス

125 :デフォルトの名無しさん:2009/11/06(金) 22:50:02
抽象的なゲームキャラのクラスに仮想関数で一般化した描画関数を設けるのは、最初はきれいな設計だと思っても
いつもあとになって使い物にならなくなっちゃう。


126 :デフォルトの名無しさん:2009/11/06(金) 23:37:48
>>116-118
レスありがとう、もう少し勉強してから決めることにします。

127 :デフォルトの名無しさん:2009/11/07(土) 01:33:24
既に作ってあるテクスチャのサイズを変えたり画像を変えたい場合、
一回開放してからまたCreateTextureする以外に方法があるでしょうか?

128 :デフォルトの名無しさん:2009/11/07(土) 01:35:30
サイズやフォーマットが違ったら作り直すしかないんじゃね?
上記が一緒ならロックして色情報だけ書き換えるということはできるが

129 :デフォルトの名無しさん:2009/11/07(土) 01:54:28
わかりました
どうもありがとうございます

130 :デフォルトの名無しさん:2009/11/07(土) 09:51:46
シェーダ2.0が使えないグラボって、どのくらい昔の世代になるの?

131 :デフォルトの名無しさん:2009/11/07(土) 10:19:34
GeForce4の時代が1.x系の最後

132 :デフォルトの名無しさん:2009/11/07(土) 10:33:31
サンクス 7年前の型か
じゃあ自作のをネット公開しようと思ったときでも、
シェーダ2.0で書く分には環境の違いはあんま気にしなくても大丈夫ってことかな

133 :デフォルトの名無しさん:2009/11/07(土) 11:20:59
今つかってるノートPCのVaio-TypeTに乗ってるINTELチップですら
シェーダーモデル4.0対応の時代なんだぜ。

134 :デフォルトの名無しさん:2009/11/07(土) 23:53:56
FlashのActionScript?というのを使えば、
3DはDirectX、2DはFlashというように同時に使うことができるんでしょうか。

135 :デフォルトの名無しさん:2009/11/08(日) 00:14:12
速度を求めないなら何でも好きに使えばいい。

136 :デフォルトの名無しさん:2009/11/08(日) 00:28:34
>>134
ムリ

137 :デフォルトの名無しさん:2009/11/09(月) 00:39:49
HLSLについての簡単な質問なんですが、こちらで聞いてもよろしいでしょうか。

138 :デフォルトの名無しさん:2009/11/09(月) 00:51:35
おk

139 :デフォルトの名無しさん:2009/11/09(月) 21:20:54
聞かないのかよ!

140 :デフォルトの名無しさん:2009/11/09(月) 22:33:49
すいません。それでは質問させていただきます。

ピクセルシェーダで深度DEPTHを出力する際に、その値は頂点シェーダで変換された座標の z/wということになるんでしょうか。
Direct3D 9 の環境なんですが、固定パイプラインで描画した場合はきれいに表示される一方で、シェーダを使って描画しようと
すると、微妙に前後関係がおかしくなったところが出てきてしまいます。

141 :デフォルトの名無しさん:2009/11/09(月) 22:52:03
深度を書き込むところはz/wで良い
実際に影を書き込むところでZ値の誤差を考慮に入れてないとか

142 :デフォルトの名無しさん:2009/11/09(月) 22:59:15
おっしゃるとおり、誤差を意識していませんでした。
もう少し試行錯誤してみます。ありがとうございました。

143 :デフォルトの名無しさん:2009/11/10(火) 01:01:41
つかピクセルシェーダーでDEPTHの出力すると重くなるぞ。
特定の演出で自分で出力とかするのでなければ出力しない方がいい。

ピクセルシェーダーで出力しなけりゃデバイスが標準の方法で勝手にやってくれる。

144 :デフォルトの名無しさん:2009/11/10(火) 01:28:25
便乗してピクセルシェーダー関連で質問させてください。
もしかして変換済みメッシュ(D3DFVF_XYZRHW)はPSスルーしますか?


145 :デフォルトの名無しさん:2009/11/10(火) 01:29:34
VSはスルーだけどPSは通る

146 :デフォルトの名無しさん:2009/11/10(火) 01:46:34
>>145
おお、助かります。
サンプルらしいサンプルが無かったのでどうなのかわからずですた。
何でPS通ってくれないのかもうちょっと調べます。
ありがとうございます。


147 :デフォルトの名無しさん:2009/11/10(火) 09:20:37
そもそもちゃんとPSセットしてるのか?

148 :デフォルトの名無しさん:2009/11/10(火) 17:40:13
C#でDirectXやろうと思ってSDKインストールしたけど
(SDK ルート)\Samples\Managedなんて見当たらないし
日本語版のhelpもダウンロードしてなにやらインストールしたようだが
まるでどこにも関連付けされてないようだ・・・・

なにもわからん
DirectX 9.0 for Managed Codeって別にダウンロードしなきゃならんの?

149 :デフォルトの名無しさん:2009/11/10(火) 17:46:13
>>148
MDXはもうやってない。
サンプルのmanagedは2007あたりのSDKからついてない。
ライブラリそのものは1.1系がまだついてるが。

MS純正はDirectX系はXNAと、10以降はWindowsAPICodePackでやるしかないかも。

150 :デフォルトの名無しさん:2009/11/10(火) 17:47:05
MSにこだわらなけりゃSlimDXあたりがよさげ

151 :デフォルトの名無しさん:2009/11/10(火) 18:16:16
要するに今は時期が悪い

152 :148:2009/11/10(火) 18:32:09
orz・・・

153 :デフォルトの名無しさん:2009/11/10(火) 19:00:04
代替があるんだからorzしなくてもいいんじゃないか。

154 :デフォルトの名無しさん:2009/11/10(火) 19:39:22
つーか、VC++使うべき

155 :デフォルトの名無しさん:2009/11/10(火) 19:53:36
D3D9にはTextureShaderというものがあって
HLSLでテクスチャフィルが出来るのだが、
HLSLをコンパイルした結果、SIMDに最適化したコードが生成されるのなら
プチGPGPUとして使えるのでは?と考えているのだが、
誰か試してくんない?言っとくけど俺は面倒だから嫌だから。

156 :デフォルトの名無しさん:2009/11/10(火) 20:21:17
>>155
なんでそんな意味のないことを思い付くの?

157 :デフォルトの名無しさん:2009/11/10(火) 21:11:09
質問よろしいでしょうか?

N 円の借金がある.年利 a % の利息が付くとして,毎年 b 円返済したなら 何年で返済できるか計算するプログラムを作成せよ.
(N, a, b はキーボードから入力する)
ただし,無限ループに陥らないように工夫すること.
また,利息は返済前にかかるとせよ.なお,利子による端数(1円未満の 利子)は切り捨てること.

という問題をしているのですが、

#include <stdio.h>

int main(void){

int n, a, b;
int i, judge;
judge=0;
i=1;
printf("あなたの借金と、その年利、毎年の返済金を入力してください。\n");
printf("借金N円:"); scanf("%d",&n);
printf("年利a%:"); scanf("%d",&a);
printf("返済金b円:"); scanf("%d",&b);


158 :デフォルトの名無しさん:2009/11/10(火) 21:12:16
気が狂ってんのかこいつ。

159 :157:2009/11/10(火) 21:12:45

do{
n = n*( 1 + a/100);
i=i+1;
if(n < n*( 1 + a/100)-b){
printf("残高が前年度より高くなっています。\n");
judge=1;
break;
}
}while(n>b);
if(judge==0){
printf("借金を返済するまでにかかる年数は%d年である。\n",i);
 break;
}
if(judge==1){
printf("このままでは借金は返せないので、終了します。\n");
 break;
}
return(0);
}

と打ち込むと、if文の中の"break"が定義されていない演算子だとか、
(34) : error C3872: '0x3000': この文字を識別子で使用することはできません
(38) : error C3872: '0x3000': この文字を識別子で使用することはできません

などが出ます。だれかアドバイス宜しくお願いします。


160 :デフォルトの名無しさん:2009/11/10(火) 21:14:54
スレチ

161 :デフォルトの名無しさん:2009/11/10(火) 21:15:53
DirectX SDKは入れましたか?

162 :157:2009/11/10(火) 21:16:09
すいません。間違って書き込みました。

無視してください

163 :デフォルトの名無しさん:2009/11/11(水) 02:13:34
スキンメッシュにアニメーションをさせたら一応動くんだけど
一定時間たつとアニメーションのスピードがものすごく速くなるんだけど
これってそういうもんなの?

164 :デフォルトの名無しさん:2009/11/11(水) 02:24:43
んなことない

165 :デフォルトの名無しさん:2009/11/11(水) 19:13:11
DirectX9SDKについているmesh viewerでメッシュの表示がおかしくなります。
ですがmesh optionで32ビットインデックスにチェックすると正常に表示、アニメーションされます。
ちなみにXファイルはxsiでエクスポートしたものです。
頂点数が12個の単純なデータで、Xファイルのinndex値も問題ありません。

166 :デフォルトの名無しさん:2009/11/11(水) 19:15:03
問題を起こすXファイルをアップできないか?

167 :デフォルトの名無しさん:2009/11/11(水) 19:50:08
>166
すみません、自己解決しました。
全てのボーンにキーを設定したら正常に動きました。

168 :デフォルトの名無しさん:2009/11/12(木) 00:34:25
LPD3DX○○って参照されたらaddrefとかしないといけないんですか?

169 :デフォルトの名無しさん:2009/11/12(木) 02:53:45
ttp://www.nicovideo.jp/watch/sm8706186 これのおまけのソースで
#include <d3dx.h> したいんだけど
DirectX7のSDKは どこでダウンロードできる?

DirectX9にd3dx9.hは あったのだけど…

170 :デフォルトの名無しさん:2009/11/12(木) 07:31:38
そんなもんねーよ(笑)

171 :デフォルトの名無しさん:2009/11/12(木) 07:35:46
>>169
ちょっと前まではいくつかDLできるとこあったけど軒並み死んでるね
今、正規の方法で入手するにはDirectX7関連の書籍についてくるCDくらいしかないんじゃ?
200Mくらいのアップローダ出してくれたら上げてもいいけど

172 :デフォルトの名無しさん:2009/11/12(木) 08:37:45
axfc

173 :デフォルトの名無しさん:2009/11/12(木) 11:30:47
バッファの画像データからテクスチャを作成したい場合、どうすればいいんでしょうか?
テクスチャを作ってLockRectしてピクセルごとに書き込むとかしかないんでしょうか

174 :デフォルトの名無しさん:2009/11/12(木) 11:37:42
DirectInputで振動させたいからと
ttp://princess-tiara.biz/directx/?chapter=16
ここのサンプルを少し修正してビルドしてみたんだけど、どうやっても振動しない。
振動対応のジョイスティックなのは間違いないので正常であれば振動するはずなんですが。
詳しい人、何が間違ってる可能性あるとかアドバイスくれませんか。

ジョイスティックのボタン入力などは正常に動きました。

またXInputはXBOX360コントローラーじゃないので使ってないんですが、そっち使った方が良いでしょうか?

175 :デフォルトの名無しさん:2009/11/12(木) 13:56:24
>>163
advancetimeに10000とかやるとなる

なんでかは知らないけど

176 :デフォルトの名無しさん:2009/11/12(木) 14:56:08
>>173
D3DX使ってもいいなら
D3DXCreateTextureFromFileInMemoryとか

177 :173:2009/11/12(木) 18:39:43
>176
ありがとうございました
やっぱりこういう便利な関数がそろってるんですね
d3dx9.libとd3dx9tex.hを含めるだけですか

178 :デフォルトの名無しさん:2009/11/12(木) 19:47:01
DirectSoundを使ってみようと思って調べたら、wavファイルしか使えない様子ですが、
ゲームではwav形式のファイルを使うのが普通なんでしょうか?

179 :デフォルトの名無しさん:2009/11/12(木) 20:22:39
内部で自分で wav に展開してから再生する

180 :169:2009/11/12(木) 20:56:14
とりあえず別アプローチしてみる ありがとね

181 :デフォルトの名無しさん:2009/11/12(木) 22:48:33
>>179
ということは、どうやっても再生できないものは再生できない?

182 :デフォルトの名無しさん:2009/11/12(木) 22:52:10
wavにデコードしてからバッファに書き込めばよい。

183 :178:2009/11/12(木) 23:02:59
どうも とりあえずwavで再生できるようにすれば、
他の形式での再生はそれほど苦労しないということでいいんでしょうか?

184 :デフォルトの名無しさん:2009/11/12(木) 23:06:37
まったく違う

185 :デフォルトの名無しさん:2009/11/13(金) 00:46:31
DirectSoundは生波形データしか再生できない。
wavは生波形データと、長さやサンプリング周波数などの情報ヘッダで構成されている。
なのでmp3だろうがoggだろうが、wavにデコードしてDSoundで再生しているわけである。
いっぺんにデコードするか、少しずつ読み込みながらデコードするかはまた別の話。

186 :通りすがり:2009/11/13(金) 01:04:19
D3DXのフォントは遅いと聞いたのですが、皆さんはどのようにテキストを描画しているのでしょうか。
やり方とか教えてください。

187 :デフォルトの名無しさん:2009/11/13(金) 01:14:26
directx9でテクスチャを板ポリに貼って表示しているのですがぼやけてしまいます。
D3DX_FILTER_NONEにしています

188 :デフォルトの名無しさん:2009/11/13(金) 01:25:16
CreateDIBSectionで作ったDCにGDIでテキスト書いて
テクスチャーから作ったサーフェスをLockRecして1ドットずつ転送してる。
(なぜかStretchBltなどがうまくいかない)
このときに抜き色とかアンチエイリアス処理をしたりしてる。

189 :178:2009/11/13(金) 02:24:08
>185
どうも いっぺんにデコードするとやはりメモリ食いますよね

>186
ttp://marupeke296.com/DXG_Font.html
自分はここを参考にして作りました
GetGlyphOutline()で文字のデータを取得して、
LockRectしてピクセルごとに書き込んでテクスチャとして貼り付けてます

実際に書き込むサイズの整数倍で読み込まないと少しおかしくなるけど、
そこさえ気をつければ特に不満はないです

190 :デフォルトの名無しさん:2009/11/13(金) 02:29:25
>>187
トランスフォーム済みの頂点なら
板ポリの座標xとyを-0.5fずらしてみて

ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=53&vew=13

191 :デフォルトの名無しさん:2009/11/13(金) 02:33:47
>>187
D3DXフォントは使ったこと無いけど、レンダリング前に
SetSamplerStateでD3DSAMP_MAGFILTER、D3DSAMP_MINFILTERを
D3DTEXF_POINTにしてみたら?


192 :デフォルトの名無しさん:2009/11/13(金) 03:02:19
ttp://marupeke296.com/TOOL_No5_BillboardString.html

ここのサンプル
1文字にテクスチャ1枚、頂点バッファ1つ(板ポリ1枚)使ってるから
描画効率は良くないね

ポリ数少ないから処理重くならないと思うけど

193 :デフォルトの名無しさん:2009/11/13(金) 03:10:13
>>190
>>191
レスありがとうございます。
自己解決しました。
effect::Begin()
の後にSetSamplerStateで設定したら期待した表示になりました。

194 :デフォルトの名無しさん:2009/11/13(金) 03:50:53
0.5fのズレの話が出てて気になったので質問です
クライアント座標などはドットの座標で(0,0)-(0,0)としても点が表示されるけど、
DirectXの座標は頂点の座標で、(0,0)-(0,0)では何も表示されない、ということでいいんでしょうか?

195 :デフォルトの名無しさん:2009/11/13(金) 07:26:34
従来のGDIのRECTとかでも(0,0)-(0,0)は面積ゼロだと思うが

196 :デフォルトの名無しさん:2009/11/13(金) 10:50:20
>185
便乗質問だけど
少しずつ読み込んで再生する場合と、まとめて読み込んだ場合なら
前者の方がメモリが少なくなってお得…なんだろうか?

デコードさえしちまえば
wavの時と扱うのはそんな変わらない気がするんだけどどうなんだろう?

197 :デフォルトの名無しさん:2009/11/13(金) 10:54:44
お得です

198 :デフォルトの名無しさん:2009/11/13(金) 13:54:10
>>196
バッファが長い
利点 - 処理落ちしてもある程度までなら安定して再生できる。
欠点 - 使用メモリが多い。デコードから再生までにラグが大きい。

短い
利点 - 使用メモリが少ない。デコードから再生までのラグが小さい。
欠点 - 処理落ち時に安定性にかける。

間違っててもシラネ。

199 :デフォルトの名無しさん:2009/11/13(金) 15:39:18
>197-198
なるほど。理解できた。ありがとう。
ストリーミングに対応させる為に頑張るか。
音1つだけでもややこしいなorz
もう少し簡単な仕様にならんの…マイクロソフト。
公式のサンプルとかライブラリ使うのがベストなんだろな。

200 :デフォルトの名無しさん:2009/11/13(金) 16:18:57
SEはオンメモリー、BGMだけストリーミングで十分

201 :デフォルトの名無しさん:2009/11/13(金) 16:46:12
太陽系の動きをシミュレートしようと思ったんですが
太陽の周りを回る星の情報を表示したいんですがその情報ウィンドウを
視点をどんなに動かしても同じ向きになるようにしたいのですが
どうすればいいんでしょうか?

いまのところ算出した角度に回すことで常に同じ向きにしていますが
これでいいんでしょうか?

202 :デフォルトの名無しさん:2009/11/13(金) 16:56:50
>>201
どういう計算をしてるかわからんけどビルボードとはそういうものだ

203 :デフォルトの名無しさん:2009/11/13(金) 18:19:10
>200
なるほど、それなら簡単に実装できる。

別の問題なんだけど
再生していない空きバッファをRELEASEして使うようにしてるから
どのバッファにどの音源が使われてるか解らないし、任意の音を個別に停止出来ないようになってしまった。
どうすれば良いんだろうか。やり方間違ってる?

204 :デフォルトの名無しさん:2009/11/13(金) 20:11:19
何がどのバッファだか識別できるデータを付けろよ

205 :デフォルトの名無しさん:2009/11/13(金) 22:23:44
【科学】道路に軍手が落ちているワケ、名城大研究チームが突き止める[09/11/05]

http://namidame.2ch.net/test/read.cgi/hidari/1257990721/




206 :デフォルトの名無しさん:2009/11/14(土) 02:34:28
クオータニオンをシェーダーに渡して回転させるって一般的??

207 :デフォルトの名無しさん:2009/11/14(土) 02:59:57
実際ゲーム作ることになったらBGM再生はクロスフェード必要になること
多いから最低2つはストリーミングできるようにしたほうがいいぜ
人間3人が愉快に会話してくれるとセリフをオンメモリってわけにはいかないから
これもストリーミングになる・・・すると・・・あれ?声が?遅れて?くるよ?
っていういっこく堂状態、ストリーミングの初っ端の準備が結構効いてくる
これがハードによっておせぇおせぇ
んで色々対応してると泥臭いもんになっていくわけよ
死んだ!ああ、死んだ!とも!

208 :デフォルトの名無しさん:2009/11/14(土) 03:18:01
BBX無料鯖やめてほしい検索しても見れない

209 :デフォルトの名無しさん:2009/11/14(土) 03:22:32
>>208
なにいってるのかわからない
BBXに検索機能ついてんだろ

210 :デフォルトの名無しさん:2009/11/14(土) 03:23:09
3Dで一本のラインを表示したいのですが
カメラを動かすと4角形の各辺のどれかになるような感じで動いてしまいます
トランスフォームが悪いのでしょうが、具体的に何故かわかりません
hr = m_pd3dLine->DrawTransform(vVer3D, m_dwList3D, mat, color);で描画しています、何故でしょうか、よろしくお願いします

211 :デフォルトの名無しさん:2009/11/14(土) 03:32:32
その1行で何を判断しろと

212 :デフォルトの名無しさん:2009/11/14(土) 03:43:04
matにはプロジェクションのマトリックスを入れました
カメラがある角度を越えた瞬間に線が入れ替わります、なぜですか?

213 :デフォルトの名無しさん:2009/11/14(土) 04:21:24
なにいってるのかさっぱりわからん

214 :デフォルトの名無しさん:2009/11/14(土) 04:27:06
212じゃないけど
カメラアングルを変えたときにスムーズに変化しないで
ピョコピョコ飛ぶっていう話じゃないかと

215 :デフォルトの名無しさん:2009/11/14(土) 04:36:03
その通りです
http://www.shader.jp/xoops/html/masafumi/directx9/3dtips/d3d09.htmこのサンプルを組み込んだんだけど
今調べたら
このインターフェイスだと、このあたりの計算を自前でしなくていいというのが利点ですね(ただし、座標系がスクリーン座標系のみなのが注意)。
って書いてあるんだけど、自分はワールド座標上の座標で点を結びたいのです、この方法じゃなくても良いのでやり方を教えてく下さい
普段物体を登録してeffect->setmatrixってやるのでわけがわかりません

216 :デフォルトの名無しさん:2009/11/14(土) 04:45:29
普通にDrawPrimitiveでD3DPT_LINELISTを指定して書けばいいのでは?
太さは指定できんが

217 :デフォルトの名無しさん:2009/11/14(土) 04:46:48
な、なんだってー
そんなのがあるんですか、知りませんでした、やってみますかなり時間費やしたのに

218 :デフォルトの名無しさん:2009/11/14(土) 05:03:43
全然意味がわからん、説明してるページ全然ないし、全然線なんか出ないんだけど?
struct CUSTOMVERTEX
{
float x,y,z;
};

CUSTOMVERTEX Vertices[] =
{
{-5.0, -5.0, 0.0},
{ 0.0, 5.0, 0.0},
{ 5.0, -5.0, 0.0},
{10.0, 5.0, 0.0},
{15.0, -5.0, 0.0},
{20.0, 5.0, 0.0}
};
pd3dDevice->DrawPrimitive( D3DPT_LINELIST, 0, 6 );

219 :デフォルトの名無しさん:2009/11/14(土) 05:04:52
カタカナで検索したら一杯出てきたわ、すまん

220 :デフォルトの名無しさん:2009/11/14(土) 05:07:29
これがゆとりか…

221 :デフォルトの名無しさん:2009/11/14(土) 05:12:36
できたwすごすぎワロタwサンクスw

222 :デフォルトの名無しさん:2009/11/14(土) 05:17:59
線の描画で太さを指定できないってのがネックだよね?
OpenGLではできるのに・・・
みんなどうしてるの?

223 :デフォルトの名無しさん:2009/11/14(土) 07:54:42
D3DXVECTOR3 endpoints[2] = { ... }; // 線分の端点
float half_line_width = ...; // 線の太さの半分の値
D3DXMATRIX world_view_projection_viewport_matrix = ...;
D3DXVECTOR4 v1, v2;
D3DXVec3Transform( &v1, &endpoints[0], &world_view_projection_viewport_matrix );
D3DXVec3Transform( &v2, &endpoints[1], &world_view_projection_viewport_matrix );
if( v1.z >= 0 || v2.z >= 0 )
{
// 近平面のみクリッピング
if( v1.z < 0 || v2.z < 0 )
{
float t = -v1.z / (v2.z - v1.z);
D3DXVec4Lerp( v1.z < 0 ? &v1 : &v2, &v1, &v2, t );
}
v1 /= v1.w;
v2 /= v2.w;
// 三角形リストで幅のある線分を構築
D3DXVECTOR2 temp;
temp.x = v2.x - v1.x;
temp.y = v2.y - v1.y;
D3DXVec2Normalize( &temp, &temp );
temp *= half_line_width;
vertices[0] = D3DXVECTOR4( v1.x - temp.y, v1.y + temp.x, v1.z, 1 );
vertices[1] = D3DXVECTOR4( v1.x + temp.y, v1.y - temp.x, v1.z, 1 );
vertices[2] = D3DXVECTOR4( v2.x - temp.y, v2.y + temp.x, v2.z, 1 );
vertices[3] = D3DXVECTOR4( v2.x + temp.y, v2.y - temp.x, v2.z, 1 );
vertices[4] = vertices[2];
vertices[5] = vertices[1];
num_triangles += 2;
}
使う機会なんてあるんだろうか

224 :デフォルトの名無しさん:2009/11/14(土) 10:20:06
>208-209
あぁ、googleとかで検索結果から行くとinfoだから見れないってことじゃね?
リファラ送らないブラウザお勧め

225 :デフォルトの名無しさん:2009/11/14(土) 19:46:13
プロジェクション行列を_11=2/640, _22=2/480に設定して
画面いっぱいに板ポリを表示させると微妙に歪みます。どうしたらよいでしょうか?

226 :デフォルトの名無しさん:2009/11/14(土) 21:37:02
DirectX 始めたばかりです。
VC++ で「デバッグ開始」または「デバッグなしで開始」で動かすと、何もエラーが出ないで普通に動きます。
しかし、 Debug フォルダや Release フォルダにできた .exe ファイルを開くと、 Visual Studio Just-In-Time デバッガが、
「名前.exe [数] でハンドルされていない Win32 の例外が発生しました。」
と言ってきます。

自力で調べた結果、
D3DXCreateTextureFromFile(GetDirectManager()->GetDevice(), filename, &m_pTexture)
の行でエラーが起きていることがわかりました。
ここで、
GetDirectManager()->GetDevice() は LPDIRECT3DDEVICE9 型を返す、
m_pTexture のデータ型は LPDIRECT3DTEXTURE9 です。
「デバッグ開始」などで動かしたときは、 m_pTexture はちゃんとメモリ確保されているみたいですが、
.exe から動かしたときは、 NULL のままになっています。

どうすればいいのでしょうか?


…と書こうとしたら、気付きました。
画像ファイルのパスが違うんですねw

自己解決しました。
こんなことに1時間もかけるなんてw

227 :デフォルトの名無しさん:2009/11/14(土) 21:54:30
>>226
テクスチャのファイルのパスだとおもう

228 :デフォルトの名無しさん:2009/11/14(土) 23:27:02
>>226
exeをDebug、Releaseフォルダからテクスチャのあるフォルダに移動しなされ

229 :デフォルトの名無しさん:2009/11/15(日) 01:02:23
>>227-228
ありがとうございます
動きました

230 :デフォルトの名無しさん:2009/11/15(日) 01:04:36
>自己解決しました。
(って言ってるのにしつこい人たちね!)

231 :デフォルトの名無しさん:2009/11/15(日) 01:25:42
答えられる質問がきたから嬉しかったんだよ、たぶん

232 :デフォルトの名無しさん:2009/11/15(日) 01:33:46
開発環境と実行環境でファイル構成が違う人は
DXUTFindDXSDKMediaFileCch
の中身みて参考にするとよろし

233 :デフォルトの名無しさん:2009/11/15(日) 08:30:06
前にDirectSound関連で質問した者です
ストリーミング再生をしようとMSDNやらを読んでやってみたのですが、
wavファイルの波形データの二度目以降の読み取り方がよく分かりません
wavファイルへのHMMIOハンドルと一時バッファアドレスをmmioReadに渡しても-1が返ってきます
チャンク検索を行った場所から移動すると読み取り位置の情報が失われている感じです
どうすれば読み取り位置の情報も渡すことができるのでしょうか?

234 :デフォルトの名無しさん:2009/11/15(日) 10:09:56
これから始めようと思うのですがお勧めの書籍はありますか?
amazonで検索かけると結構沢山出てくるので選びきれません……
主に2Dゲームを作ろうと思ってます。

235 :デフォルトの名無しさん:2009/11/15(日) 10:13:02
本屋で実際に見て決めなさいな。
他人にとっていい本が自分にとっていいとは限らないんだし。

俺は2Dゲーム程度ならSDK付属のサンプルで十分だと思うが
それじゃわかんねぇって人も居るだろう。

236 :デフォルトの名無しさん:2009/11/15(日) 12:44:36
>>233
データチャンクに降りたとき位置を記録しておく
ciSubChunk.ckid = mmioFOURCC('d','a','t','a');
mmioDescend(m_hMio, &ciSubChunk, &ciParChunk, MMIO_FINDCHUNK);
long lDataOfs = mmioSeek(m_hMio, 0, SEEK_CUR);

再度先頭から演奏したいとき
mmioSeek(m_hMio, lDataOfs, SEEK_SET);


237 :デフォルトの名無しさん:2009/11/15(日) 14:06:37
>236
すいません、オフセットとかの問題ではなかったみたいです
ストリーミングを行うクラスを作ろうとしていて、そのクラスから
再生カーソルの進行で出されるシグナルを受け取るスレッドを(thisポインタを渡して)スタートさせ、
シグナルが来たらデータ読み取りとバッファ書き換えを行おうとしているのですが、
クラスメンバのHMMIOハンドルとかLPDIRECTSOUNDBUFFER8とかを、
スレッドから呼び出したメンバ関数で使おうとすると失敗するんです
ReleaseもDeleteもしてないし、音楽のループ再生も続いてるからバッファも失われてないと思うんですが

238 :デフォルトの名無しさん:2009/11/15(日) 14:22:51
>>237
ダイレクトサウンドオブジェクトを作成したスレッドと
シグナルを処理するスレッドが異なるため、ということが考えられる

シグナルを処理するスレッドからinvokeかメッセージを飛ばして
オブジェクトを作成したスレッドで処理を行ってみては


239 :デフォルトの名無しさん:2009/11/15(日) 16:15:43
質問です。Direct3D9 を使い、Windows ターゲットのアプリを作っています。

IDirect3DDevice9::CreateTexture を用いて、あるサイズのテクスチャを作成したとします。
LockRect でバッファへのポインタおよびピッチを取得できますが、
このピッチが、テクスチャの幅×深度(1ピクセルあたりのバイト数) に等しくないことはありえるのでしょうか?

ただし、テクスチャは必ず 2^n 単位の大きさで作成しているとします。
また、Voodoo などの 256×256 しか対応していない古いグラボは考えないこととします。

つまり、m×n のテクスチャに、全ピクセルがリニアに繋がったビットマップをコピーするとして、

memcpy(p_texture, p_bmp, 全ピクセル);

のように1行でコピーすることは出来ず、

for (int y = 0; y < height; y++){
 memcpy(p_texture + pitch * y, p_bmp + width * depth * y, 1行分のピクセル);
}

のように1行単位でコピーするしかないのでしょうか。

・等しいことが保証されている
・保証はされてないけど等しくない環境なんてぶっちゃけ存在しない
・等しくないことが普通に存在する

という感じでお答えいただけるとありがたいです。

実際にやりたいのは、ファイルに圧縮された画像をテクスチャに直に展開することです。
ところが、仕様上、画像の解凍が行単位では行えません。
そのため、一時バッファに展開してから行単位でコピーすることになり、二度手間になってしまっています。


240 :デフォルトの名無しさん:2009/11/15(日) 16:36:02
今無くても将来的には出てくるかもかもしれないので保証しかねる。


241 :デフォルトの名無しさん:2009/11/15(日) 16:46:07
>>239
検証してないが、テクスチャの横幅がGPUのメモリアクセス粒度より細かい場合は
不一致になるんじゃないか?
バス幅512bitのDDR2なら、2048bit単位でアライメントされててもおかしくないかと。

242 :デフォルトの名無しさん:2009/11/15(日) 16:46:48
作れるのかどうか知らないけど
1ピクセル1バイトの
2x2のテクスチャ
とかどうなんだろ

243 :デフォルトの名無しさん:2009/11/15(日) 17:52:58
保証されていないからわざわざpitchがあるんだろ。
どれだけ頭が悪いんだよ。

244 :デフォルトの名無しさん:2009/11/15(日) 18:01:40
初心者スレですしまぁまぁ

245 :デフォルトの名無しさん:2009/11/15(日) 18:06:42
pitchが期待通りなら、二度手間じゃないように処理すればよいし、
期待と違うなら、違う処理を行うなりアプリケーションを終了させるなりすればよい。
条件比較すら省略したプログラムを書きたいというのなら別だろうが。

246 :デフォルトの名無しさん:2009/11/15(日) 18:31:50
DXT圧縮されたテクスチャは幅×高さじゃなく、ブロックごとのサイズ×ブロック数 だったかね。




247 :デフォルトの名無しさん:2009/11/15(日) 21:00:34
DirectX9にてシェーダーの使い方を勉強しています。
サンプルのfxファイルにてVertexShader = compile vs_3_0 VS();
というような記述があり、この部分でHLSLをコンパイルする時に
シェーダーをバージョンいくつ用にコンパイルするか指定するのだと思いますが
これ関して質問させてください。

自分のHLSLの記述にて古いシェーダーバージョンで間に合う範囲の事しか
書いていない場合、対応ハードを増やすために、可能な限り古い
バージョン(1_0?)でコンパイルすべきですか?
それとも最近のバージョンでコンパイルすことは、何らかのメリット(最適化)などが
在り得るのですか?


248 :デフォルトの名無しさん:2009/11/15(日) 22:40:02
新しいグラボは新しいバージョンにすると速くなる……らしい。
でも1_0はさすがにもう無視していいレベルじゃないかな。

249 :237:2009/11/15(日) 23:35:39
>238
ありがとうございます
メッセージを飛ばす、というのはSendMessageでメッセージループに送るということでしょうか?
とりあえずシングルスレッドに戻して解決(?)しました
制御方法をもうちょっと勉強してからまたチャレンジします

250 :デフォルトの名無しさん:2009/11/15(日) 23:36:10
らしいとかソースも自己検証もないような情報を垂れ流す馬鹿って、
どれだけ頭が悪いの?

251 :デフォルトの名無しさん:2009/11/15(日) 23:48:55
サウンドのストリームやるなら素直にXAudio2を使うべき。
DirectSoundでやるなら先にマルチスレッドのデザインパターンを一通り学んでからじゃないと怖いだろ。

252 :237:2009/11/16(月) 00:54:33
>251
サンプルが色々あったのでDirectSoundでやってみました
XAudio2も勉強してみたいのですが、詳しい情報がMSDNくらいしかなかったので…
今からMSDN読みながらXAudio2でも作ってみます
こっちのが圧縮音源も扱えるみたいで便利そうですね

253 :デフォルトの名無しさん:2009/11/16(月) 12:36:50
XAudio2の情報量の少なさは確かに。
今時DirectMusicで講座している所も多いし、仕方ないと思えば仕方ないな。

DirectInputで質問だけど、
DIPROP_DEADZONEの設定していても軸の値が指定範囲内でも変動されるのは仕様?
「軸がデッド ゾーン内にあるとき、その軸は範囲の中心にあるものとして報告されます。」
って書いてるから明らかにおかしいと思ってる。
範囲の中心にあるものなら範囲の中心である0が返されると思ってるけど間違い?

254 :デフォルトの名無しさん:2009/11/16(月) 13:43:58
範囲の中心でゼロを返す

255 :デフォルトの名無しさん:2009/11/16(月) 16:08:48
253だけど実装方法が間違ってたわorz
RANGEが1000にしていたから500で半分まで認識させないって思っていた。
DEAD_ZONEの記述は10000までで別だったんだなorz

XAudio2、資料探したけど本当にMSDNくらいしかないのな。
今のところ、XInput使うメリットってある?XBOX360コントローラーでFFBさせるくらい?

256 :247:2009/11/16(月) 17:27:49
>>248
レスありがとうございます。
取り合えず問題がないうちは2_0を使い続けてみようかと思います。

257 :デフォルトの名無しさん:2009/11/16(月) 22:27:54
XAudio2の簡単さは別に講座とかいらないと思うんだが・・・
SDKに入ってるサンプル見てみろってWAVのストリーム再生なんて
数時間もあれば出来るくらい簡単になってるから。

258 :デフォルトの名無しさん:2009/11/16(月) 23:40:59
DirectXを勉強しはじめたのですが、サンプルなどをみているとWM_PAINTが来たときに描画するものがほとんどでした
case WM_PAINT: Render();みたいに
WM_PAINTは無効領域が発生したときに発行されるものとききましたが
どこも無効領域なんて発生していなさそうなのにWM_PAINTが来て描画されています
これはDirectXがWM_PAINTを発行してるということでしょうか?
私が参考にしてるサイトはこれです
ttp://www36.atwiki.jp/directx/pages/22.html


259 :デフォルトの名無しさん:2009/11/16(月) 23:54:04
WM_PAINTで書くようにしてあるサイトなんて見るな

260 :デフォルトの名無しさん:2009/11/16(月) 23:56:17
ではどうすればいいんですか!どこに書くんすか!

261 :デフォルトの名無しさん:2009/11/17(火) 00:01:13
spy++でウィンドウが処理したメッセージでも見てください。

262 :デフォルトの名無しさん:2009/11/17(火) 00:05:59
>>260
なにファビョってんのよ。
サンプルなんて、DX_SDK\Samples\C++\Direct3Dの中に腐るほどあるだろ?
DXUTを解読しながらになるけどな。

263 :デフォルトの名無しさん:2009/11/17(火) 00:06:19
は?

264 :デフォルトの名無しさん:2009/11/17(火) 00:07:21
>>258
ゲームループでぐぐれ

265 :デフォルトの名無しさん:2009/11/17(火) 00:11:11
質問に答えてください。

266 :デフォルトの名無しさん:2009/11/17(火) 00:15:41
>>265
何を言ってるんだ。質問には回答は出てるんだぞ。
>いいサンプルがない
→DirectX SDKのサンプルを読め

>コードのどこでレンダリングすればいい?
→サンプルのソースコードに書いてある

267 :デフォルトの名無しさん:2009/11/17(火) 00:22:27
具体的に書いてください。
あと、ふざけんな。

268 :デフォルトの名無しさん:2009/11/17(火) 00:26:37
そういうのいいから。

269 :デフォルトの名無しさん:2009/11/17(火) 00:28:18
それはこっちのセリフだ!

270 :デフォルトの名無しさん:2009/11/17(火) 00:31:02
こんなとこでリロードしてる暇あったらサンプル見て無い頭を働かせろ

271 :デフォルトの名無しさん:2009/11/17(火) 00:32:05
わからないなら黙ってればいいのに。

272 :デフォルトの名無しさん:2009/11/17(火) 00:33:58
>>258がゲームを作るといつ言ったんだ?w

273 :デフォルトの名無しさん:2009/11/17(火) 00:34:11
プログラムに向いてない人間の見本のようなやつだな

274 :デフォルトの名無しさん:2009/11/17(火) 00:35:38
質問に答えてから言ってくださいね。

275 :デフォルトの名無しさん:2009/11/17(火) 00:38:28
>>258
ここの住人は
258がゲーム等を作ると仮定して話してる
んで、メインループにはPeekMessage使えよと。

質問に対する答えはわかりませんとねw

276 :デフォルトの名無しさん:2009/11/17(火) 00:39:09
まずは質問の仕方を質問してくれ。

277 :デフォルトの名無しさん:2009/11/17(火) 00:39:28
fusianasanしたら教えてやる

278 :デフォルトの名無しさん:2009/11/17(火) 00:41:20
>>258
BeginPaint呼んでないから無効領域がクリアされず残ったままなのでいつまでもWM_PAINTが来るってことじゃね

279 :デフォルトの名無しさん:2009/11/17(火) 00:42:34
BeginPaintしたら困ったことになるかもしれんよ

280 :デフォルトの名無しさん:2009/11/17(火) 00:47:35
case WM_PAINT:
Render();
ValidateRect( hWnd, NULL );
return 0;

DirectX のヘルプより

281 :デフォルトの名無しさん:2009/11/17(火) 01:20:42
自己解決しました。
ありがとうございました。

282 :デフォルトの名無しさん:2009/11/17(火) 02:04:16
久しぶりにこの板で噴いたw

283 :デフォルトの名無しさん:2009/11/17(火) 07:47:26
これはひどい

284 :デフォルトの名無しさん:2009/11/17(火) 09:44:23
全然自己解決じゃねぇだろwww

285 :デフォルトの名無しさん:2009/11/17(火) 09:52:01
これを「タコ解決」と言うw

286 :デフォルトの名無しさん:2009/11/18(水) 16:22:45
         ,. -‐'''''""¨¨¨ヽ
         (.___,,,... -ァァフ|
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|
        i|:!ヾ、_ノ/ u {:}//ヘ
        |リ u' }  ,ノ _,!V,ハ |
       /´fト、_{ル{,ィ'eラ , タ人
     /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ
    ,゙  / )ヽ iLレ  u' | | ヾlトハ〉
     |/_/  ハ !ニ⊇ '/:}  V:::::ヽ
    // 二二二7'T'' /u' __ /:::::::/`ヽ
   /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \ 
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ 
  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...       イ

287 :デフォルトの名無しさん:2009/11/18(水) 22:20:46
各種インターフェースの参照カウントの数を知る方法ありますか?


288 :デフォルトの名無しさん:2009/11/18(水) 23:08:48
こんな重要な値なのに不思議なことに直接調べる方法がない
m_cRefは通常private
AddRefすれば+1された数値が戻るので、これを手がかりにするしかない


289 :デフォルトの名無しさん:2009/11/18(水) 23:15:38
>>288
ありがとう!!

290 :デフォルトの名無しさん:2009/11/18(水) 23:43:19
すみません。
http://marupeke296.com/COL_Basic_No2_ShortTec.html#%E3%83%9D%E3%83%AA%E3%82%B4%E3%83%B3%E4%B8%8A%E3%81%AB%E7%82%B9%E3%81%8C%E5%90%AB%E3%81%BE%E3%82%8C%E3%82%8B%E3%81%8B%E3%82%92%E5%88%A4%E5%AE%9A
ここの「ポリゴン上に点が含まれるかを判定」を実装したいのですが上手く行きません。
そこの説明にある、
「元のポリゴンと法線が同じが異なるかで、点が含まれているかどうかを判定できます。」とは、
「正規化した法線ベクトルが全く同じ方向(数値)になれば」
という意味なのでしょうか? もしそうなら僅かな座標のずれで一致する事など無い様に思えます・・。

私は何かを勘違いしているんでしょうか・・?

291 :デフォルトの名無しさん:2009/11/18(水) 23:49:47
単純に言えば、3つの外積ベクトルは、おおよそ0度か180度のどちらかになるから、
それぞれの内積を計算して、正なら同じ向き負なら違う向きとすればいい。

292 :デフォルトの名無しさん:2009/11/18(水) 23:50:27
つかDirectXと関係ないじゃん。スレチ。

293 :デフォルトの名無しさん:2009/11/18(水) 23:55:24
インターフェイスの参照カウント値が必要になったことなんてないけどな・・・。

294 :デフォルトの名無しさん:2009/11/19(木) 00:09:21
ATLのCComPtrを使っている人と使っていない人の違いとか。

295 :デフォルトの名無しさん:2009/11/19(木) 00:11:34
>>292
ちゃんとDirectXで作っておりますが、言葉が抜けてました。失礼しました orz

>>291
そうなんですね。ありがとうございます。感謝!

296 :デフォルトの名無しさん:2009/11/19(木) 00:15:29
>>293
質問を勝手に自分の理解できる範囲の問題に解釈し直すのはいくない

297 :デフォルトの名無しさん:2009/11/19(木) 00:31:24
>>288
その戻り値を当てにするのは
推奨されないってさ。
参照カウントを得る方法はないと
しといた方がいいな。

298 :デフォルトの名無しさん:2009/11/19(木) 00:45:33
特にマルチスレッド環境だと、戻ってきた参照カウントなんて全く信用できんしな。

299 :デフォルトの名無しさん:2009/11/19(木) 02:01:46
D3DXCreateTextureFromFileExを2回行っても参照カウントが1のままだったよ
なんで?
もちろんIDirectTextureをメンバ変数にコピーした

300 :デフォルトの名無しさん:2009/11/19(木) 02:05:18
至極当たり前だと思うんだが、どういう動作を期待してるんだ?

301 :デフォルトの名無しさん:2009/11/19(木) 02:18:41
二つのテクスチャオブジェクトのアドレスが違うなら、別々のテクスチャオブジェクトってことだ。
もし同じオブジェクトを返す設計だったら、参照カウントは2になっていただろうね。

302 :デフォルトの名無しさん:2009/11/19(木) 02:18:49
>>300
あれ、ごめんなさい。俺勘違いしてるかも、、、
インターフェイスポインタを取得しても自動で参照カウンタは増えないってことなのでしょうか?
本来はコピーしたら明示的にAddRefするということ?

303 :デフォルトの名無しさん:2009/11/19(木) 02:25:14
(コップを用意して、蛇口から水を注ぐ)という関数を2回呼び出します

コップAを用意します
コップAに水を注ぎます
コップBを用意します
コップBに水を注ぎます

コップAの使用回数は1です
コップBの使用回数は1です

304 :デフォルトの名無しさん:2009/11/19(木) 02:57:38
そもそも
コピーと参照の違いを理解してないのでは?

305 :デフォルトの名無しさん:2009/11/19(木) 08:40:29
>>302は日本語も怪しそうだ。
そもそもコピーなんてしてないだろ。

306 :デフォルトの名無しさん:2009/11/19(木) 20:38:30
すみません。キャラクターの法線がx0 y-1 z0なんだけど、
yは+1じゃないとおかしい? 計算の順番逆なのかな。それともこれで合ってる?

307 :デフォルトの名無しさん:2009/11/19(木) 20:44:05
キャラクタにとっての「真上」のことか?
普通は正にとらない?

308 :デフォルトの名無しさん:2009/11/19(木) 20:57:36
正にとるのが普通なんですね。
てことは三角形は頂点を右回り順に繋がないと、法線がひっくり返るのかな。
ありがとうございました。

309 :デフォルトの名無しさん:2009/11/20(金) 09:18:49
質問なんですが
ゼノギアスの最初の部分で画面が揺らぐんですが
あれってどうやったらできますかね?

シェーダーってテクスチャを変換したりするものだと認識してたけど
画面を歪ませるなんて可能なのかなあ?

310 :デフォルトの名無しさん:2009/11/20(金) 10:34:06
>>309
シェーダーなら殆ど可能じゃないの?

311 :デフォルトの名無しさん:2009/11/20(金) 11:44:25
>>309
レンダリングターゲットをエフェクト用のテクスチャに変更して
効果をかけてから画面に出力

312 :309:2009/11/20(金) 12:07:11
あーやっぱりそういう方向ですか・・・

まあしかたがない
コツコツやってみます

313 :デフォルトの名無しさん:2009/11/20(金) 21:52:50
なにが仕方ないんだ・・・
シェーダーでやるのが今時の主流なのに。

314 :デフォルトの名無しさん:2009/11/20(金) 23:48:01
直接フレームバッファを操作する方法があると思ったとか?

DirectX11とかでスワップ前のレンダリングサーフェイスを
直接変更できるとかそういうのないの?

315 :デフォルトの名無しさん:2009/11/21(土) 00:03:44
>>314
フレームバッファを直接いじったら色々と面倒だからこそ、
長いDirectXの歴史で便利な仕組みを色々用意してきたわけで。

316 :デフォルトの名無しさん:2009/11/21(土) 00:25:26
必要がないだろ。
よほど単純なアプリで作らない限りテクスチャへのレンダリングを介さないなんてないんだから。

317 :デフォルトの名無しさん:2009/11/21(土) 07:04:00
XAudio2を使っていて、同じSEをガガガガ〜と連続で鳴らしたいのですが、
IXAudio2SourceVoice::SubmitSourceBuffer()を連続で呼んでも
前の音の再生が終わるまで、次のキューが再生されないみたいなので、
どなたか、前の音が再生中でも次の音を再生させる方法をご存知無いでしょうか?
StopしてFlushSourceBuffersではなく、止めないで連続で鳴らしたいのです

318 :デフォルトの名無しさん:2009/11/21(土) 07:31:23
バッファを複数作れ

319 :317:2009/11/21(土) 16:44:35
ソースボイスを複数作れってことで宜しいのでしょうか?
wavのフォーマットが混在してるので、
WAVEFORMATEXの値ごとに複数CreateSourceVoiceするのも非効率かなと思ったのですが…
ご回答ありがとうございます。

320 :デフォルトの名無しさん:2009/11/21(土) 17:23:22
>>319
Stopかけてバッファ開放して、新しいバッファを割り当ててまた再生を再開するだけで十分じゃね?

321 :317:2009/11/21(土) 19:44:50
それだと、前の音が停止してしまうので、前の音を流したまま追加で再生したいのですが…

322 :デフォルトの名無しさん:2009/11/21(土) 20:26:29
すみません。DirectX9で
D3DXIntersect()でレイを飛ばし当たり判定をしようとしています。
しかし、描画に使うものと同じメッシュ(LPD3DXMESH)なのに位置が違うらしく
正常なポリゴンに当たってくれません。
何やら取得後に知らない間に座標変換を受けているらしいとわかったのですが・・
どこあたりにその変換行列が存在するのでしょうか・・?
大まかでも良いので教えて下さると助かります orz

323 :322:2009/11/21(土) 20:41:07
あ・・単にプロジェクションやビュー行列の事なのかな・・
自己解決できるかもしれません。失礼しました;

324 :デフォルトの名無しさん:2009/11/21(土) 22:39:15
>>321
ああ、そういうことね。やってみたらすぐに分かるけど、
簡単に音割れを起こしてだめになるよ。
だから前の音は止めてから次の音を出すべき。これでも違和感はないよ。

325 :デフォルトの名無しさん:2009/11/21(土) 22:43:53
音割れはボリュームを抑えるだけで解決する話だが、
いったい何を言っているんだろう?

326 :322:2009/11/22(日) 10:36:57
うーん・・解決できない・・
D3DXIntersect()にセットしたメッシュの座標を
何万倍に拡大しようが回転しようが全く変化が起きない・・orz
いったい内部で何が起きているんだ・・(´・ω・`)

327 :322:2009/11/22(日) 10:59:55
あ、やっぱり自己解決できるかもしれません。失礼しました;

328 :322:2009/11/22(日) 12:10:24
>>327
酷い偽者だ。こんな人間が生きているだなんて信じられない(´・ω・`)

329 :322:2009/11/22(日) 12:56:36
>>328
偽者は黙ってろ

330 :322:2009/11/22(日) 13:08:06
楽しくなってきた。しかしこんな人間が生きているだなんて信じられない(´・ω・`)

331 :デフォルトの名無しさん:2009/11/22(日) 13:12:17
>何やら取得後に知らない間に座標変換を受けているらしいとわかったのですが・・

どうしてそう思ったんだ?

332 :デフォルトの名無しさん:2009/11/22(日) 15:08:38
使ったことないからうろ覚えだけど
D3DXIntersectはメッシュのローカル座標系で計算するから
メッシュの位置とか大きさは関係ないはず
レイの始点座標をワールド座標で指定するのではなく
メッシュからの相対位置で指定しないといけないのでは?

333 :デフォルトの名無しさん:2009/11/22(日) 15:19:11
質問スレなんだから、独り言じゃなくて質問しようぜ。

334 :デフォルトの名無しさん:2009/11/22(日) 15:24:09
>>331
同じメッシュ(LPD3DXMESH)をDrawSubset()してレイを飛ばしているのに
描画結果とレイが当たる位置に約5倍のスケール差が有るから でした。

>>332
相対位置とな・・やってみます。ありがとうございます(´・ω・`)

335 :デフォルトの名無しさん:2009/11/22(日) 15:35:32
こういうのはソースが無いと間違いを指摘しにくい
>322の情報だけで答えが得られるはずがない

marupekeの方にも質問してるみたいだけど
質問の仕方が下手糞すぎる

336 :デフォルトの名無しさん:2009/11/22(日) 15:42:33
とりあえずD3DXIntersectを使わず、自分でレイと交差するか判定するコードを書けばいいだけの話。
D3DXにべったり頼るから、何が起きているかも分からなくなるんだよ。

337 :デフォルトの名無しさん:2009/11/22(日) 15:57:48
D3DXにべったり頼りまくってますが何か?
特にFont周りは便利すぎる。当分は自作する必要性は感じないな。
Texture読み込みまわりは近々自作する予定。

338 :デフォルトの名無しさん:2009/11/22(日) 15:59:25
“自作する必要性は感じない”のに、“近々自作する予定”なのか

339 :デフォルトの名無しさん:2009/11/22(日) 16:04:35
>>338
D3DXの別の部分の話をしてるんだから扱いが別になっても不思議じゃないだろ?
それで揚げ足取ったつもりかね。
ちなみにTexture読み込みを切り替えるのは、PNG以外の形式をサポートさせるため。

他の部分としてはEffect周りだな。これも全く置き換える予定なし。

340 :デフォルトの名無しさん:2009/11/22(日) 16:12:53
自分は338ではないけど
Fontに関しては自作しないってことね

341 :デフォルトの名無しさん:2009/11/22(日) 16:16:17
>>340
だね。工夫すれば品質をさらに向上させたり回転させたり半透明にしたりできるし。
ただグリフの上下で色を変えたりはできないから、
そこまでやりたくなれば自作するしかないかなぁ……。

342 :デフォルトの名無しさん:2009/11/22(日) 16:19:00
>>336
こいつD3DXが絡むと、いつも沸いて出てくるが
自分が最もD3DXに依存してるってわからんかね。
誰もそこまでD3DXを意識してないよ。

343 :デフォルトの名無しさん:2009/11/22(日) 16:53:45
フォントこそ自作するべき部分だろ・・・1日もかからんのだし。

コリジョンのがよっぽど面倒くさいわ。
目で見て分かりづらいからとかくデバッグが面倒くさい。


という感じで人それぞれなので自分の好きにすればいいし、
ありもののライブラリを使うという選択肢は初心者にはベターだと思う。

344 :デフォルトの名無しさん:2009/11/22(日) 17:32:44
頼った結果、頼ることすら他人を頼る。
そして頼ることすらさらに頼る。

345 :デフォルトの名無しさん:2009/11/22(日) 18:48:36
DirectXの初心者スレだしいんじゃないの

346 :デフォルトの名無しさん:2009/11/22(日) 18:55:59
DXSDKに含まれるD3DXを使った上での質問なのに、
使う奴が悪い的な回答は、的外れ以外の何者でもない。
本当に何を考えているんだか・・

347 :デフォルトの名無しさん:2009/11/22(日) 19:07:43
使うのが悪いんじゃなくて、内容を理解しないのが悪いんだろ。

348 :デフォルトの名無しさん:2009/11/22(日) 19:10:17
>ちなみにTexture読み込みを切り替えるのは、PNG以外の形式をサポートさせるため。
このPNG以外の形式もサポートしているのを知っているのか、疑問になる発言が気になって仕方がない。

349 :デフォルトの名無しさん:2009/11/22(日) 20:21:54
テクスチャはDDSが鉄板だと思うがね。

350 :デフォルトの名無しさん:2009/11/22(日) 21:13:22
さしあたりは2Dテクスチャしか使わない。
可逆ではかさばる。
PNGでは展開が重い。

ということなので独自形式から展開するしかないな、という結論。

351 :デフォルトの名無しさん:2009/11/22(日) 21:14:03
非圧縮ではかさばる、非可逆はダメ。
の間違い。

352 :デフォルトの名無しさん:2009/11/22(日) 21:20:12
PNGで重いって、いったいどれだけ大量の画像を一挙に読み込むつもりなんだろう?

353 :デフォルトの名無しさん:2009/11/22(日) 21:36:56
何というか、もういろんな意味でダメダメ臭がするんだが

354 :デフォルトの名無しさん:2009/11/22(日) 21:42:56
枚数は大したことないが、大きさがでかい。(1024四方とか2048四方とか)
そして不定枚数読み込むので現状すべての画像を先に読み込むことはせず、そのつど読み込んでる。
で、0.1〜0.3秒かかるんだけど、これをできるだけ削ろうとしている。

355 :デフォルトの名無しさん:2009/11/22(日) 22:24:45
PNGの読み込みは思いと感じても
ミップマップのCPU生成は軽いと感じるんですね。

356 :デフォルトの名無しさん:2009/11/22(日) 22:41:56
>>355
んん……?
ひょっとして、ミップマップってGPUが作ってくれたりはしないの?

357 :デフォルトの名無しさん:2009/11/22(日) 23:11:15
>>356
当たり前だろ・・・。
読み込みの時に処理してんだからCPUだ。
でないと別スレッドで処理したときに死ぬだろ。

358 :デフォルトの名無しさん:2009/11/22(日) 23:13:36
GPUに作らせることもできるが、D3DXにやらせたらCPUだな。

359 :デフォルトの名無しさん:2009/11/22(日) 23:23:41
ふーむ。ということは、
なおさら独自形式ロード+GPUによるミップマップ作成と、
DDSロードとで読み込み時間を比較してあげないといけないな。

360 :デフォルトの名無しさん:2009/11/23(月) 01:12:59
独自形式とDDSの違いがわからん。
圧縮しないでミップマップもキューブマップも仕込むならまんまDDSじゃん。

361 :デフォルトの名無しさん:2009/11/23(月) 01:18:59
そもそも速度を気にするならスレッドわけて非同期読みにしなさいよ。
あぁでもGPUでミップマップ作るならスレッド分けられないか。

圧縮の解凍やテクスチャへの展開は確かにCPUの問題だが、

ファイル読み込みにおいてはメモリにHDDのアクセスが一番問題。
どんだけCPUで最適化してもスワップ中とかシークの都合でいくらでも遅延する。

362 :デフォルトの名無しさん:2009/11/23(月) 03:35:37
圧縮はする。圧縮してもギガ超えるからな。
ただPNGでは展開がやや重くて不満だ。

読み込み用スレッドはすでに分けてある。
だから今回の問題はクリティカルというほどのことではない。
だが、読み込み方法を変更することで動作が改善できるならする、ということ。

>ファイル読み込みにおいてはメモリにHDDのアクセスが一番問題。
だな。であるからこそ、大きなテクスチャのロードは小さく圧縮され、
それほどでもないファイルは展開が高速であることが望ましい。

363 :デフォルトの名無しさん:2009/11/23(月) 04:34:26
DDSのDXT3かDXT5あたり使えばいいんじゃね?

364 :デフォルトの名無しさん:2009/11/23(月) 07:23:39
2D用途だとDXTnは画質の劣化が許せないケースがよくある。
大量のパターンを持つ2D格闘ゲームなんじゃねーの。

365 :デフォルトの名無しさん:2009/11/23(月) 07:30:43
頂点宣言でブレンドインデックスをD3DDECLTYPE_UBYTE4に設定した場合、
頂点シェーダーではfloat4型で受け取るんでしょうか?

DWORD型で0x01020304とした場合は{1.0f,2.0f,3.0f,4.0f}が入っているんですか?
オフセットは合っているのですがインデックスがうまく受け取れません・・・

366 :デフォルトの名無しさん:2009/11/23(月) 07:41:16
http://www.nicovideo.jp/watch/sm8816931
このくらい作れるようになるにはどれくらいかかりますか?

367 :デフォルトの名無しさん:2009/11/23(月) 08:13:24
>>365
BLENDINDICES(n)セマンティックは頂点シェーダ側ではuintで受け取るんじゃなかったかな

368 :デフォルトの名無しさん:2009/11/23(月) 09:30:23
無圧縮と圧縮の速度比較で馬鹿がよくやるミス。
ディスクキャッシュにデータが入っていることを考慮しないで、
無圧縮の方が高速だと思い込む。

369 :デフォルトの名無しさん:2009/11/23(月) 09:43:13
つかその辺の処理はzlibで固めてCPUで展開が定番なんじゃねーの

370 :デフォルトの名無しさん:2009/11/23(月) 09:52:19
>zlibで固めて
さて問題。
PNGの圧縮は何を使っているでしょう?

371 :デフォルトの名無しさん:2009/11/23(月) 11:23:42
展開は比較的軽いは軽いけど
やっぱランレングスが一番ちょっぱやなんだよね
最近、ムービーがでかすぎてロード時のテクスチャサイズ意識したとこないわ

372 :デフォルトの名無しさん:2009/11/23(月) 11:38:48
ムービーのテクスチャへのレンダリング、めんどくさくてまだ実装してないな……。

373 :デフォルトの名無しさん:2009/11/23(月) 11:55:21
確かにPNGはzlibだが、
PNGじゃキューブマップもミップマップも入らないだろって話。

つか読み込み時間気にするほど大量にデータ読んでるのに
なんでVRAMの事は気にしないんだ?


374 :デフォルトの名無しさん:2009/11/23(月) 12:02:04
>>367
ありがとう

自己解決しました。float4でOKでした。
DWORDでなくBYTE[4]もOKでした

375 :デフォルトの名無しさん:2009/11/23(月) 12:37:30
>>373
キューブマップはまだ扱ってない。
ミップマップはGPUから生成できるならそうしようか、という考え。
VRAMのことを気にしなくていいのは、同時に使用するテクスチャの量は知れてるから。
せいぜい50〜100MBくらいかな。

376 :デフォルトの名無しさん:2009/11/23(月) 14:24:40
俺なんかシステムメモリにも同じもんおいてあるぜ
さらに2度描きようのテクスチャとかもリアルタイムでボコボコ作るし
いらないけどほったらかしにしてある描き込み用テクスチャも
面倒だから放置だわw

上から文句言われるのはロード時間だけだしね

377 :デフォルトの名無しさん:2009/11/23(月) 16:03:32
>俺なんかシステムメモリにも同じもんおいてあるぜ
突然、流れと関係ない自分話をする奴って、
やっぱり脳に何らかの障害があるんだろうね。

378 :デフォルトの名無しさん:2009/11/23(月) 16:27:58
関係あるだろw

379 :デフォルトの名無しさん:2009/11/23(月) 16:33:56
背景用のスカイドームとかスカイボックス、地面って、でかいメッシュで良いんですか?
環境シェーダーみたいなのないんでしょうか。
スレ違いだったらすみません

380 :デフォルトの名無しさん:2009/11/23(月) 16:42:58
>>378
システムメモリの容量に関する話は全く出ていないんだが、頭は大丈夫か?

381 :デフォルトの名無しさん:2009/11/23(月) 20:17:15
シェーダーで描くにしてもポリゴンが無きゃ書き様がないだろう。
あとはまぁほしけりゃ自分で作れ。そのためのシェーダーだ。

382 :デフォルトの名無しさん:2009/11/23(月) 21:16:05
>>380
なんでキレ易いの?
育ち悪いの?
死ぬの?

383 :デフォルトの名無しさん:2009/11/23(月) 21:55:05
ああ、死ぬよ

384 :デフォルトの名無しさん:2009/11/23(月) 22:23:43
私の為に喧嘩はやめてっ!!
やるなら、どっちかの民族が滅亡するまでやって!!

385 :デフォルトの名無しさん:2009/11/23(月) 22:43:44
漢民族vs朝鮮民族
ファイッ!!

386 :デフォルトの名無しさん:2009/11/23(月) 22:54:00
空気読まずにあんまり関係なさそうな質問何だけど
Xファイルの読み込みから表示までってクラス化したほうがいいのかなあ?

あとオブジェクトを透明にしたら描画の順番で透けて見えるかどうかが変わっちゃうんだけど
やっぱりこれは順番を気をつけるしかないの?

387 :デフォルトの名無しさん:2009/11/24(火) 00:33:21
>>386
自分でクラス作るくらないら独自フォーマットにしてしまった方が早いと思わなくもない

388 :デフォルトの名無しさん:2009/11/24(火) 01:24:02
アニメーション管理とかを別にするなら別にクラス化してもいいんじゃね?

389 :デフォルトの名無しさん:2009/11/24(火) 04:42:45
>>386
一旦テクスチャにレンダリングしてからビルボードとして画面に出すのが定石



390 :デフォルトの名無しさん:2009/11/24(火) 05:42:55
その定石が書いてあるサイトを教えてください

391 :デフォルトの名無しさん:2009/11/24(火) 13:48:23
すみません
ポリゴンの高度にキャラを立たせようと
http://marupeke296.com/COL_Basic_No2_ShortTec.html#%E6%96%9C%E9%9D%A2%E3%81%AB%E7%AB%8B%E3%81%A4%E3%81%AB%E3%81%AF%EF%BC%9F
ここを参考にやっているのですが
ポリゴンによって上手くいったり、全くおかしな挙動をしたりします。

計算式は、高さ成分がyなので、yとzは入れ替えて行っているのですが、
z軸はおおよそ正しくてもx軸の高さ方向が逆というか最大値が逆方向を向いていたり
ポリゴンによってはどの頂点を取って計算しても正常にならなかったりします。

普通キャラをポリゴン上に立たせる場合、
この計算方法は一般的なのでしょうか? 他に定番の方法が有るものなのでしょうか?

392 :デフォルトの名無しさん:2009/11/24(火) 13:54:35
>>389のオッズ
実は高度な技法の一端を書いている天才:10000.00倍
適当にそれっぽい単語でそれっぽいことを書いてる馬鹿:1.001倍

393 :デフォルトの名無しさん:2009/11/24(火) 14:18:19
>>391
平面の方程式は、a * x + b * y + c * z + d = 0

うち、xとyを指定してzを求めたい。

z = -( a * x + b * y + d ) / c

これだけでしょ。ここに違いが無いというなら、
平面を間違えて作ってるんじゃないの?

394 :デフォルトの名無しさん:2009/11/24(火) 23:25:59
BeginSceneとEndSceneは、Presentの前に1度呼ぶのと描画のたびに呼ぶのではどちらがいいのでしょうか?

//1度だけ呼ぶ例
BeginScene();
Draw1();    //DrawPrimitiveなどの描画メソッド
Draw2();    //
EndScene();
Present();

//描画のたびに呼ぶ例
Draw1();    //BeginScene,EndSceneを包括する描画メソッド
Dwar2();    //
Present();

395 :デフォルトの名無しさん:2009/11/24(火) 23:44:29
>>394
Multiple non-nested IDirect3DDevice9::BeginScene/IDirect3DDevice9::EndScene pairs between calls to present are legal, but having more than one pair may incur a performance hit.

396 :デフォルトの名無しさん:2009/11/24(火) 23:58:08
ありがとうございます。
ちゃんと記載されてるんですね。

397 :デフォルトの名無しさん:2009/11/25(水) 04:28:02
>>393
計算式を思いつく範囲であれこれいじってみたけど、間違えてはないみたいです。
今は書いて頂いた式でやってみています。
斜面の法線方向も間違えてはいないみたいですし・・
平面=キャラのxz座標?ではないですよね・・。
計算式以外を片っ端からチェックしてみようかと思います。
ありがとうございました。

398 :デフォルトの名無しさん:2009/11/25(水) 05:28:33
法線の求め方は、頂点2-1ベクトルと頂点3-1ベクトルの外積 で間違えてないはずなのに
よく見ると法線のx方向だけが真逆になってる・・何処を間違えているんだろう。
全体のx座標がひっくり返ってるんだろうか。うーん・・。

399 :デフォルトの名無しさん:2009/11/25(水) 09:44:14
DirectXと関係ないから。

400 :デフォルトの名無しさん:2009/11/25(水) 10:04:32
>>398
1.自分が扱っている座標系が右手系なのか左手系なのか、理解していないのではないか。
2.ベクトルの外積がどういう計算なのか理解していないのではないか。

つまり外積すれば法線が求まる、というだけで理解しているのではないか。

401 :デフォルトの名無しさん:2009/11/25(水) 11:20:53
>>400
ありがとうございます。
モデル作成が右手系で確認したのですが大丈夫でした。
そして、半分やけになって関連処理コードを全部消して書き直したら正常に処理・・orz

しかし確かに右手系と左手系でどっち方向が+なのか言えと言われたらすぐに言えないですし、
外積も2ベクトルに垂直なベクトルがどっちか方向に出る という認識しか無いし、勉強不足でした。
今後内積も合わせて注意して行きたく思います。ありがとうございました。

402 :デフォルトの名無しさん:2009/11/25(水) 16:12:51
DirectX9でエフェクトとシェーダを使っているのですが
PNG画像を板ポリに貼り付けての描画がうまく行きません。
透明付きのPNGファイルなのに、透明になりません。
passの中のステート設定は、これで大丈夫でしょうか?
pass
{
PixelShader = compile ps_2_0 PS_Sample();
ZEnable = false;
AlphaBlendEnable = true;
}

403 :デフォルトの名無しさん:2009/11/25(水) 17:07:37
その設定自体も大丈夫ではないし
それだけで判断はできない。

404 :402:2009/11/25(水) 17:49:28
>>403 レスありがとうございます。
エフェクトファイルを全部書きます。ちなみにPOSITIONTで2D描画するので頂点シェーダは記述していません。
texture g_TextureDiffuse;
sampler SamplerDiffuse = sampler_state
{
Texture = <g_TextureDiffuse>;
MinFilter = Linear;
MagFilter = Linear;
MipFilter = Point;
};
struct VS_TO_PS
{
float4 Position : POSITION;
float2 Tex : TEXCOORD;
float4 Color : COLOR;
};
float4 PS_Sample( VS_TO_PS In ) : COLOR
{
return tex2D( SamplerDiffuse, In.Tex );
}
technique Technique_Sample
{
pass
{
PixelShader = compile ps_2_0 PS_Sample();
ZEnable = false;
AlphaBlendEnable = true;
}
}


405 :デフォルトの名無しさん:2009/11/25(水) 17:56:47
ヒント: BlendOp, SrcBlend, DestBlend

406 :デフォルトの名無しさん:2009/11/25(水) 18:00:58
まあ、後テクスチャが不透明の可能性があるから、
こうしてみてよ。

float4 PS_Sample( VS_TO_PS In ) : COLOR 

return 0.5f.xxxx; 



407 :402:2009/11/25(水) 18:12:50
>>405
ありがとうございます。その設定を調べて見ます。
>>406
それで実行するとくすんだ黄色みたいにポリゴンが塗りつぶされるんですが
「.xxxx」ってどういう意味なんですか?

408 :デフォルトの名無しさん:2009/11/25(水) 18:31:26
0.5f.xxxx = float4(0.5f,0.5f,0.5f,0.5f)

409 :402:2009/11/25(水) 18:52:34
>>408
なるほど。ありがとうございます。
ところで>>406ではどうやったって灰色が出力されるだけかと思います。
実際試したら灰色でした。(さっき「くすんだ黄色」と言ったけれど
背景との兼ね合いでの目の錯覚でした。)
これでテクスチャの何が分かるというのですか?

410 :デフォルトの名無しさん:2009/11/25(水) 18:56:01
アルファ値も入ってるだろう

411 :402:2009/11/25(水) 18:57:54
>>410
テクスチャじゃなくてポリゴンが透けるかどうかをテストできるって事ですか?

412 :デフォルトの名無しさん:2009/11/25(水) 18:58:31
>>409
半透明にならない理由が
レンダリングステートにあるのか
テクスチャにあるのか切り分け出来る

>「くすんだ黄色」と言ったけれど 
>背景との兼ね合いでの目の錯覚でした。
これは背景と合成された結果、くすんだ黄色になったのか?
それとも、灰色を見間違っただけか?
前者なら、レンダーステートは何かしら作用していると判断していいのでは?

413 :デフォルトの名無しさん:2009/11/25(水) 19:14:58
初心者はとかくデバッグが出来ないからなぁ

414 :402:2009/11/25(水) 19:15:50
>>412
なるほど・・・いかなる単純な透明であれ、ステートが関係するものなんですね。
アルファ値を含む単純な出力なら、ステートとか関係なく半透明になるかと思いました。
↓こんな感じで実験したら
float4 col;
col.r = 0.9f;
col.g = 0.3f;
col.b = 0.3f;
col.a = 0.1f;
return col;
a が全然作用しないと分かりました。つまりステートの設定ができていなという事なんですね。
よくわかりました。ありがとうございます。
後は>>405について研究して見ます。

415 :デフォルトの名無しさん:2009/11/25(水) 19:40:39
ステートに関係しないと困るだろう。
アルファ値に半透明度ではなく意味のある数値を含めて描画したい場合とかどうにもならんくなる。

416 :デフォルトの名無しさん:2009/11/25(水) 19:58:38
>>405のデフォルト値は
BlendOp = ADD
SrcBlend = ONE
DestBlend = ZERO
だから、AlphaBlendEnableをtrueにしただけじゃソースが素通りで何もブレンドされないね。

417 :402:2009/11/25(水) 20:06:01
>>415 なるほど…
>>416
それ書くとクリエイトエフェクトファイルした時点でエラーが発生します!
例えば
pass
{
PixelShader = compile ps_2_0 PS_Sample();
ZEnable = false;
AlphaBlendEnable = true;
BlendOp = ADD;
}
が通りません。試しにBlendOp = ADD;をピクセルシェーダー内に移動してもダメでした。
どこが間違っているのでしょうか?デフォルト設定なら通るはずなのですが・・。

418 :402:2009/11/25(水) 20:07:29
>>417
BlendOp = D3DBLENDOP_ADD ;
にしても1にしてもだめです。

419 :デフォルトの名無しさん:2009/11/25(水) 21:06:56
DirectXのサンプルについてくるソースなんかを参考にして書き方を覚えるべき。
チュートリアルが一通り使い方を学べるようになっている。

420 :デフォルトの名無しさん:2009/11/25(水) 21:06:59
ゲームをする時にDirectXの初期化に失敗しました
と出るのですが
これの解決策を教えてください

421 :デフォルトの名無しさん:2009/11/25(水) 21:07:57
メーカーに聞けよ!糞が

422 :402:2009/11/25(水) 21:53:01
どなたかエフェクトファイルとシェーダーを使いつつ
透明部分を含む板ポリを描画するようなサンプルをご存知の方いらしたら教えてください。
(SDKのHELP、Web、本など媒体は問いません。)
テクスチャの表示自体は古いテーマなので、シェーダやエフェクトと絡めて
説明されている資料が今のところ見当たりません・・・。

423 :デフォルトの名無しさん:2009/11/25(水) 22:21:44
いやシェーダーやエフェクトにはそんなに関連しないけどな・・・半透明って・・・。
既存のライブラリで半透明描画してるやつとかのソース覗くのが早いんでない。

424 :デフォルトの名無しさん:2009/11/25(水) 22:29:10
ttp://www.twin-tail.jp/wiki/index.php?%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E5%BA%A7%E6%A8%99%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%97%E3%81%9F%E3%83%9D%E3%83%AA%E3%82%B4%E3%83%B3%E6%8F%8F%E7%94%BB
設定の仕方は参考になろう

425 :デフォルトの名無しさん:2009/11/25(水) 22:56:08
>>417
コンパイルエラーは確認したか?

426 :402:2009/11/25(水) 23:11:14
>>423-425
ご助言ありがとうございます。
今、シェーダーをデバッグモードにして、その後元に戻してから
BlendOp = 1;をpass内に書いたら、エラーで落ちずに済みました。
何が何だか分からんのですが、ともかくこれで前に進めます。

427 :402:2009/11/25(水) 23:25:28
DestBlend = 2; にしてみたところ
ようやくできました。
皆様ありがとうございました。

428 :デフォルトの名無しさん:2009/11/25(水) 23:37:04
2ってD3DBLEND_ONEか?
アルファ付きPNGで半透明合成したいときにDestBlend=ONEは絶対間違ってる気がするが・・・

429 :デフォルトの名無しさん:2009/11/25(水) 23:50:30
普通はこうだべ?
D3DRS_BLENDOP = D3DBLENDOP_ADD;
D3DRS_SRCBLEND = D3DBLEND_SRCALPHA;
D3DRS_DESTBLEND = D3DBLEND_INVSRCALPHA;

加算合成したいならまあONEでいいおね

430 :402:2009/11/26(木) 00:03:10
>>428
確かに2= D3DBLEND_ONEです。
私がやりたいのは画像の一部が透明の描画であって
「半透明合成」とは多分違うと思います。

431 :デフォルトの名無しさん:2009/11/26(木) 00:05:03
>>430
半透明部を含む画像を描画することを半透明合成というんだが、
こいつは何を言ってるんだろうか……?

432 :402:2009/11/26(木) 00:06:21
>>429
おお!
今まで重なった部分が明るかったのですが
その設定でやったら解決しました。
ありがとうございます。

433 :デフォルトの名無しさん:2009/11/26(木) 00:12:03
Intel GMA 950でシェーダーを使ってメッシュを
レンダリングがうまくいかないんだが、何かコツある?

・固定シェーダー+POSITION_RHW
・固定シェーダー+POSITION
・HLSLシェーダー+POSITION_RHW
は描画が確認できるんだが、
・HLSLシェーダー+POSITION
の確認が取れない。


434 :デフォルトの名無しさん:2009/11/26(木) 00:17:17
>>432
このページでも読んで、なぜその設定で期待通りの結果になったのかちゃんと理解しろよ
http://msdn.microsoft.com/ja-jp/library/bb173417(VS.85).aspx

435 :デフォルトの名無しさん:2009/11/26(木) 00:18:34
>>433
うちもシェーダーで悩んだのだが、HLSLの症状は逆だな。
ヒントになるかわからないが、バーテックス定義はてっきり
SetVertexDeclaration()
をしないとダメだと思い込んでたが、これコメントアウトして
SetFVF()
にしたら表示された。

この似たような機能の2つの関数はちょっとなんだこれ

436 :デフォルトの名無しさん:2009/11/26(木) 00:21:43
>>433
外しているかもしれないが、
GMA 950は頂点シェーダのハードウェア処理には対応していなくて、
デバイス作成時にソフトウェア頂点処理のフラグを指定しないと駄目だった気がする。

437 :デフォルトの名無しさん:2009/11/26(木) 09:36:02
ゲームとかの水面の揺らぎってスキンメッシュ?ポリゴンを動かしてんの?それともPシェーダー?

あんまりシェーダー使わないからわからないけどPシェーダーでできんのかなあ?

438 :デフォルトの名無しさん:2009/11/26(木) 10:12:46
t-podってサイト理解しづらくないですか?数式が難しいとかじゃなくて

439 :デフォルトの名無しさん:2009/11/26(木) 10:13:05
>>8>>437
"Pシェーダー" の検索結果 約 75 件
http://www.google.co.jp/search?q=%22P%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%22

初めて聞く言い回しだが、鉄道模型シミュレーターとかいう奴ばっかり引っかかるな

440 :デフォルトの名無しさん:2009/11/26(木) 10:16:24
>>439
あれ?なんかに書いてあった気がしたけど気だけか
今度から気をつけるよ

441 :402:2009/11/26(木) 11:44:01
>>434
ピンポイントなHELPをありがとうございます!
想像以上に複雑でしたが、お蔭で理解できました。


442 :デフォルトの名無しさん:2009/11/26(木) 12:37:33
マップを作ってるんですが、広いマップの時はマップを分割して自分のいる場所周辺だけ読み込むのが普通ですか?
それともすべて配列に入れてしまったほうがいいんでしょうか?

443 :デフォルトの名無しさん:2009/11/26(木) 12:47:16
周辺だけだろう
でかさによる

444 :デフォルトの名無しさん:2009/11/26(木) 12:56:59
実際にどのぐらいになるのか容量を明確にしろよ。

445 :デフォルトの名無しさん:2009/11/26(木) 13:11:32
>>402
宜しければわかりやすくまとめてここに書いてもらってよいですか?

446 :デフォルトの名無しさん:2009/11/26(木) 13:22:10
マップを作る勉強なんですが、周辺だけ読み込むとした場合、
周辺と現在マップを入れた9マップを0〜8の9配列に読みこんで作ろうと思うんですが、
常に配列番号4を中心としてマップをずらして配列を再作成すると3〜5マップを、マップ切り替わりの度に読み込むことになりますよね?
このやり方でがんばってもいいんでしょうか?現在位置とマップの高さ座標を再作成される配列を通して計算するところが複雑になりすぎて不安なんです。

447 :デフォルトの名無しさん:2009/11/26(木) 15:13:17
がんばってもいい

448 :402:2009/11/26(木) 16:19:23
>>445
透明付きPNG画像を単純に描画する時は次のように設定するとうまく行きます。
----------------------------------------------------
AlphaBlendEnable = true;//アルファブレンドを有効にします
BlendOp = 1;//ブレンドの方法に加算合成を指定
DestBlend = 6;//ブレンドする時、背景のRGBAに(1-As, 1-As, 1-As, 1-As)を乗算
SrcBlend = 5;//ブレンドする時画像のRGBAに(As, As, As, As)を乗算
--------------------------------------------------
ここでは「As」というのは画像の透明情報です。つまり画像のピクセルのRGBAにおけるAの値です。
そして後に紹介する公式との兼ね合いで(1-As, 1-As, 1-As, 1-As)等のかっこの中の1は
背景、あるいは画像の色をそのまま残すという意味になり、0だと、対応するARGBが0
になります。例(0,0,0,0)真っ暗 (1,1,1,1)変化なし
透明情報が透明か不透明かの2段階しかないPNG画像において「1-As」は
透明なピクセルでは0,不透明なピクセルではでは1になります。
加算合成(BlendOp = 1)においてブレンド後に出力される色の公式は
「 画像のピクセル色 * SrcBlend + 背景のピクセル色 * DestBlend」になります。
この式を上記の設定のコメントと一緒に見て解釈すれば
なぜこれでうまく行くのか分かると思います。

449 :デフォルトの名無しさん:2009/11/26(木) 17:10:19
>>448
頼むからHLSLのステートに即値を設定するのはやめてくれ。

450 :402:2009/11/26(木) 17:23:50
>>449
AlphaBlendEnable = true;
BlendOp = ADD ;
DestBlend = INVSRCALPHA;
SrcBlend = SRCALPHA;
これで出来るんですね。
気がつきませんでした。
D3DBLENDOP_ADD みたいに
プレフィックスまでいれてエラーが出たので
ああ、そりゃHLSLにD3Dで定義された定数は使えないか
直接数字入れるしかね〜のかと思ってあきらめていましたいました。
アドバイスサンクス。

451 :デフォルトの名無しさん:2009/11/26(木) 18:37:29
だからSDKサンプルとドキュメントは熟読しろって言ってるだろ。全て書いてる。

452 :デフォルトの名無しさん:2009/11/26(木) 18:45:55
DXUTで一通りゲーム作ったのはいいんですが、ゲーム終了時に
Error: The Direct3D device has a non-zero reference count, meaning some objects were not released.
というエラーが出ます。どこかで解放してないみたいなんですが、
それを追う方法って何かありますか?


453 :402:2009/11/26(木) 18:58:14
>>451
それが理想的だとはしょっちゅう思うんだが、結局なんか無理・・・
初心者ほどHELPの内容が必要なのに、初心者ほどHELPを読むための
知識や技量が全然足りない。

454 :デフォルトの名無しさん:2009/11/26(木) 19:02:43
>>402
ありがとう。参考になります。
シェーダーにステートが設定できるなんて最近知ったよ。。。(書いてあるサイトが少ない)

455 :デフォルトの名無しさん:2009/11/26(木) 22:21:50
>>454
シェーダーじゃなくてエフェクトファイルな。
エフェクトのインターフェイスが中でStateBlock作って描画毎にステートいじってる。

456 :デフォルトの名無しさん:2009/11/26(木) 22:36:01
>>452
大胆にソースを削る。
例えば、初期化と終了のみにしたらどうか?
+スカイボックスだけにしたらどうか?
+フィールドだけにしたらどうか?とか

457 :452:2009/11/26(木) 23:41:41
>>456
地道にやるしかないようですね。
もう少し詳細なエラー報告が出ればいいんですけどねぇ
ありがとうございました。

458 :デフォルトの名無しさん:2009/11/27(金) 22:54:18
ゲームをする時にDirectXの初期化に失敗しました
と出るのですが
これの解決策を教えてください

459 :デフォルトの名無しさん:2009/11/27(金) 22:55:48
最新のパソコンを買ってきてください

460 :デフォルトの名無しさん:2009/11/27(金) 23:07:09
>>458
まずはエラー部分のソースコードを出せ

461 :デフォルトの名無しさん:2009/11/28(土) 00:12:21
よくわかんねーんだけど
directx使うメリットってなんなの?
VC++じゃいけないの?
教えろ糞共

462 :デフォルトの名無しさん:2009/11/28(土) 00:14:07
知ってるが
お前の態度が
気に入らない

463 :デフォルトの名無しさん:2009/11/28(土) 00:16:02
死ね

464 :デフォルトの名無しさん:2009/11/28(土) 00:19:31
ポリゴンとポリゴンの重なってるところがギザギザになるのって
位置を変える以外に解決法ある?

465 :デフォルトの名無しさん:2009/11/28(土) 00:45:03
Zバイアス使え
リックディアスじゃないぞ

466 :デフォルトの名無しさん:2009/11/28(土) 00:48:13
よくわからないのですが
directx使う利点についてお教え願いたいです
ご親切な方宜しくお願いします

467 :デフォルトの名無しさん:2009/11/28(土) 00:48:52
知ってるが
お前の態度が
気に入らない

468 :デフォルトの名無しさん:2009/11/28(土) 00:54:06
>>465
そうかわかった

バイアスとバイアランならよく間違えるがな

469 :デフォルトの名無しさん:2009/11/28(土) 00:54:54
じゃあなんて聞けばいーの?

470 :デフォルトの名無しさん:2009/11/28(土) 01:20:56
お前の態度が

471 :デフォルトの名無しさん:2009/11/28(土) 01:54:15
知ってるが
お前の態度が
気に入らない

472 :デフォルトの名無しさん:2009/11/28(土) 01:55:21
知ってるが
お前の態度が
気に入らない

473 :デフォルトの名無しさん:2009/11/28(土) 01:57:15
知ってるが
お前の態度が
気に入らない

474 :デフォルトの名無しさん:2009/11/28(土) 02:11:21
知ってるが
お前の態度が
気に入らない

475 :デフォルトの名無しさん:2009/11/28(土) 02:19:54
知ってるが
お前の態度が
気に入らない


476 :デフォルトの名無しさん:2009/11/28(土) 02:44:07
知ってるが
お前の態度が
気に入らない

477 :デフォルトの名無しさん:2009/11/28(土) 02:58:07
知ってるが
お前の態度が
気に入らない

478 :デフォルトの名無しさん:2009/11/28(土) 03:13:14
知ってるが
お前の態度が
気に入らない

479 :デフォルトの名無しさん:2009/11/28(土) 03:19:02
知ってるが
お前の態度が
気に入らない

480 :デフォルトの名無しさん:2009/11/28(土) 03:26:41
知ってるが
お前の態度が
気に入らない

481 :デフォルトの名無しさん:2009/11/28(土) 03:53:01
知ってるが
お前の態度が
気に入らない

482 :デフォルトの名無しさん:2009/11/28(土) 04:36:23
知ってるが
お前の熊度が
気に入らない

483 :デフォルトの名無しさん:2009/11/28(土) 04:50:01
知ってるが
お前の熊度が
気に入らない

484 :デフォルトの名無しさん:2009/11/28(土) 05:11:11
知ってるが
お前の熊度が
気に入らない

485 :デフォルトの名無しさん:2009/11/28(土) 10:09:29
キレちゃったの?(笑)

486 :デフォルトの名無しさん:2009/11/28(土) 10:27:39
directx使わないでゲーム作ってみればいい

487 :デフォルトの名無しさん:2009/11/28(土) 10:59:07
作ってみた。
printfとscanfとちょっとした配列やifとかfor文といった基本的なことだけでも
コマンドプロンプトでゲームつくれるぞ。文章だけでも立派なゲームだ。

488 :デフォルトの名無しさん:2009/11/28(土) 11:02:48
そもそもDirectXとVCを比較対象にすること自体が阿呆としか言いようがない。
肉と包丁を比べるような物。

肉使うメリットってなんなの?
包丁じゃいけないの?

意味が分からん。

489 :デフォルトの名無しさん:2009/11/28(土) 11:05:42
>>487
それで満足できるんならそれでいいんじゃないの
誰も文句言わんよ
俺の一つ上の世代は文字しかないゲームを何十時間も遊んだんだし

490 :デフォルトの名無しさん:2009/11/28(土) 11:41:29
directXに限らずDXLIBでもOPENGLでもいいがある種のゲーム製作を簡単にする。
具体的にどんな機能かというと「超早いタイマー」

普通のウィンドウズのアプリケーションは
マウスがクリックされたら〜〜しろ、キーボードから入力されたら〜〜しろ
そうじゃないなら休んでろ、みたいな感じ。
「ユーザーの入力等がないなら何もしないプログラム」
こういうのをイベントドリブン型プログラムという。

だが普通のゲームは違う。
マリオなら、マリオを操作しなくても、敵のクリボーやノコノは歩いてくるしぶつかったらマリオは死ぬ。
ドラクエなら、勇者を操作しなくても町の人々はうろちょろ歩き続けるし、いろいろな処理をしてる。
「ユーザーの入力がなくてもリアルタイムで何らかの処理をしなければならない」
厳密にはリアルタイムじゃなくものっそい小さい秒で細かい処理をしてるだけだが。

こんな風に、普通のウィンドウズアプリケーションとは動作がぜんぜん違うから
同じようには作りづらい。そこでDirectXなどがあればこういう
「リアルタイム処理」がしやすくなる。まぁグラフィックス表示機能とかもあるけどそれはオマケ。

491 :デフォルトの名無しさん:2009/11/28(土) 11:51:03
>>490
それは違う。
DXLIBは知らないが、DirectX(DDraw/D3D/D2D)、OPENGLは単なるライブラリだ。
フレームワークではない。
従ってそのようなリアルタイムプログラムを作成するには
それに適した構造のプログラムを自分で書かなければならない。

492 :デフォルトの名無しさん:2009/11/28(土) 11:56:22
普通のプログラム

BGM再生したいとき
なんか「いんすたんす」とかいう意味不明なものを作成して「初期化」だのなんだのごちゃごちゃやらなくてめんどくせーー!!

ダイレクトXとかなら

PlayMusic("C:\Windows\test.mid");
これだけで音楽流れる!素敵!最高!ラクチン!

どうだ?Directxのありがたさがわかったか!

493 :デフォルトの名無しさん:2009/11/28(土) 13:04:28
>>491
DXLIBもリアルタイム処理(?)に特化したような構造だがただのライブラリに過ぎん

494 :デフォルトの名無しさん:2009/11/28(土) 13:15:54
フレームワーク=dllがいっぱい集まったもの

495 :デフォルトの名無しさん:2009/11/28(土) 13:22:27
>>494
ちげーよ。フレームワークというのは、アプリケーションを実装する基盤のことだ。
例えばC標準ライブラリはライブラリだが、

int main(int argc, char** argv)
{
}
の仕組みとmain関数の外側はフレームワークということだ。

496 :デフォルトの名無しさん:2009/11/28(土) 13:46:06
>>494 これはひどい

497 :デフォルトの名無しさん:2009/11/28(土) 13:53:34
>>466
VC++を使ってグラフィックを表示させるには大まかに分けて
GDIとDirectXを使う方法がある。
GDIはウインドウやアイコン等、一般的なアプリケーションでも
多用されている昔からある方法。
DirectXはゲームなどの高速描画に耐えられるように後から
追加された方法。特に本格的な3DCGをやりたいなら必須。

498 :デフォルトの名無しさん:2009/11/28(土) 13:56:21
あれ、ちょっと待てよ、OPENGLがあるか・・・

499 :デフォルトの名無しさん:2009/11/28(土) 16:17:32
とりあえず>>490がDirectXアプリケーションを書いたことが無い知ったかってのは判る

500 :デフォルトの名無しさん:2009/11/28(土) 17:08:11
GLのがD3Dより面倒がちょっと多い
代わりに出来ることがちょっと多い

501 :デフォルトの名無しさん:2009/11/28(土) 17:12:30
OpenGLはDirectXより習得が簡単!

502 :デフォルトの名無しさん:2009/11/28(土) 17:18:56
それが真実なら今みたいに衰退してない

503 :デフォルトの名無しさん:2009/11/28(土) 17:28:13
>>500
いい加減なことを言う前に、具体的に何が面倒で何が多いのかを明確にしろ。


504 :デフォルトの名無しさん:2009/11/29(日) 05:49:30
Directplayのサービスプロバイダーの設定について質問です。

pDP8AddressHost->BuildFromURLA(
"x-directplay:/provider=%7BEBFE7BA0-628D-11D2-AE0F-006097B01411%7D;hostname=129.0.0.1;port=2345" );

というようにBuildFromURLA最後の部分でポート番号2345を指定してホストを作成しています。
しかしながら、このやり方だと2345番ポートが何らかのケースで使えなかった場合にエラーが生じてしまいます。
(モデムの問題やソケットの開放不具合でこのケースが結構ある)
そこで、

pDP8AddressHost->BuildFromURLA(
"x-directplay:/provider=%7BEBFE7BA0-628D-11D2-AE0F-006097B01411%7D;hostname=129.0.0.1" );

というようにすると、2345番ポートが利用不可能な場合でも正常にHost関数が
実行でき、ホストになれるのですが、今度はポート番号が分からないので外部から
接続できません。

ポート番号を明示的に指定しなかった場合はどのようにして使われているポート番号を
取得するのでしょうか?

505 :デフォルトの名無しさん:2009/11/29(日) 06:05:22
>>504
DirectPlay自体がレガシー扱いになって非推奨になってるからなぁ。
不満点があるなら使うなとしかいいようが。

506 :デフォルトの名無しさん:2009/11/29(日) 09:47:50
>>504
エラー起きたら投げて別のポート試させればいいじゃん

507 :デフォルトの名無しさん:2009/11/30(月) 13:57:01
Xaudio2解説のいい書籍とかない?

やっぱりサンプルから勉強するっきゃないのかなあ・・・

508 :デフォルトの名無しさん:2009/11/30(月) 14:37:15
MSDN

509 :デフォルトの名無しさん:2009/11/30(月) 18:15:23
ISDN

510 :デフォルトの名無しさん:2009/11/30(月) 18:19:33
ADSL

511 :デフォルトの名無しさん:2009/11/30(月) 18:20:22
ICBM

512 :デフォルトの名無しさん:2009/11/30(月) 19:03:07
ISBN

513 :デフォルトの名無しさん:2009/11/30(月) 22:57:09
つまらん!
お前らの話はツマラン!!!

514 :デフォルトの名無しさん:2009/12/01(火) 18:09:59
Direct3D9でフルスクリーンモードで描画している際、
自分自身のスクリーンのキャプチャを高速に行うにはどのように実装すればいいでしょうか?

sf = device->GetBackBuffer(0, 0);
HDC srcdc = sf.GetDC();
::BitBlt(dstdc, 0, 0, gameView.Width, gameView.Height, srcdc, 0, 0, SRCCOPY);
//後略

といった形でメインメモリに転送してるのですが、
BitBltの部分でFullHDの場合で0.3秒くらいかかってしまいます。

515 :514:2009/12/01(火) 18:20:23
情報が抜けてました。
フルスクリーンモードの描画をキャプチャするのは、キャプチャ画像をファイルとして書き出すためではなく、
描画をGDIに切り替える際の描画キャッシュとして使いたいためです。
フルスクリーンで描画中に一時的に
device->SetDialogBoxMode(TRUE);
を実行してメニューを表示したりダイアログを表示したりしています。

516 :デフォルトの名無しさん:2009/12/01(火) 18:49:58
サーフェイスをロックしてそのメモリをコピーすればいいよ。
一番いいのはダイアログを使わない事だけど。

517 :デフォルトの名無しさん:2009/12/01(火) 22:03:18
サーフェスのLockはめちゃくちゃ遅いよ。
シングルコアだとそこまで遅くはないんだが、マルチコアだと致命的な遅さ。
GetDC等も内部的にLockするので駄目。

GetRenderTargetDataが速い。

518 :デフォルトの名無しさん:2009/12/01(火) 22:35:41
有料な同人ソフト以上のモノを作るなら、GDIでがんばるより
DXUTを使うかDXUTみたいなのを自作するほうが質も速度も断然いいのでは。

519 :デフォルトの名無しさん:2009/12/01(火) 22:41:15
>>516
ちょっと事情があって、Lock使うのは避けたい……。

>>517
なるほど。確かにビデオカード→システムメモリはボトルネックになりかねないし
画面の描画自体と競合もしてしまうので、
それを避けるためにGetRenderTargetData()でさっさとシステムメモリに転送かけたほうがよさそうです。
この線で試してみることにします。

520 :デフォルトの名無しさん:2009/12/01(火) 22:57:28
初歩的な質問ですみません
DrawPrimitiveとDrawSubsetを見かけるんですが、これってどんな違いが?

521 :デフォルトの名無しさん:2009/12/01(火) 22:58:41
>>520
DrawSubmitは内部でDrawPrimitiveIndexだっけ?を使用している

522 :デフォルトの名無しさん:2009/12/01(火) 23:14:35
>>517
描画前のバックバッファをシステムメモリのサーフェイスにコピーしてロックしたほうが速いだろ?
GetRenderTargetDataなんて鈍足の代表だろ。

523 :デフォルトの名無しさん:2009/12/01(火) 23:20:39
>>522
バックバッファをシステムメモリに転送するのがGetRenderTargetDataなんだが。
GetFrontBufferDataと間違えてない?

524 :デフォルトの名無しさん:2009/12/02(水) 00:43:04
GetRenderTargetDataってAA使うと使えなくね?

525 :デフォルトの名無しさん:2009/12/02(水) 10:23:14
>>521
そうなんですね。ありがとうございました。

526 :デフォルトの名無しさん:2009/12/02(水) 10:33:57
すみません
「ポリゴンの半透明化」と「テクスチャの抜き色」の実装が上手く行かず困っています。
(背後のオブジェクトが表示されない現象など)
レンダリングステートや描画順序を正しく理解していない所為だと思うのですが
ここを詳しく解説して下さっているサイト様などをご存知の方はいらっしゃらないでしょうか?

527 :デフォルトの名無しさん:2009/12/02(水) 10:39:19
Zバッファを確認しろ
出来なければいっそ切れ

528 :デフォルトの名無しさん:2009/12/02(水) 11:28:36
>>517
FullHDでも0.1秒以内にメニューが表示できる状態になることを確認しました。
どうもありがとうございます。

しかし、表示方式を切り替えた瞬間にちらつくのは、なおらんのかなー。
デュアルディスプレイのもう一方のほうもちらついてるからなぁ。

529 :デフォルトの名無しさん:2009/12/02(水) 11:45:23
>>527
Zバッファの問題だったんですね。
やっと欲しい情報が見つかり始めました。感謝。

530 :デフォルトの名無しさん:2009/12/02(水) 16:08:53
表示方式切り替える時というのは双方なのか、片側なのか。
多分ウィンドウの描画メッセージとうまくかみ合ってないだけな気がする。

531 :デフォルトの名無しさん:2009/12/02(水) 19:24:40
すいません初心者です。
バトル画面のプログラム教えて欲しいのです><。
if(ch.x%32==0 && ch.y%32==0){ //座標が32で割り切れたら入力可能
ch.walking_flag=1; //歩くフラグを立てる。
if ( Key[ KEY_INPUT_UP ] == 1 ) //上ボタンが押されたら
ch.muki=3; //上向きフラグを立てる
else if( Key[ KEY_INPUT_LEFT ] == 1 ) //左ボタンが押されたら
ch.muki=1; //左向きフラグを立てる
else if( Key[ KEY_INPUT_DOWN ] == 1 ) //下ボタンが押されたら
ch.muki=0; //下向きフラグを立てる
else if( Key[ KEY_INPUT_RIGHT] == 1 ) //右ボタンが押されたら
ch.muki=2; //右向きフラグを立てる
else //何のボタンも押されてなかったら
ch.walking_flag=0; //歩かないフラグを立てる
if(ch.walking_flag==1) //もし歩くなら
if(can_or_cannot(ch.x,ch.y,ch.muki)==1)//行き先が歩けないなら
ch.walking_flag=0; //歩かないフラグを立てる。
if(ch.walking_flag==1)
if(GetRand(4)==0)
{
printfDx("敵");}

}
敵の部分を同変えればいいかわかりません。
おねがいします。


532 :デフォルトの名無しさん:2009/12/02(水) 19:32:17
DXライブラリ(笑)

533 :デフォルトの名無しさん:2009/12/02(水) 19:47:35
スレチ

534 :デフォルトの名無しさん:2009/12/02(水) 19:57:09
すみません


535 :デフォルトの名無しさん:2009/12/02(水) 20:04:32
他当たってきますorz
荒らしてすみません。


536 :デフォルトの名無しさん:2009/12/02(水) 20:32:44
DXライブラリのスレッドは別にあるが、それよりゲーム製作の根本的な所なのでゲ製作板質問スレか
DXライブラリ本家にでも行って尋ねるといい

あと、質問の意図が全く分からんのでもっと考えろ

537 :デフォルトの名無しさん:2009/12/03(木) 08:58:46
いままでDirectsound使ってたんだけどそろそろXaudio2にしようとおもったんだが
あれってDirectsoundとは完全に別で今までのソース使えなくて全部最初から作ることになるの?

538 :デフォルトの名無しさん:2009/12/03(木) 10:04:05
当たり前だろ。
わざわざ書き直すメリットも大して無いから、そのままDirectSound使ってろよ。

539 :デフォルトの名無しさん:2009/12/03(木) 20:26:34
シェーダを使ってポイントスプライトを描画したのですが
カメラからの距離によって大きさが変わらず困っています
SetRenderStateを使った方法ではできるのですが
POINTSCALEENABLE = TRUE;
POINTSCALE_A = 0.0f;
POINTSCALE_B = 0.0f;
POINTSCALE_C = 1.0f;
シェーダでは、この設定だけではできないのでしょうか
グラボの性能は大丈夫のはずです

540 :デフォルトの名無しさん:2009/12/04(金) 02:16:36
テクスチャのUV値についての質問です。

たとえば、256*256のテクスチャから200*200の矩形を使いたい場合、
右下のUV値には u = v = 200.0f / 256.0f とすればいいのでしょうか?
精度のせいで、画像がボケたり、ゴミが付いたりしないのでしょうか?

541 :デフォルトの名無しさん:2009/12/04(金) 02:24:34
フィルターをかける場合は隣のドットの色が混じることはある
その場合は画像の方に一工夫が必要だ

542 :デフォルトの名無しさん:2009/12/04(金) 02:56:08
>>541
ありがとうございます

543 :デフォルトの名無しさん:2009/12/04(金) 21:12:13
>540
半ピクセル分ずらすよろし
左上もな

544 :デフォルトの名無しさん:2009/12/04(金) 22:03:55
DirectX逆引き大全500の極意
みたいなリファレンスに使えるオヌヌメ本ってありまするか?
これ絶版のようで・・・アマゾンだと中古で1万とかするんですよね・・・

目的はゲーム製作で、浅く広くdirectxを扱ってるのがいいのですが

545 :デフォルトの名無しさん:2009/12/04(金) 22:10:28
やたら絶賛されてるけど逆引きってそこまでいい本かねぇ・・・。
たいした量ないんだしSDK付属のリファレンス全体を軽く読んでから
そこらへんのウェブサイト巡れば個人レベルなら困ることは無いと思うけど。

546 :デフォルトの名無しさん:2009/12/04(金) 22:15:00
まあそれは個人の判断だろうが
悪い本ではないと思うよ

ただ通らない奴あるからなあ…

547 :デフォルトの名無しさん:2009/12/04(金) 22:17:22
通らない奴=コンパイルが通らない奴って意味ですか?

548 :デフォルトの名無しさん:2009/12/04(金) 22:21:01
そうだよ
まあちょっと直せば動くけど

ただ簡単な応用まで書いてあるから
別になくてもわかるけど・・・ってのもある
カメラのクレーン移動とか

549 :デフォルトの名無しさん:2009/12/04(金) 22:24:02
そんなことやってる暇ないだろ

550 :デフォルトの名無しさん:2009/12/04(金) 22:24:44
すまん誤爆した

551 :デフォルトの名無しさん:2009/12/04(金) 23:33:06
クレーン移動とかやってる暇ないだろって
どんな状況だよ
とほんわかした

552 :デフォルトの名無しさん:2009/12/05(土) 00:22:25
>>544
DirectX9の範囲でいいなら、
http://www.amazon.co.jp/DirectX9-DirectX-Graphics-I%E3%83%BBO-BOOKS/dp/477751112X

がお勧めだよ。
HLSLのリファレンスがきっちり載せられてるほぼ唯一の本。
MS純正本のほうは同じく絶版になってる。

HLSLの文法や識別子のリファレンスがMSDNも含めて
きっちり書かれてるところが皆無だから非常に助かった。

それとシェーダーの入門書を1冊持ってる。
この2冊あればDirectX関係はほぼ困らないな。

553 :デフォルトの名無しさん:2009/12/05(土) 00:34:53
>>544
12/20に「DirectX逆引き大全500の極意」を大幅改定した書籍が出るみたいですよ。

DirectX9必携
ttp://www.northbrain.org/book/book.html#DX9HK

554 :デフォルトの名無しさん:2009/12/05(土) 00:51:22
なあジオメトリシェーダって、
インデックスバッファをGPUで加工出来る機能だと思っていいの?

555 :デフォルトの名無しさん:2009/12/05(土) 00:55:49
>>552
さっそくチェックしてみます!ありがとうございまする^^
>>553
まじっすか!?
首を長くして待とうとおもいます^^

ありがとうございました!

556 :デフォルトの名無しさん:2009/12/05(土) 00:57:16
>>553
ほほー。絶版になってて以前諦めた本がリニューアルされてるのか。
書店に出るようなら眺めてみるかなぁ。

557 :デフォルトの名無しさん:2009/12/05(土) 02:19:42
>>554
違う。

558 :デフォルトの名無しさん:2009/12/05(土) 09:56:23
>>557
kwsk

559 :デフォルトの名無しさん:2009/12/05(土) 11:07:25
どうやらジオメトリシェーダって
DrawPrimitiveでいうプリミティブを1枚づつ受け取って、
Indexedじゃないプリミティブ配列を返すという感じだね。
確かにインデックスバッファは用済みみたい、サンクスコ

560 :デフォルトの名無しさん:2009/12/05(土) 11:18:22
>>559
まじっ!?


561 :デフォルトの名無しさん:2009/12/07(月) 16:08:23
質問です。
XAudio2というのは、DirectX9.0に含まれているのでしょうか?

562 :デフォルトの名無しさん:2009/12/07(月) 16:14:09
無い

563 :デフォルトの名無しさん:2009/12/07(月) 16:17:09
あら・・・9.0対応していないならゲーム作りにはちょっと使えないですね・・・
(まだXPを切り捨てられないので)

ありがとうございました。

564 :デフォルトの名無しさん:2009/12/07(月) 16:50:06
>>562
うそつけ!
>>563
最近のDirectX Redistの中に入ってるよ。
2009年のもの(2つあるけど好きなほう)落としてごらん。

565 :デフォルトの名無しさん:2009/12/07(月) 16:56:17
>>563
念のためにいっておくが、XP sp2以降での動作は確認取れてるよ。
XP無印はまだ試してないので分からないけど。

566 :デフォルトの名無しさん:2009/12/07(月) 21:14:07
個人的な確認が何の意味あるの。

567 :デフォルトの名無しさん:2009/12/07(月) 21:23:58
>>564
何が嘘なんだよ?
DirectX9.0の時点であったのはDirectX Audioまでであって、
XAudio2は存在していない。

お前の場合、嘘というより無知なんだから、
自覚して反省したら今後は黙ってろ。

568 :デフォルトの名無しさん:2009/12/07(月) 21:24:55
>>566
DirectXのコンポーネントがインストールできるかは
OSのバージョンとSPだけで決まって機種依存はないんだから、
手元で実際に試してみて確認が取れれば十分じゃん。

569 :デフォルトの名無しさん:2009/12/07(月) 21:28:14
>>567
それは実情に合ってない詭弁というものだ。
確かにXAudio2はDirectX9.0に入っていなかったかもしれないが、
今はXPにインストールできるし、Direct3D9と組み合わせて動かすことだってできる。

570 :デフォルトの名無しさん:2009/12/07(月) 21:32:17
詭弁でも何でも無いだろ。
DirectX9.0の機能じゃないし、Direct3D9と連携させる話なんて全く出ていない。
勝手に話を別の方向に持って行って頓珍漢なことを言っているのが分からないのか?

571 :デフォルトの名無しさん:2009/12/07(月) 21:33:56
DirectXのバージョンは無関係。
ランタイムがあればWindowsXPでも動く。
ただそれだけ。

572 :デフォルトの名無しさん:2009/12/07(月) 22:09:07
>>570
確かに561の最初の質問の時点ではDirectX9.0と組み合わせるかどうかは言及してないが、
563を読めば実際には組み合わせたいのだという意図は読み取れるだろう。
そしてDirectX9以降はXBox360系の機能を除いては3D系しか更新されてない。
従って通常はDirect3D9と組み合わせたいのだと考えても差し支えないはず。

で、571が簡潔な答えじゃないかと。

573 :デフォルトの名無しさん:2009/12/07(月) 22:11:08
お前が判断する問題ではない

574 :デフォルトの名無しさん:2009/12/07(月) 23:02:30
「D3DXにスプライトなど無い」の人かしら

575 :デフォルトの名無しさん:2009/12/07(月) 23:06:07
>>572
何がお前をそこまで駆り立てる?

576 :デフォルトの名無しさん:2009/12/07(月) 23:07:42
>>572
君、敗者確定ね

577 :デフォルトの名無しさん:2009/12/07(月) 23:47:13
>>553の本、定価3300円で12/10からAmazonで予約開始だそうだが、
制作元?に直接注文すれば今だけ送料込2800円だってよ。
ttp://www.northbrain.org/


578 :デフォルトの名無しさん:2009/12/07(月) 23:57:20
それはちょっと怪しいな
本のデキが悪くて売れないからなのか?
たった500円ぽっちで地雷踏みたくないからちょっと様子見にするわ

579 :デフォルトの名無しさん:2009/12/08(火) 00:53:00
内容的には大全の増補改訂版だから、地雷って事は無いと思うけどな。
大全自体を地雷扱いしてるなら話は別だが。

580 :デフォルトの名無しさん:2009/12/08(火) 00:58:05
初版を買う奴はいないだろ。技術書で。

581 :デフォルトの名無しさん:2009/12/08(火) 01:24:56
技術書なんて、再販される頃にゃ陳腐化して使い物にならないぜ
数が出なくて初版で絶版だったり、そこまですら売れずに
初版が本屋で年単位で埃被ってる状況すら珍しくないのに

582 :デフォルトの名無しさん:2009/12/08(火) 01:43:36
へー
ド田舎じゃそうなんだろうな

583 :デフォルトの名無しさん:2009/12/08(火) 03:42:43
konozama

584 :デフォルトの名無しさん:2009/12/08(火) 07:53:51
>>581芸能人の本は本当にあんなに売れてるのか?

585 :デフォルトの名無しさん:2009/12/08(火) 08:13:52
数学勉強し始めてプログラミングが中断してしまった
まぁ遠回りしたほうがいいよね

586 :デフォルトの名無しさん:2009/12/08(火) 10:21:26
大全ってなんだか初心者向けな気がする
あるポリゴンの三点をとって面の傾きを知るとか面の上のある点の座標を求めるとか
三点とる以外はただのベクトルの応用だろ
あとは間違いがあるサンプルとか・・・

ただXaudio2の話が載ってたら欲しいかなあ

587 :デフォルトの名無しさん:2009/12/08(火) 11:00:44
気がする、じゃなくて明確に初心者がターゲットだろ
あとはコピペグラマとかサンプルプログラマとかの発想力ゼロの奴等もか

588 :デフォルトの名無しさん:2009/12/08(火) 11:05:34
DirectSound と XAudio

ttp://mainori-se.sakura.ne.jp/slimdxwiki/wiki.cgi?page=DirectSound+%A4%C8+XAudio+%A4%CE%B0%E3%A4%A4


589 :デフォルトの名無しさん:2009/12/08(火) 11:32:03
>>569>>572
どうもありがとうございます。
といっても、XPまでなんですね。微妙なところ・・・。流石に2kは対象外としてもいいかなぁ?

意図をくみ取ってくださってありがとうございました。
もちろん、DX10〜が使えない環境で使えるかという意味合いでした。今後はもう少し具体的に書くようにしますね。

590 :デフォルトの名無しさん:2009/12/08(火) 11:32:44
>>586
初心者向け?
おまえにぴったりじゃないか!

591 :デフォルトの名無しさん:2009/12/08(火) 11:42:51
>>588
ちゃんと使ったことないのに無理してまとめんなよって感じの記事だな・・・

>>589
2000はサポート外。ドキュメントに明記されてるよ。

CPUもSSE載ってないと初期化ではじかれる。
どちらかと言えばそっちの要件の方がきついかもね。

592 :デフォルトの名無しさん:2009/12/08(火) 12:02:49
>>589
まあ、アレゲなバックポート対応のライブラリをインストールしたら2kでも使えるみたいだけどね。
でも到底サポートといえるレベルじゃ……。

>>591
MSDNでは記述が確認できないんだが、どこに書いてあるんだろうか?
ただし、SDKのヘッダファイルに対応OSが書かれてるのは確認している。
XAudio2周辺では、XACT3D3ライブラリのみが2k対応みたいだな。
(なぜかXAudio2本体には書いてないんだけど……)

593 :デフォルトの名無しさん:2009/12/08(火) 12:16:32
>>592
http://msdn.microsoft.com/en-us/library/ee415709(VS.85).aspx

594 :デフォルトの名無しさん:2009/12/08(火) 12:28:40
つーかおめーらDirectXでなにやってんの?

595 :デフォルトの名無しさん:2009/12/08(火) 12:29:01
オナニー

596 :デフォルトの名無しさん:2009/12/08(火) 13:32:24
>>591
自分の作ってるゲーム(?)を2kサポート外にしようかなぁって意味だろ・・・

597 :デフォルトの名無しさん:2009/12/08(火) 21:18:52
DirectSoundとかDirectInputでは、あるウィンドウハンドルにたいして協調レベルの設定というのをやらないと使えませんよね?
それが嫌だったので、デスクトップのウィンドウハンドルについてDSBCAPS_GLOBALFOCUSとかDISCL_BACKGROUNDフラグを指定して
使おうと思うんですが、PCの動きが悪くなったり、他のソフトが動かなくなるとかの実害はあるんでしょうか?

ウィンドウが非アクティブな時はメッセージ処理で音を止めたり、入力を中断すれば特に問題はないんでしょうか?

598 :デフォルトの名無しさん:2009/12/08(火) 21:23:03
>>597
なんでそれくらい、自分で動かしながら物を考えない?
そういう使い方をするなら、DirectInputよりグローバルフックのほうがふさわしい。

599 :デフォルトの名無しさん:2009/12/08(火) 21:37:58

いや、手元で動いてはいるんですけど、それで全体の動作に悪影響が無いかが気になったんで・・・・

600 :デフォルトの名無しさん:2009/12/08(火) 21:59:54
色々やってみるしかねぇ
アクティブ切り替えたり他のアプリ起動してみたりして

601 :デフォルトの名無しさん:2009/12/08(火) 22:02:06
どうしようもないな・・・・・・・・・・・・・

602 :デフォルトの名無しさん:2009/12/08(火) 23:25:39
いまさら2k対応したところで何のメリットも得られないけどな。
悩む意味がわからない。

603 :デフォルトの名無しさん:2009/12/09(水) 00:10:50
ttp://journal.mycom.co.jp/news/2009/11/04/016/index.html
Windows XP 70.48% (↓)
Windows Vista 18.83% (↑)
Windows 7 2.15%(↑)
Windows 2000 0.78% (↓)
今や2000はシェア1%にも満たないんだな
わざわざ手間隙かけてサポートする価値はなさげ

604 :デフォルトの名無しさん:2009/12/09(水) 00:33:13
また、エロゲPGが煽ってるのか?
お前等、金にならないOSのサポートはやめろといってるだろ
そんなにサポートしたいならまずはMacで動かしてやれよw

605 :デフォルトの名無しさん:2009/12/09(水) 00:43:08
そんなものなのか。
うちはWin98までサポートしてしまってるけど、もうやめるか。

606 :デフォルトの名無しさん:2009/12/09(水) 00:48:18
俺が7年前に初めて触ったPCですらXPだったってのに、
98なんて歴史の中の存在だよ

607 :デフォルトの名無しさん:2009/12/09(水) 00:53:45
やりたいっていってるのに、拒否しようとしてるのは知らないからなのか、親切心からなのか。

608 :デフォルトの名無しさん:2009/12/09(水) 01:44:22
他にもっと優先的にやることがあるだろって話だよ。
日本のPCゲーの開発者、つーかエロゲとか同人だけど、
そいつらは低スペックで動くようにする事にやたらこだわるからな。

609 :デフォルトの名無しさん:2009/12/09(水) 02:10:10
新しいOSも買えない貧乏人は相手にしなくていい

610 :デフォルトの名無しさん:2009/12/09(水) 08:32:28
アリスソフトのやり方がリファレンスだとか

611 :デフォルトの名無しさん:2009/12/09(水) 09:06:42
アリスなんてまさにエロゲじゃねえかw
まぁでも趣味でやれればいいなら好きにすりゃいいけどなー。
将来PGで飯を食いたいとか妄言を言わなきゃ別に何でもいい。

612 :デフォルトの名無しさん:2009/12/09(水) 11:10:32
XPで動いて、2kで動かない。という状況がまずないからな

613 :デフォルトの名無しさん:2009/12/09(水) 11:32:44
>>612
MS自身では最近は2kで動かないように作るほうが普通になってる。
オレは本音を言うならXPすら捨てたい。
DirectX10楽そうだからな。

614 :デフォルトの名無しさん:2009/12/09(水) 11:34:02
どうせならX10より11じゃねえの?

615 :デフォルトの名無しさん:2009/12/09(水) 11:38:20
初心者的にはサンプルが大量にあるから9nが楽
シニア的にはもう作ってるから9のが楽

616 :デフォルトの名無しさん:2009/12/09(水) 11:55:54
よほど商業で最先端をウリにしたものを作るのでない限り、
趣味ゲーや同人ゲーを作る上ではDirectX9で十分だしな。

というか、XPのパイを切り捨てられるほど超最先端なゲームなんて、このスレにくるようなやつがつくるか?

617 :デフォルトの名無しさん:2009/12/09(水) 12:03:23
いまでもRPGツクール2000でゲームつくる人が多くいる時代だぜ
高性能なPS3やx-box360よりもDSや携帯電話ゲームの方が多く遊ばれている時代だぜ

618 :デフォルトの名無しさん:2009/12/09(水) 12:04:44
まずDx9やめてDx10使うと何が良いの?

619 :デフォルトの名無しさん:2009/12/09(水) 12:09:20
>>616
逆じゃね?商業だとXPの切り捨ては無理だが、
趣味なら簡単に切り捨てて楽したり新しい技術で遊んだりできる

620 :デフォルトの名無しさん:2009/12/09(水) 12:20:29
(前略)
この度はご注文戴き、誠にありがとうございます。
(中略)
【商品】
「DirectX9必携」 1冊 2,800円
送料 当社負担
特別割引 -600円 

合計 2,200円
(中略)
【商品発送時期】
12月20日前後になります。
(後略)

定価3300円の筈だが、再販制度と取次を回避するとここまで安く出来るものなのか?
かなりびっくりした。
あと、Gmailだと届かないっぽいから気をつけろ。

621 :デフォルトの名無しさん:2009/12/09(水) 14:18:06
>>614
API的にはそうなんだが、GeForceが未だに対応してないってお前空気読め>NVIDIA
って状態。

622 :デフォルトの名無しさん:2009/12/09(水) 14:23:35
移行はどう推移していくのかねえ。
DX9→DX11(DX10モード)→DX11か、
DX9→DX11か。

623 :デフォルトの名無しさん:2009/12/09(水) 14:49:00
>>621
はぁ?
お前が空気読めよ

624 :デフォルトの名無しさん:2009/12/09(水) 14:52:11
>>623

625 :デフォルトの名無しさん:2009/12/09(水) 14:55:14
>>624

626 :デフォルトの名無しさん:2009/12/09(水) 14:57:23
>>625

627 :デフォルトの名無しさん:2009/12/09(水) 15:03:25
DirectX11をNVIDIAがいつまで経ってもサポートしようとしないのは、
今後主流になっていくGPGPUについて、MSの力を借りずNVIDIA流で押し通したいっていう
政治的なものが感じられてくる。
Dx9のときは、HLSLという形でCgの成果をMSに提供してていい感じだったんだが。

一方、ATI(AMD)は純粋にGPUとして進化させていくという方式だから、DirectX対応も素直。

628 :デフォルトの名無しさん:2009/12/09(水) 15:18:18
いや、今必死こいて対応チップ作ってるだろ。
それを言ったらDirectX10のときにNVIDIAに半年遅れをとったATiはどうなるのよ。

629 :デフォルトの名無しさん:2009/12/09(水) 15:21:24
この板もいい加減ID出して欲しいぜ

630 :デフォルトの名無しさん:2009/12/09(水) 16:19:38
>>628
あのころは開発資金が枯渇してて、にっちもさっちも行かなくなってたからなー。
AMDに買収されて、建て直しが行われたわけで。
今からすれば正解だったな。

おっと。そろそろスレ違いか。

631 :デフォルトの名無しさん:2009/12/09(水) 17:23:00
>>630
もう来るんじゃねえぜ

632 :デフォルトの名無しさん:2009/12/09(水) 20:15:18
シェーダプログラムで質問です。

DirectX9でのシェーダでの描画の第一歩ということで影を描画しようとして地面(板ポリ)とその上に立方体を描画して
深度z/wをテクスチャに書いて表示させたのですがオブジェクトの部分が真っ白になってしまいます。
0.5*z/wなどとして表示させてみるとどうやらzとwに同じ値が入っているようなのですが・・・
(0.2*zというような表示をすると一応視点から遠いほど白くなっている)
頂点シェーダではPos×WVPを出力、ピクセルシェーダではz/wを出力しているだけで、必要な行列は送っています。

633 :デフォルトの名無しさん:2009/12/09(水) 20:48:39
>>632
射影変換のznearとzfarの値はどうなってる?

634 :デフォルトの名無しさん:2009/12/09(水) 20:59:10
>>633
わかりません。

635 :632:2009/12/09(水) 21:19:57
>>633
レスありがとうございます
ご指摘通りD3DXMatrixPerspectiveFovLHのnearとfarの値を変えると表示されました。
中身をよく把握せずにコピペしていたので躓きました・・・

636 :デフォルトの名無しさん:2009/12/09(水) 21:23:29
zfarに比べてznearが小さすぎると射影変換後のzとwはほとんど同じ値になっちゃうからね

637 :デフォルトの名無しさん:2009/12/09(水) 23:42:21
DirectX9を使えばどの程度のレベルのグラフィック・物理表現が可能ですか?
PS3レベルとかできます?

638 :デフォルトの名無しさん:2009/12/09(水) 23:50:28
PCスペックに制限がないなら
PS3にできてDirectXにできないことなんて無い

639 :デフォルトの名無しさん:2009/12/09(水) 23:51:52
>>637
4Gamer.netでも見てDirectX9対応のどんなPCゲームがあるか写真を眺めてみればよい

640 :デフォルトの名無しさん:2009/12/10(木) 00:00:23
>D3DXMatrixPerspectiveFovLH

かつてどうしてもZ-Bufferが機能しないので頭抱えてた
原因はnearに0.0fを指定してた
気が付くのに丸二日

○<\_

641 :デフォルトの名無しさん:2009/12/10(木) 00:07:02
質問いいでしょうか
レンダーターゲットにテクスチャを指定した上で、アンチエイリアシングをかけたいのですが方法が見当たりません。

CreateOffscreenPlainSurface などにも、アンチエイリアシングに関する引数が見当たらないようなのですが、
どのようにすれば実現できますでしょうか?

642 :デフォルトの名無しさん:2009/12/10(木) 00:15:20
>>641
一旦普通に描画してから半分のサイズに縮小転送すれば
アンチエイリアスになるが、そういう意味ではないのか?

643 :デフォルトの名無しさん:2009/12/10(木) 00:28:05
>>641
サンプリングの方法を変えてやればいい。
HLSLならSamplerのオプション、
固定シェーダーならSetSamplerState()

644 :デフォルトの名無しさん:2009/12/10(木) 00:48:20
>>641
DirectX9では無理ぽ

645 :デフォルトの名無しさん:2009/12/10(木) 01:04:19
>>641
DirectX9の場合はマルチサンプルのサーフェイスにレンダリングしてからStretchRectでテクスチャに転送。

646 :デフォルトの名無しさん:2009/12/10(木) 05:08:09
>>620
ノースブレインに直接、注文のメールした時の返信?

647 :デフォルトの名無しさん:2009/12/10(木) 10:42:08
>>642>>643>>644>>645
本当のことを言っているのは誰ですか?

648 :デフォルトの名無しさん:2009/12/10(木) 10:44:22
どれも間違い

649 :デフォルトの名無しさん:2009/12/10(木) 10:54:25
ゲームとかでテクスチャに描いてある目が瞬きするってあるけど
あれどうやってんの?
テクスチャ二つ作って交互にメッシュに貼り付けてんの?

650 :デフォルトの名無しさん:2009/12/10(木) 11:20:10
具体的に何のゲームのどのシーンなのかを明確にしろ

651 :デフォルトの名無しさん:2009/12/10(木) 12:00:31
テクスチャを二枚作るんじゃない
1枚のテクスチャに両方描いてUVをずらしてるんだ

652 :デフォルトの名無しさん:2009/12/10(木) 12:02:14
>>650
ちゃんとゲームとかって言ってるだろ
俺は>>649じゃないけど、質問に不備がないのは分かる
お前の読解力がないだけ、そんなだから仕事ないよだよ

653 :デフォルトの名無しさん:2009/12/10(木) 12:03:53
そもそも二枚って、途中の状態がなければ不自然きわまりないだろ。
アホか。

654 :デフォルトの名無しさん:2009/12/10(木) 12:07:40
ゲームを特定しないとテクスチャだけでやっているのか、
モデル自体を変形させているのか分からない。

655 :デフォルトの名無しさん:2009/12/10(木) 12:13:46
だったら両方答えろよ

656 :デフォルトの名無しさん:2009/12/10(木) 12:25:22
>>653
不気味の谷を越えるには何枚必要なんですか?

657 :デフォルトの名無しさん:2009/12/10(木) 12:32:28
プログラム云々以前にモデラーで確認すべき話だろ

658 :デフォルトの名無しさん:2009/12/10(木) 12:35:30
>>651
そうかその手があったか

でテクスチャって256×256とか云々って聞いたけど
2の乗数にした方が良いのか?

659 :デフォルトの名無しさん:2009/12/10(木) 12:36:32
モデラーに一致するデータはありません。

660 :デフォルトの名無しさん:2009/12/10(木) 12:38:08
質問に答えられないなら書き込まなくていいです^^
邪魔なだけなので^^

661 :デフォルトの名無しさん:2009/12/10(木) 12:51:45
>>653
それはお前の主観にすぎない
それとも、たかだか有限枚で自然な動きが表現できるとでも?

662 :デフォルトの名無しさん:2009/12/10(木) 12:58:45
だったら2枚でやってろ。

663 :デフォルトの名無しさん:2009/12/10(木) 12:59:47
何このスレ

664 :デフォルトの名無しさん:2009/12/10(木) 12:59:54
ていうか、ゲームとかだと2枚だしね

665 :デフォルトの名無しさん:2009/12/10(木) 13:01:08
>>662
>>656に答えて下さいよー

666 :デフォルトの名無しさん:2009/12/10(木) 13:01:12
これはスプライト厨が大暴れしている気がする

667 :デフォルトの名無しさん:2009/12/10(木) 13:01:15
具体的に何のゲームのどのシーンなのかを明確にしろ

668 :デフォルトの名無しさん:2009/12/10(木) 13:01:38
二枚かどうかも実際にゲームを明確にしないと検証できないだろ。
とっととどのゲームなのか明示しろよ。

669 :デフォルトの名無しさん:2009/12/10(木) 13:04:11
前提条件を明確に出来ない馬鹿や、なあなあで済まそうとする怠け者は、
プログラムを組むのは諦めた方がいい。
向いていない。

670 :デフォルトの名無しさん:2009/12/10(木) 13:05:16
>>665
ゲームのテイストによりけり。
コミカルなものなら2コマアニメーションでも問題無い。

671 :デフォルトの名無しさん:2009/12/10(木) 13:08:56
>>669
「テクスチャ二枚ってなんのゲーム」が前提条件ですかそうですか

672 :デフォルトの名無しさん:2009/12/10(木) 13:17:16
>>669
まず君が諦めなさい。

673 :デフォルトの名無しさん:2009/12/10(木) 13:19:33
>>658
>2の乗数にした方が良いのか?
できるだけ多くのビデオカードをサポートしたかったらそうした方が良いです。

674 :デフォルトの名無しさん:2009/12/10(木) 13:20:39
>>673遅いって・・・

675 :デフォルトの名無しさん:2009/12/10(木) 13:30:17
>>673
あいよ
ありがとうね

676 :デフォルトの名無しさん:2009/12/10(木) 15:17:07
お世話になっています。>641です。
>>645さんの方法をやってみたのですが、
http://msdn.microsoft.com/ja-jp/library/cc324248.aspx

>次のいずれかの場合、IDirect3DDevice9::StretchRect は失敗する。
>(略)
>転送元サーフェイスがマルチサンプリングされている場合 (MultiSampleType != D3DMULTISAMPLE_NONE で作成した場合)。

とあり、できそうにありません。
やはり他の方がおっしゃるとおり、シェーダ使うなりしないとDirectX9では無理なのでしょうか・・・

677 :デフォルトの名無しさん:2009/12/10(木) 16:21:11
>>645
ウソがばれたね

678 :デフォルトの名無しさん:2009/12/10(木) 16:25:35
>>676
641の質問なんだが、テクスチャへの描画でアンチエイリアシングをしたい、というだけでは
アンチエイリアシングという用語に複数の意味があって不明瞭なんだ。
要するに縞状ノイズが載らないように滑らかに縮小かけたいってことなの?

679 :デフォルトの名無しさん:2009/12/10(木) 16:26:47
お前ら上級者様(笑)はただ俺の質問に答えてりゃいいんだよ
どうせ仕事もしてないんだろ?w
スプラッシュしてろよカステラめ

680 :デフォルトの名無しさん:2009/12/10(木) 16:38:51
>>678
なるほど、もう少し詳しく書いてみます。

まず「ゲーム画面のスクリーンショットをとりたい」のです。

通常のウインドウへの描画の場合、バックバッファ生成時に
D3DPRESENT_PARAMETERSの
MultiSampleType = D3DMULTISAMPLE_2_SAMPLES;
などとしておくことで、アンチエイリアシングのかかった綺麗な描画が行えますよね。

しかし、テクスチャのサーフェイスはMultiSampleTypeを設定することができません。
どうすれば通常のウインドウへの描画同様、綺麗なアンチエイリアシングがかかった描画を、テクスチャに対して行えますでしょうか?


681 :デフォルトの名無しさん:2009/12/10(木) 16:48:41
>>680
んじゃ、一旦バックバッファに描画してからテクスチャのSurfaceに転送かけたら?

682 :デフォルトの名無しさん:2009/12/10(木) 17:26:17
はぁ・・・?

683 :デフォルトの名無しさん:2009/12/10(木) 17:54:08
>>676
英語のオリジナルのドキュメント見ておけ

684 :デフォルトの名無しさん:2009/12/10(木) 20:59:22
>>683
ありがとうございました。
日本語のドキュメントに翻訳ミスがあったわけですね…ピキピキ
英語版のドキュメントにやり方が普通に書いてありました
できました!

685 :デフォルトの名無しさん:2009/12/10(木) 20:59:39
アンチエイリアスに関しては、
間違った情報が混ざっているにせよ、
皆それなりにやるべき方向は指し示している。
これでわからなけりゃ、己の能力不足ってことで
諦めるんだな。

686 :デフォルトの名無しさん:2009/12/10(木) 22:21:21
>>676
深度およびステンシルの制限
深度およびステンシルの制限
深度およびステンシルの制限
深度およびステンシルの制限

687 :デフォルトの名無しさん:2009/12/10(木) 22:40:40
>>686
脳なしが
676の一文は、その項目の中に含まれてねーよ
もし含まれているとすると、
・拡大も縮小もできない。
・拡大または縮小のどちらかが行われ、どちらかのサーフェイスが DXTn 圧縮フォーマットである場合。
の両方が含まれていることになり「何二度説明してんだ?馬鹿が」という話になる

688 :デフォルトの名無しさん:2009/12/10(木) 22:41:37
>>685
何きどってんの?
分からないなら分からないと言えよww
結局本人自力で解決してるし、このスレほんと意味ねーなw

689 :デフォルトの名無しさん:2009/12/10(木) 22:45:37
Using StretchRect to downsample a Multisample Rendertarget

You can use StretchRect to copy from one rendertarget to another. If the source rendertarget is multisampled, this results in downsampling the source rendertarget. For instance you could:


690 :デフォルトの名無しさん:2009/12/10(木) 23:37:16
>>685
ここは質問スレだ

691 :デフォルトの名無しさん:2009/12/11(金) 00:18:58
複数の違う回答があったら全部ググルなり自分で試してみればいいだけの話

692 :デフォルトの名無しさん:2009/12/11(金) 00:53:03
>>684
日本語ヘルプが間違っているわけではない。
情報が古いだけ。

英語のヘルプでも、古いものは
IDirect3DDevice9::StretchRect will fail for any of the following:
If pSourceSurface and pDestSurface are the same.
If stretching or shrinking is involved and either surface has a DXTn compressed format.
If the source surface is multisampled (created with MultiSampleType != D3DMULTISAMPLE_NONE).
If the destination surface is an off-screen plain surface but the source is not. If the destination surface is an off-screen plain surface and stretching is involved.
と書いてあって、日本語ヘルプはこれを訳したもの。

途中から制限が緩くなった。

693 :デフォルトの名無しさん:2009/12/11(金) 01:04:18
へー。641じゃないけどためになったわ。

694 :デフォルトの名無しさん:2009/12/11(金) 02:31:00
ぺー。

695 :デフォルトの名無しさん:2009/12/11(金) 05:06:42
pDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE);
pDevice->DrawPrimitiveUP(D3DPT_LINELIST, 1, ColorPoint, sizeof(COLOR_POINT));
このようにして色つきの線を引いているのですが
ライトの設定をオフにしないと色がつかなくなってしまい
ライトオンで色つきの線を引きたいのですがどうすればよいのでしょうか?

696 :デフォルトの名無しさん:2009/12/11(金) 05:22:46
線を描く時だけライトオフにすればいいんじゃないかなあ。

697 :デフォルトの名無しさん:2009/12/11(金) 05:44:22
>>696
ありがとうございます
無事できました
こんな単純なことに気づかないとは

698 :デフォルトの名無しさん:2009/12/11(金) 21:04:33
>>697
質問で求めていることと違うような。
ライトのON・OFFに関わらず線の色を出したいんじゃないの?
その場合、D3DRS_EMISSIVEMATERIALSOURCEをD3DMCS_COLOR1にして
それ以外のD3DRS_XXXSOURCEをD3DMCS_MATERIALあたりにしとくのが
一番ベターな気がするが。

699 :デフォルトの名無しさん:2009/12/11(金) 21:45:19
細かいな
本人が納得してるんだからいいじゃないか

700 :デフォルトの名無しさん:2009/12/12(土) 22:45:19
(多分)HLSLで波打った水面を描画してみたいのですが、解説している書籍やサイトはありませんでしょうか。
水面の表現はどれも似たようなものなので基本的な作りは同じかと思いますが、
基本的どころがそれの足がかりになるようなものが無く困っています。
サンプルだけだと理解せずに流用しそうなので、何らかの説明があったほうが望ましいです。
(XP-DX9-C++)

701 :デフォルトの名無しさん:2009/12/12(土) 22:52:28
ソースとHLSLをそのままコピペできるレベルでなくていいなら、
昔のDirectXSDKやnVidiaとかATIの旧サイトとか
たくさんあったような気が、

702 :デフォルトの名無しさん:2009/12/12(土) 22:53:04
なら自分で考えろ
http://journal.mycom.co.jp/column/graphics/056/index.html

703 :デフォルトの名無しさん:2009/12/12(土) 23:54:21
ソース付ならここかね。
seleneの方にもっと実用的な水面が実装されてたけど。
ttp://twin-tail.jp/wiki/index.php?DirectXGraphics%20-%20GPGPU%E3%81%A7%E3%81%AE%E7%B0%A1%E5%8D%98%E3%81%AA%E6%B0%B4%E9%9D%A2%E5%87%A6%E7%90%86%E3%83%BB%E7%B6%9A%E7%B6%9A

704 :デフォルトの名無しさん:2009/12/13(日) 01:04:14
ビルボードにテクスチャを貼り付けて表示させるようなことをしていたのですが、
そのテクスチャ(10枚ほど)を表示させるのにどれだけ時間がかかるかを計測してみました。
timeGetTime() - dwLastTime
というかたちでミリ秒単位で計測すると、16ミリ秒もかかっていて、これだけでFPS60ほどという計算に・・・
テクスチャ表示だけでこれだけかかるということは、プログラムに問題があるのでしょうか?

705 :デフォルトの名無しさん:2009/12/13(日) 01:06:43
垂直同期は切れよ

706 :デフォルトの名無しさん:2009/12/13(日) 01:25:25
D3DPRESENT_PARAMETERS::PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;

707 :デフォルトの名無しさん:2009/12/13(日) 01:57:35
毎回仕組みをわかって無い奴が時間計測して狂言吐いて
会社追い出されるのは馬鹿みたいだけど結構パターンなので注意な

708 :デフォルトの名無しさん:2009/12/13(日) 06:44:30
>>707
経験者乙

709 :デフォルトの名無しさん:2009/12/13(日) 13:40:31
>>707
再就職できてよかったですね。

710 :デフォルトの名無しさん:2009/12/13(日) 14:36:35
きたよ
Amazon.co.jp: DirectX9必携: 鎌田 茂雄: 本
ttp://www.amazon.co.jp/dp/4990500601


711 :デフォルトの名無しさん:2009/12/13(日) 14:37:20
もうそれいいから

712 :デフォルトの名無しさん:2009/12/13(日) 14:43:28
ごちゃごちゃいわずに黙って注文しろ

713 :デフォルトの名無しさん:2009/12/13(日) 15:11:11
で、それのDX11バージョンはまだかね

714 :デフォルトの名無しさん:2009/12/13(日) 16:30:34
いまさらDirectX9の本なんて出すな

715 :デフォルトの名無しさん:2009/12/13(日) 17:07:33
たしかに。

716 :デフォルトの名無しさん:2009/12/13(日) 17:36:59
需要があるから出してるんだろw

717 :デフォルトの名無しさん:2009/12/13(日) 17:55:47
たしかに。

718 :デフォルトの名無しさん:2009/12/13(日) 17:57:52
需要あったのかよ・・・。
Web上にアホほど情報あるのにググれない人用なのかねぇ。

719 :デフォルトの名無しさん:2009/12/13(日) 18:09:51
xaudio載ってますか

720 :デフォルトの名無しさん:2009/12/13(日) 18:26:49
少なくとも、旧版がこのスレでもしばしば取り上げられて
Amazonやヤフオクでプレミア価格で取引される程度には需要があるだろ。
>>587のタイプが少なくないという事だ。
何で絶版になったのかは知らんが。



721 :デフォルトの名無しさん:2009/12/13(日) 20:47:31
>>719
XAudioなんてそれこそサンプルとリファレンス見れば十分だろw

722 :デフォルトの名無しさん:2009/12/13(日) 21:31:18
別に単純に、いままで培われてきたノウハウが1冊にまとまってるだけでも価値あるだろ。
買いたい奴だけ買えばいい品物に、なぜわざわざつっかかるよ

723 :デフォルトの名無しさん:2009/12/13(日) 21:50:18
著者必死なだ

724 :デフォルトの名無しさん:2009/12/13(日) 22:12:34
スレ違い

725 :デフォルトの名無しさん:2009/12/13(日) 22:15:26
>>723
×著者必死なだ
○著者必死だな

726 :デフォルトの名無しさん:2009/12/13(日) 22:16:10
えっ

727 :デフォルトの名無しさん:2009/12/13(日) 23:39:22
>>722
DirectX9時代のノウハウを1冊で事足りるくらい詰め込んでるあるのか?
それならGPUGems以上の巨大な本になってるはずだが・・・。

728 :デフォルトの名無しさん:2009/12/14(月) 00:47:56
バカか、いいから失せろ

729 :デフォルトの名無しさん:2009/12/14(月) 00:54:40
質問させて下さい。
VC++2005、Win32API、DirectXを使ってアプリを作っているのですが
XPでは思った通りの動作をするのにVistaだと描画が非常に重く
もっさりした感じになってしまいます。
どうしたらVistaや7に対応したアプリを作れますか?

730 :デフォルトの名無しさん:2009/12/14(月) 00:55:47
http://www.ouma.jp/ootake/delay-win7vista-j.html

731 :デフォルトの名無しさん:2009/12/14(月) 01:13:25
非常に重いつってるから3フレ遅延どころの話じゃなさそうだが。

732 :デフォルトの名無しさん:2009/12/14(月) 01:46:25
とりあえずドライバを更新

733 :デフォルトの名無しさん:2009/12/14(月) 01:54:43
エスパー回答期待するよりも地道に調べたほうがいい

734 :デフォルトの名無しさん:2009/12/14(月) 02:30:23
>>730
ありがとうございます。
Aeroを無効にしようとしたのですが
ドライバが対応していませんでした。
FPSはXPで60だったのですが
Vistaでは30もいかなかったです。

>>731
はい、XPに比べてVistaだとFPSが半分もいかない感じです。

>>732
対象ドライバ更新をしようとしたところ
互換性のあるドライバが見つかりませんでしたとでて更新できませんでした。

>>733
指摘を受けて思ったよりも問題の箇所があったので
もう一度自分で調べてみようと思います。


予想以上に問題がある箇所が多かったので
開発環境をVistaに移して少しずつ調べていこうと思います。
お騒がせしました。

735 :デフォルトの名無しさん:2009/12/14(月) 06:09:44
またvsync厨か
重いといいつつ空いてる時間が相当ありそうだな

736 :デフォルトの名無しさん:2009/12/14(月) 09:59:19
つーかVISTAだからってフレームレートが半減って明らかにおかしいだろ。
遅延って反応がもっさりするだけでFPS自体は変わらないはずだぞ。

737 :デフォルトの名無しさん:2009/12/14(月) 10:55:17
ウインドウモードなのか、フルスクリーンなのかすら書いてないなんて・・・

738 :デフォルトの名無しさん:2009/12/14(月) 15:34:07
FPSじゃなくてレイテンシも見なきゃいけなくなるのか…めんどいなこれ。

739 :デフォルトの名無しさん:2009/12/14(月) 16:29:42
3フレあればその差は誰でも体感できるものになるが
実際のところ、それが問題となるゲームは少ないだろう

740 :デフォルトの名無しさん:2009/12/14(月) 17:17:50
は?

741 :デフォルトの名無しさん:2009/12/14(月) 19:56:34
>>729
VistaとXPは全く同じハードウェア?

742 :デフォルトの名無しさん:2009/12/14(月) 22:29:45
>>739
格闘とかは問題になるだろ。
RPGとかTPS程度なら別にって感じだけど。

743 :デフォルトの名無しさん:2009/12/14(月) 22:35:15
vsyncを気にしてプログラムするのは時代遅れだよ。

744 :デフォルトの名無しさん:2009/12/14(月) 23:22:15
むしろフレームのキューイングが有効なら「fpsは」向上するはずだろ・・・

>>730もXPから有効になってた挙動なのでツッコミ入れたいところだが
今の流れとは関係ない話なんじゃないの?

745 :デフォルトの名無しさん:2009/12/14(月) 23:26:33
>>744
いや、しないキリッ

746 :デフォルトの名無しさん:2009/12/14(月) 23:28:31


747 :デフォルトの名無しさん:2009/12/14(月) 23:51:33
>>742
気にする奴等って格闘とシューティングやってるやつだけだな
アクションは若干気になるかもしれないがやってりゃすぐ慣れる

748 :デフォルトの名無しさん:2009/12/15(火) 00:07:06
30や60の3フレームなら気になるかも知らんが120以上の3フレームってどうなんだろう

749 :デフォルトの名無しさん:2009/12/15(火) 00:15:26
は?いまどき120以上って無いでしょ?ありもしない3フレームの話をして何になるの?
倍速TVなどと勘違いしてるのかな

750 :デフォルトの名無しさん:2009/12/15(火) 00:19:25
サムスンが120Hzのモニター出してるけどな。

751 :デフォルトの名無しさん:2009/12/15(火) 00:20:08
120Hz対応のモニタはあるよ。
NVIDIAが3D眼鏡で60fps維持したくてサムチョンとかに作らせた。
まだ3機種しか出てなかったと思う。

752 :デフォルトの名無しさん:2009/12/15(火) 00:21:36
>>742
いやいや…3フレームはRPGでもでかいから。
原因が3フレーム差と分からなくてもどことなくもっさり感を覚えるもんだよ

753 :デフォルトの名無しさん:2009/12/15(火) 00:28:35
>>750
非国民?

754 :デフォルトの名無しさん:2009/12/15(火) 00:29:16
>>749
>>749
>>749
>>749
>>749
>>749

755 :デフォルトの名無しさん:2009/12/15(火) 00:35:10
>>752
RPGでもっさりしてたところで大してゲームにゃ関係ないだろう

756 :デフォルトの名無しさん:2009/12/15(火) 00:40:04
120サムスンって液晶かよw
話になりませんなwww

757 :デフォルトの名無しさん:2009/12/15(火) 00:50:53
それ以前にチョンの話なんかするなよwww

758 :デフォルトの名無しさん:2009/12/15(火) 01:04:58
自分でDirectXのプログラムを組むようになって、最近やっとサンプルを応用して自分でコード書けるようになってきました。
しかし・・・どうもノートPCから変な音が聞こえます。
ウィンドウを閉じて実行を終了するときに、CPU(定かではありませんが・・・)のあたりから
「シュンシュンシュイーン」
みたいな小さな音がして終了。
いままでこんな音はなったことが無いんですが、どうもPCには良くない気がして・・・
プログラムで開放のし忘れなどがあると異常音が出ることってあるのでしょうか?


759 :デフォルトの名無しさん:2009/12/15(火) 01:15:18
      (⌒⌒)
 ∧_∧ ( ブッ )
(・ω・`) ノノ〜′
  (⊃⌒*⌒⊂)
  /_ノωヽ_)

760 :デフォルトの名無しさん:2009/12/15(火) 01:27:02
負荷かけ過ぎて電源周りが寿命とかCPUファンがヘタってきてるとか暖かいので虫が住んでるとか

761 :デフォルトの名無しさん:2009/12/15(火) 11:18:15
単にPCの寿命 (の前触れ) かなんかなんじゃないか

762 :デフォルトの名無しさん:2009/12/15(火) 21:23:13
dxlibというすごいライブラリがあるそうです。
入手場所を教えて下さい。

763 :デフォルトの名無しさん:2009/12/15(火) 21:26:36
ググレカス

764 :デフォルトの名無しさん:2009/12/15(火) 21:53:04
うちのグラボは負荷を掛けるとキーンって音するね。

765 :デフォルトの名無しさん:2009/12/15(火) 22:57:09
アラレちゃん入ってんじゃね?

766 :デフォルトの名無しさん:2009/12/15(火) 23:26:21
アラレちゃんもいいけどやっぱりドラゴンボールだよね

767 :デフォルトの名無しさん:2009/12/15(火) 23:27:34
もう餓鬼は発言するな。

768 :デフォルトの名無しさん:2009/12/15(火) 23:30:04
日曜の朝にドラゴンボール放送してんな

769 :デフォルトの名無しさん:2009/12/15(火) 23:31:19
知るかよ

770 :デフォルトの名無しさん:2009/12/15(火) 23:33:30
>>764
おまえのせい

771 :デフォルトの名無しさん:2009/12/15(火) 23:40:33
鎌田 茂雄って何者? DirectX9の本以外、全部宗教なんだけど。

772 :デフォルトの名無しさん:2009/12/15(火) 23:46:11
宗教の方の鎌田茂雄は8年前に死んでる

773 :デフォルトの名無しさん:2009/12/15(火) 23:47:25
活動凍結って意味で?

774 :デフォルトの名無しさん:2009/12/15(火) 23:47:45
>>771
ちゃんとググレカス

775 :デフォルトの名無しさん:2009/12/16(水) 01:42:44
D3DXMatrixRotationYを使うと(0,0,0)を中心にぐるぐる廻るんですけど。
例えばネギのモデルで根っこを中心にして廻すにはどうすればいいの?

776 :デフォルトの名無しさん:2009/12/16(水) 01:50:32
>>775
移動してから回転するのと、回転してから移動するのとは、値が同じでも結果が違う。
今は移動してから回転してるからそうなるんだよ m9(・∀・)ビシッ!!

777 :デフォルトの名無しさん:2009/12/16(水) 02:06:19
根っこを(0,0,0)に移動してから回転させた後、元の位置に戻す。

778 :デフォルトの名無しさん:2009/12/16(水) 09:41:00
普通は根っこを原点にモデルつくるんじゃね

779 :デフォルトの名無しさん:2009/12/16(水) 09:56:40
まずネギのモデルってなによ?

780 :デフォルトの名無しさん:2009/12/16(水) 10:04:22
あれだろ

781 :デフォルトの名無しさん:2009/12/16(水) 10:41:38
そーいえばロボットのゲームとかでarm.xとかbody.xとかって体を分割してるようだけど
あれって一つ一つ調整するなりソフト使って動きのモーション付けてんのかな
それともオリジナルの形式使ってんのかなあ

782 :デフォルトの名無しさん:2009/12/16(水) 11:27:44
>>781
ゲーム中の扱いによって変わると思うけど、一般的には一つのファイルで管理されてるんじゃないかな。
アニメーション以外にもロードを速くしたいとか特殊なマテリアルを埋め込みたいとかゲーム独自の仕様に合わせ易いからということで、最終的には独自フォーマットを使うことが多いと思う。

783 :デフォルトの名無しさん:2009/12/16(水) 11:28:00
なにが言いたいのか解らん
メッシュが複数でもボーン構造は一つだろ

784 :263:2009/12/16(水) 21:33:37
>>781
ケースバイケースだと思うけど、ゲームグラフィックスとか
CGWorldとか読めば多少話載ってるんでは。
ちと古いけどパンピートロットの記事ではゲーム内での
パーツの差し替えの仕組みとかの話あったような。

LightWaveの日本の代理店にあるDirextxの書き出しサンプルが
パーツ別のロボットの歩行アニメーションだけど、製品の
ディスクには同じシーンデータがサンプルで入ってる。

785 :デフォルトの名無しさん:2009/12/16(水) 22:25:44
みんなってゲーム作るとき、フォームとか描画とか更新とかを統合した
フレームワーク的なもの作ってるの?

786 :デフォルトの名無しさん:2009/12/16(水) 22:31:37
当たり前だろ
一から全部自分でやるなんてアホ

787 :デフォルトの名無しさん:2009/12/16(水) 22:33:01
>>786
自作のやつ使ってる??

788 :デフォルトの名無しさん:2009/12/16(水) 22:54:20
意味が判らない

789 :デフォルトの名無しさん:2009/12/16(水) 23:16:19
次の質問者どぞ

790 :デフォルトの名無しさん:2009/12/17(木) 04:31:43
( ゚д゚)ポカーン

791 :デフォルトの名無しさん:2009/12/17(木) 04:43:51
(;゚д゚)ゴクリ…

792 :デフォルトの名無しさん:2009/12/17(木) 05:21:19
>>787
勉強のため自作しようとしたら、
破綻して放置。早数ヶ月。
こうならないためになんかフレームワーク使ったほうがいいかも。

793 :デフォルトの名無しさん:2009/12/17(木) 12:07:43
自分のおつむの程度に合わせて無理しないのが長続きの秘訣だな

794 :デフォルトの名無しさん:2009/12/17(木) 12:15:31
それはいえてる。
自分の出来ることからやっていくのがなんだかんだで一番いい。
いきなり背伸びしても途中で脳がはじけ飛ぶだけだ。

795 :デフォルトの名無しさん:2009/12/17(木) 18:19:24
マジキチレベルのソースを見るのも多少は勉強にはなるけどな。
ただ、読めるだけで習得できたと勘違いするのが偶にいる。
ソースは俺

796 :デフォルトの名無しさん:2009/12/19(土) 12:26:23
Direct3Dに関して言えば、
メッシュ数個を描画出来る程度の「まな板」を作っておくと非常に便利。
できれば画面や設定ファイルで細かくいじれるようになっているとよりいいだろう。

ある程度思ったとおりに動くようになると、今度は主だった一通りの環境で動くようにする必要が出てくる。
そういう時にそういったツールが役に立つ。環境依存の不具合の原因を探るためのね。

797 :デフォルトの名無しさん:2009/12/19(土) 14:43:58
August2009のD3D11ってD3DXMATRIXとかないけど、自前で実装しろってことかな?
D3D10のときにあったチュートリアルサンプルもがないから、D3DXがいらない人向けに
まずは出したバージョンかな。

798 :デフォルトの名無しさん:2009/12/19(土) 18:19:18
XNA Math Library

799 :デフォルトの名無しさん:2009/12/19(土) 22:15:19
>>797
d3dx9.hをincludeすりゃ使える

800 :デフォルトの名無しさん:2009/12/20(日) 02:10:15
下記サイトを参考にしているのですが、テクスチャについてわかりにくかったので質問します。
テクスチャを画像ファイルから作るまではわかったのですが、ポリゴンにはりつけるという概念がわかりません
処理としては、D3DXCreateTextureFromFileExから返ったポインタをSetTextureの引数にいれることで貼り付けができるんでしょうけど
どこのポリゴンにはりつけるのか?という記述が私には見分けがつきませんでした。
貼り付け先のポリゴンが自明の場合には選択する必要がないということでしょうか?

参考サイト
http://marupeke296.com/DXGSmp_No3_CreateTexture.html

801 :デフォルトの名無しさん:2009/12/20(日) 02:11:02
強引に連れて行ってもしょぼーんな結果になるからなぁ
それとも2回目以降だと意外とはまったみたいな展開あるん?

802 :デフォルトの名無しさん:2009/12/20(日) 02:49:53
>>800
ttp://marupeke296.com/DXG_CreateBorad.html

803 :デフォルトの名無しさん:2009/12/20(日) 04:02:25
>>798
なるほど。分かれたヘルプのDirectX Documentation for C++側に記載されてた。
ありがと。

>>797
D3DX10math.hでもいいかな。

804 :デフォルトの名無しさん:2009/12/20(日) 06:44:34
>>803
いいよ

805 :デフォルトの名無しさん:2009/12/20(日) 12:14:15
これからDirectXのバージョンはなにで開発するのが一番いいの?

806 :デフォルトの名無しさん:2009/12/20(日) 12:18:21
バーカ^^

807 :デフォルトの名無しさん:2009/12/20(日) 12:19:58
>>805
9

808 :デフォルトの名無しさん:2009/12/20(日) 12:20:21
>>805
対応PCが多い、技術情報が多い⇒DirectX9
最新技術が使える⇒DirectX11

809 :デフォルトの名無しさん:2009/12/20(日) 13:47:41
最新技術(笑)

810 :デフォルトの名無しさん:2009/12/20(日) 13:51:35
>>802
すみません
わからないです
テクスチャの張り付け先のポリゴンを指定するような関数はないんですかね

811 :デフォルトの名無しさん:2009/12/20(日) 13:53:30
>>808
携帯性が重視される時代に最新技術ねえ・・・
高性能パソコンはますます売れなくなる

812 :デフォルトの名無しさん:2009/12/20(日) 13:55:15
>>810
テクスチャに頂点を指定するのではなく
頂点一つ一つにテクスチャの座標を設定するんだよ

813 :デフォルトの名無しさん:2009/12/20(日) 14:13:17
もしかしてそういうこと聞いてるんじゃないんじゃね?

テクスチャの張り付け先のポリゴンを指定するって発想じゃなくて
これから表示するポリゴンのテクスチャを指定するって考えるんだよ

814 :デフォルトの名無しさん:2009/12/20(日) 14:15:11
>>812
頂点とテクスチャの関連付けはどこでおこなわれているのですか?


815 :デフォルトの名無しさん:2009/12/20(日) 14:16:45
パイプラインに食わせるって感覚がライブラリ作ってる奴等の脳みそにこびりついてるから
いつまでもこんな兄貴な仕様なんだよなw

816 :デフォルトの名無しさん:2009/12/20(日) 14:19:49
>>815
くわせるというのはSetTextureをポリゴン描画の寸前にもってくるということですか?

817 :デフォルトの名無しさん:2009/12/20(日) 14:20:02
>>814
頂点情報にuvってあるじゃん?
その座標情報を使って
「現在、設定されているテクスチャを使って」描画する
つまり、Primitive関数(モデルを描画する関数)の直前にシステムに設定されたテクスチャが
勝手に使われるのであってポリゴンとテクスチャを関連付けるような仕組みはないw

818 :デフォルトの名無しさん:2009/12/20(日) 14:21:20
>>817
ないなw

819 :デフォルトの名無しさん:2009/12/20(日) 14:21:36
>>816
SetTexture ←テクスチャの指定
SetStreamSource ←頂点の指定

http://www.t-pot.com/program/7_texture/index.html

820 :デフォルトの名無しさん:2009/12/20(日) 14:22:26
>>814
>800のリンク先のソースコードの
太字のところを見れば分かるはず

821 :デフォルトの名無しさん:2009/12/20(日) 14:24:50
みなさんありがとうございました
ようやく理解できました!!
それにしてもなんかすごい仕様ですねww


822 :デフォルトの名無しさん:2009/12/20(日) 14:25:55
>>820
やっと分かってくれたか

823 :デフォルトの名無しさん:2009/12/20(日) 15:50:20
なんで公式のチュートリアルをやらずに変なサイトを見に行くんだろう?

824 :デフォルトの名無しさん:2009/12/20(日) 19:14:46
SDK付属ヘルプやMSDNの解説レベルの文章ですら読み解けない、
絶望的な低脳が多いという事だろう

825 :デフォルトの名無しさん:2009/12/20(日) 19:18:00
ああいうヘルプは3D系の知識前提だしな。

826 :デフォルトの名無しさん:2009/12/20(日) 19:23:56
携帯性が重視されているのは当然だが
だからといって技術的に何も勉強しなくてもいいわけじゃないな。

827 :デフォルトの名無しさん:2009/12/20(日) 19:39:51
携帯性って訳されるとなんか違和感あるな。
汎用性とか使い回し易さ?

828 :デフォルトの名無しさん:2009/12/20(日) 19:42:26
すみません
単体で「正常再生されるモーション付きXファイル」2個を
--------------------------------------------------------
AnimTicksPerSecond fps { 4800; }
AnimationSet Motion1 { 〜1セット目のモーション情報〜 }
AnimTicksPerSecond fps { 4800; }
AnimationSet Motion2 { 〜2セット目のモーション情報〜 }
--------------------------------------------------------
こう連結しました。 これを再生しようと
--------------------------------------------------------
m_pAnimController->SetTrackPosition(1, 0);
m_pAnimController->AdvanceTime(0.02, NULL);
--------------------------------------------------------
こうして再生しているのですが、
SetTrackPositionの第一引数、トラック番号をいくつに変えても
「2セット目のモーション」が再生されてしまいます。
(1セット目と2セット目を入れ替えると、やはり2セット目側だけが再生されます)

これは、私がXファイルの作り方が間違えているのでしょうか?
それともプログラム側が間違っているのでしょうか?
大まかで良いのでご指摘頂けると助かります。 orz

829 :デフォルトの名無しさん:2009/12/21(月) 07:41:47
>>821
そこ笑うところか?
いわゆるImmediate Mode(死語)的な設計では極普通の仕様だと思うが

830 :デフォルトの名無しさん:2009/12/21(月) 07:50:10
僕の頭が悪いんじゃなくて仕様がおかしいんだw

って言いたいんだろ。

831 :デフォルトの名無しさん:2009/12/21(月) 08:56:38
>>821がOpenGLの仕様を知ったら笑い死ぬだろうな

832 :デフォルトの名無しさん:2009/12/21(月) 09:43:21
>>831
語れよ

833 :デフォルトの名無しさん:2009/12/21(月) 12:46:02
>>832
断る

834 :デフォルトの名無しさん:2009/12/21(月) 13:28:44
>>833
しゃぶれよ

835 :デフォルトの名無しさん:2009/12/21(月) 14:03:40
>>834
分かった

836 :828:2009/12/21(月) 20:10:27
何やら私の勘違いが有るようなのと片方は自己解決できそうなので
一旦質問を締め切らせて頂きます。失礼しました。

837 :デフォルトの名無しさん:2009/12/21(月) 23:03:11
わかりました。

838 :デフォルトの名無しさん:2009/12/22(火) 19:21:19
今DirectX10とcpp、fxファイルを使って作っているんですが
現在ウィンドウで表示している画面をテクスチャー(ID3D10Texture2D)に保存するにはどうしたらいいですか?

現状は、ID3D10RenderTargetView.GetResource(ID3D10Resource *)関数を使って
ID3D10Resourceに入れることはできたんですがその後テクスチャーに変更(変換)することができません

環境はDirectX10、OSはWindows7です。よろしくお願いします

839 :デフォルトの名無しさん:2009/12/22(火) 19:35:30
Present前のバッファをコピーするだけだろ。

840 :デフォルトの名無しさん:2009/12/22(火) 19:45:08
WinGの質問ってこのスレでしていいの?

841 :デフォルトの名無しさん:2009/12/22(火) 20:11:54
ダメです

842 :デフォルトの名無しさん:2009/12/22(火) 22:08:14
D3D10_MAPPED_TEXTURE2D map;
device->Map(0,D3D10_MAP_READ,0,&map);
...
// DirectX9のLock/Unlock内でやるのと同じように手動でコピー
...
device->Unmap(0);

843 :デフォルトの名無しさん:2009/12/22(火) 22:11:53
ああdeviceって変数名のつけ方が悪いが許してくれ。
ID3D10Texture2D* device

844 :デフォルトの名無しさん:2009/12/22(火) 22:12:47
Bio100%の質問ってこのスレでしていいの?

845 :デフォルトの名無しさん:2009/12/22(火) 22:20:09
S3 MeTaLの質問ってこのスレでしていいの?

846 :デフォルトの名無しさん:2009/12/22(火) 22:35:03
>>842
それ回答になってないだろw

847 :デフォルトの名無しさん:2009/12/23(水) 03:13:54
Xファイルで
Material {
フェイスカラー
パワー
スペキュラ
自己発光
}
ってあるけどフェイスカラーっていったい何?
Diffuse?Ambient?いじってみたらDiffuseと同じような機能してるけど
詳細が分からないので知ってる人お願いします


848 :デフォルトの名無しさん:2009/12/23(水) 04:26:55
ディフューズで合ってる

849 :デフォルトの名無しさん:2009/12/23(水) 05:02:49
>>846
だったら君が回答すれば?無能君

850 :デフォルトの名無しさん:2009/12/23(水) 07:52:42
レスにエロスが足りてない

851 :デフォルトの名無しさん:2009/12/23(水) 18:24:08
>>848
ありがとう

852 :デフォルトの名無しさん:2009/12/24(木) 18:03:59
>>842
やってみたのですがどうしてもID3D10Resourceのデータにアクセスできません
ID3D10Resource.GetPrivateData関数を使えばいいのかとも思いましたがGUIDがわかりませんでした

他にもID3D10Device.CopyResource関数も使ってみたのですがテクスチャーは黒いままでした
引数はID3D10Texture2D、ID3D10Resourceを指定しました(mapが使えなかったため)

853 :デフォルトの名無しさん:2009/12/24(木) 18:28:26
マルチサンプルなら ResolveSubresource でダウンサンプリング。
コピーは、そのまんま CopySubresourceRegion 。
システムメモリに移したければ、CopyResourceで転送。
とりあえずエラー値もちゃんとチェックして頭使って考えろボケ。

854 :デフォルトの名無しさん:2009/12/24(木) 19:48:55
DirectX必携届いた。
本の厚みは前作の半分以下、項目数は418に削減、索引も無し。
文字を小さくした上で本文も圧縮してギチギチに詰め込んでる。
XAudioについては全く言及無し。

855 :デフォルトの名無しさん:2009/12/24(木) 19:54:19
人柱乙

856 :デフォルトの名無しさん:2009/12/24(木) 20:45:14
目次の全てと本文サンプルのスキャン上げとく
ttp://www2.age2.tv/rd10/count.cgi?age0407.zip

まあ、買うかどうか迷うのは前作持ってる人間だけで、
持ってない人間はこれしかないんだから買う他無いんじゃないの

857 :デフォルトの名無しさん:2009/12/24(木) 21:12:56
>>853
CopyResourceでちゃんとできるということで粘ったらできました、ありがとうございます
確認のためにテクスチャを表示させていたのですがそこでミスをしてました
他の方法も試してみます

>>842
無事テクスチャにすることができました、ありがとうございます

858 :デフォルトの名無しさん:2009/12/24(木) 21:40:43
>>856
目次はあんまり変わってないように見えるんですが、逆引き持ってる人がこっちも買うメリットってありそうですか?

859 :デフォルトの名無しさん:2009/12/24(木) 21:48:19
>>858
ありそうでなさそうでありそうでなさそう

860 :デフォルトの名無しさん:2009/12/24(木) 21:51:51
前作から削られた項目と追加された項目があるので、追加された分に魅力を感じるなら買ってもいいんじゃない。
後は2008用のサンプルが用意されてる事くらいか。
でも、前作のでも2005用を変換すればいいだけなのであんまり訴求しないな。


861 :デフォルトの名無しさん:2009/12/25(金) 08:56:25
なんつーか、作者は宣伝が過ぎるな。

862 :デフォルトの名無しさん:2009/12/25(金) 09:01:02
古本屋で

863 :デフォルトの名無しさん:2009/12/25(金) 11:01:25
ふーん

864 :デフォルトの名無しさん:2009/12/25(金) 11:08:36
同じのをDiretX11でたのむ

865 :デフォルトの名無しさん:2009/12/25(金) 11:20:29
DiretX11

866 :デフォルトの名無しさん:2009/12/25(金) 11:21:24
http://www.google.co.jp/search?q=diretx

867 :858:2009/12/25(金) 11:27:48
>>859,860
レス、ありがとうございます。
逆引きから追加された項目も少ないようなので今回は見送ろうと思います。
DirectX11対応だったらなあ。

868 :デフォルトの名無しさん:2009/12/25(金) 11:39:45
じゃぁ逆引きをそのままDirectX11に置き換えたやつ作るか

869 :デフォルトの名無しさん:2009/12/25(金) 12:47:08
DirectX11\(^o^)/オワタ
やっぱ9だよな〜

870 :デフォルトの名無しさん:2009/12/25(金) 12:48:52
DirectX9の初期化って3秒ぐらいかかるのが普通でしょうか。
あと、初期化中にウィンドウに画像を表示しておく方法って何かないでしょうか。

871 :デフォルトの名無しさん:2009/12/25(金) 12:51:37
>DirectX9の初期化って3秒ぐらいかかるのが普通でしょうか。
かからねえよ。

>あと、初期化中にウィンドウに画像を表示しておく方法って何かないでしょうか。
表示したければすればいいだろ。
ただしDirectXの範疇じゃないからスレ違いだ。

872 :デフォルトの名無しさん:2009/12/25(金) 12:58:05
画像全部読み込む前に一枚読んで表示でもさせとけよ

873 :デフォルトの名無しさん:2009/12/25(金) 13:07:36
>>871
> かからねえよ。
CreateDeviceに1.5秒ぐらい、Direct3DCreate9に0.5秒ぐらいかかってるようなんですけど、これって異常なんでしょうか

> 表示したければすればいいだろ。
> ただしDirectXの範疇じゃないからスレ違いだ。
DirectXの初期化に関する話題はスレチですかそうですか

874 :デフォルトの名無しさん:2009/12/25(金) 13:29:02
>>873
開発環境もソースコードも提示されてないので分からないけど遅い気がする。
SDK付属のサンプルでも同じくらい時間かかるの?

>あと、初期化中にウィンドウに画像を表示しておく方法って何かないでしょうか。
そもそも何でウィンドウ表示したいの?
>>871も言っている通りDirectXとは関係なく、ウィンドウモードなら普通にウィンドウを生成しておけばいいだけでしょ。

875 :デフォルトの名無しさん:2009/12/25(金) 13:57:35
>>873
スレ違いだと納得したなら二度と来るな。

876 :デフォルトの名無しさん:2009/12/25(金) 14:07:29
DirectXの初期化中に何か描画しようとするなら、DirectX以外の描画方法が必要になるからそれはスレ違い。
ここまで説明しないと理解できないのか。

877 :デフォルトの名無しさん:2009/12/25(金) 16:45:40
>>873
最近ム板は変なのが住み着いてるから、感情的になるな

でも、DirectXの初期化中に画面に何かを表示したいなら、それはDirectXの範囲外だ
DDBかDIBあたりで描画しておけばいいんじゃないかな?

878 :デフォルトの名無しさん:2009/12/25(金) 16:54:24
>>877
GDIとかで描画しても問題ないんですか?終了時に一瞬チラッと見えてしまってるようなんですが

879 :デフォルトの名無しさん:2009/12/25(金) 17:05:51
>>878
問題ない
そのへんの細かな点は自分で何とかしてくれ

880 :デフォルトの名無しさん:2009/12/25(金) 17:28:47
>>879
そうか。とりあえずそこらへん調べてみる

881 :デフォルトの名無しさん:2009/12/25(金) 18:25:47
いろいろ調べた結果ちゃんと表示できるようになりました。ありがとうございました。

882 :デフォルトの名無しさん:2009/12/25(金) 22:57:07
質問です。
http://fx.104ban.com/up/src/up11126.jpg
3次元座標上にDrawPrimitiveUPを使ってテクスチャを描画したのですが、3Dモデルを表示する処理を加えたところ中央のテクスチャが画像のような網掛けになってしまいました。
前後の処理の大まかな流れは
FVF適用→モデル用レンダリングステートの設定モデルの描画→テクスチャ用レンダリングステートの設定→
テクスチャ描画(移動、回転の設定→SetTexture→DrawPrimitiveUP)
です。

今のところSetTextureには問題はなく、モデル描画時のDrawSubsetを除いたところ正しく描画されましたが、なぜそうなるのか分かりません。
よろしくお願いします。

883 :デフォルトの名無しさん:2009/12/25(金) 23:01:41
斜めの奴を先に描いて、床を後から描いてるからだろ

884 :デフォルトの名無しさん:2009/12/25(金) 23:07:48
いえ、確認したのですがモデル(床)の描画の後にテクスチャ(網掛け)を描画してます。

885 :デフォルトの名無しさん:2009/12/25(金) 23:26:24
DrawPrimitiveUpする前のFVFの設定は?

886 :デフォルトの名無しさん:2009/12/25(金) 23:28:44
// 構造体
struct VERTEX3D
{
// 頂点座標
D3DXVECTOR3 position;

// ディフューズ色
D3DCOLOR color;

// テクスチャ座標
FLOAT U, V;
};

// FVF(ワールド空間)
#define D3DFVF_VERTEX3D (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX1)

上のように宣言してます

887 :デフォルトの名無しさん:2009/12/26(土) 01:15:25
>>886
いやさっきの説明だとDrawPrimitiveUPの前にFVF設定してないだろって話。

888 :887:2009/12/26(土) 01:21:47
あぁ勘違いしてた。
とりあえず描画の不具合はPIX使おうよ。
一瞬で原因分かるから。

889 :882:2009/12/26(土) 22:01:19
ありがとうございます。
なるほど、PIXの存在をすっかり忘れていました。まずは試してみようと思います。

890 :882:2009/12/26(土) 23:17:54
お陰様で解決しました。モデル描画後にSetFVFをもう一度行ったところ正しく表示されました。
モデル描画時に適用したつもりのFVFの設定がリセットされていたみたいです。
ありがとうございました。

891 :デフォルトの名無しさん:2009/12/26(土) 23:27:58
>>890
というか、DrawPrimitive系を呼び出す前にはかならずSetFVFかけとかないと危ないんじゃない?
特にいろんなメッシュを描画したいときは。

892 :デフォルトの名無しさん:2009/12/28(月) 10:29:43
すみません。
ポイントスプライトはエフェクト表現に使って比較的、平気なものでしょうか?
ハードウェア機能と書かれており、グラボが無い場合の挙動や負荷が気になるのですが・・。

893 :デフォルトの名無しさん:2009/12/28(月) 11:11:36
グラボがなければそもそも何も表示できないんだが、
いったい何を言っているんだ?

894 :デフォルトの名無しさん:2009/12/28(月) 11:17:01
>>893
そうなんですね。では訂正させて頂いて、
RADEONやGeForce系をつんでないPCの場合、挙動は最低限保障されると思って良いものでしょうか?

895 :デフォルトの名無しさん:2009/12/28(月) 11:23:37
>RADEONやGeForce系をつんでないPC

>挙動は最低限保障
の定義を明確にしろ。

896 :デフォルトの名無しさん:2009/12/28(月) 11:37:02
エミュで試せ

897 :デフォルトの名無しさん:2009/12/28(月) 11:50:54
最近はグラボ積んでなくてもマザボでRADEHD4000くらい賄えるものもあるよ
とりあえず自分のPCのグラボぶち抜けばいいんじゃね

898 :デフォルトの名無しさん:2009/12/28(月) 11:55:21
私の表現も色々マズかったですが、やけに気が立ってる方がいらっしゃいますね

>>896
そうですね。こんな事自分でテストできるようになれば一々聞かなくて済みますね。
今後の為にも方法を調べてみようかと思います。ありがとうございました。

899 :デフォルトの名無しさん:2009/12/28(月) 12:19:16
グラボ抜かなくてもグラボのドライバ削除するだけでいいんじゃね

900 :デフォルトの名無しさん:2009/12/28(月) 12:29:30
>>892
ハードウェア・アクセラレーションが使用できない場合はソフトウェアでエミュレートすることができるので動作に問題はありませんよ。
ただし、その場合はCPUに大きな負荷がかかるので処理落ちする可能性はありますが。
最近のPCであればオンボードでもかなり高性能だと思いますけど、実際にテストしてみないと分からないですね。
とりあえずDirect3Dを初期化するときにハードウェア・アクセラレーションを使用しないようにできるのでそれで試してみたらどうでしょうか?

901 :デフォルトの名無しさん:2009/12/28(月) 12:30:54
ぶっちゃけ>>893がズバリ正解なんだけどね。
REFはSDK入れないと使えないし。

902 :デフォルトの名無しさん:2009/12/28(月) 12:32:28
>ハードウェア・アクセラレーションが使用できない場合はソフトウェアでエミュレートすることができるので動作に問題はありませんよ。
REFがなんだか理解できていない奴がこういう勘違いを平気でするし。

903 :デフォルトの名無しさん:2009/12/28(月) 12:46:33
今やREFデバイスに存在価値はあるのだろうか

904 :デフォルトの名無しさん:2009/12/28(月) 12:49:31
REF試してみたが、Core i7でも秒間1回描画することすら無理なんだが……。
これはあくまでデバッグ用だろ?

905 :900:2009/12/28(月) 12:56:55
すみません、書き方が悪かったです。
REFは描画はできてもまともな速度で動作しませんね・・・

906 :デフォルトの名無しさん:2009/12/28(月) 13:09:29
REFは、自分のプログラムが悪いのか、グラボのドライバのバグなのかを見極める時にとても役に立つぞ
オンボ関係はまだまだグラボバグが多い・・・

907 :デフォルトの名無しさん:2009/12/28(月) 13:15:14
REFで挙動を調べても、異常値を入れても正常に動いてしまうので、
結局一通りの環境で動かさないと見極めなどつかない。

908 :デフォルトの名無しさん:2009/12/28(月) 14:37:25
つかないな。

909 :デフォルトの名無しさん:2009/12/28(月) 15:47:56
D3DDEVTYPE_HALとD3DCREATE_MIXED_VERTEXPROCESSING
を組み合わせれば、ほとんどのPCで動く?

つかこれだと何fpsぐらいでるの??

今PC使えないから検証求む

910 :デフォルトの名無しさん:2009/12/28(月) 15:50:30
>>909
ポイントスプライトの話の続きですか?

911 :デフォルトの名無しさん:2009/12/28(月) 15:55:22
独立した質問だろ。

912 :892:2009/12/28(月) 15:58:36
>>899-908
大変今後の為になる話でした。ありがとうございます。

913 :デフォルトの名無しさん:2009/12/28(月) 16:50:05
>>912
そんなお世辞はいらないぞ
回答者が調子にのるからな

914 :デフォルトの名無しさん:2009/12/28(月) 16:59:12
ホントに変なのが住み着いてるんだな、このスレ
昔質問の仕方が悪くて叩かれたやつの逆恨みか?

915 :デフォルトの名無しさん:2009/12/28(月) 17:08:05
まあ実際REFがどうであるかなんて、
どうでもいいことだし、クソの役にも立たないし
こいつらのアドバイスは無駄でしかない 

916 :デフォルトの名無しさん:2009/12/28(月) 17:38:45
>>909
>つかこれだと何fpsぐらいでるの??
何を処理するかもマシンのスペックも不明なのに答えられるわけがないだろ。
いい加減にしろよ。

917 :デフォルトの名無しさん:2009/12/28(月) 18:29:40
たしかに無駄なアドバイスが多いな

918 :デフォルトの名無しさん:2009/12/28(月) 18:48:02
まあ頭の無いゴミに何言っても無駄ですけどね

919 :デフォルトの名無しさん:2009/12/28(月) 20:12:24
最近は回答される方々の中には怒りっぽい方がいるようですね。
スレッドが荒れますから平静を保つよう心がけましょう。

920 :デフォルトの名無しさん:2009/12/29(火) 09:56:13
昔、ここでたくさん受けた恩は忘れていない
荒れてても初心者がきたら回答者としてがんばるさ

921 :デフォルトの名無しさん:2009/12/29(火) 20:23:15
今ゲーム用のウインドウとかシステムとかのスケルトンを作ってるんだけど、
モデルの描画はメインスレッド、モデルの更新は別スレッド、っていう
作りって大丈夫だと思う?

ゲ製は初心者なんで教えてくれ m(_ _)m

-------------------------------------------------------------
プログラム
 メインループ → 描画(できる限り)
 別スレッド → 更新(できる限り、現在のフレームの値?で更新)
-------------------------------------------------------------

922 :921:2009/12/29(火) 20:25:41
こういうのがマズイっていうのがあったら
アドバイスをくだされ

923 :デフォルトの名無しさん:2009/12/29(火) 23:14:23
Frapsのように、他のDirect3Dプログラムに描画したりキャプチャしたりといったことは、どうやって実現しているのでしょうか?
バックバッファをの内容を書き換えたり取得するのだと思いますが、他のプログラムに大してそんなことできるのですか?

924 :デフォルトの名無しさん:2009/12/29(火) 23:48:18
同人げーおもすれーな
個人で手軽に優良ゲーつくれりゃいいのにな。
むしろ面白いゲームを勝手に作ってくれるプログラムあればいいのに

925 :デフォルトの名無しさん:2009/12/29(火) 23:53:25
そんな貴方にUDK
4Gamer.net ― 完全図解,無償配布のUnrealEngine 3開発キットで3Dゲームを作ってみよう(ミドルウェア/開発ツール)
ttp://www.4gamer.net/games/032/G003263/20091212002/

926 :デフォルトの名無しさん:2009/12/29(火) 23:55:01
おもしろい同人ゲーkwsk
パクリゲー抜きで

927 :デフォルトの名無しさん:2009/12/30(水) 00:10:02
【言語比較】2chではCとC++>>JAVAって人が多い。しかし本当にそうか?ちなみに2chはperlが使われてる
http://tsushima.2ch.net/test/read.cgi/news/1262071701/

ニュース速報板

928 :デフォルトの名無しさん:2009/12/30(水) 00:39:06
c++はカオス

929 :デフォルトの名無しさん:2009/12/30(水) 00:50:54
>>926
924じゃないけど、紹介したら宣伝だって叩かれると思うよ。

930 :デフォルトの名無しさん:2009/12/30(水) 14:35:39
>>921
>現在のフレームの値?
じゃなくて前回更新した時間との差分でやれ

931 :921:2009/12/30(水) 15:11:41
現在のフレーム = (現在の時間 - 開始時間) ÷ 1フレームあたりの時間[ms]
で求めようと思ってるんだけど・・・

マルチスレッドは問題nothing?

932 :デフォルトの名無しさん:2009/12/30(水) 16:47:09
描画なんて全力でまわせばよくね?

933 :921:2009/12/30(水) 17:02:29
うん。描画は回せるだけ回そうと思ってる。

問題は更新ロジックなんだわさ

934 :デフォルトの名無しさん:2009/12/30(水) 17:04:49
そんな事もろロクに考えられないバカがスレッドとかウケルんですけど

935 :デフォルトの名無しさん:2009/12/30(水) 17:12:16
>>934
これだから厨房は・・・

こんなのばかりだから困る

あ、もしかして厨房でない?

936 :デフォルトの名無しさん:2009/12/30(水) 17:16:19
もしかして自分は頭いいと思ってるの?

937 :デフォルトの名無しさん:2009/12/30(水) 17:20:01
>ろロク
文字すら'ろ'ロクに打てないバカが煽りとかウケるんですけど

938 :921:2009/12/30(水) 17:22:21
え、俺・・・?

939 :デフォルトの名無しさん:2009/12/30(水) 17:35:26
作り込む前に簡単なテストでもすれば解決
ここで問題ないって言われてもテストするでしょ?

940 :デフォルトの名無しさん:2009/12/30(水) 19:15:42
テストするでしょ?って言ってんだろ!

941 :デフォルトの名無しさん:2009/12/30(水) 22:55:49
マルチスレッドで更新、描画を行うときって、
更新のときロックした方がいいのかな?

942 :デフォルトの名無しさん:2009/12/31(木) 00:37:13
ロックした方がいいに決ってる

943 :デフォルトの名無しさん:2009/12/31(木) 01:01:03
画面の描画ってメインスレッドがやるものじゃないの?

944 :デフォルトの名無しさん:2009/12/31(木) 08:51:13
メインスレッドは同期を取るだけでいいのよ

945 :デフォルトの名無しさん:2009/12/31(木) 20:17:14
Direct3D9をつかっている既存の自作ゲームがあるのですが、
それにエディットボックスやチェックボックスなどのGUI要素を追加したいのですが、
Direct3D9に対応したGUIライブラリにはどんなものがありますか?
まっさきに思いついたのはDXUTですけど、これってそもそもアプリケーション全体を
DXUTフレームワークで作っていないといけないんですよね?

946 :デフォルトの名無しさん:2009/12/31(木) 20:42:41
ゲーム製作難易度的に何からはじめればいいかな。

とりあえず今の俺はrandom関数を利用して的がランダムにグーチョキパーを出すジャンケンゲームくらいならなんとか作れるレベル。

947 :デフォルトの名無しさん:2009/12/31(木) 20:47:02
自己解決したお(´・ω・`)

948 :デフォルトの名無しさん:2009/12/31(木) 21:29:22
>>946
DirectXを使ってジャンケンゲームを作るなら、このスレにいてもいいけど

949 :デフォルトの名無しさん:2009/12/31(木) 21:32:25
DirectXを使えばジャンケンゲームが作れるようになったばかりの俺でも
超すごいグリグリ3Dのかっこいい伽羅が動き回る派手なアクションゲームつくれます?

950 :デフォルトの名無しさん:2009/12/31(木) 21:58:52
キャラクターの格好は、プログラムの問題ではないからスレ違い。

951 :デフォルトの名無しさん:2009/12/31(木) 22:51:13
>>945
俺が試したところ、
一応DXUTは無改造(終了時の後処理のHWNDまわりで何かあった気がするが)で
導入可能だった。かなり昔の記憶だが。
DXUTCoreとDXUTOptionalをプロジェクトとして追加するんだが、
特に難しい点もないし、試してみるよろし。

952 :デフォルトの名無しさん:2009/12/31(木) 23:15:38
>>951
自己解決しました

953 :デフォルトの名無しさん:2009/12/31(木) 23:35:48
ゲームを作るとき、
LPDIRECT3DDEVICE9をどこに配置してる?
グローバル変数というのが妥当なのだろうかなぁ
しかしながらそれだと入れ子になったクラス
(タイトル画面クラス、ゲームプレイクラス等)
にいちいちポインタを渡さないといけない
これをどうにかするにはどういった方法をつかえばよいのでしょう?

954 :デフォルトの名無しさん:2010/01/01(金) 00:10:39
>>953
D3DDevice9は、物理デバイスの有無といったC++の外の概念に
影響されるので、確かに扱いづらい。
D3DDevice9はadapterOrdinalという番号を一意に持つので、
これで管理するのが最も自然と思う。
D3DDevice9のポインタは、グローバル変数の配列に保存され、
D3DResourceを保持するオブジェクトは、adapterOrdinalも同時に持ち、
それでD3DDevice9にアクセスする寸法。


955 :954:2010/01/01(金) 00:15:43
ごめん、ちょっとピントの外れたレスだった
無視してくらさい

956 :デフォルトの名無しさん:2010/01/01(金) 06:05:08
DXUT使えば解決

957 :デフォルトの名無しさん:2010/01/01(金) 06:33:02
てかヘッダーで外部参照じゃだめなん?

まぁ、根本的な話をすると
タイトル画面クラス、ゲームプレイクラスみたいなゲーム本体部分が
ハード依存部分(D3DDevice9)に直接アクセスするような設計がおかしい
ハード・ゲーム・データはそれぞれ独立して設計しないと
再利用性皆無の糞コードが出来上がるだけだぞ

958 :デフォルトの名無しさん:2010/01/01(金) 07:20:29
だめ

959 :デフォルトの名無しさん:2010/01/01(金) 07:59:38
なぜだめなのか書かないと

960 :デフォルトの名無しさん:2010/01/01(金) 11:55:56
>>957
なるほど
きちんと分けないといけないのですか
ということは描画部分クラス、サウンドデバイスクラス、
入力受付クラスなんかを設計して、
ゲーム部分からはそのメソッドからアクセスという形がいいということでしょうか
ということは・・・staticメンバにD3DDevice9をprivate
というのがいいのでしょうか?

>ヘッダーで外部参照
これはexternあたりの話でしょうか?(この辺は勉強不足です)

それとあけおめでございます^^

961 :デフォルトの名無しさん:2010/01/01(金) 14:49:42
>>959
やだ

962 :sage:2010/01/01(金) 15:02:02
>961
俺も知りたいですおヾ(・ω・o)

963 :962:2010/01/01(金) 15:05:12
E-mail欄でしたOTL

964 :デフォルトの名無しさん:2010/01/01(金) 18:11:07
D3DXQUATERNIONとD3DXVECTOR4の違いって何ですか?

クォータニオンは4Dベクトルですって書かれているものもあるのですが…

965 :デフォルトの名無しさん:2010/01/01(金) 18:35:48
>964
自分もくわしいわけではないですが
ここにそれらしきことが載ってました
ttp://marupeke296.com/DXG_No10_Quaternion.html

966 :デフォルトの名無しさん:2010/01/01(金) 18:36:24
4つの数値をまとめたのが4次元ベクトル。
そのベクトルの間に特定の演算を組み込んだのがクォータニオン。

967 :デフォルトの名無しさん:2010/01/01(金) 19:28:46
>>965
>>966
ありがとうございます。

複素数と2次元ベクトルの関係みたいなものなのですね
クォータニオンと4次元ベクトルの内積の違いについても実験してみようと思います。


968 :デフォルトの名無しさん:2010/01/01(金) 20:12:25
>>967
アドバイスというかなんと言うか。
クォータニオンの各成分の意味は謎なので考えないほうがいいらしい。

969 :デフォルトの名無しさん:2010/01/01(金) 21:21:48
らしいなw

970 :デフォルトの名無しさん:2010/01/02(土) 14:47:49
数の成分なんて一定じゃない
170cmとか200km/hとか単位によって意味は変わる

Direct3Dにおけるクォータニオンは3次元座標に応用したもの

971 :デフォルトの名無しさん:2010/01/02(土) 14:56:00


加算、減算があるように、ベクトル内積、クォータニオン内積と計算方法として存在する
単に「内積」だとどっちか分からないから名前がついてる
ベクトルもクォータニオンも(Direct3Dの次元では)同じ意味。

972 :デフォルトの名無しさん:2010/01/04(月) 20:42:38
ようするにDirect3Dでは俺定規で測れ、ってこった

973 :デフォルトの名無しさん:2010/01/05(火) 15:57:23
スレ違いでしたらすみません。
HLSLで「モデルの頂点色(Diffuse)」を指定するには
コードに何と記述すれば良いのでしょうか?
実数を当てて色や透明度の出力は成功しております。

974 :デフォルトの名無しさん:2010/01/05(火) 18:54:25
なにが聞きたいのかイマイチ解らん

実数の部分を変数にして
プログラム側からその変数に値を送れば良いだけのはずだが

975 :デフォルトの名無しさん:2010/01/05(火) 19:27:57
>>974
これは・・私が勘違いしている事間違いなしですね。
HLSL、いまいち掴めないですが・・色々情報漁って再勉強してみます。 ありがとうございました。

976 :デフォルトの名無しさん:2010/01/06(水) 13:42:01
すみません。モーションをミックスする時の
D3DXTRACK_DESCのSpeedメンバは何を意味しているんでしょうか?

MSDNでは「速度の値。トラックの間隔をスケーリングするための乗数に似ている。」とあるのですがよくわからず、
ググっても情報がなく、何か意味ありげな数値をセットしてる所も有るみたいなのですが・・

977 :デフォルトの名無しさん:2010/01/06(水) 19:35:29
DirectXは知らんが。
0〜100のローカル時間で定義されているアニメーショントラックをscale=1で、
ワールド時間1500の位置で再生すると1500〜1600の区間で再生されるだろう。
scale=2で再生すると1500〜1700の区間で再生されるだろう。
つまりそう言う事。
scale=nだと再生スピードがn倍される(か1/n倍される)

978 :デフォルトの名無しさん:2010/01/07(木) 15:31:17
ポリゴン数増やすのとボーンを増やすのってどっちが計算量かかりますか?

979 :デフォルトの名無しさん:2010/01/07(木) 16:16:53
物によるんだから自分で計算量を出してみれば一発だろ。
いったい何を聞きたいのか意味不明。

980 :デフォルトの名無しさん:2010/01/07(木) 17:22:56
ボーン増やしてもリミット超えなければ計算量はほとんど変わらず一定。
ポリゴン増やせばほぼリニアに負荷が増える。
だからどうしたって感じ?

981 :デフォルトの名無しさん:2010/01/07(木) 19:09:59
>>977
なるほど。ありがとうございす。

982 :953:2010/01/07(木) 22:59:14
名前: 953
E-mail: sage
内容:
LPDIRECT3DDEVICE9をどこに配置すればよいのかということで、
一応今の段階での答えが見つかったので報告です
一つしかインスタンスを作れない、
シングルトンという形で配置することにしました
MyDrawEngine.hはこんなかんじです

class MyDrawEngine
{
public:
static MyDrawEngine* Instance();

static void Create(HWND);
static void Destory();

LPDIRECT3DDEVICE9 GetpDevice();
private:
MyDrawEngine(HWND);
~MyDrawEngine();

static MyDrawEngine* mInstance;

LPDIRECT3D9 pD3d;
LPDIRECT3DDEVICE9 pDevice;
};
おそらくもっと良い方法はあると思います
もしその情報を知っている方がいたら、
今後のためにも、ぜひ教えていただきたいです

983 :デフォルトの名無しさん:2010/01/08(金) 00:08:43
C++をまず普通に使えるようになろう

984 :デフォルトの名無しさん:2010/01/08(金) 00:18:57
>>982
引数で渡すのが一番安全
仮にロストしてたらどうする気?

【建前】
プログラムの作法としてグローバル変数・関数っては使わないのがデフォ
その代わりとしてすべて引数で渡すのが基本
ヘッダも必要最小限のみインクルードするのが基本

【実際】
開発現場によってコロコロ変わるからその場にあわせてうまくやりゃいーんじゃねーの?

多分、グローバルなんかにおいて悦に逝ってるレベルからするにプログラムを完全に勘違いしてるレベル
まあ、別にいいけど
恥かしいから控えめに発言しとけ


985 :953:2010/01/08(金) 02:00:47
>>984

『ゲームプログラマになる前に覚えておきたい技術』
という本で紹介されていた方法なのですが、
グローバル変数はシングルトンクラスの形で置かれるのが望ましい
というように書かれてあって挑戦してみました

>>仮にロストしてたら
というのはどういうことでしょう?
単純にNULLポインタでのアクセスの危険性ということでしょうか?

>>グローバルなんかにおいて
シングルトンはグローバルに配置云々は関係ないような気がするのですが、
どういう意味でしょうか?

986 :デフォルトの名無しさん:2010/01/08(金) 06:34:56
素人が飛びついて失敗する典型ですね

987 :デフォルトの名無しさん:2010/01/08(金) 07:10:27
>>985
>というのはどういうことでしょう?
3DDeviceのポインタは勝手に無効になるそれはNULLとかそういう話じゃなくて
無効になるデバイスロストでググレ
3DDeviceのポインタに限らずインスタンスってそういう可能性あるよね?
グローバルで抱えるってことはそういう可能性をまったく考慮してないってこと

988 :デフォルトの名無しさん:2010/01/08(金) 08:45:30
>>985
その本に「言語まで説明するのめんどくせぇーからスタティックにしておくよ」的なつぶやき書いてなかったっけ?

989 :デフォルトの名無しさん:2010/01/08(金) 10:10:23
staticやグローバル変数が使えるC++で
シングルトンを使う意味はあまりないような気がするけど

990 :デフォルトの名無しさん:2010/01/08(金) 10:15:48
constと同じだろ

991 :デフォルトの名無しさん:2010/01/08(金) 13:00:13
>>987
それは関係無いと思うが
誰かが管理すればいいだけの話で

992 :デフォルトの名無しさん:2010/01/08(金) 13:27:20
だから
設計に悩んで先に進めないような初心者ならDXUT使えって
何も無いところに壁を作って挫折するくらいなら

993 :953:2010/01/08(金) 20:54:25
>>987
ありがとうございます
デバイスロスト時の処理も注意して書いていきます

>>988
いくつか筆者の意見が書かれていたとおもいますが、
どの位置のことをおっしゃっているのかはちょっとわかりませんOTL

>>992
それもいいのかもしれません
しかしもうすこしがんばってみます
ありがとうございました

994 :デフォルトの名無しさん:2010/01/09(土) 00:24:04
>>987
よくわからんくせに、講釈たれんなよ

995 :デフォルトの名無しさん:2010/01/09(土) 06:18:53
アレアレ?
だれかさんのつたない実装に直撃?
怒っちゃった?

996 :デフォルトの名無しさん:2010/01/09(土) 14:36:24
>>953の自己満クソ設計は別にどうでもいいが
>>987は間違っている
デバイスロスト時の挙動と記憶クラスがどうであるかは
別に関係無いでしょ

997 :デフォルトの名無しさん:2010/01/09(土) 15:21:02
>>996
なにと関係ないって?

998 :デフォルトの名無しさん:2010/01/09(土) 16:03:05
引数で渡すのが一番安全の意味が分からない。。。


999 :デフォルトの名無しさん:2010/01/09(土) 16:19:34
>3DDeviceのポインタに限らずインスタンスってそういう可能性あるよね?
これってどういう可能性?
何、ある日突然確保してるヒープが開放されんの?
いや〜、怖い世の中じゃのうw

1000 :デフォルトの名無しさん:2010/01/09(土) 16:32:21
1000 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

222 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)