【C++】 DirectX初心者質問スレ Part14 【C】at TECH
【C++】 DirectX初心者質問スレ Part14 【C】 - 暇つぶし2ch624:デフォルトの名無しさん
07/10/17 19:02:08
>>622
調べたのならなら分かっていてもおかしくはないと思うが、現在
DirectShowはDirectXの一部としては扱われていない

DirectShowスレで質問しましょう

625:デフォルトの名無しさん
07/10/17 19:04:31
>>623
>>624
申し訳ありません、そうさせていただきます。
ご迷惑をおかけしました。

626:デフォルトの名無しさん
07/10/17 19:09:34
いいじゃねーか。馬鹿じゃねーの?>>623-624
たとえば年寄りに大宮市のこと聞かれて「今は大宮市は存在しませんのでわかりません( ̄へ ̄)」とか答える馬鹿をみたらどうおもう?
ちっちぇーよちっちぇーよなあ、おまえら。

627:デフォルトの名無しさん
07/10/17 19:12:43
>>625
「directshow sample」でぐぐると、参考になるかもな。がんばれよ

628:デフォルトの名無しさん
07/10/17 19:42:27
>>626
DirectShowスレも見てれば分かると思うが、
あっちの方が質の高い回答が返ってくるくる可能性が高い。

普通に誘導しただけでなぜ馬鹿呼ばわりされにゃならんのか

629:デフォルトの名無しさん
07/10/17 19:50:26
>>628
ごめんなさい

630:デフォルトの名無しさん
07/10/17 20:17:24
いまのDirectShowはDirectXより敷居が高いからなぁ
Video for Windowsを使うのも一つの手かもね


参考サイト
URLリンク(www1.bbiq.jp)

631:デフォルトの名無しさん
07/10/17 23:43:10
数年前、DirectShowは大量の分け分からんクラスと用語でやる気なくしたトラウマがあるんだ


632:607
07/10/18 22:49:24
>>608
すみません、違います。
>>609
やっぱりそれが現実的ですね、ありがとうございます。
>>611
ググればすぐに出てきますよ。

633:デフォルトの名無しさん
07/10/19 07:55:49
>>611
たしかに見つかりにくいので今回は貼ってやろう
URLリンク(msdn.microsoft.com)

634:デフォルトの名無しさん
07/10/19 07:58:58
>>493
>Microsoft DirectX 9.0ヘッダー
>注 圧縮データ ストリームは現在サポートされていないので、ここでは詳しく示さない
ワロスw

635:デフォルトの名無しさん
07/10/19 22:51:29
ファイルの読み込み速度で言えば

バイナリフォーマット>>>>>>>>>>>>>>>>>テキストフォーマット。
でバイナリ形式が文字通り桁違いに早い。
手元のデータいくつかで試したけど圧縮バイナリはテキストに比べれば早いってレベル。
ファイルサイズに神経質にならない限り、圧縮形式のメリットってあんまりないな。

636:デフォルトの名無しさん
07/10/20 09:00:29
そりゃ、データストレージのバスボトルネックが極端に大きく無い限り
データ展開のアルゴリズムが動く分、バイナリより遅くなるわな。


637:デフォルトの名無しさん
07/10/20 09:40:16
なんでそんな難しく言うねん

638:デフォルトの名無しさん
07/10/20 12:05:37
そこでわかりやすく>>637が解説

639:デフォルトの名無しさん
07/10/20 12:11:21
難しくて理解できんから言うとんねん

640:デフォルトの名無しさん
07/10/20 12:30:58
例えるなら
高速道路でETCを使用しない場合、
料金所が極端に多くない限りETCより時間がかかるって事?

641:デフォルトの名無しさん
07/10/20 12:51:07
スーパーで買い物をして帰ってくるのに、
自転車と乗用車どちらの方が短時間で済むかというのを考えろ。
どこに負荷がかかるのか状況を分析して、最適解を求めるというだけの話。

642:デフォルトの名無しさん
07/10/20 13:01:57
その例だと圧縮が圧倒的優勢や

643:デフォルトの名無しさん
07/10/20 13:12:11
aho

644:デフォルトの名無しさん
07/10/20 14:13:00
スーパーとどれだけ距離があるのか、出発時間はいつでその時に道は混んでいるのか、
駐車場はすぐ止められるのか、駐車場から店舗までの距離はどのくらいか、
考えることはいくらでもある。

元データの容量や圧縮率、ストレージの速度、デコードに使うCPU周りの速度、
条件が異なればどこの処理のプライオリティが高くなるのか変わってくる。

要するに、きちんと条件を整理して総合的にものを考えろということ。

645:デフォルトの名無しさん
07/10/20 14:46:17
簡単に言えばバイナリフォーマットには最初から「数値」が入ってる。
テキストフォーマットには「文字列」が入ってる。
3Dフォーマットだと、その山ほどある文字列を数値に変換する必要があるわけで
それだけでも結構なボトルネックになる。



646:デフォルトの名無しさん
07/10/20 15:02:32
ぇ、テキストフォーマット?
生バイナリと圧縮バイナリの話じゃなかった?

ちなみに全ドライブ圧縮ONの俺は、圧縮フォーマットなんてNTFSの圧縮機能と二重になって無駄なだけだと思う

647:デフォルトの名無しさん
07/10/20 15:06:02
テキストとバイナリの話だと思った。すまんかった。

648:デフォルトの名無しさん
07/10/20 15:08:34
>>646
圧縮方法が違えばさらに小さくなる可能性はあるし、
それに常に圧縮ONのドライブであるならともかく、ソフトを公開すればほとんどがOFFだから、検討する価値はあると思う。

それはともかく、ドライブの圧縮ONにしてる人間を初めて知った。

649:デフォルトの名無しさん
07/10/20 15:58:03

俺も使っているが、MSのファイルクラッシャーパッチ食らってからは
ソースとかライブラリ等大事なファイルの置いてあるところにはかけないようにしている。
物によってはかなり縮むから重宝していたのだけどね^^;
スレチすまん。

650:デフォルトの名無しさん
07/10/20 22:12:08
分からんからガソリンスタンドと車で例えてくれよ。

651:デフォルトの名無しさん
07/10/20 22:28:35
Xファイルって実は結構使えるよな。



652:デフォルトの名無しさん
07/10/20 22:29:49
>>651
モルダー、あなた疲れてるのよ

653:デフォルトの名無しさん
07/10/20 22:31:07
>>651
は?

654:デフォルトの名無しさん
07/10/20 22:39:31
いや、テンプレート好きに拡張出来るのは便利くない?

655:デフォルトの名無しさん
07/10/20 23:11:33
>>654
は?

656:デフォルトの名無しさん
07/10/20 23:17:07
テンプレート型のフォーマットだからXファイルにテクスチャデータを
放り込んだり、当たり判定用のローポリデータ追加したりするの楽じゃん?

素のXファイルが使えないって言ってる?
それなら同意。

657:デフォルトの名無しさん
07/10/20 23:19:39
カスタムテンプレートは自己満足

658:デフォルトの名無しさん
07/10/20 23:22:09
「どんどん拡張してどんなデータも対応可能!!」は
ライブラリ製作マニアの陥りがちな野放図な夢想

659:デフォルトの名無しさん
07/10/20 23:24:19
>>656
は?

660:デフォルトの名無しさん
07/10/20 23:28:44
現状、モデリングソフトのプラグインから出力する以外なにやっても無駄

661:デフォルトの名無しさん
07/10/20 23:29:20
>>658
いや、だから必要に応じて追加出来るのが便利って言ってんの。

662:デフォルトの名無しさん
07/10/20 23:33:19
>>661
そんなの自作フォーマットで十分じゃんw
ID+SIZE+XXX
って形にしておけばいくらでも追加できるぜw
なにが便利だって?え?w

663:デフォルトの名無しさん
07/10/20 23:35:30
別に何使ってもいいだろ・・・
ほっといたれよ

XFileの話しになると必ずでてくるよな

664:デフォルトの名無しさん
07/10/20 23:38:10
独自のテンプレートをXFileにわざわざ追加してなんだってのかマジでわからん

665:デフォルトの名無しさん
07/10/20 23:52:13
好きなもん使えばいいだけ。

666:デフォルトの名無しさん
07/10/21 14:12:10
2の乗数の画像じゃないと、自動的に「画像サイズより大きい2の乗数の大きさのテクスチャ」
に変えられて表示されてしまうのですが、これは仕様でしょうか?

ちなみにテクスチャは「4点の座標を入力して作る」方式のほうです。

治せるのなら治したいのですが、治せないのならこれを計算に入れたプログラムを打ちたいと思っているのですが…。

667:デフォルトの名無しさん
07/10/21 15:06:13
>>666
そのはず。

668:デフォルトの名無しさん
07/10/21 15:54:16
>>666
BBXでもこんな質問あったな。

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

669:デフォルトの名無しさん
07/10/21 16:16:00
667さん、668さん


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

668さんのURLの所にもあったのですが
テクスチャはD3DXCreateTextureFromFileExで作り、
D3DX_FILTER_NONEを指定しています。


int t_x;
int t_y;

D3DSURFACE_DESC t_data; //D3DSURFACE_DESCとはテクスチャの情報を格納するための関数
texture->GetLevelDesc(0, &t_data); //textureの情報をt_dataに格納

t_x = t_data.Width;
t_y = t_data.Height;

で正確な画像のサイズが取得できると思ったのですが、
やはり101*101の画像なのにサイズは128*128だと言われてしまっていました。

DirectX側では、正確な画像の大きさは取得出来ないし、
正確な画像の大きさのテクスチャは作れないみたいでした。

670:デフォルトの名無しさん
07/10/21 16:20:17
D3DXIMAGE_INFO imageInfo;
hr = D3DXGetImageInfoFromFile( filename, &imageInfo );

imageInfo.Width
imageInfo.Height

671:668
07/10/21 16:34:57
まったく試していないが適当に回答

D3DX_DEFAULT_NONPOW2とか?

672:デフォルトの名無しさん
07/10/21 17:46:33
>>669
読み込まれた後のテクスチャのサイズを取得しても無駄。
読み込むときの引数を良く確認してみろ、注意力が足りなすぎる。

673:デフォルトの名無しさん
07/10/21 18:47:11
670さん、671さん、672さん

回答、誠にありがとうございました。
672さんの言うとおりに取得の時を見て
671さんの言うとおりに治してみたら、値の取得が出来ました。

よく読みもせず、思いつきで質問してしまい申し訳ありませんでした。
670さんのものも試してみたいと思います。

それでは、改めてありがとうございました。

674:デフォルトの名無しさん
07/10/21 23:50:01
頂点バッファって使いまわしても問題ないですよね・・・

HOGEVERTEX vertex[4];
set_hoge_vertex(vertex, x1, y1, x2, y2);
dev->SetTexture(0, t);
dev->SetFVF(D3DFVF_HOGEVERTEX);
dev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, &vertex, sizeof(HOGEVERTEX));
set_hoge_vertex(vertex, xx1, yy1, xx2, yy2);
dev->SetTexture(0, tt);
dev->SetFVF(D3DFVF_HOGEVERTEX);
dev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, &vertex, sizeof(HOGEVERTEX));
set_hoge_vertex(vertex, xxx1, yyy1, xxx2, yyy2);
  ・
  ・
  ・

675:デフォルトの名無しさん
07/10/22 00:05:20
>>674の例ならば問題ないが、その例は
ローカル変数の配列を使いまわしてるだけで、
頂点バッファを使いまわして問題ないケースと問題あるケースの
どちらについても語っていないがな。


676:674
07/10/22 00:27:09
>>675
マルチスレッドでなければ大丈夫ということでしょうか?

677:デフォルトの名無しさん
07/10/22 00:32:50
>>674のプログラムって頂点バッファなんて使ってるか?
俺には頂点バッファのインターフェースが見えないんだけっちょ

678:デフォルトの名無しさん
07/10/22 00:50:26
マルチスレッドの排他制御以前に、ローカル変数ってどんなものかを知った方がいい

679:674
07/10/22 01:02:35
DrawPrimitiveUP()してしまえばそれに使った頂点情報はいらなくなると思うのですが・・・
EndScene()やPresent()まで保持しとかないとだめですか?

680:デフォルトの名無しさん
07/10/22 01:31:26
>>679
頂点バッファを作らないってことは
毎回グラボにデータを送信するってことじゃん

大量な頂点データが必要になるとこれが問題になるんかどうかは知らんけど
無駄なんでグラボにとっておきましょうってのが頂点バッファなんで
四角形描画するだけのお前には頂点バッファはいらないじゃん

って話

681:デフォルトの名無しさん
07/10/22 05:40:15
>>679
その必要はないが、普通Direct3Dで「頂点バッファ」と言ったら
VertexBufferのことを指す。

682:デフォルトの名無しさん
07/10/22 09:18:38
>>674は頂点を格納した配列のことを言ってたのか。
それは頂点バッファとは普通言わないぞ。

683:674
07/10/22 11:33:30
用語とか定石とか触ったとこ以外わかってません。
どうやら大丈夫そうですね^^;
ありがとうございました。

684:デフォルトの名無しさん
07/10/22 11:47:41
テクスチャはどうなんだろう。DrawPrimitiveで指定した後Presentの前に
Releaseしても良いのかな。

685:デフォルトの名無しさん
07/10/22 11:54:51
頂点バッファが大丈夫かどうか考えればおのずと答えが出るだろう。
ちなみに上のは頂点バッファの話じゃないからな。

686:デフォルトの名無しさん
07/10/22 21:52:12
そしてLostするバッファ達

687:デフォルトの名無しさん
07/10/22 22:28:53
FVFでTANGENTやBINORMALを扱うことはできないのでしょうか?
もし扱う場合はD3DDECLUSAGEを使わなければいけないのでしょうか?

688:デフォルトの名無しさん
07/10/23 04:05:30
そうした方が普通で簡潔で分かりやすくなると思うのだが。なにか問題でも?

689:デフォルトの名無しさん
07/10/23 18:24:01
シェーダーを使うときに出てくる
float4 uv0 : TEXCOORD0;
float4 uv1 : TEXCOORD1;

このTEXCOORDというものなんですが
テクスチャ座標を指す、というのはわかったのですが
テクスチャ0は何もしないで送ったテクスチャだとわかるのですが
テクスチャ1はナニを指すのかわかりません。

また
uniform sampler2D texture, //texture0のを送る
uniform sampler1D TransferFunction, //texture1のを送る

としたときに、はじめのuv0はtextureを指すのか、それとも別のものを指すのか
シェーダーの解説本を読んでゴチャゴチャになってしまいました。
すみません、わかりやすく教えていただけませんか

690:デフォルトの名無しさん
07/10/23 18:41:11
>>688
今までFVFでやってきたもので・・・
これを機会に移行します

691:デフォルトの名無しさん
07/10/24 21:17:52
メモリ上のWavファイルをDirectAudioで読み込もうとした場合不具合がでてしまい、解決策を模索しています。

・Wavをメモリー上にロード
・そのアドレスとサイズを指定して、DirectAudioでロード
・Wavをメモリー上からアンロード

・次のWavをメモリー上にロード
・そのアドレスと…

とやると、たまたま「Wavをロードしたアドレスが、以前とかぶった時」に、DirectAudioが
「以前のファイルと同じだなこれ」と勘違いするのか、以前の音をロードしてしまうのです。


ここの
URLリンク(toruweb.web.fc2.com)
DirectMusic / 読み込み
と同じにWavを読み込むようにしているのですが、特にこのサイトでは「同アドレス問題」については対策していないようです。
どのような対策をすればよいのでしょうか?

692:デフォルトの名無しさん
07/10/24 23:01:59
超うろ覚えだがDirectMusicローダのキャッシュをいちいち開放しないと
そんな感じになったような気がしないでもないような。

てか、メモリからWAVE再生すんならDirectSoundかOpenALでええやん。
圧縮WAVEをそのまま再生できるくらいでしょ、この場合のDirectMusicのメリットって。

693:デフォルトの名無しさん
07/10/25 00:29:28
ありがとうございます。
キャッシュをキーワードに探し回っていたら
URLリンク(www.sun-inet.or.jp)
こういう記事を発見しました。

DirectMusicのバグのようですね…。
ついでに「メモリーからのロードは、実行ファイル内のリソースを再生したい時以外は使わないように」という注意書きも発見しました。
うーん、単に暗号化してあるファイルを複合化して読ませたい(複合化したものをTempファイルとして吐き出したくない)だけなのに、厄介ですね

694:デフォルトの名無しさん
07/10/25 01:30:08
初心者ってやたら何でも隠蔽したがるよね
そこに時間かけるくらいなら
他にやることいくらでもあるだろうに

695:デフォルトの名無しさん
07/10/25 01:59:26
本来何も無い所に自ら巨大な壁を作り上げて
疲労していくのはよくあること

696:デフォルトの名無しさん
07/10/25 12:04:45
CYGWINのVISTAでのインストール&実装について質問です。

インストールは完了してデスクトップにも通常通りアイコンが作成されました。そこから起動させてみます。そうすると、

bash3.2/$

と表示され、pwdと打ち込むと

/usr/bin

と表示されます。

最終目標はxtermを起動させプログラミングをすることです。
XPでは緑色の文字がホームディレクトリと共に表示され、xstart と入力したら起動しました。
しかし、VISTAでこの状態で xstart と入力してもコマンドが認識されません。
なにより緑色の文字がホームディレクトリと共に表示されません。

何かのエラーではなく、まだ足りない設定等があるのでしょうか?
御教授お願いします。

環境は VISTA Ultimate 32ビット Core 2 です。
何か足らない情報があれば教えて下さい、補足させて頂きます。

697:デフォルトの名無しさん
07/10/25 12:17:06
足りないのは注意力だと思うよ

698:デフォルトの名無しさん
07/10/25 12:33:53
たしかに強烈に注意力が足りないな。

699:デフォルトの名無しさん
07/10/25 18:24:53
Xファイルの容量を軽くする方法、またはソフトなどありますか?

700:デフォルトの名無しさん
07/10/25 18:28:15
バイナリ、頂点減らし、無駄な項目を消す

701:デフォルトの名無しさん
07/10/25 22:55:03
>>699
圧縮かける

702:デフォルトの名無しさん
07/10/26 00:56:32
またそれかよ
買い物とか駐車場とかネギとかもうやめてくれよ

703:デフォルトの名無しさん
07/10/26 08:15:14
SDK付属のDirectXViewerで、DX10にしてXファイルを開いたら、むちゃくちゃ遅くなった。
DX9で60以上出てたのが、10以下になった感じ。
グラボはgeforce7xxxだし、DX10に対応してるはずなんだけど、なんで?

704:デフォルトの名無しさん
07/10/26 08:38:10
>>703
どーでもいいがGeForce7シリーズは普通、DX10対応とは言わない。
ShaderModelも3.0止まりだし。

お前さんの速度低下の原因が何なのかは別として。

705:デフォルトの名無しさん
07/10/26 08:41:22
いつGeForce7が10対応になったんだよ

706:デフォルトの名無しさん
07/10/26 13:01:34
なんかうっかりさんが多いな

707:703
07/10/26 17:34:23
すいません、てっきりフルサポートしてるもんだと思ってました。

708:デフォルトの名無しさん
07/10/26 20:01:17
DirectX10でポリゴンを画面の座標で表示する方法がわかりません。
チュートリアルのコードは、画面の中心が(0, 0)となっているのですが、単位や基準の位置を設定することはできるのでしょうか?
やりたいことは、自前でスプライトを実装することです。
教えてください。

709:デフォルトの名無しさん
07/10/26 20:29:24
頂点シェーダで座標変換?

710:デフォルトの名無しさん
07/10/27 19:52:43
>>708
君があまりに知識が無さ過ぎるので、どこからどこまで解説したものか途方に暮れ
誰も君の期待に答えることができない。
本屋行って何か本でも買って読んでみれば?

711:デフォルトの名無しさん
07/10/27 21:01:05
DX9までなら扱える。DX10構造がだいぶかわってわからないのさ。
DX9なら、初期化を完了した素の状態からVertexで直に画面の座標で指定できたよね。
それがDX10だと同じようにコーディングできないから、どうしたらいいかわからない。
あんまりDX10やってる人いない?

712:デフォルトの名無しさん
07/10/28 01:54:46
DX10とかどうこういう問題じゃなくてシェーダと座標系の問題なんじゃないの

713:デフォルトの名無しさん
07/10/28 02:05:18
DX9とDX10の問題じゃないだろ。

714:デフォルトの名無しさん
07/10/28 02:13:02
Vertex Bufferに(0,0,0) (0,100,0) (100,0,0) なかんじで設定して描画できる?
可能なら必要な処理を教えて。

715:デフォルトの名無しさん
07/10/28 02:13:38
↑のは座標は画面のピクセル単位ね。

716:デフォルトの名無しさん
07/10/28 10:13:55
CDXUTDialog::OnRender10でも見てくれ。
そこに答えがある。

717:デフォルトの名無しさん
07/10/28 17:39:18
見た。DX10は画面の座標でVertexを直接指定できないでおk?
わからないのですが、これはシェーダーの仕様制限なのかな?

718:デフォルトの名無しさん
07/10/28 19:02:14
>>717
元々頂点シェーダ使用時はそういうもんだった気がする。
頂点シェーダ強制になった副作用と思えばいいんじゃね?

719:デフォルトの名無しさん
07/10/28 21:58:58
ジオメトリシェーダ

720:デフォルトの名無しさん
07/10/29 06:19:37
>>711
おまえDX9扱えるなんて言ってんじゃねーよ

721:デフォルトの名無しさん
07/10/29 07:01:15
ごめん。もうDX10まで扱えるようになった。

722:デフォルトの名無しさん
07/10/29 08:09:17
扱えるってのはポリゴン一枚出すサンプルが作れれば言える


723:デフォルトの名無しさん
07/10/29 14:44:22
シェーダーのPOSITIONセマンテックが何をさしてるのかわかりません

vertex fragmentでのPOSITIONの意味教えください

724:デフォルトの名無しさん
07/10/29 15:34:48
正直セマンテック

725:デフォルトの名無しさん
07/10/29 15:53:42
意味だというのはわかるのですが
vertexが(0,0,0) (-10,0,0) (10,0,0)
とあったときにそれをvertexシェーダに送ると

pos : POSITION
としたときのposは具体的にどんな値が入っているのか。

そしてfragmentシェーダに
OUT.HPosition = mul( float4(IN.Pos.xyz , 1.0) , matWVP);
たとえばこうして送ったときには、fragmentシェーダで扱っているHPositionは
スクリーン上のどの値なのか

どうもイメージできてなくて

726:デフォルトの名無しさん
07/10/29 22:15:00
どうせ2Dシューティング作るんだろ
matWVPに単位行列入れればいいのに


727:デフォルトの名無しさん
07/10/29 23:00:40
2Dシューティングだったら、楽しんで作るんですが。

どなたか725の回答お願いします

728:デフォルトの名無しさん
07/10/29 23:20:22
うん、良かったね。

729:デフォルトの名無しさん
07/10/29 23:37:45
>>725
CPU→VertexShader→FragmentShaderという流れでは

・VertexShaderのPosition値は基本的にCPUで設定した頂点バッファの頂点そのままの値です
・VertexShaderからFragmentShaderに送るPosition値は射影空間の値を入れます。
 具体的には(-1,-1,0)-(1,1,1)です
・スクリーンへは射影空間(-1,-1)-(1,1)が引き伸ばされて
 (0,0)-(ViewportSize.X,ViewportSize.Y)に表示されると思ってください

以上を踏まえて

>pos : POSITION
>としたときのposは具体的にどんな値が入っているのか。
そのまま(0,0,0) (-10,0,0) (10,0,0)が入ってきます

>そしてfragmentシェーダに
>OUT.HPosition = mul( float4(IN.Pos.xyz , 1.0) , matWVP);
>たとえばこうして送ったときには、fragmentシェーダで扱っているHPositionは
>スクリーン上のどの値なのか
頂点がカメラのフラスタムの中に入っていれば、
射影空間(-1,-1,0)-(1,1,1)の中に頂点が変換されます
その先のスクリーン座標への変換はDirectXが勝手にやります

射影空間とはなんぞやって話なら
SDKの「射影変換とは」って項目でも読んでください

730:デフォルトの名無しさん
07/10/31 21:55:28
>>729
遅くなりましたがありがとうございます
ようやくイメージできました

731:デフォルトの名無しさん
07/11/01 06:12:57
HLSLでピクセルシェーダを書き始めたのですが、
BeginPass()~EndPass()の間でマテリアルごとにDrawSubsetを実行する流れになると思うんですけど、
特定のマテリアルではピクセルシェーダを変えたいというとき、

・特定マテリアルのときフラグ定数を転送してやってピクセルシェーダ内で分岐して処理を変える
・Pass0で特定マテリアル以外を描いて、Pass1で特定マテリアルだけを描く

どっちがベターでしょうか?
もしくは他に「こうやるもんだ」ってのがあれば教えていただきたいです。

732:デフォルトの名無しさん
07/11/01 08:40:16
厳密にはケースバイケースに計測しないと分からないので
一般には「楽なほう」が選ばれるんじゃね

733:デフォルトの名無しさん
07/11/01 14:41:49
発想を逆にして、マテリアルごとにBeginPass()~EndPass()というのも。

734:デフォルトの名無しさん
07/11/01 23:01:47
>>731
マテリアルとシェーダって一対一になると考えるのが普通じゃね?
つまりシェーダが違うんであれば、それはマテリアルが違う。
データの段階でどういうマテリアルにするかを指定しておくべきじゃないかね

735:デフォルトの名無しさん
07/11/01 23:53:10
technique T
{
pass P0{ ... }
pass P1{ ... }
pass P2{ ... }
}


ApplyEffect( func )
{
SetTechnique( "T" );
Begin()
BeginPass( func );
Draw();
EndPass();
End();
}

これはよくやる、っていうかこれしかやらない。
passをループでぐるぐる回すってのは、
むしろあんまり使いどころがない気がする。


736:731
07/11/02 02:56:59
>>732-735
レスサンクス!参考になりました。
とりあえず自分が組みやすい奴でやってみることにします。

737:デフォルトの名無しさん
07/11/02 18:51:21
DirectX10で、MultiSamplingのバックバッファから2Dテクスチャにコピーする方法がわかりません。
つまりバックバッファからイメージを取得したいのですが。
アドバイスをください。

738:デフォルトの名無しさん
07/11/02 21:37:09
>>737
レンダリングターゲットを変えろ。

739:デフォルトの名無しさん
07/11/03 02:40:06
条件を全否定するのではなく、目的の方法を求みます。

740:デフォルトの名無しさん
07/11/03 02:53:28
>求みます。

求みる?

741:デフォルトの名無しさん
07/11/03 03:04:51
揚げ足とるなカス

742:デフォルトの名無しさん
07/11/03 03:06:30
俺も知りたい

743:デフォルトの名無しさん
07/11/03 03:07:35
俺も俺も!

744:デフォルトの名無しさん
07/11/03 03:09:45
あちきも!

745:デフォルトの名無しさん
07/11/03 03:11:40
求みます、ってのは日本語を学ぶ中国人がよく犯す間違い

746:デフォルトの名無しさん
07/11/03 04:45:04
謝罪しる思い出した

747:デフォルトの名無しさん
07/11/03 17:21:38
事故レス
ID3D10Device::ResolveSubresource を使用することで目的が達成できました。

748:デフォルトの名無しさん
07/11/03 17:42:30
>>746
反省しるだろ

749:デフォルトの名無しさん
07/11/03 19:28:39
URLリンク(www.watch.impress.co.jp)

この問題がよくわかんないんですけど
間違ったサンプルコードをコピペしていたのが原因らしいけど、
その詳細が知りたいです


750:デフォルトの名無しさん
07/11/03 19:34:13
>>749
スライドに載ってるソース見てMSDNライブラリで調べればいいだろ。

751:デフォルトの名無しさん
07/11/03 19:35:54
詳細ってこれなんじゃないの?

URLリンク(www.watch.impress.co.jp)

752:デフォルトの名無しさん
07/11/03 19:37:50
>>749
お前なんも記事を読んでないな?
本文に書いてあるだろ、スライドのSS見ろ。

753:749
07/11/03 19:54:12
えーと、IMEの描画をさせないために
WM_IME_SETCONTEXTが来た時にlParamからISC_SHOWUIALLフラグを取り除くのが正解だけど、
サンプルは自動変数に0を入れてるから意味ナス

って理解でいいですかね

754:デフォルトの名無しさん
07/11/03 19:58:51
>>753
肝心なところが足りない。
lParamからISC_SHOWUIALLのビットを下げてDefWindowProcに渡す、で正解。

755:749
07/11/03 20:00:43
そういえば解決策をかいてなかった
>>754
了解です。理解しました

756:デフォルトの名無しさん
07/11/03 20:46:36
海外デベロッパはIMEの動作しない環境で作ってテストしない&修正しないもんだから、Vistaでもう致命的におかしくなった話。
Vistaなプログラミングしていれば周知の事実だぜ。

757:デフォルトの名無しさん
07/11/03 23:46:05
海外全部じゃなくて、欧米だな

758:デフォルトの名無しさん
07/11/05 13:34:46
欧米か・・・

759:デフォルトの名無しさん
07/11/05 21:15:11
米だけじゃね

760:デフォルトの名無しさん
07/11/05 22:07:11
漢字圏以外だと思うが

761:デフォルトの名無しさん
07/11/06 01:51:12
欧とか印のデベロッパの傾向とかはっきり言って知らない

762:デフォルトの名無しさん
07/11/06 07:55:30
インド製の有名なゲームの体験版とかあったら教えてくれ。それで判断する

763:デフォルトの名無しさん
07/11/06 08:10:28
英語のヘルプはほとんどインド製。
ゲームじゃないが。

764:デフォルトの名無しさん
07/11/06 16:08:50
インドの標準語は英語

765:デフォルトの名無しさん
07/11/06 16:56:17
違いますよ

766:デフォルトの名無しさん
07/11/06 21:43:13
インド人の微妙に高いカーストのイケメンのアニオタプログラマガ
半裸で作ったゲームないの


767:デフォルトの名無しさん
07/11/06 23:14:09
カーストなんて言葉聞いたの小学校の社会の時間以来だ。

768:デフォルトの名無しさん
07/11/07 12:41:13
DirectX10で書いた場合、vista専用になってしまいますか?

769:デフォルトの名無しさん
07/11/07 14:50:57
DirectX10専用

770:デフォルトの名無しさん
07/11/08 04:48:53
インドのゲームってやっぱり敵と踊ったりするの

771:デフォルトの名無しさん
07/11/08 10:49:42
DirectXを初めて学ぶのにお薦めの本を教えてください

772:デフォルトの名無しさん
07/11/08 11:58:38
猫でもわかるDirectX ~ 3Dグラフィックス基礎編(1)
URLリンク(www.amazon.co.jp)

773:デフォルトの名無しさん
07/11/08 13:12:06
本読んだことないけど、使えている俺が居る。

774:デフォルトの名無しさん
07/11/08 13:25:18
勘と試行錯誤って大事だよ

775:デフォルトの名無しさん
07/11/08 18:32:19
>>772
リンク先間違ってない?

776:デフォルトの名無しさん
07/11/09 06:35:15
ネタだろ

777:デフォルトの名無しさん
07/11/09 21:16:44
DirectX & C++ & Windowsでシェーダプログラムを組んでいます。
処理が複雑になりすぎて、レジスタ数が足りないというエラーを返される
ようになってしまいました。
この場合1パスで行っていた描画を2パスにすれば解決するのでしょうか?
また、その場合どのようにシェーダの記述を行えばよいのでしょうか?

778:777
07/11/09 22:06:21
やっぱり分からないので再度書き込みをさせて頂きます。
1パス目で行った描画ピクセルに2パス目で色相変換の処理を組み込みたいのです
しかしながら1パス目の描画結果を取得する方法が分かりません。

下のように2パス目のピクセルシェーダを記述しています。
PS_OUTPUT PS_HueShader( PS_OUTPUT In ){//TESTとして1パス目の記述結果をそのまま出力する
return In;
}

このように記述すれば引数Inには1パス目のピクセルシェーダ描画結果が入っていると
思ってたのですが実際には1パス目の頂点シェーダのDiffuseの値が入ってます。
どのようにしたら1パス目ピクセルシェーダ終了時のピクセルの値を操作できる
のでしょうか?

779:デフォルトの名無しさん
07/11/10 01:20:03
1パス目でレンダーターゲットにしたテクスチャに描画して
2パス目でそいつをピクセルシェーダの入力にする
ってのが基本

780:デフォルトの名無しさん
07/11/10 01:34:03
ていうかレジスタが足りないなんてエラー初めて聞いた。
プログラムコードがでかすぎるってのならともかく…

781:777
07/11/10 01:42:28
>779
分かりやすい解説ありがとうございます。
2パスだと描画用のテクスチャを別に用意する必要があるので、処理が重そうですね。
今回は色相変換を諦めようと思います。アドバイスありがとうございました。

>>780
色相彩度変換はレジスタ数を大量に必要とするのでシェーダのバージョンが
低いとすぐにレジスタが足りないというエラーが起きてしまいます…

782:デフォルトの名無しさん
07/11/10 01:43:46
色相彩度変換て具体的にどういうのか知らないんだけど、そんなに消費するのか。
セピア変換とかなら単に行列かけるだけだと思ってたけど
話にならないくらい複雑なことするのかな

783:デフォルトの名無しさん
07/11/10 02:18:16
RGB情報を一度HSV(色相・彩度・明度)の情報に変換して、各値を
操作してRGB値に戻す…というやり方でやってますんで、処理としては
結構複雑です・・・。検索するとシェーダサンプルが見つかると思います。

784:デフォルトの名無しさん
07/11/10 09:18:39
HSVとRGBの変換が大変そうだね…
てか、ソース見て俺も1回やったこと思い出した。CPUでだけど。

785:デフォルトの名無しさん
07/11/10 09:32:46
別にマルチパスレンダは重くないと思うぞ。
重くなる要素が見当たらないし。
VRAMがオーバーフローするなら別だが。


786:デフォルトの名無しさん
07/11/10 11:09:51
シェーダでHSV変換なんてただのエフェクトサンプル以外の使い道あるの?
実用しないなら遅くていいじゃん。

787:デフォルトの名無しさん
07/11/10 17:01:29
シェーダをある程度理解されている方に質問です。

頂点シェーダに1回に送られてくる頂点情報は、基本的に1つですよね。
私は頂点同士の計算がしたいのですが、その為には複数の頂点が必要になります。

(例)
vertex1 と vertex2 でなんらかの計算
vertex1 と vertex3 でなんらかの計算

というように、送られてきた頂点と、他の頂点を使って計算をしたいのです。

こういうことはシェーダでは可能なのでしょうか?
ちなみにHLSLを使っています。

どうぞ宜しくお願いします。

788:デフォルトの名無しさん
07/11/10 17:30:57
シェーダが走る前の特定の頂点情報が必要なら、レンダリング前に定数レジスタに
値を入れてからシェーダを走らせる。

あとは、頂点フォーマットを拡張して、レンダリングを開始する前に、
必要な他の頂点の情報を自分の頂点情報に入れておけば、シェーダで利用できる。

DirectX9までは、基本的にシェーダが走ってる最中の別の頂点の情報が必要な場合、
取得は不可能なはず。(上のような、小細工が必要)

DirectX10のシェーダは、その辺が可能って聞いてるけど、詳しい人ヨロシク。

789:デフォルトの名無しさん
07/11/10 17:49:52
>>788
ご回答していただきありがとうございます。

もう少し具体的に教えてもらいたいのですが、

・レンダリング前に定数レジスタに値をいれる
・必要な他の頂点の情報を自分の頂点情報に入れておく

とは具体的にどうすれば良いでしょうか。

いろいろ本やサイトで調べたのですが、
これに関して掲載されていなかったので投稿させていただきました。
初心者で申し訳ありません。

790:デフォルトの名無しさん
07/11/10 17:53:02
>>787
DirectX10のジオメトリシェーダなら
入ってきた三角形に対して新しい頂点を生成したりすることができるよ

でも、やる内容によるんじゃないかなぁ
DirectX9世代ではピクセルシェーダで頑張ってやってた処理が多い

791:デフォルトの名無しさん
07/11/10 17:54:41
>>789
>・レンダリング前に定数レジスタに値をいれる
こっちは多分、君の言う目的を達成できない方法だよ
プリミティブを描画している間、どの頂点にも同じ情報を送ることができる
まぁ、普通のレジスタの使い方

>・必要な他の頂点の情報を自分の頂点情報に入れておく
これは頂点に他の頂点のコピーを複製していれておく方法。
例えば
struct VERTEX
{

792:デフォルトの名無しさん
07/11/10 17:57:05
SHIFT+Enterで書き込んでしまった
struct VERTEX
{
float4 Position : POSITION;
float4 Texcoord : TEXCOORD;
};
って頂点だったら
struct VERTEX
{
float4 Position0 : POSITION0;
float4 Texcoord0 : TEXCOORD0;
float4 Position1 : POSITION1;
float4 Texcoord1 : TEXCOORD1;
float4 Position2 : POSITION2;
float4 Texcoord2 : TEXCOORD2;
};
みたいにしておいて、他の頂点に触れるようにしておく。
かなり強引な方法(単純に考えてデータ量3倍)

793:787
07/11/10 18:01:40
皆様、早速のご回答ありがとうございます。

ある本を読んでみると、頂点情報をテクスチャに保存して
それをピクセルシェーダで使用すると書いてあるのですが、
具体的にどうすればいいのか分かりません。

複数の頂点情報をテクスチャに保存することってできるのでしょうか?

794:デフォルトの名無しさん
07/11/10 18:08:06
>>793
そりゃ例えばARGB32Fのフォーマットなら、
1ピクセルにfloat4の情報を書き込めるってだけだよ

そもそも具体的に何をしたいのかが分からないから何とも言えない…

795:787
07/11/10 18:18:37
私が具体的に行いことを述べます。

例えば、頂点数が「5」のオブジェクトがあります。
1つの頂点に対して、他の全ての頂点と計算がしたいので

v1-v2 v1-v3 v1-v4 v1-v5
v2-----------同じ------------
v3-----------同じ------------
v4-----------同じ------------ 
v5-----------同じ------------

※ -← は計算するということ

と計算がしたいので、4×5 = 20回分計算が必要になるわけです。
こういう処理をGPU上で計算したいと思っています。
何か良い方法がありますでしょうか。

796:デフォルトの名無しさん
07/11/10 18:20:26
シェーダーで計算したいってことなのかな・・・

797:デフォルトの名無しさん
07/11/10 18:27:57
>>795
いや、それって方法論でしょ?
何を表現したいかってことだよ
それによってはそもそもその手法が正しいのか、って話になるから

まあ、よほど重い処理でない限り、頂点シェーダで強引に計算してしまえばいい
大抵はピクセル処理でボトルネックになってしまうので、どうでもいいんで

798:デフォルトの名無しさん
07/11/10 20:08:54
>>795
だから、>>788で書いたとおり、DirectX9では無理。DirectX10のジオメトリシェーダでは可能。

無理だから、事前に「自分で」必要な頂点の情報を、対応する頂点に「仕込む」等の処理が必要になる。
ある頂点で参照可能な別頂点の数は、入力となるvレジスタの数で決まるから、「あるプリミティブ全体を
対象とする任意の頂点を相互参照」するなんてDirectXでは完全に無理。

このヒントを聞いて、「頂点に他の頂点を仕込む方法が具体的にわからない」なら、
シェーダの理解が足りて無いってことだから、

URLリンク(marupeke296.com)

この辺の一番上の図を見て、頂点シェーダの演算部が参照可能なデータについて、もう一度整理する事を
お勧めする。

>>797もいってる通り、実現方法を変更する方が現実的なんじゃないかな?

799:デフォルトの名無しさん
07/11/10 21:17:22
便乗して質問
>>792のようにPosition0~2まで3つ設定すると
そこに何入ってるの?


たとえば {1 1 0} {0 0 0} {-1 1 0} の三角形があったらどうなるの?

800:デフォルトの名無しさん
07/11/10 21:28:57
何が入ってるかじゃなくて
何を入れるかを自分で決めるんだ

801:デフォルトの名無しさん
07/11/10 21:33:10
ごめん、Cgだから
何を入れるというと uniform型を宣言すると思ってしまって。

Cgでも未だに
struct IN{
float4 position1 : POSITION
float4 color : COLOR
}
に何が入ってるのかわかってなくて。
uniform型なら、明示的にブチ込んでるからわかるんだけども

802:デフォルトの名無しさん
07/11/10 21:48:57
実際のところ、頂点シェーダの
入力パラメータが何であるかなんで
どうでもいいことだし、何を渡してもかまわない。
ただ最低限、同次頂点座標を1つ出力しなければならないってだけだ。


803:デフォルトの名無しさん
07/11/10 21:49:30
>何が入ってるのかわかってなくて
工工工工工工エエエエエエ(´д`)エエエエエエ工工工工工工

804:デフォルトの名無しさん
07/11/10 21:53:48
>>802
何が入ってるのかわからないままだと、結局何もわかってないままで
>>803みたいなこと言われるので・・・

805:デフォルトの名無しさん
07/11/11 15:53:09
質問です。

DirectX SDKのサンプルって、みんな「コード生成」->「ランタイムライブラリ」の設定が「マルチスレッド デバッグ」になってるじゃないですか。
これを、「マルチスレッド デバッグ DLL」にしてビルド通して実行しようとすると「MSVCR80.dllが見つかりませんでした」とか「MSVCR80D.dllが見つかりませんでした」
と言われて実行に失敗してしまいます。
これ、対処法ってないんでしょうか。

というのも、自前で作ったライブラリとSDKサンプルを組み合わせて使いたいんですが、ライブラリが「マルチスレッド (デバッグ) DLL」の設定でビルドしてあるものだから、
合わせたいんです。

806:デフォルトの名無しさん
07/11/11 16:26:41
見つかる場所 (PATHの通ってる場所とか) にDLLを置いとけばいいんじゃないの

807:デフォルトの名無しさん
07/11/11 17:35:07
最近ワイドモニターのノートPCを使い始めたのですが、
フルスクリーンのゲームなどをするときに横に伸びてしまいます。
そこで、特定のサイズでフルスクリーンにするとき、自動的に左右をパディングして真ん中だけを使って写すようにしたいのですが、
そのようなソフトウェアを作ることは可能でしょうか?

808:デフォルトの名無しさん
07/11/11 17:40:26
はい。

809:デフォルトの名無しさん
07/11/11 17:45:25
ちなみに、そのようなハードウェアを作ることも可能ですよ。

810:デフォルトの名無しさん
07/11/11 18:12:02
でもそこらの同人ゲームはフルスクリーンで特に何もやってないのがほとんどじゃん。


811:デフォルトの名無しさん
07/11/11 18:36:58
>>810
TL頂点使ってると比率が変わるだけで表示しているものの位置が変わるからね。

812:デフォルトの名無しさん
07/11/11 22:07:15
ドラクエ7の戦闘開始時に画面がばらばらに落ちる処理
をdirectxでやるのに参考になるサイトがあれば
教えてください。

813:デフォルトの名無しさん
07/11/11 22:33:27
URLリンク(www.nicovideo.jp)
ニコニコだけど、これ自作描画エンジンらしい。

エンジンどーこーわからんが、すげぇや

814:デフォルトの名無しさん
07/11/11 22:38:25
DirectXなの?

815:デフォルトの名無しさん
07/11/11 22:39:27
>>813
どーゆーレベルのエンジンかわからんが

それでもスゴイ!と言わざるを得ないw


俺なんて、DirectXのサンプルブラウザーのチュートリアル4を
ウンコをつんつんするような感じで弄ってるところだぞ

816:デフォルトの名無しさん
07/11/11 22:46:48
>>813
開発者のHP見てきた

3Dアクションゲーム作っちゃうレベルの人なので、
素人から見るとすごいが、この人のレベル的にはそんなに凄くないw

817:デフォルトの名無しさん
07/11/11 22:53:59
確かにすごい

トゥーンレンダリングエンジンの開発
キャラのモデリング作成
キャラのテクスチャ作成
モーション付け
アニメーション付け

考えただけで気が遠くなる

818:デフォルトの名無しさん
07/11/11 22:59:16
しかし、SIが正規版なのが気になってしまうw

819:デフォルトの名無しさん
07/11/11 23:03:30
元プログラマー、現在NEET、てw
にしてはいいソフト揃えてんなあ

モデルはちょっとクセがあるけど丁寧だし動きもなかなか自然だねえ

820:デフォルトの名無しさん
07/11/11 23:09:51
URLリンク(www.amazon.co.jp)

この人が見てるらしいこの本、ちょっと欲しいな!

821:デフォルトの名無しさん
07/11/11 23:18:55
XSI

100万とかテラスゴス!
と思ったら、XSI 6 Foundation だと七万八千円なのね

822:デフォルトの名無しさん
07/11/11 23:32:49
一番面倒なのは、モーションを入れる作業だね。
地道に振り付けと、表情のUV切り替え。

データさえ作ってしまえばエンジンの仕事なんてたかが知れている。

823:デフォルトの名無しさん
07/11/11 23:50:43
>データさえ作ってしまえばエンジンの仕事なんてたかが知れている。
どういうこっちゃ?

つーか、プログラマにモデリングが不慣れだというのに
ニコニコではモデリングばっか言われてるのな。

エンジンなんて作れねぇ。つーか無理


824:デフォルトの名無しさん
07/11/12 00:01:35
>>823
プログラマが個人でやる場合だと、データ作る方が大変な気がするw

両方やってるのがすごいなぁと思うよ

825:デフォルトの名無しさん
07/11/12 00:02:54
モデルデータを読み込んで再生するだけなら、普通のプログラマなら全然難しくないんだよ。
モーションデータの生成部分までエンジン側でやっているなら凄いプログラムだが、それはまずあり得ない。

826:デフォルトの名無しさん
07/11/12 00:17:03
そりゃ、モデルデータ読み込んで、toonシェーダかけて再生ってそりゃやるけど。
エンジンってそういうことなん?
あと、全然難しくない、とか言うのやめたほうがいいよ。

つーかライティングやらシェーディング、加えてそれがリアルタイムってあたりで
組むのうんざりだ。


827:デフォルトの名無しさん
07/11/12 00:25:20
データ作るほうがコーディングより作業が大変だろ

828:デフォルトの名無しさん
07/11/12 00:28:54
ビューアは作ったからモデルデータとモーションを作れと言われるのと、
モデルデータは作ったからビューアを作れと言われるとがどちらが良いかと言われたら、
迷わず後者を選ぶ。
労力が全然違う。

829:デフォルトの名無しさん
07/11/12 00:33:44
いつのまに
プログラマーとモデラー・アニメーターの比較になってるんだ?

プログラムの話をしようぜ。
リアルタイムラジオシティtoonレンダでも組んでくれ。

830:デフォルトの名無しさん
07/11/12 00:44:50
光源が固定のラジオシティをリアルタイムといってしまっていいものかどうか。

831:デフォルトの名無しさん
07/11/12 00:52:55
????
なんでラジオシティに光源の位置が、固定か可変か関係あるの?


832:デフォルトの名無しさん
07/11/12 01:08:03
は?全ては光源に依存してるんだから、光源が固定か可変かは大問題だろう。

CG屋さんか?

833:デフォルトの名無しさん
07/11/12 01:13:33
リアルタイムに光源を変化させるのってそんなに難しいの?

まだ、チュートリアル弄ってる段階なんでさっぱりさ!

834:デフォルトの名無しさん
07/11/12 01:17:05
????
そりゃ光源に依存してるけど、普通はレンダリング時に光源の位置を決めて
そこからラジオシティ入るだろ?

つまりはアレか?人がグリグリ動いてる中で、光源(例えば太陽+複数のスポットライト)も
グリグリ動いて、間接光だのをリアルタイムで時間積分して解いてるのか?

つーか、リアルタイムの光源固定ラジオシティでさえまともに実装されてないのに。
光源がグリグリ動くラジオシティがあるっていうのか。ぜひ教えて欲しいわ。


835:デフォルトの名無しさん
07/11/12 01:20:12
>>833
リアルタイムで光源が動いて
シェーディングをかけるのは難しくはない。nvidiaとかのサンプルでもある。

言ってるのは、ラジオシティ。

836:デフォルトの名無しさん
07/11/12 01:24:29
>>834
>>831によると、固定も可変も関係ないらしいから、光源固定のラジオシティも
光源がぐりぐり動くラジオシティもあるってことになるよね。

837:デフォルトの名無しさん
07/11/12 01:28:35
3Dの勉強始めようかな…
なぜかゲームプログラマーになってしまったしな…

838:デフォルトの名無しさん
07/11/12 01:29:35
ここはあなたのブログではありません。

839:デフォルトの名無しさん
07/11/12 01:30:56
>>836
んー
俺の認識だと、ラジオシティでは1枚の光源は
固定したものとしてレンダリングするもんだと理解してるから

可変ってのは無いもんだと思って831を書いたんだけども。
ぃゃ、正直光源がグリグリ動くラジオシティがあるなら、参考にしたいから知りたいというのがある。


確かに1枚=1フレームとして、リアルタイムのラジオシティが出来るのであれば
それは光源が可変なのだと思うけど。
SIGGRAPHでさえ、リアルタイムラジオシティは出てない、はず。

PS3を3台だかつかって、リアルタイムレイトレしてる変な人たちはいたけど

840:デフォルトの名無しさん
07/11/12 05:58:03
変って言うなw

841:デフォルトの名無しさん
07/11/12 17:08:46
ピクセルシェーダで画面の輝度の高い部分にグレア処理をかけたいと思ってます。

画面と同じ大きさで作成したテクスチャにオブジェクトを描画して、
最後にそのテクスチャにグレア処理をかけて画面いっぱいに映し出された
ポリゴンに描画するというやり方でやってます。

しかし、やり方が悪いのかぼやけます。根本から間違ってるのでしょうか?
画面いっぱいに映し出されたポリゴンは出力を見ながら手作業で大きさを
調整しているので、サイズが画面と完全に一致してないのが原因なのか…。

842:デフォルトの名無しさん
07/11/12 17:38:04
テクスチャ自体の解像度が低いとかじゃないの?


843:デフォルトの名無しさん
07/11/12 17:52:51
テクスチャのサイズですが、生成時に画面と同じ640*480を指定しています。
1024*1024等の2のべき乗で無いからぼやけるのでしょうか?

試しに1.5倍の960*720のテクスチャにモデルを描画した後640*480の画面に
ピクセルシェーダで描画したらぼやけは無くなりました。
でもこれは高解像度から低解像度への変換なので当たり前というか…。

844:デフォルトの名無しさん
07/11/12 17:59:54
使ってるビデオカードは2の乗数でないテクスチャに対応しているものか?
そうでないなら640*480なんていう半端なサイズのテクスチャは作れないが

845:デフォルトの名無しさん
07/11/12 18:07:26
ためしに2^nにしてみて検証


846:デフォルトの名無しさん
07/11/12 18:50:05
どうせヘルプをまともに読まずD3DXでテクスチャを作って、勝手に自爆しているだけだろ。

847:デフォルトの名無しさん
07/11/12 19:27:26
シェーダが使えるのにテクスチャが2^nでしか作れないなんて、
VP870(PS1.2)とかXabre(PS1.3)くらいで、シェーダモデル2.0以降なら
1つも無いと思うが。

俺はどうせ座標が0.5ずれてるFAQネタだと思うが。

848:デフォルトの名無しさん
07/11/12 19:33:05
ウィンドウサイズは640x480だけど
クライアント領域が640x480じゃないってオチは?

849:デフォルトの名無しさん
07/11/12 21:17:33
サンプルブラウザのチュートリアル6メッシュっちゅうのを動かしてみたんだが、
メッシュの回転や平行移動ってどうやればええのん?

850:デフォルトの名無しさん
07/11/12 21:33:42
>>849
ワールドマトリックスに好きな行列をセットしろ。

851:デフォルトの名無しさん
07/11/12 21:42:07
>>850
サンキュー!

852:デフォルトの名無しさん
07/11/12 21:56:16
誰か>>801に答えてくれたりしない?

未だにだめっぽなのよ

853:デフォルトの名無しさん
07/11/12 22:03:58
>>850
行列のセットがよくわからなかったので、アフィン変換ちゅうのを使おうとしたんだけど、
こんなエラーが「error C2065: 'null' : 定義されていない識別子です。」

// Set up world matrix
D3DXMATRIXA16 matWorld;
D3DXMatrixRotationY( &matWorld, timeGetTime()/1000.0f );

D3DXVECTOR3 t(1.0f, 0.0f, 0.0f);
D3DXMatrixAffineTransformation( &matWorld, 1.0f, null, null, &t); // ここでビルドエラー
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );


なんで、D3DXMatrixRotationY、D3DXMatrixLookAtLHは使えるのに、
お友達っぽいD3DXMatrixAffineTransformationが使えないのかわかる?

854:デフォルトの名無しさん
07/11/12 22:04:40
null→NULL

855:デフォルトの名無しさん
07/11/12 22:06:24
>>854
ひゃっほう(’’*

856:デフォルトの名無しさん
07/11/12 22:26:17
質問です。

3Dゲームでパラメータ等を2Dで表示する機能を実装したんですが、すごく重くなってしまいました。
本で調べてみたのですがClearでZバッファを一度消しているのが原因らしいです。
とりあえず原因はわかったのですがどういう解決策をとればいいのかわかりません。

いい解決策とかパラメータ表示の代替案とかご存知なら教えていただきたいです。

857:デフォルトの名無しさん
07/11/12 22:35:57
どの本の何という記述からそう思ったのか答えよ。

858:デフォルトの名無しさん
07/11/12 22:42:58
軽くエスパーすると
フォント描画が重いんだと思うけど・・・

859:デフォルトの名無しさん
07/11/12 22:49:29
>>852
頂点の配列は自分で作ってるんだろ?
んで、それをGLの関数にセットして描画してるんだろ?
それだよ。

>>856
Zバッファをクリアせずに
文字を書くときだけZテストをOFFにすれば?

860:デフォルトの名無しさん
07/11/12 22:51:05
>>857.858
すみません直りました。

コードに手は加えていないのに突然直ったので
たぶん別の事が原因だったと思います。それが何かはわかりませんが…。
お手を煩わせて本当に申し訳ない。

861:860
07/11/12 22:53:14
>>859さんも解答してくれてありがとうございます。
>>860の通り解決しました。重ね重ね申し訳ない。

862:デフォルトの名無しさん
07/11/12 23:10:35
それよりもZバッファをクリアすると遅くなる情報の元になった書籍名を答えろ。

863:デフォルトの名無しさん
07/11/12 23:22:40
>>862
マスタリングDirectXプログラミングという本です

864:デフォルトの名無しさん
07/11/12 23:49:30
初心者が買ってはいけない本に認定

865:デフォルトの名無しさん
07/11/12 23:54:54
こんな本でてたのか
日本語でDirectX関連の本は久しぶりだな

866:デフォルトの名無しさん
07/11/13 00:57:58
今、DirectX9SDKで2Dのシューティングゲームを作っています。
ゲームのプログラムは「シューティングゲームプログラミング」の本を参考にして作っているのですが、この本のサンプルでは弾やキャラクタが全て3Dメッシュで作られています。
作りたいのは2Dのゲームなので、DirectX8の2Dゲーム作成のページを参考にしてDX9の仕様に変えながら、後でゲームに組み込むことを目的にして2D描画周りの勉強をしています。
本のサンプルにもテクスチャを描画する関数はついていたのですが、頂点位置を指定しての変形描画や行列を用いた回転を使いたかったので、自分で関数を作ってみようと思いました。

今触っているプログラムの簡単な描画の流れは、
①D3DXCreateTextureFromFile を使ってpngファイルからテクスチャを作成
②SetTexture でテクスチャをデバイスにセット
③DrawPrimitiveUP でバックバッファに転送
④EndScene を待って Present でフリップ (方式はD3DSWAPEFFECT_DISCARD)
というものです。

そこで質問なのですが、テクスチャを描画した際に像がぼやけたようになってしまうのはどうすれば直せるのでしょうか。
現在はステージ画面のフレーム(透過部分を四角く抜いたワク)を描画する段階で、テクスチャの大きさは640x480です。
ファイル形式はpng、bmp、tgaを試してみましたがどれもぼやけてしまいます。

URLリンク(www.uploda.org)
具体的には、画像の左側の絵を描画すると右のようになってしまいます。
解決策を教えて下さいませんでしょうか。

867:デフォルトの名無しさん
07/11/13 02:42:36
ちょっとだけ上を見るとか頭に無いのかな

868:デフォルトの名無しさん
07/11/13 05:05:12
倍の解像度のテクスチャを用意して、0.5ずつ座標をずらしたら綺麗に表示されました。
上を見れなくて申し訳ありませんでした。

869:デフォルトの名無しさん
07/11/13 13:30:43
>頂点の配列は自分で作ってるんだろ?
>んで、それをGLの関数にセットして描画してるんだろ?

だから、頂点が3つあったときに(0 0 0) (1 1 0) (-1 1 0)
struct IN{
float4 position1 : POSITION
float4 color : COLOR
}
だと、POSITIONが1個しか無いじゃん
1個しかないのに、3つの頂点入るの?

3つのうちのどれかが入るんでしょ?それuniformじゃないと指定できないじゃん
勝手にCgの方でやられたってこっちが困るんだよ
3つのうちどれが入るか言ってよ!ヴァカ!

870:デフォルトの名無しさん
07/11/13 13:50:10
自分の不勉強を棚に上げて逆ギレとは…。
てか、>>800で終了だろ。

871:デフォルトの名無しさん
07/11/13 16:52:26
>>868
なんで倍の解像度にする必要があるの?

872:デフォルトの名無しさん
07/11/13 19:12:14
ピクセルシェーダ2.0を使う場合って、そのPCが1・1までしか対応
していない場合どうなるのでしょうか?
エフェクトファイル読み込んだ時点でエラー発生でしょうか?
手元にあるのマシンが全部2.0対応なので、誰か分かる人ご教授お願いします!

873:デフォルトの名無しさん
07/11/13 19:15:26
>>870
だから、何を入れるのか決めるのってCgだとuniform使うんだってば
何回も同じこと言わせないでください><
uniformがついてないからわからないんですぅ!


と、厨臭いこと言い方ですいませんでした。自分の勉強不足です
ただ一人じゃわからなくて。アドバイス頂けたらと思って伺いました。
ほんとすいません。教えてください

874:デフォルトの名無しさん
07/11/13 19:41:34
            /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i、
               i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|i
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i゙i
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/|;;ト;ト;;;;;;;;;;;;;;;;;;;;;;;;ヽ、
            /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ノ;;ノシ/ノ |゙!iヽヾ;;;;;;;;;;;;;;;;;;;;;;ヽ、
         /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ンツン    ! ヽ、 ヾ;;;;;;;;;;;;;;;;;;;;;;;ヾ
           /;;;;;;;;;;;;;;;;;;;;;;;/シンて__;;;、   ,;;;.ソ ~゙ヽ;;;;;;;;;;;;;;;;;ヽ
        /;;;;;;;;;;;;;;;;;;;;;/ゾ      ゙!  /     ノミ;;;;;;;;;;;;;;;;ヽ、
      /;;;;;;;;;;;;;;;;;;;;入  ーt┬‐ュ ヽ ( <エコブ ┃ノ;;;;;;;;;;;;;;;;;ヾ
      /;;;;;;;;;;;;;;;;;;;;;;;;ヽ┤     ̄_ノ  ゙i i ‐-、   |;;;;;;;;;;;;;;;;;;;;;;;;゙i  必要な分は見せたということだ
.      /;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::l、        : : ゙    ノ;;;;;;;;;;;;;;;;;;;;;;;;;;l
    /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::T:、_     r‐ i i┐  イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l   これ以上は見せぬ
.    l;;;;;;;;;;;;;;;;;;;;;;;;;/;|   k┴ヽ、  /‐、l´゙)~ヽ ( |イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;l
    l;;;;;;;;;;;;;;;;;;;;;;イ;;;|  |   / /  _゙'_'゙  ゙i )| |;;;;;;;;;;;;;;;;;;;;;;;;;;;l
     l;;;;;;;r‐''゙;;;;:;;:;;;;l  ヽ、 ,|. (   f‐ニ‐ヽ /./ /ヾヾ;;;;;;;;;;;;;;;;;;;l
     ヾ/;;;;;;;;;:;;;;:;;;;;ヽ   ゙ヽ\ヽ―'゙―゙'‐// / /;;;:::....゙''‐、;;;;/
  _,.,.r/ ,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ   ゙i ゙i、゙'v    v' i / ノ;;;;::::;;;;;;;;;;;;;;;:.ヽ、
 /::/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ、  ゙r_ヽ! 、,.  ! |  ,/;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;ヽ、

875:デフォルトの名無しさん
07/11/13 20:00:53
>>873
てゆーかホントにお前が何がやりたいんだよ
>>795がやりたいとして
ホントに頂点数は5なのか?
それくらいならできなくもないけど頂点数が数十個のオブジェクトを
この方法で処理するのは土台無理な話だし
ホントにそんな処理が必要なのかも疑わしい

いま自分が目指してる最終地点と
それに対してどういうアプローチをしてるのかぐらい書いてもらわんと
説明する気も起きない

876:デフォルトの名無しさん
07/11/13 20:31:58
>>795さんではありません><

単純に>>869の状況のときに
float4 position1にはどんな座標が入ってるか知りたいだけです!

ポリゴンは(0 0 0) (1 1 0) (-1 1 0)で三角形指定して、頂点が3つあるのに
シェーダーで受け取るPOSITIONセマンテックは1つだけっていうのがわからないのです

Output {
float4 position : POSITION;
float4 color : COLOR;
};
main (float3 position : POSITION)
{
Output OUT;

OUT.position = float4(position, 1);
OUT.color = float4(0, 1, 0, 1); // RGBA green

return OUT;
}

なんでfloat3 positionが1個だけなの?
じゃあ、これに float3 position2 : POSITION1とかしたら、何が入るの?
(0 0 0 ) (1 1 0)? それとも(-1 1 0)?
そこら辺の説明が本でも何でも載ってないのでわかんないんです

877:デフォルトの名無しさん
07/11/13 20:39:44
>>876が何を言いたいのか良くわからんが
頂点数が3個なら
mainは頂点数と同じ数だけ
つまり3回呼ばれてる
1回目のmainのpositionには(0,0,0)がはいっていて
2回目のmainのpositionには(1,1,0)が以下略
ここまではOK?

878:デフォルトの名無しさん
07/11/13 20:55:26
そして
float3 position2 : POSITION1だが
Cgがどんなものなのか知らんので
POSITION1なんてセマンティックがあるのかは知らんが
あると仮定するとposition2には何も入ってきていない
position2になにを入れるかは
頂点情報を設定するときに自分で何をいれるのか決める部分なので
何も指定してないのなら何も入らない

879:デフォルトの名無しさん
07/11/13 21:05:01
>>877-878
ありがとうございます><

間違ってたところがありました。POSITIONはセマンティックが1つだけで
COLOR1とCOLOR0、 TEXCOORD0~7でした!

でもPOSITIONのところはわかりました!ありがとうございます!その頂点分呼び出されて
そのときはPOSITIONに、その値が入るんですね!


でもCOLOR0~1とTEXCOORD0~7がわからなくなってしまいました。
これも外部から指定するのでしょうか。uniformじゃ無いのに。

880:デフォルトの名無しさん
07/11/13 21:07:30
なんという理解力の無さだ・・・

881:デフォルトの名無しさん
07/11/13 21:07:31


struct Vertex{
D3DXVECTOR3 position ;// 頂点の座標(必須)
D3DXVECTOR4 color ;
D3DXVECTOR3 position1 ;// 拡張した頂点情報
D3DXVECTOR3 position2 ;// 拡張した頂点情報
} ;

#define MY_V (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX2|D3DFVF_TEXCORDSIZE3(0)|D3DFVF_TEXCORDSIZE3(1))

main (
float3 position : POSITION
float3 color : COLOR,
float3 posion1 : TEXCOORD0,
float3 posion2 : TEXCOORD1
)
{ ・・・

TEXCOORDはテクスチャ座標を入れるために用意されてはいるが
別にテクスチャ座標を入れないといけない決まりはない
たとえば複数光源の計算をしたいときにそれぞれの光源ベクトルをいれたりとか
ここはプログラマが必要に応じて拡張すべきところでみんなはこれのことを言っている
一つ一つの頂点に複数の情報を持たせられるよってだけで
複数の頂点の情報がはいってくるわけではない

882:デフォルトの名無しさん
07/11/13 21:14:53
つまりTEXCOORDは何入れてもいいということですか。

twoTextures(float2 position : POSITION,
float2 texCoord : TEXCOORD0,

uniform float2 leftSeparation,
uniform float2 rightSeparation,

out float4 oPosition : POSITION,
out float2 leftTexCoord : TEXCOORD0,
out float2 rightTexCoord : TEXCOORD1
)
{
oPosition = float4(position, 0, 1);
leftTexCoord = texCoord + leftSeparation;
rightTexCoord = texCoord + rightSeparation;
}

でもこういう風に、「入ってくる側のfloat2 texCoord : TEXCOORD0,」の場合はプログラム側で
指定しないとダメなんですよね。

outのところは、自分の都合にあわせて設定してるっていうのはわかるんですが。


883:デフォルトの名無しさん
07/11/13 21:30:31
やべえ、頭痛くなってきた
誰か、バトンパス

884:デフォルトの名無しさん
07/11/13 21:53:21
   ↓
   ↓
   ↓

885:デフォルトの名無しさん
07/11/13 22:28:46
教えて君・粘着君に付き合うのが嫌なら無視するのが常識。


886:デフォルトの名無しさん
07/11/13 22:33:51
お前頭いいな。

887:デフォルトの名無しさん
07/11/15 05:26:10
高さマップの画像からデコボコな地形を生成したいんですが、
全くやり方が分かりません。ヒント頂けないでしょうか?

888:デフォルトの名無しさん
07/11/15 07:08:10
画像の1ドット毎を高さに変えるだけ。
RGB、つまり256色x3色=768段階の高さが取得できる(アルファも取りたけば自由に)。
黒なら高さ0、白なら768xαという高さに決めればあとは自分でその高さに点を配置して面を作っていく。

889:デフォルトの名無しさん
07/11/15 07:31:08
24bitもってて768段階? なんでbitでやらんの
あと移動可などのフラグとか含めたりする。



890:デフォルトの名無しさん
07/11/15 07:58:39
俺は、>>887の質問の内容が分からん。
エスパーの例題かと思った。
元データはバンプマッピング用のテクスチャの事?
デコボコな地形って何?ポリゴングリッドの事?
それは、DirectXの質問なの?

891:887
07/11/15 12:27:14
言葉足らずで申し訳ないです。
高さマップの画像を元に、メッシュを作成する方法です。
>>888
画像のデータを1ピクセルごと取得していって、自分で頂点を打っていく
ということでしょうか?

892:デフォルトの名無しさん
07/11/15 13:01:48
それ以外にどうしろと?

893:デフォルトの名無しさん
07/11/15 14:49:52
>>891
hight-fieldのことでしょ?

濃淡グレーマップが高さを示しているっていうの。
単純に0-255でRGB値を読み込んで、それをポリゴンの1頂点として
メッシュを刻んでいけばいいんでないの?

RGB値が読めないとかいうなら
PPM、PGMのASCIIモードで保存でもして読み込めばいい。
当然、ピクセル分の頂点が出来てしまうからデータは重い(255×255pixelなら、255×255頂点)
あと頂点間のつながりもプログラムで指定する。

ということなのでは?

894:デフォルトの名無しさん
07/11/15 15:11:38
たぶん、
そういう超便利関数はないの?
って聞いてるんじゃね?

895:デフォルトの名無しさん
07/11/15 15:26:53
pov-rayとかならあったかな。超便利関数
ポリゴン生成してくれるまでは知らんけど。


896:デフォルトの名無しさん
07/11/15 17:00:44
っていうか、普通のバンプマッピングを使ってレンダリングしたら駄目なの?
地形とか作りたいなら、元データに高さマップ使う意味がわかんないし。

897:デフォルトの名無しさん
07/11/15 17:27:01
ビットマップなんてヘッダ以外はただの2次元配列じゃないか

898:デフォルトの名無しさん
07/11/15 18:48:33
URLリンク(www.microsoft.com)
こんなの?
MDXだが。

899:887
07/11/15 19:15:13
>>892
なかなか初心者には分からないものです。

>>893
なるほど、非常に参考になります。

>>894-895
そういうことになりますかね。xファイルをロードする関数があるので、
高さマップなどにも専用の関数がある、もしくは似たようなことが出来る
と思ってました。

>>896
バンプマッピングはあくまでも見た目だけで、実際に他のメッシュから
レイを飛ばして高さを取得したい場合などには不向きと調べた結果にありました。
それと地形作成専用のツールの出力が高さマップだったので。
逆にバンプマップ以外、高さマップ無しで効率よく広大な地形を生成する
手法が存在するのでしょうか?
>>898
実は質問する前にそのページを参考にして作ってみたのですが、原理やC#自体
よく理解していないなかったので手詰まり状態でした。
アドバイスのおかげでそのソースコードの意味も今分かりました。

とりあえずゴリゴリ頂点データを作成する関数をコーディングしてみます。
ありがとうございました。

900:デフォルトの名無しさん
07/11/15 21:53:13
やってることが、どう見てもhight fieldだ。
ハイトフィールド、hight fieldでググると色々出てくるよ。
使い古された手法だから、結構ソースはあるはず



901:デフォルトの名無しさん
07/11/15 22:36:14
助言をお願いします。

テクスチャを動的に生成するため、
D3DXCreateTexture(pD3DDevice, iWidth, iHeight, 0, 0, D3DFMT_A8L8 ,D3DPOOL_MANAGED, &pTexture);
で作成してたテクスチャを
pTexture->LockRect(0, &stRect, NULL, D3DLOCK_DISCARD);
とロックして書き換えていたのですが、

ふと、DirextX Control Panelで、Debug Runtimeに変更したとたん、
エラーコードD3DERR_INVALIDCALLが返ってくるようになりました。
Retail Runtimeでは動くので最終的には問題ないですが、
Debug Runtimeで動かないのが気になります。

何かご指摘の点があればよろしくお願いします。


902:デフォルトの名無しさん
07/11/15 22:40:06
>>901
デバッグ出力に何か情報でてないの?

903:デフォルトの名無しさん
07/11/15 23:10:23
パラメータを見直した?
D3DXCreateTexture、LockRectの箇所でデバッガで止めて、引数の値を精査した?

904:901
07/11/15 23:37:31
レスありがとうございます。

デバッグ出力は何も出てきていません。
パラメータは例で示した感じです。
動作自体はRetail Runtimeで目的通りに動作しているので、
何が間違っているのか・・・?


905:デフォルトの名無しさん
07/11/16 00:51:43
D3DLOCK_DISCARDは、動的テクスチャのみ有効なフラグで
動的テクスチャの作成にはD3DPOOOL_MANAGEDは使用できないと
ヘルプにあるが。また、D3DUSAGE_DYNAMICを指定してないし。
つーか、デバッグメッセージは出てるだろ、メッセージレベルを上げろよ。

906:デフォルトの名無しさん
07/11/16 01:16:52
>>904
D3DERR_INVALIDCALLが返ってきて、デバッグ出力に何も出ないなんてことは
最近のSDKでは起こらないと思うんだが。

>>901のコードを手元で試したらちゃんとメッセージが出たんだがね

Direct3D9: (ERROR) :D3DLOCK_DISCARD is allowed only with dynamic textures

907:デフォルトの名無しさん
07/11/16 01:18:10
>>906の言うとおりならSDKが古いんじゃないの?

908:デフォルトの名無しさん
07/11/16 01:34:37
>>906のメッセージはかなり昔のSDKでも出る

恐らくは>>905の言うとおりデバッグ出力レベルを上げてないだけかと
Retailランタイムでは動作するってのが分からんけど

909:デフォルトの名無しさん
07/11/16 01:40:05
Retailで動くってのは無効なフラグをいちいちチェックしたりせずに無視してるだけなんじゃないかなたぶん

910:デフォルトの名無しさん
07/11/16 01:52:49
DebugとRetailで、関数からの戻り値(HRESULT)が変わることもあるのかな?
>>901でLockRectが失敗すると、当然D3DLOCKED_RECTの値も無効な訳で、
そのまま処理進めると間違いなくAccess Violationな気が…

911:デフォルトの名無しさん
07/11/16 01:59:38
とりあえず、仕様通りに書き直せばいいんでね?原因なんて暇人に調べさせておけ・・・
ってまさか、これは調べさせる釣りなのか?!

912:デフォルトの名無しさん
07/11/16 02:12:59
これはまたまんまと

913:901
07/11/16 02:43:16
レスありがとうございます。
D3DPOOL_MANAGEDで作成してること事態が問題でした。
おかげさまで、
D3DXCreateTexture(pD3DDevice, iWidth, iHeight, 0, D3DUSAGE_DYNAMIC, D3DFMT_A8L8 ,D3DPOOL_DEFAULT, &pTexture);
と修正することにより、Debug Runtimeでもエラー無く動くようになりました。

ただ、Debug Output Levelを最大にしても、エラーメッセージが何も出でないのは気になりますが・・・。
ちなみに、SDKはJune 2007をVistaで使用しています。


914:デフォルトの名無しさん
07/11/16 07:10:11
デバッグメッセージの見方を知らないのかな?

915:デフォルトの名無しさん
07/11/16 08:53:14
VC++8Expressだと出力ウィンドウにはネイティブのデバッグメッセージは
表示されないという罠があったりなかったり。


916:デフォルトの名無しさん
07/11/16 11:19:26
質問者は、自分の環境とか使ってるDirectX SDKのバージョンを書かないけど、
このスレではそれがデフォなの?

917:デフォルトの名無しさん
07/11/16 12:13:20
SDKはみんな2004Octを使ってるからいちいち書かなくてもいいだろ

918:901
07/11/16 12:29:42
VC++2005EEだと出力ウィンドウに出てました・・・orz
主にコンソールで作業してるもので・・・
お騒がせしました。


919:デフォルトの名無しさん
07/11/16 13:46:44
DirectX9で2Dゲームを作っていて
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
の拡大縮小フィルタを設定しているのですが、
等倍や縮小描画をすると異常にぼやけてしまいます
何故かMINFILTERではなくMAGFILTERの方を切ると縮小なども綺麗に描画されるのですが
原因として考えられることは何でしょうか?

920:デフォルトの名無しさん
07/11/16 15:13:05
>>919
URLリンク(msdn.microsoft.com)
これは?

921:919
07/11/16 18:23:09
>>920
レスありがとうございます
DrawPrimitive前でテクスチャ座標を全て-0.5fにすると解決しました

922:デフォルトの名無しさん
07/11/16 18:29:22
テクスチャ座標を全て-0.5fにする

・・・

923:デフォルトの名無しさん
07/11/16 18:34:22
DirectXでリアルタイムレンダリングを解説した書籍でお薦めのものってありますか?

924:デフォルトの名無しさん
07/11/16 21:26:44
まてまて、DirectXって基本的にリアルタイムレンダリングを前提としてると思うんだけど。
プリレンダリングの解説書なんて見たことねーぞ。

925:デフォルトの名無しさん
07/11/16 21:59:37
リアルタイムレンダリング in DirectX
URLリンク(www.amazon.co.jp)

926:デフォルトの名無しさん
07/11/16 23:26:21
現在XP+DX9なのですが、DX10に向けてDX9で磨いたほうがいい技術はどういうものでしょうか。
DX9からDX10に変わることで何がどう違うのかいまいち分からなくて・・・
DX8からDX9になったときのような仕様変更のレベルじゃないですよね、単なる思い込みでしょうか。

927:デフォルトの名無しさん
07/11/16 23:45:12
必用なのはドキュメントに目を通し、サンプルを読み、
こんなところでグダグダグダグダくだらないことを言わない技術。

928:デフォルトの名無しさん
07/11/16 23:52:22
持っているグラボの性能にもよるけどピクセルシェーダに慣れておけばいいかもね


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