【C++】 DirectX初心者質問スレ Part26 【C】at TECH
【C++】 DirectX初心者質問スレ Part26 【C】 - 暇つぶし2ch2:デフォルトの名無しさん
09/10/25 02:50:26
>1乙です さっそく質問ですが、
ポリゴン1にテクスチャ1とテクスチャ2を重ねて貼って、
ポリゴン2にはテクスチャ1だけを貼りたい場合、どうすればいいんでしょうか?
頂点デクラレーションとか頂点ストリームとかできるだけ使いまわしてやりたいのですが

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

o めっぽう


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

38:デフォルトの名無しさん
09/10/26 21:25:14
シェーダーでスキンメッシュ
URLリンク(www.twin-tail.jp)

39:デフォルトの名無しさん
09/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
URLリンク(www.computerworld.jp)
URLリンク(www.computerworld.jp)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ならば
変換済み頂点(ディスプレイ座標)を使っておくれ
URLリンク(marupeke296.com)
参考になるかな

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

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

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

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

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

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

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

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

これでできました

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

58:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/10/28 19:58:21
そもそも
LoadGraphとかDrawGraphとかの独自関数の中身なんてしったこっちゃないんだけど
毎ループ画像読み込みしてるから死んでるとか

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

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

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

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

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

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

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

67:デフォルトの名無しさん
09/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
09/11/01 22:38:30
エラーの意味はよくわからないけど、とりあえずエラーは出ないようにできました
ただ、大したことしてないのにCPU使用率が思ったよりいってて不安なんですが、
(Core2DuoE8400でCPU使用率5~15%、メモリ22MB使用)
DirectXで作るとこんなものなんでしょうか?
フレームとかを作って秒間60回以上は描画しないようにしたら下がるでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

81:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/04 15:02:23
>>81
ソースうp


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

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

プログラム本体はC#で書いていてサンプルにならないので、HLSLだけアップロードした。
URLリンク(www.dotup.org)

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

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

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

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

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

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

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

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

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

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

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

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

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

96:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/05 22:32:33
なんで毎度毎度まともにソースを出さずに、断片的な情報しか出さないんだろう?

99:デフォルトの名無しさん
09/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
09/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:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/05 22:39:54
テキストファイルでくれ。

103:96
09/11/05 22:45:50
URLリンク(www.dotup.org)
お願いします。

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

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

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

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

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

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

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

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



m_pV_POS[id]->Unlock();

これがあやしいぞ

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

113:デフォルトの名無しさん
09/11/06 07:03:18
URLリンク(www.google.co.jp)

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

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

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

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

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

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

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

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

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




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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

152:148
09/11/10 18:32:09
orz・・・

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

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

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

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

157:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/10 21:12:16
気が狂ってんのかこいつ。

159:157
09/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:デフォルトの名無しさん
09/11/10 21:14:54
スレチ

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

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

無視してください

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

なんでかは知らないけど

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

URLリンク(bbx.hp.infoseek.co.jp)

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


192:デフォルトの名無しさん
09/11/13 03:02:19
URLリンク(marupeke296.com)

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

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

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

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

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

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

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

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

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

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

間違っててもシラネ。

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

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

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

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

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

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

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

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

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

スレリンク(hidari板)




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

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

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

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

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

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

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

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

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

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

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

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

218:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/14 05:04:52
カタカナで検索したら一杯出てきたわ、すまん

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

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

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

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

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

226:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/14 21:54:30
>>226
テクスチャのファイルのパスだとおもう

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

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

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

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

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

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

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

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

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

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

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

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


239:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/15 16:36:02
今無くても将来的には出てくるかもかもしれないので保証しかねる。


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

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

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

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

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

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




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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DirectX のヘルプより

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

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

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

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

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

286:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/18 22:20:46
各種インターフェースの参照カウントの数を知る方法ありますか?


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


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

290:デフォルトの名無しさん
09/11/18 23:43:19
すみません。
URLリンク(marupeke296.com)
ここの「ポリゴン上に点が含まれるかを判定」を実装したいのですが上手く行きません。
そこの説明にある、
「元のポリゴンと法線が同じが異なるかで、点が含まれているかどうかを判定できます。」とは、
「正規化した法線ベクトルが全く同じ方向(数値)になれば」
という意味なのでしょうか? もしそうなら僅かな座標のずれで一致する事など無い様に思えます・・。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

329:322
09/11/22 12:56:36
>>328
偽者は黙ってろ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

391:デフォルトの名無しさん
09/11/24 13:48:23
すみません
ポリゴンの高度にキャラを立たせようと
URLリンク(marupeke296.com)
ここを参考にやっているのですが
ポリゴンによって上手くいったり、全くおかしな挙動をしたりします。

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

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

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

393:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/24 23:25:59
BeginSceneとEndSceneは、Presentの前に1度呼ぶのと描画のたびに呼ぶのではどちらがいいのでしょうか?

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

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

395:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/11/24 23:58:08
ありがとうございます。
ちゃんと記載されてるんですね。

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

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

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

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

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

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

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

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

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

404:402
09/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:デフォルトの名無しさん
09/11/25 17:56:47
ヒント: BlendOp, SrcBlend, DestBlend

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

float4 PS_Sample( VS_TO_PS In ) : COLOR 
{ 
return 0.5f.xxxx; 
} 


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

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

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

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

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

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

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

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

414:402
09/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:デフォルトの名無しさん
09/11/25 19:40:39
ステートに関係しないと困るだろう。
アルファ値に半透明度ではなく意味のある数値を含めて描画したい場合とかどうにもならんくなる。

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

417:402
09/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
09/11/25 20:07:29
>>417
BlendOp = D3DBLENDOP_ADD ;
にしても1にしてもだめです。

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

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

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

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

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


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