【C++】 DirectX初心者質問スレ Part31 【C】at TECH
【C++】 DirectX初心者質問スレ Part31 【C】 - 暇つぶし2ch1:デフォルトの名無しさん
10/09/30 21:45:21
※回答する人も、質問する人も必ず読んでください

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

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

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

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

2:デフォルトの名無しさん
10/09/30 22:10:17
>>1
乙でござる

3:デフォルトの名無しさん
10/09/30 22:12:53
URLリンク(iup.2ch-library.com)
作りますた
同じ感じでやったのに一旦PNGにした方が明らかに綺麗になりますた
合格レベルですか?

4:デフォルトの名無しさん
10/09/30 22:16:25
BMPで上げんな

5:デフォルトの名無しさん
10/09/30 22:21:45
>>3
もうちょっと綺麗にならんのか
つか元の画像はどんななんだ?

6:デフォルトの名無しさん
10/09/30 22:30:23
>>1

7:デフォルトの名無しさん
10/09/30 22:41:19
>>5
元の画像は
URLリンク(www.yamagishi.or.jp)これの手前と
URLリンク(img.pics.livedoor.com)lこれの真ん中の左でつ
それをフォトショで切り抜いて回転させたりして作りました
URLリンク(pc.gban.jp)
URLリンク(pc.gban.jp)
できたのがこれで2階調補正して白黒反転させてToolでddsにしました

8:デフォルトの名無しさん
10/09/30 22:49:49
TGAはフォトショップで普通に出力できた記憶がががが。ぷらぐいんだったのかねぇ・・・。
PNGってダイレクトによめたっけ?読めればアルファも保存できるんだが。

9:デフォルトの名無しさん
10/09/30 22:57:58
>>8
TGAは出力できます
PNGは、最初JPGで保存してたのを名前を変えてPNGとしたらエラーになったのですが
JPGで開いてPNGでインターレース付きで保存したら透過付きで読み込めました
SDKのサンプルではよくDDSが使われてるのでDDSにしたいのですが
TooLで合成しようがフォトショで出力しようが同じものができますよね?


10:デフォルトの名無しさん
10/09/30 23:02:24
>>9
何がそれを保障するかはわからんけど、
一応どっちも製品なんだから同じかどうかは知らないが、途方も無くおかしな方式は採用しないだろ。

一つの見方だが、
フォトショップの内部形式から他のステップを踏むことなくダイレクトにPNGなりDDSになったほうが品質の面では良くないかい?

11:デフォルトの名無しさん
10/09/30 23:08:01
>>10
なるほど!
ようつべの動画を何回も上げて落とすを繰り返すと劣化するって動画がありましたがそんな感じですね
TGAかDDSのプラグインを探すようにします

12:デフォルトの名無しさん
10/09/30 23:15:15
バッカ
お前、仕組み理解しろよ
「アンチエイリアス」でググレよ

>できたのがこれで2階調補正して白黒反転させてToolでddsにしました
なんで2階調補正するんだよーーーーーーーーーーーーーーーーーーーーーーーー!

ググレって自分が何アフォなことやってるのか一発で理解できるから

13:デフォルトの名無しさん
10/09/30 23:37:37
別にこういうビルボードっぽい草ならαは2階調でいいと思うぞ
変にアンチエイリアス入れると描画順を考えないと半透明部分のZ値がおかしくなる
ソートなしでαテストのみで描画できるから完全に抜きの方が楽

という話は置いといて
元素材をちゃんと作れ、そしてαチャンネルについて勉強しろ
2階調ににした白と黒の部分が何を意味してるのか理解してるのか?

14:デフォルトの名無しさん
10/09/30 23:41:13
えーソートなんてすぐじゃんー

15:デフォルトの名無しさん
10/09/30 23:51:47
>>14
ビルボードならいいけど
よくRPGとかであるように十字に組み合わせて配置したいときに面倒だろ?

16:デフォルトの名無しさん
10/09/30 23:58:46
>>11
フォトショのDDSプラグインはNVIDIAが配布してんぞ

17:デフォルトの名無しさん
10/10/01 00:00:01
>>12
ありがとうございます
アルファチャネルと間違ってググってました
つまり…PNGだと自動的にアンチエイリアスになるってことですか…?

18:デフォルトの名無しさん
10/10/01 00:01:48
そういや昔のSDKはUtilitiesのとこにフョトショDDSプラグイン入入ってたけど最新のだと無くなってるな

19:デフォルトの名無しさん
10/10/01 00:08:20
>>13
すいません
アルファチャンネルについてググったのですが理解できませんでした…
背景をカットしたコピーと同一ではないのですか?
ある色を透過色としてその色をスルーするのが透過の仕組みですよね?
そしてDDSだかは透過色が始めから決まってるからその範囲を黒の部分として合成してDDSを作る…みたいなイメージでした

20:デフォルトの名無しさん
10/10/01 00:14:33
>>17
なんで汚く見えるのか?
ってところから理解できたの?

それとアルファ画像もその仕組みも理解してねーのかよ
いろいろ覚えることあるな
全部1つ1つ丁寧に覚えてったほうがいいぞ

1.アルファブレンド(αが0のとき、128のとき、255のときでそれぞれどうなるか?)
2.アルファチャンネルの仕組み(2階調?ありえないw)
3.アンチエイリアスの仕組み
4.アルファ画像の作り方

の順番でしっかり覚えていかないと理解できないと思うけどな

21:デフォルトの名無しさん
10/10/01 00:19:40
覚えること山積だな。
フォトショップの使い方とか、アルファブレンディングの仕組みとか、ファイルフォーマットの区別とか。
DirectXの前段階じゃね?

22:デフォルトの名無しさん
10/10/01 00:24:16
>>20
ぐぐりました
1.アルファブレンド(αが0のとき、→透明
             128のとき、→半透明
             255のとき→不透明
2.アルファチャンネルの仕組み(2階調?ありえないw)→つまり、2階調にすると灰色の半透明ができないだろ!みたいなことですか…?
3.アンチエイリアスの仕組み→色のさかい目がだんだn混ざっていく?それでPNGだとアンチエイリアスになってJPGだとならないんですか?
4.アルファ画像の作り方→つまり各マスの黒から白の0~255をα値にするってことですか…?
合ってたら理解が繋がった気がしてきた

23:デフォルトの名無しさん
10/10/01 00:29:16
>>22
質問!RGBAってなんだかわっかるー??

24:デフォルトの名無しさん
10/10/01 00:32:13
>>23
レッドブルーグリーンアルファの値?
アルファ…?ピクセルごとに透明度が決まってるみたいな?

25:デフォルトの名無しさん
10/10/01 00:37:49
>>24
半分丸だね。
ピクセルを構成する要素で、色の3色である、赤、緑、青、に透明度の単位であるアルファチャンネルをつけたもの。
つまり、2ピクセルを合成するときにアルファチャンネルに基づいて、赤と緑と青の合成濃度が変わるということ。
それが結局透けて見えるとかガラスの表現だとかそういうほうに結びつくの。

26:デフォルトの名無しさん
10/10/01 00:41:48
つまり
JPG→RBG
PNG→RBGAってこと?
フォトショで切り抜いたから端のアンチエイリアスが混ざる色が0000とかで
だからJPGだと端のコマがアンチエイリアスされず全部白に置き換わる
PNGだとアンチエイリアスされてだんだんAが0に近づくからアンチエイリアスされて見える。みたいな?

27:デフォルトの名無しさん
10/10/01 00:46:20
>>22
JPEGや24bitBMPはもともとα値を保存してない(RGB)しかない
ここにグレースケール画像(0~255段階)をα値として合成することで
ARGBのDDSとして保存するのがDirectXTextureToolのやってること
0と255の2階調なら完全な抜き絵になるし
白→黒へ徐々にグラデーションさせればアンチエイリアスになる


PNGはもともとα値を含む画像フォーマットなので
フォトショップ上でどう編集してるかにもよるけど
おそらく回転だの拡大だのしてるときにフィルターがかかって自動で縁にアンチエイリアスがかかってる
だからフォトショでPNGとして保存したものをそのまま読み込むと(DirectXTextureTool)を使わない
アンチエイリアスのかかったテクスチャが出来上がる

28:デフォルトの名無しさん
10/10/01 00:53:05
>>26
半分丸だね。
JPGは別の問題があって、高圧縮の影には非可逆圧縮系の方法がさいようされてて、画像は絶対劣化する。
透明なJPGができたかは忘れた。こういう用途ではあんまり使わない。
PNGは大雑把に言えばZIPと似たような方式をとってて可逆圧縮系の方法が採用されているのと、
アルファチャンネルなどの要素も仕様に含んでいる。

PNGはアルファチャンネルが保存できるから、
そのアルファによって透過させるということは、君の言うアンチエリアスの機能も実現できるんだ。

29:デフォルトの名無しさん
10/10/01 00:53:14
>>27
おおーなるほど。もう完璧にわかりました
下手すればフォトショでPNGで作っといて名前を変えるでDDSにしてもいけるんじゃないかってぐらいに理解できました
ツール要らないんじゃないかとか一瞬思ったけど、ミップマップレベルとかあるからやっぱり要るんでしょうね

30:デフォルトの名無しさん
10/10/01 01:03:32
>>28
ありがとうございます
アルファ値の保存と、アルファチャンネルの保存の違いはまだよくわかりませんが
512×512ピクセルとはいえJPGの圧縮の劣化と言ってもそこまで無いでしょうし
とりあえず今は透過=PNGかGIFと覚えておきます

31:デフォルトの名無しさん
10/10/01 01:06:37
あーアルファとアルファチャンネルはほとんど同意だ。
まー、がんばってくれ。GL&HF!!

32:デフォルトの名無しさん
10/10/01 01:12:47
ありがとうございました!

33:デフォルトの名無しさん
10/10/01 04:48:47
>>32がなんかいろいろ勘違いしたまま去っていった気がするのは俺だけだろうか・・・。

34:デフォルトの名無しさん
10/10/01 07:19:17
なんで自分でプログラミングする以前の問題として、
まともなモデリングソフトを触って研究しようとしないんだろう?
どれだけ馬鹿なの?

35:デフォルトの名無しさん
10/10/01 07:41:49
>>33
こんな短時間で理解するのは無理だよな
まあ、わからなかったら何回でも書き込みを読み直せばいい
そのうちできんだろw

36:デフォルトの名無しさん
10/10/01 07:44:16
どこが違うんだ?
完璧に理解したつもりなんだが

37:デフォルトの名無しさん
10/10/01 07:52:11
>>36
じゃあ、>>3と同じ形で出してみろよ

38:デフォルトの名無しさん
10/10/01 08:40:30
>>37
何をですか?

39:デフォルトの名無しさん
10/10/01 09:33:37
>>38
アルファチャンネルをちゃんと適用したものを

40:デフォルトの名無しさん
10/10/01 09:51:14
>>39
すいません理解できません
どういうことですか?
具体的に何をどうしたやつを出せと言ってるのかゆってください

41:デフォルトの名無しさん
10/10/01 10:20:03
ここまでのやりとりは一体なんだったのだろうか・・・?(笑)

42:デフォルトの名無しさん
10/10/01 10:26:39
すべて無駄だったな

43:デフォルトの名無しさん
10/10/01 10:33:10
そもそも画像ファイル自体にアンチエイリアス目的でアルファ情報を含める必要性がまったく無いんだが、
いったいこいつらは何を言っているんだ?

44:デフォルトの名無しさん
10/10/01 10:43:27
>>43
淵が綺麗にならない問題はあきらめるってこと?
でも今回のレスって綺麗に貼れないか云々じゃなかったっけ?

45:デフォルトの名無しさん
10/10/01 10:47:06
まあ、やり方はどうでもいいけど
>>3の汚い草を改善できなかったらいままでのやり取りはすべて無駄だな

46:デフォルトの名無しさん
10/10/01 10:51:26
そもそも元データが背景の白と融合してしまっている時点で、
それを分離しなければどうにもならず、
前段階の問題なんだからアンチエイリアス云々でどうにかなる話ではない。
手作業で地道に修正するしか無い。

47:デフォルトの名無しさん
10/10/01 10:57:19
話が読めねえ
>>3じゃPNGの方でも汚すぎるってこと?

48:デフォルトの名無しさん
10/10/01 10:58:28
明らかに不自然だろ。

49:デフォルトの名無しさん
10/10/01 10:59:18
>>46
白と融合してる部分はアルファで見えないぐらいに消しちまえばいいんじゃね?
アルファチャンネル理解して淵を綺麗にできることが今回の話を理解できたってことだと思うけどな

>>47
そういう話だっただろ

50:デフォルトの名無しさん
10/10/01 11:00:45
そもそもの画像の切り取り方が下手糞とかじゃなくて?


51:デフォルトの名無しさん
10/10/01 11:02:13
>>50
それもある
でも>>3の画像って2階調で処理しちゃった奴でしょ?

52:デフォルトの名無しさん
10/10/01 11:41:35
>>3が汚いのは単にデータの作り方が雑なだけでしょ
2階調でも十分だと思うぞ

やっつけだけど
URLリンク(www5b.biglobe.ne.jp)

53:デフォルトの名無しさん
10/10/01 11:48:14
2階調にしといてもテクスチャのフィルタ次第でアンチエイリアスになるしな

54:デフォルトの名無しさん
10/10/01 12:04:03
恥を承知で質問します。
あるエフェクトの表現方法について教えていただきたいのです。
よくRPGとかの戦闘シーンで件で切りつけた瞬間に本当に切ったような光が
ランダムに描画されて消えていくエフェクトを見たことあると思いますが、
それを表現したいのです。
具体的に言うとテイルズオブヴェスペリアのユーリの秘奥義である漸毅狼影陣
で切りつける瞬間に出る光のことです。
↓の動画の一番最初の技のやつです。
URLリンク(www.nicovideo.jp)

何がわからないのかといいますと、どういう画像を使って、どのような描画を行えば
よいのかが分かりません。
三角形の画像を使って、拡大しながら加算ブレンドするとか、ポリゴンの頂点を急激に伸ばしながら描画するとか
そういう表現で説明していただけると助かります。
コード等は必要ありません。
表現方法を教えてください。

最高のRPGを作りたいのです。よろしくお願い致します。

55:デフォルトの名無しさん
10/10/01 12:10:41
>>54
テクスチャに動画貼り付けてEND

56:54
10/10/01 12:16:07
>>55
テクスチャに動画なんて貼れません。

DirectXの知識自体はあるのです。
エフェクトを表現するスキルが不足しているんです。
よろしくお願いします。

57:デフォルトの名無しさん
10/10/01 12:30:00
貼れないというのが意味不明。
動画から画像を取りだして、更新が必要なフレームでテクスチャを書き換えればいいだけだよ。

58:54
10/10/01 12:34:15
つまり、ある一つの画像を使っては表現できないということでしょうか?
ああいうエフェクトは最初から、一つの画像を色々プログラムで駆使して表現しているのではなく、
何枚もの画像を使って、切り換えているだけなんでしょうか?

59:デフォルトの名無しさん
10/10/01 12:43:06
>>58
なんでレベル低いくせに背伸びするんだw
URLリンク(www.shader.jp)

動画にZ値をもたせておけば前後関係もちゃんと表現できるぞ
α情報をもたせておけば透過もできる

60:デフォルトの名無しさん
10/10/01 12:50:50
でも、この動画を見る限り1枚絵だな
α値含むエフェクト画像を加算合成
全体の透明度を0.0→1.0→0.0の変化と
αテストの閾値を0→255の変化を同時進行させているように見える

61:デフォルトの名無しさん
10/10/01 12:50:54
>>51
そうです
フォトショでまず自動選択ツールとか消しゴムで切り抜いて、白紙を背景にして保存して、2階調補正して透過のために白黒ファイルを作って、ツールで重ねました
jpgの時の散らばりが無くなったので結構満足してたのですがどうやるのが正解なのでしょうか?
>>52
自分の作ったPNGと違いがわかんねえ…あんまり変わらないような

それと、グラボ買ってきたから今から取り付ける
これからはトゥーンレンダリングしまくってやんよ

62:デフォルトの名無しさん
10/10/01 12:55:48
>>59は前スレにいた動画エフェクト厨だなw

63:デフォルトの名無しさん
10/10/01 12:56:58
本職じゃないから正確なところは知らんけど、
透明な線ポリや板ポリを発光させたり、
板ポリ+アルファ付テクスチャを発光 & フェードイン/アウトさせたりするんじゃないの?
負荷は増えるだろうけどパーティクル使っても可能だろう。

何にせよ応用思考の全く出来ない人っぽいので、ググるか大き目の本屋に行ってみる事をお勧めする。
タイトルは忘れたが、その手のエフェクトについて解説した本がある。
シェーダー関係だったかな?

64:デフォルトの名無しさん
10/10/01 12:59:18
>>62
あいつはテクスチャアニメーションの代わりに使おうとしてたクズだろ
あんなのといっしょにするな

65:デフォルトの名無しさん
10/10/01 13:06:38
2chで聞くだけ無駄

66:54
10/10/01 13:09:06
>>59
DirectShowを使えば可能なんですね。まったく知りませんでした。
私の知識不足です。

>>60
なるほど。参考になります。ありがとうございます。

>>63
ありがとうございます。
シェーダーもそこそこ扱えるので、
本の名前思い出したら、また書き込んでいただけると助かります。

67:デフォルトの名無しさん
10/10/01 13:09:18
こんなにも大団円なのになんでそんなレスが

68:デフォルトの名無しさん
10/10/01 13:10:42
URLリンク(www.autodesk.co.jp)
で体験版を落として30日使い込んで、必要最低限の知識を学べ。
いきなり0からやろうとするから、右も左も分からないんだよ。

69:デフォルトの名無しさん
10/10/01 13:16:26
「本当に切ったような光」に誰か突っ込もうぜ。
台所で料理してるオカンの手元が光りまくってるのを想像してしまった。

っていうか、質問するほどのネタでもないような。
放射状に筋を描いて、ポストエフェクトでライトブルームを加えてるだけじゃない?
中心部分には円形の光を加えていそうだが。

70:54
10/10/01 13:19:58
>>63
ありがとうございます。ダウンロードしてやってみます。

>>69
言い方おかしかったですねw。すみません。
なるほど。ありがとうございます。

71:デフォルトの名無しさん
10/10/01 13:21:50
そういう「閃き」や「連想」のスキルがゼロの人間も世の中には少なくないんだよ

72:デフォルトの名無しさん
10/10/01 13:48:02
くそっ
どうやったらDirectXマスターできるんだよ


73:デフォルトの名無しさん
10/10/01 14:17:50
DirectXなんてマスターしてどうしようっていうんだ
仮になるにしてもとりあえずサンプル全部作れるようになってからそんなこと言ってるのか?

74:デフォルトの名無しさん
10/10/01 14:18:32
まずはマスターの定義を明確にしろ。

75:デフォルトの名無しさん
10/10/01 14:28:38
人型のモデルが動かせるようになったらマスターしたといっても
いいと思う。

76:デフォルトの名無しさん
10/10/01 14:33:42
ずいぶん簡単なんだな。

77:デフォルトの名無しさん
10/10/01 14:35:59
>>72
先にOpenGLでもやれ

78:デフォルトの名無しさん
10/10/01 14:38:49
それよりもオススメ書籍とかないの?

79:デフォルトの名無しさん
10/10/01 14:39:36
とりあえずDXライブラリ始めた

80:デフォルトの名無しさん
10/10/01 15:17:04
それでもいいけど
DirectXのチュートリアルからはじめたらどうか?
虎表示するのあったじゃん
あれやるとモデルの表示がわかるからその後

固定モデル→アニメーションモデル→スキンメッシュモデル→各種シェーダ

って自分ライブラリ作っていったほうがランクアップしやすいぞ
DXライブラリの中身とかなにやってるのか読まなきゃいけないとか結構きついんじゃね?
(いや、ソースついてるのかどうかから俺は詳細知らないんだが・・・)
他の人の作ったもんだし

81:デフォルトの名無しさん
10/10/01 20:24:59
なんでこんなバカばっかなの?

82:デフォルトの名無しさん
10/10/01 20:53:33
じゃあ、バカじゃない意見を頼む

83:デフォルトの名無しさん
10/10/01 20:56:19
ごめん質問者たちのこと(´・ω・`)

84:デフォルトの名無しさん
10/10/01 20:59:00
それはこのスレが初心者用だからさ
気に入らないなら「DirectX上級者質問スレ」でも作りたまへ

85:デフォルトの名無しさん
10/10/01 21:01:02
質問に答えないで茶々をいれるのは辞めて欲しい

86:デフォルトの名無しさん
10/10/01 21:14:33
わざわざ小学校に来て、馬鹿にしたり説教したりしているようなもんだからな

87:デフォルトの名無しさん
10/10/01 22:09:52
DirectX初心者の定義って、せいぜいDirectXのプログラミングを始めてから3ヶ月がいいところだろ。

88:デフォルトの名無しさん
10/10/01 22:25:56
3ヶ月だったらアニメーションとシェーダ終わったぐらいだな
調度このスレに来てる層だろ

89:デフォルトの名無しさん
10/10/01 22:34:38
え、俺は理解するのに5年ぐらいかかった

90:デフォルトの名無しさん
10/10/02 00:21:36
dxdiagを見るとDirectX version 11と書いてあるのですが
グラボはオンボで、グラボのサイトを見てるとDirectX10.1対応(キッ
とか書いてあるのですがこれはどういうことなのでしょうか?

91:デフォルトの名無しさん
10/10/02 00:23:14
win7だとソフトウェアエミュレーションできるんじゃなかったか

92:デフォルトの名無しさん
10/10/02 00:25:06
プログラム板にもネ実補正みたいなのがあるんだな
当然か

93:デフォルトの名無しさん
10/10/02 00:28:03
vistaです

94:デフォルトの名無しさん
10/10/02 00:37:01
>>90
知らんがな
dxdiagじゃなくてSDKインストールフォルダの\Utilities\binフォルダにあるDXCapsViewer.exeを実行して
メニューからprint whole tree to fileを選ぶ
exeと同じフォルダにdxview.logというファイルができるのでそれを晒したら話が早いと思うよ

95:デフォルトの名無しさん
10/10/02 00:46:46
デバイスの謳い文句とOSにインストールされてるDirectXのバージョンは関連ほとんどないだろ

96:デフォルトの名無しさん
10/10/02 01:42:15
>>94
はやくねー

97:デフォルトの名無しさん
10/10/02 07:07:35
D3DCOLOR_ARGBで(128,255,255,255)は多少薄くなるんですけど、(64,255,255,255)は完全に描写されない
なにかいかんのかね

98:デフォルトの名無しさん
10/10/02 07:10:58
それだとコードを書いた人間が馬鹿だからとしか言いようがない。

99:デフォルトの名無しさん
10/10/02 07:33:09
少し調べれば分かることなのに、
WARPが分かっていなくてソフトウェアエミュレーションとぼかして言ったり、
Direct3D11エミュレーション機能が無いことが分かっていなかったりで、
あるようなニュアンスで答えるような>>91って何なの?

ちなみにWARPはVistaでも使えるし、機能レベルはDirect3D10まで。

100:デフォルトの名無しさん
10/10/02 08:30:02
>>97
シェーダーがおかしいとか
αテストの閾値が64以上になってるととか

101:デフォルトの名無しさん
10/10/02 08:40:35
>>98
煽るだけの馬鹿はいい加減消えてください

102:デフォルトの名無しさん
10/10/02 09:20:55
程度が低いよね
よくそんな姿勢で技術者やってられるなと思う
すぐに仕事なくなっちゃうし
職場でも浮いちゃうと辞めるしかなくなっちゃうぞと思う

103:デフォルトの名無しさん
10/10/02 09:23:22
>>54とか前スレにも何回かでてたけど
エフェクトを難しく考えすぎなんじゃないか?

一見して派手に見えるエフェクトはもうほとんど絵の問題でプログラムどうこうってのは少ない
エフェクト専門にやってるデザイナさんにツールみせてもらったけどあれは素人がなんとかできるもんじゃない
基本上がってきたエフェクトアニメーションを再生してるだけってのが実態だと思うぞ


あえて、アニメーション無しの
透明度変化、回転のみでやってみたけど
いかんせん絵の専門家じゃないのでしょぼさが隠しきれない
これも絵次第でなんとかなるんじゃないかなぁと思うんだが…

URLリンク(www5b.biglobe.ne.jp)

104:デフォルトの名無しさん
10/10/02 09:24:18
>>103
天使ちゃんマジ天使

105:デフォルトの名無しさん
10/10/02 10:21:59
この程度のだったらアニメーション付きのモデルファイルを再生して終りだね

106:デフォルトの名無しさん
10/10/02 10:40:24
まぁ、それ以前に初心者だと光っぽいグラフィックが描けないんだけどな

107:デフォルトの名無しさん
10/10/02 10:44:12
>>105
モデルにする意味がわからない

108:デフォルトの名無しさん
10/10/02 10:50:11
>>107
単純に職場のデザイナさんがアニメーション形式で作ってきてくれるってだけ
俺は画面に出すだけw

109:デフォルトの名無しさん
10/10/02 11:06:04
>>103
十分よくできてると思うよ。
筋の方のテクスチャの半透明の部分をもっと増やして太くすると
ライトブルームっぽくなるかも。

110:デフォルトの名無しさん
10/10/02 11:11:23
>>106
本屋に雷や炎、水しぶき、雲、煙、岩のテクスチャの描き方的な本ってあるんだぜ
俺がもってる本(photoshop デザインコレクション)が絶版状態だから似たような本を探してくればいいんじゃね?
デザイナさんもそーゆーの見て描いてたしw

111:デフォルトの名無しさん
10/10/02 13:15:48
グラボ付けたらトゥーンシェーダーできたwwwwwwwwwwwwwww
これで俺も3Dゲームプログラマーの仲間入りだおwwwwwwwwwwwwwww

112:デフォルトの名無しさん
10/10/02 13:31:22
>>111
スキニングできましたか?
スキニングできましたか?

113:デフォルトの名無しさん
10/10/02 13:40:10
>>112
なんで2回言うんですか…

114:デフォルトの名無しさん
10/10/02 13:42:05
>>113
大事なことなので2回言いました

115:デフォルトの名無しさん
10/10/02 15:22:52
画像を表示させるのにZ座標を持たせる方法ってあります?
いまやってる方法だとどうも描写順に表示してしまってるようで不便でして

116:115
10/10/02 15:33:57
自己解決した

117:デフォルトの名無しさん
10/10/02 17:28:09
COMオブジェクトはboost::shared_ptrで管理してデストラクタでreleaseすれば問題ないですよね?

118:デフォルトの名無しさん
10/10/02 19:16:34
boostならintrusive_ptrを使うといい

119:デフォルトの名無しさん
10/10/02 19:33:25
ATL使えるならCComPtr使え

120:デフォルトの名無しさん
10/10/02 19:38:05
ありがとうございます
効率の面でintrusive_ptr、CComPtrをつかえってことですよね?

121:デフォルトの名無しさん
10/10/02 19:40:24
効率面で言えば使う必要はない

122:デフォルトの名無しさん
10/10/02 22:11:09
shared_ptrとの比較の話じゃ?
余計な処理のないCComPtr一択っしょ

123:デフォルトの名無しさん
10/10/02 22:24:37
ATLの要らない_com_ptr_tの事も思い出してあげてください

124:デフォルトの名無しさん
10/10/03 02:44:11
>>103みたいなエフェクトテクスチャは何で描くの?フォトショ?

125:デフォルトの名無しさん
10/10/03 03:34:03
gimp

126:デフォルトの名無しさん
10/10/03 03:45:03
本とか読まなくても
そういうのを描く用のブラシとテクニックがあってだな

127:デフォルトの名無しさん
10/10/03 03:47:02
kwsk


128:デフォルトの名無しさん
10/10/03 05:42:54
テクスチャを設定する時に
Device->SetTexture(ステージの番号,ポインタ)
とする時のステージを指定するのって
Effect->SetTexture("識別子",ポインタ)でする時はどうすれば良いのでしょうか?

129:デフォルトの名無しさん
10/10/03 06:03:56
>>128
pEffect->SetTexture("シェーダーのテクスチャ変数orセマンティクス", テクスチャオブジェクトへのポインタ);

130:デフォルトの名無しさん
10/10/03 06:04:18
>>128
シェーダー側のテクスチャ変数を増やせば良いだけじゃ

131:デフォルトの名無しさん
10/10/03 06:06:46
>>124
フォトショ
URLリンク(macototo.cool.ne.jp)

132:デフォルトの名無しさん
10/10/03 06:11:45
>>129
>>130
ありがとうございます
ずっとググってるのですが全然理解できません
ステージの番号iはfxファイルの中のTexiと繋がっているのでしょうか?

133:デフォルトの名無しさん
10/10/03 06:26:15
>>132
指定するのはステージ番号じゃないよ。リファレンスにはステージ番号なんて書いてないだろ。

SetTexture(D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture);

IDirect3DDeviceのSetTextureとID3DXEffectのSetTextureは違うモノだ。

134:デフォルトの名無しさん
10/10/03 06:34:10
>>132
URLリンク(bbx.hp.infoseek.co.jp)

135:デフォルトの名無しさん
10/10/03 06:37:20
//テクスチャの設定
char number[] = {"01234567"};
for(int i=0;i<8;i++){
//テクスチャの取得
LPDIRECT3DBASETEXTURE9 temp_tex = NULL;
aDevice->GetTexture(i,&temp_tex);

//テクスチャがなければ終わる
if(!temp_tex)break;

//テクスチャの設定
string out = "texture";
out.push_back(number[i]);
effect->SetTexture(out.c_str(),temp_tex);

temp_tex->Release();
}

136:デフォルトの名無しさん
10/10/03 06:49:24
ありがとうございます。
>>133
だろ。に笑ってしまったのですがw
>>134
>>135
よくわかりません…具体的にはマルチレンダリングターゲットをしてて0と1とあるのですが
サンプルだとdevice->SetTexture(1or0,ptex)で指定してるのでわかりやすいのですが
>>135だと全くeffect->を使ってないのですが自分は殆どeffect->SetTexture("g_texture",ptex)を使ってるのでどうすれば良いのかわからないのです
effectでやりたいのですがこういう時どうすれば良いのでしょうか?

137:デフォルトの名無しさん
10/10/03 06:51:08
すいません
目が腐ってました

138:デフォルトの名無しさん
10/10/03 06:54:55
目より頭が腐ってると思うよ

139:デフォルトの名無しさん
10/10/03 06:55:30
>>138
黙れよカス

140:デフォルトの名無しさん
10/10/03 06:56:09
まさか
SetTexturetとSetRenderTargetを勘違いしてたってオチ?

141:デフォルトの名無しさん
10/10/03 07:00:19
えっ
SetTexturetとSetRenderTargetの第一引数って関係無いんですか?

142:デフォルトの名無しさん
10/10/03 07:01:48
なんで質問するやつはすぐカスだの何だの言い出すの?

143:デフォルトの名無しさん
10/10/03 07:02:10
どうりでググってもでてこないわけだな

144:デフォルトの名無しさん
10/10/03 07:04:17
>>141
まったく関係ないっすなぁ

145:デフォルトの名無しさん
10/10/03 07:06:22
やべええガチで頭腐ってた

146:デフォルトの名無しさん
10/10/03 10:04:44
というかこれは教える方が悪いんでは
>>135もなんかずれてるし
エフェクトファイル側を出さないで何を伝えるつもりなの?

147:デフォルトの名無しさん
10/10/03 10:32:43
シェーダデバッガーってダウンロードできますか?
ユーティリティーにPIXは入ってたのですがシェーダデバッガーらしきものは入ってませんでした
MSDNにもここからダウンロード的な誘導も付いてませんし、VisualStudio.Netが必要だというページもあるのですが自分はExpressEditionです
どうすれば入手できますか?

148:デフォルトの名無しさん
10/10/03 11:52:26
わけがわからん
もうシェーダ無理マジで
なんでエフェクトファイルだけCと違うんだよ
既存の↓に適当に入れただけでエラーってどういうこと?
struct VS_OUTPUT
{
float4 Pos : POSITION;
float4 Diffuse : COLOR0;
  float4 Diffuse : COLOR1;←加えた
float2 Tex0 : TEXCOORD0;
};
typedef struct VS_OUTPUT{も無理だし

149:デフォルトの名無しさん
10/10/03 12:02:49
>>148
変数名が同じだからでは?
fxcでコンパイルしてエラーメッセージをチェックするといいかも。

150:デフォルトの名無しさん
10/10/03 12:09:10
>>149
サンクス
普通にVS_OUTPUTの前にsとかつけたら通った
なんでこんな簡単なことが気付かなかったんだろうか
2ちゃんに文句書き込んだ瞬間解決するんだよないつも

151:デフォルトの名無しさん
10/10/03 12:11:03
fxcとかいうソフト、つけた瞬間一瞬だけひらいて閉じるんだけどなんだこれ?

152:デフォルトの名無しさん
10/10/03 12:27:23
URLリンク(msdn.microsoft.com)(VS.85).aspx

コンパイルエラーを表示できるようにしといたほうがいいよ
OutputDebugStringAを使えばデバッグウィンドウからエラー箇所まで飛べる

hoge.fx(38,9): error X3003: redefinition of 'VS_OUTPUT::Diffuse'

153:デフォルトの名無しさん
10/10/03 12:45:52
サンクス
出力のところ見たら普通に載ってたな
特殊形式っぽいしツール無いと無理だと思って探しまくってるうちに洗脳されてた

154:デフォルトの名無しさん
10/10/03 13:12:37
シェーダわかった。完璧だわ
一気にトトリっぽくなったしもうあとリソース作るだけだわ
ktkr

155:デフォルトの名無しさん
10/10/03 13:27:43
>>146
>>134のリンク先でその仕組みが分かって
SetTextureで設定しておいたものをシェーダ用として使うコードが>>135のつもりで貼った

まあ、でもよく考えるとすでに動くHLSLのサンプルがSDKのサンプルにあるのに
こんなことで迷ってるなんて相手にしないほうがいい人だったねw

156:デフォルトの名無しさん
10/10/03 13:33:56
自分が迷ってる部分が単発でサンプルにあるなんてわからないだろw

157:デフォルトの名無しさん
10/10/03 13:35:58
>>156
今回に関して言えばテクスチャが貼られてるサンプルならなんでもよかったよね?

158:デフォルトの名無しさん
10/10/03 13:44:32
>>157
            __、
     ,r´⌒ヽ,⌒ヽ,ヽ
   (⌒)、   .人  λ\、 ._____
    \. \    、 ヽ./ ー  ー\
     |\ \    ヽ./ ( ●) ( ●)
     |  \  \ /     (__人__) \  はいはい、どーもすみませんでした
     |.   \   |       ` ⌒´   |
  .   |.   |.\_ノ\            /
  .   |.   |   |   \______/
  .   |   )  .|     . . ̄ ̄
  .   |   |  .|
     |   |.|  .|
  .   |  | .| .|
     /  / / ヽ,
    (__ノ  ヽ、__つ


159:デフォルトの名無しさん
10/10/03 13:45:56
>>158
すっごい馬鹿だったよねw
見てて惨めなくらい間抜けだよね?
SDKに載ってることを馬鹿みたいにわかんないわかんないってw
PG向いてないんと違う?大丈夫?

160:デフォルトの名無しさん
10/10/03 13:48:47
>>159
だまれ死ね

161:デフォルトの名無しさん
10/10/03 13:50:52
>>160
            __、
     ,r´⌒ヽ,⌒ヽ,ヽ
   (⌒)、   .人  λ\、 ._____
    \. \    、 ヽ./ ー  ー\
     |\ \    ヽ./ ( ●) ( ●)
     |  \  \ /     (__人__) \  はいはい、どーもすみませんでした
     |.   \   |       ` ⌒´   |

162:デフォルトの名無しさん
10/10/03 14:00:52
とりあえず件のトゥーン君は
質問するとき判別できるようにコテハン付けてくれ
そして質問に関係すること以外はチラシの裏にでも書いといてくれ

163:デフォルトの名無しさん
10/10/03 15:00:17
しかし、DX9って息長げーな
もう8年になるかというのに、いまだ手を出す奴が絶えないもんな
といいつつ俺も9で完全に止まってる化石だが

164:デフォルトの名無しさん
10/10/03 15:08:37
DX10がVistaと共に沈没してしまったからな
DX10.1もNVIDIAがついてこずこれも黒歴史化
Win7とDX11が普及しきる迄はまだまだDX9の天下


165:デフォルトの名無しさん
10/10/03 15:16:42
プログラマブルシェーダーが主流になって
7以前のハードの進化とのイタチごっこが終わったからだな
今後はSMのバージョンアップ=DXのバージョンアップになっていくんだろう

166:デフォルトの名無しさん
10/10/03 16:00:14
SMの進化が進んで、IA32+SIMDと同程度になったら
D3Dの時代は終わるかも
まあLarrabeeやCellがずっこけてるし、まだまだ先かもしれんけど
D3D9はその時でも依然現役だろうな

167:デフォルトの名無しさん
10/10/03 16:04:07
最低でも4年後までは9の天下のままだろ

168:デフォルトの名無しさん
10/10/03 17:33:53
シェア最大のIntelのグラフィックが腐ってるからな
ここがDirectX11をまともに動かせるようになるまでは駄目だ

169:デフォルトの名無しさん
10/10/03 18:04:35
MSはエンドユーザーへ浸透を促進するためにまず開発者を移行させようとしてくるからな
とりあえずVS2012くらいでXPのサポート打ち切って
じょじょにDXSDKのVS2010以前のサポートを打ち切ってくるだろう
世間ではまだ9が全盛でも9で開発したかったら古い環境でやってね、となるに違いない

170:デフォルトの名無しさん
10/10/04 00:32:47
URLリンク(www.poverty.jeez.jp)
こんなのでた、本当にどうしよう

171:デフォルトの名無しさん
10/10/04 00:41:13
プログラムを辞める

172:デフォルトの名無しさん
10/10/04 00:41:34
デバックしろ
どうせ「かまってトゥーン君」なんだろうが…

173:デフォルトの名無しさん
10/10/04 00:50:57
次のトゥーン君の発言は死ねか黙れかカスだなたぶん。

174:デフォルトの名無しさん
10/10/04 00:56:35
かまってツォーん君って誰だよ

弄る前の状態にしてもエラーでるしワケ分からん

175:デフォルトの名無しさん
10/10/04 01:04:58
だからデバックしろって
VCみたいだからF5でデバック実行する
エラーがでて止まったら呼び出し履歴をみて最後に呼ばれた関数に飛ぶ
その中に適当にブレークポイントを打って止まる原因になってる行を突き止める
まぁ、たぶんNULLインターフェースのメンバを呼んでるとか
new してないインスタンスのメンバを呼んでるとかそんな感じだと思われ

176:デフォルトの名無しさん
10/10/04 01:06:19
二重deleteだろ

177:デフォルトの名無しさん
10/10/04 01:06:47
>>175
なるほど
ありがとう

178:デフォルトの名無しさん
10/10/04 14:11:12
EVRでレンダリングしている動画の上にIDirect3DSurface9を使って簡単なアニメーションを重ねたいと思います。
それに使うIDirect3DSurfaceはどこから取得するのが最適でしょうか?

179:デフォルトの名無しさん
10/10/04 14:35:00
別アプリのEVR対応アプリの上にってこと?

180:デフォルトの名無しさん
10/10/04 20:07:15
現在、Windows2000対応のアプリのためにDirectX SDKの
October2004をインストールしているのですが、最近のバージョンの
SDKと共存させることはできるでしょうか?
インストール先を別々にするだけで良いとかだとうれしいです。

181:デフォルトの名無しさん
10/10/04 20:11:28
結局何が別であるとうれしいかというとライブラリとかヘッダなので別にインストールすればいいんじゃね?
でも、環境変数とか同名の名前の衝突とかで食い合う気がするのでその辺の調整はいるかも。

182:デフォルトの名無しさん
10/10/04 20:12:07
Win2000対応のアプリなんて捨てろよw
XPからにしとけwww

どうせ貧乏人をサポートしてもそいつらコピーでしかあそばねえからwww

183:デフォルトの名無しさん
10/10/04 20:19:46
一応共存させることは出来る
インストール先を別にして
環境設定のインクルードディレクトリとライブラリディレクトリの優先順位を2004Octの方を上にしとけば基本そっちから使ってくれる
ただMSもあまりそれは推奨してないようなので不具合がでても自己責任

184:デフォルトの名無しさん
10/10/04 20:24:47
VS2010からは環境変数で設定するんじゃなくて
個々のプロジェクトごとに設定できるようになったから良いね
その分ちょっと煩雑にはなったけど

185:デフォルトの名無しさん
10/10/04 20:29:56
2010のってプロジェクトファイルそのものにSDKのフルパスが書き込まれるあたりダメダメじゃね?
インストールパスが違う他環境だとそのままじゃビルド不能になるし。

186:デフォルトの名無しさん
10/10/04 20:29:59
>>181-183
ありがとうございます、一応できるんですね
環境変数も注意して見ることにします

187:デフォルトの名無しさん
10/10/04 20:35:32
>>185
フルパスを書き込まなければ良い

188:デフォルトの名無しさん
10/10/04 20:37:18
ソリューションフォルダ以下にヘッダとライブラリを全部コピーするような真似しない限り
結局環境依存じゃねーか

189:デフォルトの名無しさん
10/10/04 20:38:15
$(DXSDK)
$(WindowsSDK)

190:デフォルトの名無しさん
10/10/04 20:40:07
SDK複数バージョン同居前提の話なんだから環境変数はダメだろ。


191:デフォルトの名無しさん
10/10/04 20:45:07
なんだその話続いてたのか

192:デフォルトの名無しさん
10/10/04 20:45:21
そういう特殊な環境で作りたいんだったら
自分で環境変数を増やせばいいじゃない
別に一個じゃなきゃいけない理由も無いんだし

193:デフォルトの名無しさん
10/10/04 21:54:52
シェーダを使った場合、
SetRenderStateで設定してるものは全て無効になるんですよね?
すべてシェーダー側で設定しろってことですか?
カリングモードの設定もですか?

よろしくお願いします。

194:デフォルトの名無しさん
10/10/04 22:07:24
まずは自分で試してみろ。
そうでないと話にならない。

195:デフォルトの名無しさん
10/10/04 22:13:35
>>194
試しました。たぶんそうなんですが、念のための確認です。
スパルタ教育は好きです。

196:デフォルトの名無しさん
10/10/04 22:15:57
もう一度やり直せ。

197:デフォルトの名無しさん
10/10/04 22:19:34
>>196
やり直して確信に変わりました。ありがとうございました。

198:デフォルトの名無しさん
10/10/04 22:39:44
>>179
同じアプリ内のEVR (DirectShow)です。

199:デフォルトの名無しさん
10/10/04 23:17:10
>>197
αブレンドの設定は生きてるぞ
他にも生きてるもんあんだろ

200:デフォルトの名無しさん
10/10/05 00:11:45
ひねくれたこと言わないでちゃんと回答してればこんなことにはならなかったのに

201:デフォルトの名無しさん
10/10/05 00:17:34
固定シェーダの恐怖が減っただけでもありがたいことだな

202:デフォルトの名無しさん
10/10/05 00:31:12
>>199
何が生きて何が生きてないんですか?
勉強不足でホントすみません。

203:デフォルトの名無しさん
10/10/05 00:32:23
あ、生きてるやつだけでいいです。

204:デフォルトの名無しさん
10/10/05 00:41:45
>>202
知らん
そのときどきで「おーこいつ生きてるじゃんoh!yeah!」って対処しろ

205:デフォルトの名無しさん
10/10/05 00:46:58
>>204
もうしょうがないわね。わかったよ。

206:デフォルトの名無しさん
10/10/05 01:10:11
なんか釣りっぽいけど
マジレスするとシェーダー使っててもSetRenderStateは全て無効にならない
基本事項はSetRenderStateで設定しといて
シェーダー内のみで変更したい項目をシェーダー側で変更する
ID3DXEffect::Beginでパラメーターを指定しなければEndの時に変更部分が復元される

207:デフォルトの名無しさん
10/10/05 09:22:16
>>206
最高です!釣りじゃありません!
ちょっと前から厳しい人がいたんで反応を見てただけです!
スパルタ教育は好きなんですけどね!
ありがとうございました!

208:デフォルトの名無しさん
10/10/05 09:33:01
>>206
追加で質問です。
Beginでパラメータを指定しないってことは第二引数を0にするってことですよね?
変更部分が復元されるというのは、シェーダ内での変更がそのまま維持されるということでしょうか?
それとも、シェーダ内で変更した項目は全てリセットされ、シェーダーで変更する前の状態に復元されるということでしょうか?

何度もすみません。よろしくお願いします。

209:207
10/10/05 09:52:12
もうわかったのでいいです。
シェーダ内の変更がそのまま復元され維持されるということですね。
復元されちゃったら、また元に戻さないといけないのでやめたほうが良さそうですね。


210:デフォルトの名無しさん
10/10/05 11:49:07
話の流れが見えない
207=209じゃないよな?

211:デフォルトの名無しさん
10/10/05 11:52:30
思い込みが激しい奴に何を言っても無駄。

212:デフォルトの名無しさん
10/10/05 12:01:20
普通に同一人物に見えるが

213:デフォルトの名無しさん
10/10/05 12:08:39
だから思い込みが激しい奴に何行っても無駄だって

214:デフォルトの名無しさん
10/10/05 12:11:23
人の話も聞かずに勝手に頓珍漢な結論を出すんだから放っておけばいい。

215:デフォルトの名無しさん
10/10/05 12:38:59
>>211-214が普通に同一人物に見えるんだが

216:デフォルトの名無しさん
10/10/05 12:47:47
てか、昨日から上から目線で混乱させるようなことばかり言ってるやつでしょ
だろ。の人は回答する気がないならいい加減消えればいいのに

217:デフォルトの名無しさん
10/10/05 12:59:42
なんだかんだ言って、誰も間違いに突っ込まないところが、
人が悪いなと思ってしまう。

218:デフォルトの名無しさん
10/10/05 13:22:13
合ってるって言ってあげろよ

219:デフォルトの名無しさん
10/10/05 13:29:03
てか勘違いしてるのか日本語が下手なだけなのゆとりなのか判断に悩む

220:デフォルトの名無しさん
10/10/05 13:56:58
リソースをコンパイル中にこんなエラーが出ました。
対処法がわかりません。教えて下さい。

fatal error RC1011: compiler limit : 'XSKINEXP_TEMPLATES': macro definition too big

221:デフォルトの名無しさん
10/10/05 14:00:50
>>219
日本語でおk

222:デフォルトの名無しさん
10/10/05 14:08:52
誰もわからないの?バカなの?死ぬの?

223:デフォルトの名無しさん
10/10/05 14:12:07
>>220
compiler limit : 'identifier' : macro definition "too big"

Try to split the definition into shorter definitions.

224:デフォルトの名無しさん
10/10/05 14:21:35
LoadObjectFromFileでWAVは読み込めるんだけど
MP3が読み込めません。
どうすればいいんでしょうか。

225:デフォルトの名無しさん
10/10/05 14:34:29
API調べるのめんどい。Direct何のどのクラス使ってるのさ
XAudioだかはWMA風データなら読めるがMP3は読めない
MP3を簡単に再生するならWin32APIかDirectShow
ちゃんとやりたかったらSDKなりでWAVに変換せよ

226:デフォルトの名無しさん
10/10/05 14:36:30
>>224
自前でデコードするかDirectShowを使うしかない

227:デフォルトの名無しさん
10/10/05 14:50:56
mp3はライセンス問題があるからoggにしとけ
oggなら展開用のライブラリもそのへんに転がってるし

228:デフォルトの名無しさん
10/10/05 15:47:29
>>225-227
レスありがとうございます。
DirectShowやoggを検討してみます。

229:デフォルトの名無しさん
10/10/05 22:53:52
勉強用とか音楽とかワンセグもOK 無線LAN接続なら無料
結構安いと思うんだけど?
お前ら的にはあり?


IS01 1円スタート 即決有
URLリンク(page9.auctions.yahoo.co.jp)
URLリンク(page8.auctions.yahoo.co.jp)
URLリンク(page11.auctions.yahoo.co.jp)
URLリンク(page10.auctions.yahoo.co.jp)
URLリンク(page2.auctions.yahoo.co.jp)

IS02 1円スタート 即決有
URLリンク(page11.auctions.yahoo.co.jp)
URLリンク(page2.auctions.yahoo.co.jp)
URLリンク(page11.auctions.yahoo.co.jp)

230:デフォルトの名無しさん
10/10/05 22:59:49
>>229
こいつ宣伝しまくってるな。

231:デフォルトの名無しさん
10/10/05 23:02:11
>>230
面倒だけど癖になるからアク禁依頼だしてくるか

232:デフォルトの名無しさん
10/10/06 00:27:49
>>178もよろしくお願いしますよ~

233:デフォルトの名無しさん
10/10/06 02:09:23
こいつマ板でも宣伝してたわ。

234:デフォルトの名無しさん
10/10/06 17:48:33
皆さんのテクスチャ管理方法をざっくりでいいんで簡単に教えてください。
読み込みから解放までを。

すみません。

235:デフォルトの名無しさん
10/10/06 18:06:57
テクスチャ登録用のリストを作る
ファイル名や識別子などからリストを検索
未登録ならテクスチャを作成しリストに登録
登録済みならテクスチャへのポインタを返しAddRef(参照カウントを増やす)
必要なくなったら参照先でRelease
参照カウンタが0になったらリストから削除

236:デフォルトの名無しさん
10/10/06 18:21:14
シェーダープログラムでのテクニックとパスの違いを教えてください

パスはレンダーステートとプログラムのセットですか?

237:デフォルトの名無しさん
10/10/06 18:22:49
>>235
ありがとうございます。
描画する際もファイル名などからリストを検索して描画ルーチンに渡しているのでしょうか?
もしそうなら、その検索時間は気になりませんか?

238:デフォルトの名無しさん
10/10/06 18:24:04
>>237
ハッシュマップとかIDでソートかけておくとか

239:デフォルトの名無しさん
10/10/06 18:26:45
ちゃんと文章読んでるのかよ

240:デフォルトの名無しさん
10/10/06 18:26:55
>>238
なるほど。ありがとうございます。
STLのコンテナを使わないのは何故ですか?

241:デフォルトの名無しさん
10/10/06 18:36:44
>描画する際もファイル名などからリストを検索して描画ルーチンに渡しているのでしょうか?

しないよ
描画オブジェクトもテクスチャへのポインタを持たせておけば読み込み時の1回だけでいいだろう?
なんのための参照カウンタだ

242:デフォルトの名無しさん
10/10/06 19:30:24
>>241
なるほど!本当にありがとうございます!
最高のシステムですね!参考にさせていただきます!

243:デフォルトの名無しさん
10/10/06 19:32:35
すごいですね!
本当に本当にありがとうございました!

244:デフォルトの名無しさん
10/10/06 20:44:49
float4 col = 1って全部1が入るんですか?
col.xyzw = 1と同じですか?

245:デフォルトの名無しさん
10/10/06 21:03:34
yes

246:デフォルトの名無しさん
10/10/06 21:08:49
thankyou

247:デフォルトの名無しさん
10/10/06 22:35:30
>>235
自分は別な質問者ですが、
参照カウンタが0になったら、というので
内部参照カウンタの値を取得するにはどうすればよいですか?
それとも自分で数えておくのですか?

248:247
10/10/06 22:39:48
すみません普通にわかりました
ULONG = Hoge->addref() - 1;
Hoge->Relase();
ですね

249:デフォルトの名無しさん
10/10/06 23:31:02
そのカウンタを使って処理をするな的なことがドキュメントのどっかに書いてなかったっけ

250:デフォルトの名無しさん
10/10/06 23:41:09
D3DXCreateEffectFromFile()って素敵ですね。

251:247
10/10/07 07:23:57
>>249
あれ?そうなんですか?
もしよければ詳しくおねがいします

252:デフォルトの名無しさん
10/10/07 09:24:14
>>251
Syntax
C++
ULONG Release()

Return Value
Returns the new reference count. This value is for diagnostic and testing purposes only.

253:247
10/10/07 09:30:05
>>252
まじすか ありがとうございます
じゃあ上の参照カウンタが0になったら、
っていうのは自分で数えておけということでしょうか?
それとももっとましな方法がありますか?

254:デフォルトの名無しさん
10/10/07 10:00:58
>>253
自分で覚えておけばおk

255:247
10/10/07 10:54:31
>>254
まあ、たいした手間ではないですよね
ありがとうございました

256:デフォルトの名無しさん
10/10/07 11:13:43
>>252
それって単にマルチスレッド環境での保証がされてないってだけじゃね?

257:デフォルトの名無しさん
10/10/07 13:58:14
僕はテクスチャ型と座標を毎回関数に渡して描画してるんですが、
もっといい方法ないですか?
皆さんの描画システムを簡単に教えてほしいです。

258:デフォルトの名無しさん
10/10/07 14:06:26
何をしたいのか目的も書かないで、方法だけ語ることに何の意味があるの?
前提条件も把握せずに答える馬鹿が出てくるかもしれないが、
頭の悪い内容しか返ってこないぞ。

259:デフォルトの名無しさん
10/10/07 14:13:06
頭の悪い回答すると

テクスチャ型と座標を管理したクラス配列を持つクラスにやってもらう


てか、テクスチャ型と座標って何の話だ?www

260:デフォルトの名無しさん
10/10/07 14:28:26
ごめんなさい。
具体的に言うと、LPDIRECTD3DTEXTURE9とそのキャラクターの位置座標を渡して
描画してもらうようにしています。

>>259
こんな回答でも参考になります。

261:デフォルトの名無しさん
10/10/07 15:05:21
IDirectSoundBuffer8::SetVolume を使って音のフェードアウト中にノイズが乗ってしまいます。

【ソースコード】
  for(i=DSBVOLUME_MAX; i>DSBVOLUME_MIN; i-=25)
  {
    pDSData->SetVolume(i);
    Sleep(1);
  }
  pDSData->Stop();

フェードアウトの方法が間違っているのでしょうか。
よろしくお願いします。

262:デフォルトの名無しさん
10/10/07 15:05:49
目的があって手段があるのに、未だに目的が不明。
手段の説明しかしていないのが分からないのか?

263:デフォルトの名無しさん
10/10/07 15:08:46
>>261
まずはサウンドカードを別の物に交換して確認する。

264:261
10/10/07 15:30:21
>>263
DirectSound対応を堂々とうたっているサウンドカードにて確認してみましたが、
やはりノイズが乗ります。

265:デフォルトの名無しさん
10/10/07 15:34:58
>>264
日本語は通じてる?
対応云々の話なんて一切していない。
別のサウンドカードで確認しろと言ってるの。

266:261
10/10/07 15:38:26
>>265
すみません。説明が不足していました。
>>264は別のサウンドカードです。

267:デフォルトの名無しさん
10/10/07 15:40:21
それでノイズが気になるのなら、波形データの方を少しずつ減衰させるしかない。

268:デフォルトの名無しさん
10/10/07 15:44:54
>>266
具体的にその2品の製品名なりチップセット名は?

269:デフォルトの名無しさん
10/10/07 16:01:10
ボリューム値の変動を細かくする。
Sleep間隔を長くする。
もっとまともなタイマーを使う。
完全なフェードにするには1サンプル毎に減衰させる。

270:261
10/10/07 16:04:38
>>267
wavデータをセカンダリバッファに書き込むときに減衰した値を書き込む訳ですね。
しかし、ストリーミング再生をしているので、恐らくセカンダリバッファをロックして
バッファの値を読んで減衰した値に書きなえないとダメだと思うのですが、
フェードアウトするためにバッファをロックするタイミングがわからなかったりします。

>>268
①SoundMAX Integrated Digital Audio
②Digidesign MBOX2Pro ← プロ用のDirectSound対応
です。

271:デフォルトの名無しさん
10/10/07 16:05:03
まずは製品の名前を聞こうぜ。

272:デフォルトの名無しさん
10/10/07 16:09:15
①SoundMAX Integrated Digital Audio
サウンドカードとしては最悪に分類される製品。
音が出るだけありがたいと思わなければならない。

②Digidesign MBOX2Pro ← プロ用のDirectSound対応
不明

273:デフォルトの名無しさん
10/10/07 16:19:06
しつこく聞いといてこの体たらくである。

274:デフォルトの名無しさん
10/10/07 16:20:20
確かあんまり細かい間隔でボリュームを変えようとするとダメだった記憶がある
Sleep(1)が良くないんじゃね?

275:261
10/10/07 16:20:38
>>269
>ボリューム値の変動を細かくする、Sleep間隔を長くする
10秒ぐらい掛けてフェードアウトするとなめらかなのですが・・・
50ms以内にフェードアウトしたいです。

>もっとまともなタイマーを使う
Sleepには、1ms~14msのばらつきがあるのは確認しましたが、
もっとまともなタイマーを使うというのは、1msよりも短い時間で
ボリュームを変更するということを兼ねているのでしょうか。

>完全なフェードにするには1サンプル毎に減衰させる
本当はこれをやりたいのですが、どのような方法で実装すればよいのか
僕の技術力不足でわかりません。

>>272
>Digidesign MBOX2Pro
ミュージシャンがDirectSound対応のソフトシンセを使って
音を鳴らすことを前提に設計されているようです。

276:デフォルトの名無しさん
10/10/07 16:21:53
>Digidesign MBOX2Pro ← プロ用のDirectSound対応
USB接続の時点で、細かく切り替えたら駄目だろ。

277:デフォルトの名無しさん
10/10/07 16:24:49
とりあえず60FPSで1フレームごとに下げることを想定して
Sleep(16)くらいで試してくれ

278:デフォルトの名無しさん
10/10/07 16:27:30
そもそもフェードとはいえ短時間に急激に音を止めたり発生させたりすれば、
その衝撃がノイズになって当たり前なのは分かっているのか?

279:261
10/10/07 16:32:04
>>274
僕も過去にそういう経験があったような気がします。
もともと、やりたいことは、
ストリーミング再生において、「play → stop → 曲を変えてplay」のときの
stop時に発生する、ノイズを消し去ることです。

ノイズを消し去る方法をインターネットで調べているうちに下記の方法を知りました。
----
セカンダリバッファを2つ用意して
1個目 -- 曲のplay → stop → 曲を変えてplay
2個目 -- 無音の音をずっと流す。
----
実装しましたが、stop時のノイズは消えませんでした。

>>276
IEEE1394仕様です。

>>277
了解しました。
Sleep(16)あたりで試してみます。

>>278
あまりわかっていません。
どこかのサイトで50msでフェードアウトするとstopノイズが消えると見かけたので
50msを目標にしています。

280:261
10/10/07 16:33:29
>「Windows プロフェッショナルゲームプログラミング」という本からの引用ですが、
>このバグの対処法として、セカンダリバッファの停止時に、
>50msくらいでフェードアウトさせると良い、とあります。
というのを見かけました・・・

281:デフォルトの名無しさん
10/10/07 16:34:30
50msでファードアウトって・・・

5段階くらいのフェードアウトで十分だと思う

282:デフォルトの名無しさん
10/10/07 16:41:22
それって50msでフェードアウトじゃなくて
50ms間隔でフェードアウトの間違いなんじゃ

283:デフォルトの名無しさん
10/10/07 16:59:53
俺の持ってる本じゃこういう表記になってるな。
> 徐々に(50msぐらいで)フェードアウト


284:デフォルトの名無しさん
10/10/07 17:05:05
そんな本は窓から投げ捨てた方がいいんじゃないか?

285:デフォルトの名無しさん
10/10/07 17:06:01
その文だと50msってのが間隔なのか総時間なのかどっちとも取れるような

286:デフォルトの名無しさん
10/10/07 17:09:45
ここって何でこんなに低レベルなの?
二度とこないよ。

287:デフォルトの名無しさん
10/10/07 17:11:28
はい、おつかれさん

288:デフォルトの名無しさん
10/10/07 17:17:22
無音の音を流し続けるって解決方法は別の話なんだっけ?

289:デフォルトの名無しさん
10/10/07 17:33:30
Stopノイズが発生するのは
DirectSoundって言うよりWDMサウンドデバイスのバグでしょ?

290:デフォルトの名無しさん
10/10/07 17:38:42
>>286
さようならノシ

291:261
10/10/07 19:58:34
改良したつもり・・・ ジョリってノイズが鳴る。

  LONG v;
  float x;

  for(x=0.0f; x<100.f; x+=2.0f)
  {
    v = (LONG)(x > 99.99f ? -10000 : -100.0f * log(100.0f / (100.0f - x)) / log(2.0f));
    pDSData->SetVolume(v);
    Sleep(1);
  }
  pDSData->Stop();

292:デフォルトの名無しさん
10/10/07 20:08:34
sleepが1mscのままじゃん

293:デフォルトの名無しさん
10/10/07 20:20:28
ストップノイズが出るのと
変更間隔が短すぎてノイズが出るのは別問題

294:デフォルトの名無しさん
10/10/07 21:29:18
50msなんて極小の時間の中でリニアに変化させたって人間には知覚できん
x+=20.0fにしてSleep(10)くらいにしとけ

295:デフォルトの名無しさん
10/10/07 23:07:16
Core2のWinXPの話だが、Sleepは10以下を設定しても10より小さくならないからな。

296:デフォルトの名無しさん
10/10/07 23:44:36
>>295
timeBeginPeriod()で精度上げれるよ。
今はMSDNライブラリにも明記されてる。
URLリンク(msdn.microsoft.com)(VS.85).aspx

297:デフォルトの名無しさん
10/10/07 23:48:32
10msってかOSのタイマー割り込みの精度による
Sleepから復帰させるスケジューラーがこの割り込み分解能より短い時間で仕事できないから
10msだったり16msだったりまちまち

timeBeginPeriod(1);
を呼べば精度の低いSleepでは限界があるものの1msに近づけることはできる


ところでtimeBeginPeriodを呼んでる臭いアプリ(WindowsMediaPlayerとか)を同時に立ち上げとくと
いきなりぬるぬる動き出すアプリあるよねw
そのプログラム内のみの変更じゃなくて
OS自体のタイマー割り込みに対する変更だから起動してる全てのアプリに影響があるので注意

298:261
10/10/07 23:57:37
>>293>>294
>ストップノイズが出るの
無音のwavファイルを再生中にストップしてもノイズが出なかったので、
ストップノイズの問題は発生してないようです。

>変更間隔が短すぎてノイズが出るの
>>294に教えていただいた値にしたいと思います。
しかし、最大の疑問は、
『v = x > 99.99f ? -10000 : -100.0f * log(100.0f / (100.0f - x)) / log(2.0f);』
の式が本当にあっているか、とても怪しいです。
上記の式では、音は多少小さくなりますが、きちんと無音までフェードアウトしているようには
聞こえないからです。
ちなみにこのサイトに情報が載っていました。
URLリンク(www.hgw-a.info)
申し訳ありませんが、音の世界に詳しい人に上記の式を検証していただけると幸いです。

>>295
PentiumMのWinXPの場合、Sleep(1)は、timeGetTimeの精度を1msに上げて
測定したところ、ほとんどが1~2ms、ばらつきがあり、最大が14msでした。
>>295の結果は酷く精度が悪いですね。僕の持っているマシンがたまたま精度がいいだけかも。

299:261
10/10/08 00:01:27
>>296
その方法で精度を上げています。

>>297
>ところでtimeBeginPeriodを呼んでる臭いアプリ(WindowsMediaPlayerとか)を
>同時に立ち上げとくといきなりぬるぬる動き出すアプリあるよねw
興味があるので検証してみたいと思います。

300:デフォルトの名無しさん
10/10/08 01:12:12
結局、ノイズ自体を出さないようにすることはもうできる状態なの?

301:デフォルトの名無しさん
10/10/08 01:12:49
>>298
とりあえず今回に限ってはその式を適用させる意味はないよ
50msのフェードはユーザーに聞かせるための目的じゃないから普通に線形にボリュームを下げていいかと


一応書いとくと

「-100.0f」 * log(100.0f / (100.0f - x)) / log(2.0f);
↑の-100.0fがボリューム(x)が半分(50)の時の値になる
そこに書いてあることが正しくて
10db(10%)下がった時に半分に聞こえるとするなら
DSBVOLUME_MINの10%である-1000.0fじゃないとおかしい

302:デフォルトの名無しさん
10/10/08 01:24:28
>>298
人のソースを意味も分からずコピペして
「怪しいです」「検証してください」はどうかと・・・。
ソースを公開している方にも失礼ですよ。明らかに間違っているならともかく。

x > 99.99f のときに -10000 (-10000が無音と仮定) になるんだから、
式が間違ってるわけではないでしょう。
検証するとすれば、

DSBVOLUME_MIN(無音) が本当に -10000 かどうか
x > 99.99f になるルートがあるか

といった部分だと思う。
>>291のソースでは、x =98 でループを抜けてしまう(xが100にならない)から
無音にならないのでは?


303:デフォルトの名無しさん
10/10/08 02:12:17
>>298
あと>>261>>291だと、時間が基準になってないから
思ったようなきれいなカーブ/線を描かないと思う。

設定するボリュームは、経過時間/フェード時間 を基準にするべき。

double total, fadetime;
clock_t start, end;

total = 0;
fadetime = 2.0f; //フェード時間(秒)
while (total < fadetime)
{
    start = clock();

    pDSData->SetVolume(DSBVOLUME_MIN * total / fadetime);
    Sleep(1);

    end = clock();
    total += (double)(end - start) / CLOCKS_PER_SEC;
}
pDSData->SetVolume(DSBVOLUME_MIN)

こんな感じ?Volume計算式とかSleepの値は調整してね。
環境なくてちゃんと試してないけどご容赦を。

304:デフォルトの名無しさん
10/10/08 02:40:46
>>303
いや、時間を基準とか関係無しに
線形にデジベルを下げると
音の性質上急速にボリュームが下がってしまうという話だから
言ってることは正しいが今は関係ない

組み合わせて
pDSData->SetVolume(-1000.0f*log(1.0f-total/fadetime)/log(0.5f));
とするなら有りだと思うが

305:デフォルトの名無しさん
10/10/08 02:41:38
Direct3DのPresentメソッドが -2005530516って素敵な数を返すんですが、これって何の
エラーですか?どうやらClearなどは成功していて、この関数だけが失敗しているようなんですが

306:デフォルトの名無しさん
10/10/08 02:53:06
>>305

HRESULT: 0x8876086c (2289436780)
Name: D3DERR_INVALIDCALL
Description: Invalid call
Severity code: Failed
Facility Code: FACILITY_D3D (2166)
Error Code: 0x086c (2156)

呼び出しが無効
引数が不正か
IDirect3DDevice9::Presentの場合
BeginScene ~ EndScene のペア間で呼び出されると、失敗し、D3DERR_INVALIDCALL を返す


参考までに教えとくと
SDKインストール時に一緒に入ってくる
DirectX Utilitiesのなかに
DirectX Error Lookupというツールが入ってる
16進ならHex、今回のように10進ならDecimalにチェックいれてLookUpでエラーコードを確認できる

307:デフォルトの名無しさん
10/10/08 03:03:54
DirectX エラー処理ユーティリティ ライブラリ
URLリンク(msdn.microsoft.com)(v=VS.85).aspx

失敗したときに原因がすぐ分かるようにしといたほうがいいよ

308:デフォルトの名無しさん
10/10/08 03:17:31
>>306
>>307
ありがとうございます。BeginScene~EndScene間で呼んじゃってました。
エラー処理って大事ですね、今度から使うようにします

309:デフォルトの名無しさん
10/10/08 08:18:21
>>307
こんな便利なのあったのか
半年間知らずにdirectXやってた

310:261
10/10/08 16:46:48
皆様ご指摘ありがとうございました。
>>303>>304のソースを、そのまま使わせていただきましたが、
SetVolume命令を使うとSleepを何ミリ秒にしようが、
ノイズが乗る仕様だと諦めました。
『fadetime = 0.3f; //フェード時間(秒)』にて実装しました。

>>303
ソースを動く状態で載せていただき、大変感謝しております。

>>304
ご指摘ありがとうございます。
>>303の方法とマージさせていただきました。

311:デフォルトの名無しさん
10/10/08 18:40:06
フォームアプリにdirectxって組み込める?

312:デフォルトの名無しさん
10/10/08 19:25:26
できる

313:デフォルトの名無しさん
10/10/08 20:21:24
そもそもフォームアプリって何?
ダイアログベースのアプリのこと?
CLIで作ったWindowsフォームアプリケーションのこと?

314:デフォルトの名無しさん
10/10/08 20:31:35
>>313
すいません、説明不足でした。
Windowsフォームアプリケーションのことです。
普通にcppファイルに書き込めば良いのでしょうか?

315:デフォルトの名無しさん
10/10/08 21:34:52
どっかにCLIでDirectXの動かす解説のあるサイトがあったはず
ぐぐれ

316:261
10/10/08 23:47:56
話題を引きずって申し訳ないのですが、DirectSoundのSetVolumeによるフェードアウトの件、
CPU:atom330 OS:Win7で試してみたところ、ノイズはまったく乗りませんでした。
Win7ってリアルタイム処理が強化されているのかなって思いました。

当初の目的は
①リソースの状態になったwavファイルをストリーミングで再生する。
②停止する。
だけだったのですが、曲を変えるときにノイズが乗るため、
③フェードアウトする
という処理を付け加えました。

後になって思ったのですが、①②③の機能は、DirectMusicでも、できたのではないかと思います。
しかも、DirectMusicだったら、フェードアウトを意識せずに曲を変更してもノイズは乗らなかった
かも知れません。
DirectX9関係の本を何冊か読んだのですが、DirectMusicについては紹介されていない本もあり、
DirectSoundによるストリーミング再生が紹介されているものがほとんどでした。
DirectMusicの命令を知らないのですが、DirectSoundの上で動いてそうなので、
やはり、音量をいじってフェードアウトする場合は、同様にノイズが乗ったのかも知れません。

また、質問で申し訳ないのですが、DirectMusicで①②を実装されている人はいますでしょうか。
もし、DirectMusicでフェードアウト時にノイズが乗らなかったら、DirectMusicで作り直すことも、
考えています。なお、DirectMusicを使った場合、OSの互換性の問題など発生しませんでしょうか。

よろしくお願いします。

317:デフォルトの名無しさん
10/10/09 00:13:15
自分も丁度曲チェンジの時ノイズが乗ってるって友達に指摘されたから聞きたいとこでした。

318:デフォルトの名無しさん
10/10/09 02:09:27
IDirectMusicAudioPath8::SetVolumeは、まんまフェードを作れる模様。
ただどういう実装でどの程度の精度があるのかは知らない。
ただDirectMusic自体が廃止される方向なのは周知の通り。

DirectSoundの話に戻ると、
Sleepでタイミングを作ってSetVolumeする方法は運任せすぎる。
せめてIDirectSoundBuffer8::GetCurrentPositionとかIDirectSoundNotify8でタイミングを作るべき。
ただDirectSound自体もVista以降はWASAPI上で動いてるから、期待した精度が出る保証はない。

確実にフェードを作るには、既に出ているように、バッファ内のサンプル値を直接いじるしかない。


なんつって

319:デフォルトの名無しさん
10/10/09 07:17:17
>>316
リアルタイム処理云々は無関係。
いい加減な間違った情報を書き込む前に、WindowsVista以降でDirectSoundのデバイスドライバがどういう扱いになったのか調べろ。

320:デフォルトの名無しさん
10/10/09 08:21:05
>>319
最近のOSのサウンド事情っぽい記事読んできたけど混乱してるなぁw
エミュレーション機能があるならこのままDirectSoundがいいんじゃねぇかと思ったけど
使っただけでエラーでたって報告あるのかよ
でも、それだと以前のゲームが動かないからそれは修正するハメになると思うけどね

俺等はとりあえずエミュにまかせてこのまま様子見か?
なんかいま色々動くのは損な気がする

321:デフォルトの名無しさん
10/10/09 13:10:03
DirectX10使ってるんですが
CreateTextureとかで作ったリソースについて
デバイス解放前に全て開放されているかどうかチェックしたいのですが
そういう機能ってSDK側では用意されてますか?

322:デフォルトの名無しさん
10/10/09 13:58:48
自分で管理するしかない

323:デフォルトの名無しさん
10/10/09 14:42:10
SetTextureStageStateを使わなくてもピクセルシェーダーでテクスチャブレンディングできるとおもうのですが
なぜ存在するのでしょうか

324:デフォルトの名無しさん
10/10/09 14:45:42
固定機能パイプライン

325:デフォルトの名無しさん
10/10/09 14:45:46
>>323
固定シェーダの名残みたいなもんじゃねーの?

326:デフォルトの名無しさん
10/10/09 14:48:41
DirectX10以降で消滅

327:デフォルトの名無しさん
10/10/09 15:06:52
どうも

328:デフォルトの名無しさん
10/10/09 15:51:28
頭の悪い人達一覧
URLリンク(www.google.co.jp)

329:デフォルトの名無しさん
10/10/09 16:02:06
そういや11のテッセレーターは固定機能シェーダーなんだよね?
シェーダー側に記述するんじゃなくて
デバイスに対して設定するとかそんな感じなの?

330:デフォルトの名無しさん
10/10/09 16:34:30
Direct3D11では描画に関する操作は、デバイスから一切が切り離されているが、
いったい何を言ってるんだ?

331:デフォルトの名無しさん
10/10/09 21:21:06
>>328
バカですね

332:デフォルトの名無しさん
10/10/09 21:50:10
お前ら頭よすぎなんだよ。ちくしょう。

333:デフォルトの名無しさん
10/10/09 23:28:18
>>322
どうもです
うーん独自レイヤー作るのだるいな・・・

334:デフォルトの名無しさん
10/10/09 23:39:46
そもそも開放し忘れが起きるかもしれないような設計がおかしい
それとも何か特殊なタイミングでチェックしたいわけ?

335:デフォルトの名無しさん
10/10/10 02:53:14
質問です。
Direct3Dで読み込んだ256色bmpの
パレットの操作はどうすればいいんでしょうか?

現状
D3DXCreateTextureFromFileExでテクスチャを読み込み、
PALETTEENTRYの配列にパレットの値の取得及び、画面へ描画も出来ています。
※パレットの値も正確に取れています





336:335
10/10/10 03:00:37
追記スマソ。
Direct3Dのバージョンは9です。

337:デフォルトの名無しさん
10/10/10 03:07:59
>>335
無理
実際に作られたテクスチャのフォーマットを見ればわかると思うけど
現在普及してるビデオチップじゃ256色以下のパレットテクスチャを作ることはできない
PALETTEENTRYには読み取った時の色情報が書き込まれるだけで
それをどうこうしてパレットアニメーションとかはできない

シェーダーで似たようなことはできるかもしれないけど
素直に画像で用意した方が早いと思われ

338:デフォルトの名無しさん
10/10/10 10:28:05
確かにD3Dだとスライムベスすら
簡単に表示できない・・

339:デフォルトの名無しさん
10/10/10 11:34:42
昔あったアルファ値と普通の画像を2枚用意して合成して透かすのってできる?
検索しても見つからないし困ってるんだよ

340:デフォルトの名無しさん
10/10/10 12:42:51
>>339
どういう意図でアルファ値と画像を分離したいわけ?

単に抜きがやりたいだけなら最初からアルファチャンネル付の画像フォーマットを使えばいい
アルファ部分を動的に変化させたいとかなら
シェーダーを使うかテクスチャブレンドで対応できる

341:デフォルトの名無しさん
10/10/10 13:37:28
>>337,338
回答ありがとうございます。
素直に画像用意します。

ただ、1つ疑問なのはギルティギアイスカ(PC/PS2版共に)はゲーム中に
カラーエディットが出来る仕様になっていますが、
あれは337の言うようにシェーダーで行っているんでしょうか?







342:デフォルトの名無しさん
10/10/10 13:44:11
聞きたいのはPC版の方なので、PS2の方はスルーして下さい。
スマソorz

343:261
10/10/10 15:22:34
>>318
使用する関数を教えていただきありがとうございます。
なんとかフェードアウトを実装することができました。

①GetCurrentPositionにて再生カーソルを取得する
②再生カーソル+60ミリ秒の位置からバッファをロックする
③100ミリ秒のフェードアウトをさせる
 (バッファの中のサンプル値をフェードアウトした値に書き直す)
④フェードアウト後の100ミリ秒のバッファを0(無音)に書き直す
⑤バッファのアンロック
⑥Sleep(60 + 100) ⇒ ②+③の時間
⑦再生のStop命令

手順は上記の通りとなります。、
②は強引なような気がしますが、こういう方法をとるのが
一般的なのだろうかと思いました。
③は、音楽ソフトで波形をフェードアウトさせたとき視覚的に、
直線でサンプル値が0に向かっていたのでlogを使いませんでした。

とりあえず、問題はなさそうに動いています。
どうもありがとうございました。

344:デフォルトの名無しさん
10/10/10 16:07:12
>>341
画像ファイルから直接テクスチャを作ってるんじゃなくて
インデックスデータとパレットデータを使って
生成した空テクスチャに色情報を書き込んでるんじゃないの?
動的に変化とかじゃなくて.palの上書きとかでしょ?

345:デフォルトの名無しさん
10/10/10 18:10:46
ピクセルシェーダを使って、画像を二枚用意して片方をテーブルデータとして使えばパレット的なことは出来るけど、
そこまでして何故パレットが必要なのか理由がさっぱり分からない。

346:デフォルトの名無しさん
10/10/10 18:20:33
10年前からきたんじゃないの?

347:デフォルトの名無しさん
10/10/10 18:35:32
>>344
>>動的に変化とかじゃなくて.palの上書き
俺がやりたいのはそれです。
PC版のGGイスカやGGXX#REには外部コンフィグには
「パレットエフェクト」って設定項目があるのでD3Dで出来るのかと
思ったんです。

>>345
カラーエディット的なことをやりたいんです。
それこそゲーム中にガンガンいじる気はないんですが、
プレイヤーが設定したカラーを反映したいんです。





348:デフォルトの名無しさん
10/10/10 18:39:40
それをやるのにパレットにする必要性が全くないんだが、
何故パレット云々が出てくるんだ?

349:デフォルトの名無しさん
10/10/10 19:15:04
読み取り時にパレット情報を使ってるだけでパレット操作をしてるわけではないな
普通にテクスチャをロックして書き込んでるだけでしょ

350:デフォルトの名無しさん
10/10/11 03:07:22
DirectX9.0cなんだけど、
デバイスを作成した後 IDirect3DDevice9::GetBackBuffer() でバックバッファを一度だけ取得して
そのインターフェイスをずっと保持して使いまわすのは変?

デバイスロストとかはちゃんと処理するとして

351:デフォルトの名無しさん
10/10/11 08:47:30
好きにすればいいよ。
いちいち聞くことじゃない。

352:デフォルトの名無しさん
10/10/11 11:50:00
スワップチェーンとの兼ね合いを考えると
毎フレームインデックス0のバックバッファを取得する方が
自然を思うな。
つーか、普通レンダーターゲットを使うよな。
バックバッファ直接描画ならD3D使う意味無いし。

353:デフォルトの名無しさん
10/10/11 19:44:23
シェーダー使って描画する際、2D描画の時は皆さんどうしてますか?

シェーダーの時は変換済み座標って使えるのしょうか?

初心者なのでお手柔らかにお願いします。

今まで固定機能パイプラインでやってきました。
そのときは変換済み座標を使ってました。
それをそっくりそのままシェーダーでの描画に変えたいのです。
すいません。

354:デフォルトの名無しさん
10/10/11 19:48:35
シェーダーで何もしなけりゃいいだろwwwwwwwwwww

355:デフォルトの名無しさん
10/10/11 20:10:27
シェーダーでやりたいのです。
頂点変換済み座標ってシェーダーでは使えないんですか?

356:デフォルトの名無しさん
10/10/11 20:13:24
とりあえず試してみれば?

357:デフォルトの名無しさん
10/10/11 20:26:07
>>355
頂点シェーダで出力する頂点は
-1 < x < 1
-1 < y < 1
0 < z < 1
で、たとえば(-1,1,-)の頂点が画面左上にくる
同様に(1,-1,-)が右下にくる
この考え方でとりあえず3角形を描画してみたらどうだろう

358:デフォルトの名無しさん
10/10/11 20:30:31
ありがとう。本当に。
やってみます。

359:デフォルトの名無しさん
10/10/11 20:54:47
あの、シェーダーで描画するときの話です。
移動行列や回転、拡大行列等の行列の計算についてお伺いしたいです。

これらの計算もCPU側で行わずにシェーダー側で行っていますか?

そのほうがはやいですか?

360:デフォルトの名無しさん
10/10/11 21:03:41
まずは試せ。
その結果に疑問があるのならそれを聞けばいい。

361:デフォルトの名無しさん
10/10/11 21:06:42
ごめんなしゃい

362:デフォルトの名無しさん
10/10/11 21:17:43
シーンによると思うけどね

363:デフォルトの名無しさん
10/10/11 22:50:34
>>359
行列を作るのはCPU
適用するのはGPU
頂点トランスフォームは、GPUがその能力を発揮出来る
数少ない機会だからな、やらせなきゃ損

364:デフォルトの名無しさん
10/10/11 22:57:16
カリカリに描画命令数の最適化をしない限り
CPU時間は余りまくりなんだからどっちにやらせてもトータルは変わらんよ

365:デフォルトの名無しさん
10/10/11 22:59:44
>>363みたいな間違った認識をするから自分で試すべき何だろうね。

まず頂点シェーダをGPUでやらないビデオカードがあるのが一点。
GPUとCPUの性能バランスが悪ければ、CPUにやらせた方がパフォーマンスが高いことがあるのが二点。

つまり速いかどうかは環境依存。

366:デフォルトの名無しさん
10/10/11 23:15:49
>>365
で、レアケース持ち出して
「いろんなパターンがあるからわかりません」が
正しい認識だって?
笑える


367:デフォルトの名無しさん
10/10/11 23:17:31
確かにそこら中に存在するIntelのオンボードがレアケースだと言う認識は笑える。

368:デフォルトの名無しさん
10/10/11 23:31:49
DrawPrimitiveを連発してるようなアプリなら普通にCPUにやらせた方が速いんじゃね?

369:デフォルトの名無しさん
10/10/12 06:39:41
まあ、そっからの議論は実測値が予想と違うときのみすればいい話であって
いま、色々考えてみるのははっきりいって無駄

信じられるのは実測値のみ

この考え方は徹底しておかないといつまでも無駄なことをしたり
おかしな発言を繰り返したりと現場を混乱させるばかりでちっとも開発は進まないとかいう状況になる

370:デフォルトの名無しさん
10/10/12 08:54:44
Directxで何も描画しないのに、FPSが62ぐらいしかでないんだが、
内部で60ぐらいに制御するようにコード組まれてるの?

本当にbeginsceneとendsceneぐらいしかしてないんだが。

371:デフォルトの名無しさん
10/10/12 08:56:48
VSYNC

372:デフォルトの名無しさん
10/10/12 09:03:19
D3DPRESENT_INTERVAL_ONE
D3DPRESENT_INTERVAL_IMMEDIATE

373:デフォルトの名無しさん
10/10/12 09:18:54
ありがとうございます!
oneにすると自動的にリフレッシュレートを超えないように制限されてしまうんですね!

環境に依存しないで、FPSを制御するにはIMMEDIATEを指定して、
自分でFPS制御を行わないとぴったり60FPSにはならないんですね!

めんどくさかったらONEに設定すれば、勝手にリフレッシュレートぐらいの
FPSに制御してくれるというわけですね。

でも環境によって、FPSが変わるとゲームにならないので、前者の方法が良いですね!
知らなかったら、環境によってFPSが変化してしまうところでした。
本当にありがとうございました!

374:デフォルトの名無しさん
10/10/12 10:50:04
DIRECTXってなんで座標指定するときにFLOAT型なんでしょう?

画面に描画されるときの最小単位はピクセルなんですよね?

375:デフォルトの名無しさん
10/10/12 10:59:13
ドットバイドットで表示するなんてめったに無いわけで

376:デフォルトの名無しさん
10/10/12 11:17:07
シェーダープログラムのコンパイル済みファイルをエクセルで全パターン自動生成することを思いついた

377:デフォルトの名無しさん
10/10/12 11:24:54
>>371
>DIRECTXってなんで座標指定するときにFLOAT型なんでしょう?
そもそもそんな規則はない

378:デフォルトの名無しさん
10/10/12 12:00:42
たとえば(1.5F,1.5F)のところに描画しても、切捨てられて
(1,1)のところに描画されるんですよね?

考え方自体破綻してますか?

379:デフォルトの名無しさん
10/10/12 12:01:40
破綻している。

380:デフォルトの名無しさん
10/10/12 12:11:59
そもそもDirectXとDirect3Dは同義ではないので、
>DIRECTXってなんで座標指定するときにFLOAT型なんでしょう?
は意味不明。
Direct3Dのことだったとしても整数型の入力はサポートされているし、
Direct3D10以降なら整数値のハードウエアサポートもある。
またラスター化されるときにどうなるかも設定次第。

381:デフォルトの名無しさん
10/10/12 15:01:36
もしかしてシェーダーで、行列をセットするとき
beginPass,Endpassの間でセットしても反映されない?

382:デフォルトの名無しさん
10/10/12 15:19:41
>>381

>ID3DXEffect::BeginPass/ID3DXEffect::EndPass 対応ペア内部にある Effect::Setx メソッドのいずれかを使用して、
>アプリケーションがエフェクト ステートを変化させる場合、アプリケーションは ID3DXEffect::CommitChanges を呼び出して、
>ステート変化のあるデバイスに更新を設定する必要があります。
>ステート変化が ID3DXEffect::BeginPass および ID3DXEffect::EndPass 対応ペア内で発生していない場合、
>ID3DXEffect::CommitChanges を呼び出す必要はありません。

383:デフォルトの名無しさん
10/10/12 15:21:03
>>382
ありがとう!

384:デフォルトの名無しさん
10/10/12 17:58:27
ID3DXSPRITEでやってたときは画像の範囲していの描画はうまくできていたんですが、
シェーダーを使ったときの範囲指定描画の方法がわかりません。

頂点バッファを毎回いじればできそうですが、いじりたくないです。
いじらずにやる方法ないですか。

385:デフォルトの名無しさん
10/10/12 18:23:01
画像範囲指定とは、たとえばキャラ画像が8枚で一セットになった画像とかを
ちょっとずつ分割して描画したいってことです。

386:デフォルトの名無しさん
10/10/12 18:27:19
シェーダでuvを好きなように調整しろ

387:デフォルトの名無しさん
10/10/12 18:29:37
頂点バッファに全て書き込んどいて読み出し位置をずらすことで切りかえるか
サイズが一定ならシェーダーにどれだけずらすか送るだけ

388:デフォルトの名無しさん
10/10/12 18:42:07
ありがとうございます。参考にさせていただきます。

389:デフォルトの名無しさん
10/10/12 21:31:59
>>378
描画される位置は一緒でも、参照されるテクスチャ座標が変わる。

390:デフォルトの名無しさん
10/10/12 22:17:30
シェーダ万能すぎない?
なんか有るぞこれは

391:デフォルトの名無しさん
10/10/12 22:23:10
馬鹿にはそう見えるんだろうな。

392:デフォルトの名無しさん
10/10/12 22:28:25
>>387
頂点バッファに全て書き込んどく方法はやめます。
サイズは等間隔の画像になります。
どれだけずらすかを送ってその後どうするんですか?

そもそも、頂点シェーダは書けるんですけど、どういった順序で計算されてるのかわからないんです。
例えば頂点が4つあったとしたら、頂点シェーダの関数は4回実行されてるんですか?
一回ごとに渡される頂点が違うってことですか。
その辺が詳しく解説されてるサイトがあれば教えていただきたいです><

393:デフォルトの名無しさん
10/10/12 23:09:17
>>392
四隅が等しくずれるんだから順番なんて関係ない

頂点バッファには1つ分のuvを書き込んでおく
プログラム側からuvをどれくらいずらすかシェーダーに送る
シェーダーでずらす
OK?

.cpp
ID3DXEffect::SetVector ( "tex_offset", &D3DXVECTOR4(0.5f, 0.5f, 0.0f, 0.0f) ) ;


.fx
float2 tex_offset
void VertexShader(
in float4 inPos : POSITION,
in float4 inTexture : TEXCOORD0,

out float4 outPos : POSITION,
out float4 outTexture : TEXCOORD0)

outPos = mul(inPos, WorldViewProj);

outTexture = inTexture+tex_offset;// ←ずらす
}

394:デフォルトの名無しさん
10/10/12 23:17:23
>例えば頂点が4つあったとしたら、頂点シェーダの関数は4回実行されてるんですか?

その認識で正しい

395:デフォルトの名無しさん
10/10/12 23:37:10
静的な頂点バッファに書き込むとどうなるんですか?

396:デフォルトの名無しさん
10/10/12 23:38:45
パフォーマンスが落ちる

397:デフォルトの名無しさん
10/10/12 23:47:04
て言うかシェーダってなんなんですか

398:デフォルトの名無しさん
10/10/12 23:49:16
>>397
URLリンク(ja.wikipedia.org)

399:デフォルトの名無しさん
10/10/13 00:06:43
>>396
どうもありがとう

400:デフォルトの名無しさん
10/10/13 00:10:41
>>398
要するに描写の前にフィルタをかませてなんかいろいろ効果を出すってことか
まるで目の前にフィルムがあるかのような

401:デフォルトの名無しさん
10/10/13 02:48:55
そういう使い方もあるがそれだけじゃない

402:デフォルトの名無しさん
10/10/13 03:00:40
>>393
なるほど!
その手がありましたか!
すごい嬉しいです!ありがとうございました!

403:デフォルトの名無しさん
10/10/13 06:40:18
でもさ、俺も同じことやってるけど
物理的にはDrawPrimitiveUPなんかと似たようなもんだよねw
って思うんだけど違うの?

404:デフォルトの名無しさん
10/10/13 08:25:04
>>403
は?じゃあ具体的に説明してみろ

405:デフォルトの名無しさん
10/10/13 16:32:36
シェーダーを設定しなおすと前に設定していたシェーダー定数の値はクリアされてしまうのでしょうか?

406:デフォルトの名無しさん
10/10/13 16:39:46
>>405
テストコードかけばいっぱつじゃない?
まあ環境依存のことを考えれば未初期化で使うなんてことは考えないはず。

407:デフォルトの名無しさん
10/10/13 16:56:08
>>406
簡単なテストでしてみました。レジスタには同じ値が入っているみたいです。

408:デフォルトの名無しさん
10/10/13 17:55:21
>>404
1フレ当たりにグラボに送る情報量がさほど変わらないじゃん

例えばこんな風にまるで意味がない感じにしても頂点バッファに触らないってのはそれだけでメリットあるんかな?
ってことが言いたいわけよ
.cpp
ID3DXEffect::SetArray的な何か(名前忘れたw) ( "pos", pos4) ;//頂点4つ分
ID3DXEffect::SetVector ( "tex_offset", &D3DXVECTOR4(0.5f, 0.5f, 0.0f, 0.0f) ) ;

.fx
float4 pos[4];
float2 tex_offset;
void VertexShader(
in float4 inTexture : TEXCOORD0,
in int inIndex

out float4 outPos : POSITION,
out float4 outTexture : TEXCOORD0)

outPos = pos[inIndex];
outTexture = inTexture+tex_offset;
}

409:デフォルトの名無しさん
10/10/13 18:23:27
何が言いたいのかまるで伝わってこない

410:デフォルトの名無しさん
10/10/13 18:47:13
>>409
だから>>408の例って頂点バッファ自体が無意味じゃん

411:デフォルトの名無しさん
10/10/13 18:57:25
頂点に座標を含むかどうかの違い?

412:デフォルトの名無しさん
10/10/13 19:02:26
>>411
いや、SetVectorなどの関数から描画に必要なデータをすべて渡している状態(でも頂点バッファにはアクセスせず)
DrawPrimitiveUPで描画するのとどっちが速いの?的な話

この2つとも1フレ当たりにグラボに渡すデータ量はほとんど変わらないよね?
大して変わらないことしてるのか、大きな差があるのか?ってとこ

413:デフォルトの名無しさん
10/10/13 19:17:11
何か勘違いしてるみたいだがグラボに送る情報量とか関係ない
頂点バッファは一度のDrawprimitiveで数千ポリを同時に描画するときに真価を発揮する
そもそも1矩形を1回のDrawprimitiveで描くような仕様ならUP系とコスト的には大差ない

UP系は使ってもいいけど使うときは
1000~2000ポリくらいをバッファに溜め込んで一度のDrawprimitiveUPで描画したほうが効率は良い
それ以上になるとシステムメモリからの頂点情報の転送がボトルネックになって
頂点バッファを使った時ほどのパフォーマンスが出せなくなる

414:デフォルトの名無しさん
10/10/13 19:41:01
ちょっとまってください。
DrawPrimitiveで数千ポリを一気に描画する方法があるんですか!?

メッシュとかの話じゃなくて?

415:デフォルトの名無しさん
10/10/13 19:55:54
すいません。
まちがえました。。。

416:デフォルトの名無しさん
10/10/13 20:19:16
いえ、間違えてません。↑は別人です

417:デフォルトの名無しさん
10/10/13 20:31:16
ネタなのかマジボケなのか判断に困る

418:デフォルトの名無しさん
10/10/13 21:02:08
そこらへんの詳しい情報ってデベロッパーにしか公開されないんですか?


419:デフォルトの名無しさん
10/10/13 21:05:12
>>418バカは死ね

420:デフォルトの名無しさん
10/10/13 21:21:24
バカだからって死ねって言うのは差別につながると思うんです
そもそもバカというのは基準が決まっていないじゃないですか
何が出来なかったらバカなんですか?それじゃあまだ何も出来ない幼児赤子はバカなんですか?

421:デフォルトの名無しさん
10/10/13 21:21:43
>>419
お前みたいなクズこそ死ね


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