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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
※回答する人も、質問する人も必ず読んでください

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

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

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

前スレ
【C++】 DirectX初心者質問スレ Part30 【C】
http://hibari.2ch.net/test/read.cgi/tech/1278214135/
2デフォルトの名無しさん:2010/09/30(木) 22:10:17
>>1
乙でござる
3デフォルトの名無しさん:2010/09/30(木) 22:12:53
http://iup.2ch-library.com/i/i0161279-1285852117.jpg
作りますた
同じ感じでやったのに一旦PNGにした方が明らかに綺麗になりますた
合格レベルですか?
4デフォルトの名無しさん:2010/09/30(木) 22:16:25
BMPで上げんな
5デフォルトの名無しさん:2010/09/30(木) 22:21:45
>>3
もうちょっと綺麗にならんのか
つか元の画像はどんななんだ?
6デフォルトの名無しさん:2010/09/30(木) 22:30:23
>>1
7デフォルトの名無しさん:2010/09/30(木) 22:41:19
>>5
元の画像は
http://www.yamagishi.or.jp/furusato/wp-content/uploads/2009/06/2009-06-27-e7b791e9a48c-017-900x598.jpgこれの手前と
http://img.pics.livedoor.com/007/6/b/6b9fd34161e46eda86c6-LL.jpglこれの真ん中の左でつ
それをフォトショで切り抜いて回転させたりして作りました
http://pc.gban.jp/img/23291.jpg
http://pc.gban.jp/img/23293.png
できたのがこれで2階調補正して白黒反転させてToolでddsにしました
8デフォルトの名無しさん:2010/09/30(木) 22:49:49
TGAはフォトショップで普通に出力できた記憶がががが。ぷらぐいんだったのかねぇ・・・。
PNGってダイレクトによめたっけ?読めればアルファも保存できるんだが。
9デフォルトの名無しさん:2010/09/30(木) 22:57:58
>>8
TGAは出力できます
PNGは、最初JPGで保存してたのを名前を変えてPNGとしたらエラーになったのですが
JPGで開いてPNGでインターレース付きで保存したら透過付きで読み込めました
SDKのサンプルではよくDDSが使われてるのでDDSにしたいのですが
TooLで合成しようがフォトショで出力しようが同じものができますよね?
10デフォルトの名無しさん:2010/09/30(木) 23:02:24
>>9
何がそれを保障するかはわからんけど、
一応どっちも製品なんだから同じかどうかは知らないが、途方も無くおかしな方式は採用しないだろ。

一つの見方だが、
フォトショップの内部形式から他のステップを踏むことなくダイレクトにPNGなりDDSになったほうが品質の面では良くないかい?
11デフォルトの名無しさん:2010/09/30(木) 23:08:01
>>10
なるほど!
ようつべの動画を何回も上げて落とすを繰り返すと劣化するって動画がありましたがそんな感じですね
TGAかDDSのプラグインを探すようにします
12デフォルトの名無しさん:2010/09/30(木) 23:15:15
バッカ
お前、仕組み理解しろよ
「アンチエイリアス」でググレよ

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

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

という話は置いといて
元素材をちゃんと作れ、そしてαチャンネルについて勉強しろ
2階調ににした白と黒の部分が何を意味してるのか理解してるのか?
14デフォルトの名無しさん:2010/09/30(木) 23:41:13
えーソートなんてすぐじゃんー
15デフォルトの名無しさん:2010/09/30(木) 23:51:47
>>14
ビルボードならいいけど
よくRPGとかであるように十字に組み合わせて配置したいときに面倒だろ?
16デフォルトの名無しさん:2010/09/30(木) 23:58:46
>>11
フォトショのDDSプラグインはNVIDIAが配布してんぞ
17デフォルトの名無しさん:2010/10/01(金) 00:00:01
>>12
ありがとうございます
アルファチャネルと間違ってググってました
つまり…PNGだと自動的にアンチエイリアスになるってことですか…?
18デフォルトの名無しさん:2010/10/01(金) 00:01:48
そういや昔のSDKはUtilitiesのとこにフョトショDDSプラグイン入入ってたけど最新のだと無くなってるな
19デフォルトの名無しさん:2010/10/01(金) 00:08:20
>>13
すいません
アルファチャンネルについてググったのですが理解できませんでした…
背景をカットしたコピーと同一ではないのですか?
ある色を透過色としてその色をスルーするのが透過の仕組みですよね?
そしてDDSだかは透過色が始めから決まってるからその範囲を黒の部分として合成してDDSを作る…みたいなイメージでした
20デフォルトの名無しさん:2010/10/01(金) 00:14:33
>>17
なんで汚く見えるのか?
ってところから理解できたの?

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

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

の順番でしっかり覚えていかないと理解できないと思うけどな
21デフォルトの名無しさん:2010/10/01(金) 00:19:40
覚えること山積だな。
フォトショップの使い方とか、アルファブレンディングの仕組みとか、ファイルフォーマットの区別とか。
DirectXの前段階じゃね?
22デフォルトの名無しさん:2010/10/01(金) 00:24:16
>>20
ぐぐりました
1.アルファブレンド(αが0のとき、→透明
             128のとき、→半透明
             255のとき→不透明
2.アルファチャンネルの仕組み(2階調?ありえないw)→つまり、2階調にすると灰色の半透明ができないだろ!みたいなことですか…?
3.アンチエイリアスの仕組み→色のさかい目がだんだn混ざっていく?それでPNGだとアンチエイリアスになってJPGだとならないんですか?
4.アルファ画像の作り方→つまり各マスの黒から白の0〜255をα値にするってことですか…?
合ってたら理解が繋がった気がしてきた
23デフォルトの名無しさん:2010/10/01(金) 00:29:16
>>22
質問!RGBAってなんだかわっかるー??
24デフォルトの名無しさん:2010/10/01(金) 00:32:13
>>23
レッドブルーグリーンアルファの値?
アルファ…?ピクセルごとに透明度が決まってるみたいな?
25デフォルトの名無しさん:2010/10/01(金) 00:37:49
>>24
半分丸だね。
ピクセルを構成する要素で、色の3色である、赤、緑、青、に透明度の単位であるアルファチャンネルをつけたもの。
つまり、2ピクセルを合成するときにアルファチャンネルに基づいて、赤と緑と青の合成濃度が変わるということ。
それが結局透けて見えるとかガラスの表現だとかそういうほうに結びつくの。
26デフォルトの名無しさん:2010/10/01(金) 00:41:48
つまり
JPG→RBG
PNG→RBGAってこと?
フォトショで切り抜いたから端のアンチエイリアスが混ざる色が0000とかで
だからJPGだと端のコマがアンチエイリアスされず全部白に置き換わる
PNGだとアンチエイリアスされてだんだんAが0に近づくからアンチエイリアスされて見える。みたいな?
27デフォルトの名無しさん:2010/10/01(金) 00:46:20
>>22
JPEGや24bitBMPはもともとα値を保存してない(RGB)しかない
ここにグレースケール画像(0〜255段階)をα値として合成することで
ARGBのDDSとして保存するのがDirectXTextureToolのやってること
0と255の2階調なら完全な抜き絵になるし
白→黒へ徐々にグラデーションさせればアンチエイリアスになる


PNGはもともとα値を含む画像フォーマットなので
フォトショップ上でどう編集してるかにもよるけど
おそらく回転だの拡大だのしてるときにフィルターがかかって自動で縁にアンチエイリアスがかかってる
だからフォトショでPNGとして保存したものをそのまま読み込むと(DirectXTextureTool)を使わない
アンチエイリアスのかかったテクスチャが出来上がる
28デフォルトの名無しさん:2010/10/01(金) 00:53:05
>>26
半分丸だね。
JPGは別の問題があって、高圧縮の影には非可逆圧縮系の方法がさいようされてて、画像は絶対劣化する。
透明なJPGができたかは忘れた。こういう用途ではあんまり使わない。
PNGは大雑把に言えばZIPと似たような方式をとってて可逆圧縮系の方法が採用されているのと、
アルファチャンネルなどの要素も仕様に含んでいる。

PNGはアルファチャンネルが保存できるから、
そのアルファによって透過させるということは、君の言うアンチエリアスの機能も実現できるんだ。
29デフォルトの名無しさん:2010/10/01(金) 00:53:14
>>27
おおーなるほど。もう完璧にわかりました
下手すればフォトショでPNGで作っといて名前を変えるでDDSにしてもいけるんじゃないかってぐらいに理解できました
ツール要らないんじゃないかとか一瞬思ったけど、ミップマップレベルとかあるからやっぱり要るんでしょうね
30デフォルトの名無しさん:2010/10/01(金) 01:03:32
>>28
ありがとうございます
アルファ値の保存と、アルファチャンネルの保存の違いはまだよくわかりませんが
512×512ピクセルとはいえJPGの圧縮の劣化と言ってもそこまで無いでしょうし
とりあえず今は透過=PNGかGIFと覚えておきます
31デフォルトの名無しさん:2010/10/01(金) 01:06:37
あーアルファとアルファチャンネルはほとんど同意だ。
まー、がんばってくれ。GL&HF!!
32デフォルトの名無しさん:2010/10/01(金) 01:12:47
ありがとうございました!
33デフォルトの名無しさん:2010/10/01(金) 04:48:47
>>32がなんかいろいろ勘違いしたまま去っていった気がするのは俺だけだろうか・・・。
34デフォルトの名無しさん:2010/10/01(金) 07:19:17
なんで自分でプログラミングする以前の問題として、
まともなモデリングソフトを触って研究しようとしないんだろう?
どれだけ馬鹿なの?
35デフォルトの名無しさん:2010/10/01(金) 07:41:49
>>33
こんな短時間で理解するのは無理だよな
まあ、わからなかったら何回でも書き込みを読み直せばいい
そのうちできんだろw
36デフォルトの名無しさん:2010/10/01(金) 07:44:16
どこが違うんだ?
完璧に理解したつもりなんだが
37デフォルトの名無しさん:2010/10/01(金) 07:52:11
>>36
じゃあ、>>3と同じ形で出してみろよ
38デフォルトの名無しさん:2010/10/01(金) 08:40:30
>>37
何をですか?
39デフォルトの名無しさん:2010/10/01(金) 09:33:37
>>38
アルファチャンネルをちゃんと適用したものを
40デフォルトの名無しさん:2010/10/01(金) 09:51:14
>>39
すいません理解できません
どういうことですか?
具体的に何をどうしたやつを出せと言ってるのかゆってください
41デフォルトの名無しさん:2010/10/01(金) 10:20:03
ここまでのやりとりは一体なんだったのだろうか・・・?(笑)
42デフォルトの名無しさん:2010/10/01(金) 10:26:39
すべて無駄だったな
43デフォルトの名無しさん:2010/10/01(金) 10:33:10
そもそも画像ファイル自体にアンチエイリアス目的でアルファ情報を含める必要性がまったく無いんだが、
いったいこいつらは何を言っているんだ?
44デフォルトの名無しさん:2010/10/01(金) 10:43:27
>>43
淵が綺麗にならない問題はあきらめるってこと?
でも今回のレスって綺麗に貼れないか云々じゃなかったっけ?
45デフォルトの名無しさん:2010/10/01(金) 10:47:06
まあ、やり方はどうでもいいけど
>>3の汚い草を改善できなかったらいままでのやり取りはすべて無駄だな
46デフォルトの名無しさん:2010/10/01(金) 10:51:26
そもそも元データが背景の白と融合してしまっている時点で、
それを分離しなければどうにもならず、
前段階の問題なんだからアンチエイリアス云々でどうにかなる話ではない。
手作業で地道に修正するしか無い。
47デフォルトの名無しさん:2010/10/01(金) 10:57:19
話が読めねえ
>>3じゃPNGの方でも汚すぎるってこと?
48デフォルトの名無しさん:2010/10/01(金) 10:58:28
明らかに不自然だろ。
49デフォルトの名無しさん:2010/10/01(金) 10:59:18
>>46
白と融合してる部分はアルファで見えないぐらいに消しちまえばいいんじゃね?
アルファチャンネル理解して淵を綺麗にできることが今回の話を理解できたってことだと思うけどな

>>47
そういう話だっただろ
50デフォルトの名無しさん:2010/10/01(金) 11:00:45
そもそもの画像の切り取り方が下手糞とかじゃなくて?
51デフォルトの名無しさん:2010/10/01(金) 11:02:13
>>50
それもある
でも>>3の画像って2階調で処理しちゃった奴でしょ?
52デフォルトの名無しさん:2010/10/01(金) 11:41:35
>>3が汚いのは単にデータの作り方が雑なだけでしょ
2階調でも十分だと思うぞ

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

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

最高のRPGを作りたいのです。よろしくお願い致します。
55デフォルトの名無しさん:2010/10/01(金) 12:10:41
>>54
テクスチャに動画貼り付けてEND
5654:2010/10/01(金) 12:16:07
>>55
テクスチャに動画なんて貼れません。

DirectXの知識自体はあるのです。
エフェクトを表現するスキルが不足しているんです。
よろしくお願いします。
57デフォルトの名無しさん:2010/10/01(金) 12:30:00
貼れないというのが意味不明。
動画から画像を取りだして、更新が必要なフレームでテクスチャを書き換えればいいだけだよ。
5854:2010/10/01(金) 12:34:15
つまり、ある一つの画像を使っては表現できないということでしょうか?
ああいうエフェクトは最初から、一つの画像を色々プログラムで駆使して表現しているのではなく、
何枚もの画像を使って、切り換えているだけなんでしょうか?
59デフォルトの名無しさん:2010/10/01(金) 12:43:06
>>58
なんでレベル低いくせに背伸びするんだw
http://www.shader.jp/xoops/html/masafumi/directx9/DShow/dshow001.htm

動画にZ値をもたせておけば前後関係もちゃんと表現できるぞ
α情報をもたせておけば透過もできる
60デフォルトの名無しさん:2010/10/01(金) 12:50:50
でも、この動画を見る限り1枚絵だな
α値含むエフェクト画像を加算合成
全体の透明度を0.0→1.0→0.0の変化と
αテストの閾値を0→255の変化を同時進行させているように見える
61デフォルトの名無しさん:2010/10/01(金) 12:50:54
>>51
そうです
フォトショでまず自動選択ツールとか消しゴムで切り抜いて、白紙を背景にして保存して、2階調補正して透過のために白黒ファイルを作って、ツールで重ねました
jpgの時の散らばりが無くなったので結構満足してたのですがどうやるのが正解なのでしょうか?
>>52
自分の作ったPNGと違いがわかんねえ…あんまり変わらないような

それと、グラボ買ってきたから今から取り付ける
これからはトゥーンレンダリングしまくってやんよ
62デフォルトの名無しさん:2010/10/01(金) 12:55:48
>>59は前スレにいた動画エフェクト厨だなw
63デフォルトの名無しさん:2010/10/01(金) 12:56:58
本職じゃないから正確なところは知らんけど、
透明な線ポリや板ポリを発光させたり、
板ポリ+アルファ付テクスチャを発光 & フェードイン/アウトさせたりするんじゃないの?
負荷は増えるだろうけどパーティクル使っても可能だろう。

何にせよ応用思考の全く出来ない人っぽいので、ググるか大き目の本屋に行ってみる事をお勧めする。
タイトルは忘れたが、その手のエフェクトについて解説した本がある。
シェーダー関係だったかな?
64デフォルトの名無しさん:2010/10/01(金) 12:59:18
>>62
あいつはテクスチャアニメーションの代わりに使おうとしてたクズだろ
あんなのといっしょにするな
65デフォルトの名無しさん:2010/10/01(金) 13:06:38
2chで聞くだけ無駄
6654:2010/10/01(金) 13:09:06
>>59
DirectShowを使えば可能なんですね。まったく知りませんでした。
私の知識不足です。

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

>>63
ありがとうございます。
シェーダーもそこそこ扱えるので、
本の名前思い出したら、また書き込んでいただけると助かります。
67デフォルトの名無しさん:2010/10/01(金) 13:09:18
こんなにも大団円なのになんでそんなレスが
68デフォルトの名無しさん:2010/10/01(金) 13:10:42
http://www.autodesk.co.jp/adsk/servlet/pc/item?siteID=1169823&id=15138561
で体験版を落として30日使い込んで、必要最低限の知識を学べ。
いきなり0からやろうとするから、右も左も分からないんだよ。
69デフォルトの名無しさん:2010/10/01(金) 13:16:26
「本当に切ったような光」に誰か突っ込もうぜ。
台所で料理してるオカンの手元が光りまくってるのを想像してしまった。

っていうか、質問するほどのネタでもないような。
放射状に筋を描いて、ポストエフェクトでライトブルームを加えてるだけじゃない?
中心部分には円形の光を加えていそうだが。
7054:2010/10/01(金) 13:19:58
>>63
ありがとうございます。ダウンロードしてやってみます。

>>69
言い方おかしかったですねw。すみません。
なるほど。ありがとうございます。
71デフォルトの名無しさん:2010/10/01(金) 13:21:50
そういう「閃き」や「連想」のスキルがゼロの人間も世の中には少なくないんだよ
72デフォルトの名無しさん:2010/10/01(金) 13:48:02
くそっ
どうやったらDirectXマスターできるんだよ
73デフォルトの名無しさん:2010/10/01(金) 14:17:50
DirectXなんてマスターしてどうしようっていうんだ
仮になるにしてもとりあえずサンプル全部作れるようになってからそんなこと言ってるのか?
74デフォルトの名無しさん:2010/10/01(金) 14:18:32
まずはマスターの定義を明確にしろ。
75デフォルトの名無しさん:2010/10/01(金) 14:28:38
人型のモデルが動かせるようになったらマスターしたといっても
いいと思う。
76デフォルトの名無しさん:2010/10/01(金) 14:33:42
ずいぶん簡単なんだな。
77デフォルトの名無しさん:2010/10/01(金) 14:35:59
>>72
先にOpenGLでもやれ
78デフォルトの名無しさん:2010/10/01(金) 14:38:49
それよりもオススメ書籍とかないの?
79デフォルトの名無しさん:2010/10/01(金) 14:39:36
とりあえずDXライブラリ始めた
80デフォルトの名無しさん:2010/10/01(金) 15:17:04
それでもいいけど
DirectXのチュートリアルからはじめたらどうか?
虎表示するのあったじゃん
あれやるとモデルの表示がわかるからその後

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

って自分ライブラリ作っていったほうがランクアップしやすいぞ
DXライブラリの中身とかなにやってるのか読まなきゃいけないとか結構きついんじゃね?
(いや、ソースついてるのかどうかから俺は詳細知らないんだが・・・)
他の人の作ったもんだし
81デフォルトの名無しさん:2010/10/01(金) 20:24:59
なんでこんなバカばっかなの?
82デフォルトの名無しさん:2010/10/01(金) 20:53:33
じゃあ、バカじゃない意見を頼む
83デフォルトの名無しさん:2010/10/01(金) 20:56:19
ごめん質問者たちのこと(´・ω・`)
84デフォルトの名無しさん:2010/10/01(金) 20:59:00
それはこのスレが初心者用だからさ
気に入らないなら「DirectX上級者質問スレ」でも作りたまへ
85デフォルトの名無しさん:2010/10/01(金) 21:01:02
質問に答えないで茶々をいれるのは辞めて欲しい
86デフォルトの名無しさん:2010/10/01(金) 21:14:33
わざわざ小学校に来て、馬鹿にしたり説教したりしているようなもんだからな
87デフォルトの名無しさん:2010/10/01(金) 22:09:52
DirectX初心者の定義って、せいぜいDirectXのプログラミングを始めてから3ヶ月がいいところだろ。
88デフォルトの名無しさん:2010/10/01(金) 22:25:56
3ヶ月だったらアニメーションとシェーダ終わったぐらいだな
調度このスレに来てる層だろ
89デフォルトの名無しさん:2010/10/01(金) 22:34:38
え、俺は理解するのに5年ぐらいかかった
90デフォルトの名無しさん:2010/10/02(土) 00:21:36
dxdiagを見るとDirectX version 11と書いてあるのですが
グラボはオンボで、グラボのサイトを見てるとDirectX10.1対応(キッ
とか書いてあるのですがこれはどういうことなのでしょうか?
91デフォルトの名無しさん:2010/10/02(土) 00:23:14
win7だとソフトウェアエミュレーションできるんじゃなかったか
92デフォルトの名無しさん:2010/10/02(土) 00:25:06
プログラム板にもネ実補正みたいなのがあるんだな
当然か
93デフォルトの名無しさん:2010/10/02(土) 00:28:03
vistaです
94デフォルトの名無しさん:2010/10/02(土) 00:37:01
>>90
知らんがな
dxdiagじゃなくてSDKインストールフォルダの\Utilities\binフォルダにあるDXCapsViewer.exeを実行して
メニューからprint whole tree to fileを選ぶ
exeと同じフォルダにdxview.logというファイルができるのでそれを晒したら話が早いと思うよ
95デフォルトの名無しさん:2010/10/02(土) 00:46:46
デバイスの謳い文句とOSにインストールされてるDirectXのバージョンは関連ほとんどないだろ
96デフォルトの名無しさん:2010/10/02(土) 01:42:15
>>94
はやくねー
97デフォルトの名無しさん:2010/10/02(土) 07:07:35
D3DCOLOR_ARGBで(128,255,255,255)は多少薄くなるんですけど、(64,255,255,255)は完全に描写されない
なにかいかんのかね
98デフォルトの名無しさん:2010/10/02(土) 07:10:58
それだとコードを書いた人間が馬鹿だからとしか言いようがない。
99デフォルトの名無しさん:2010/10/02(土) 07:33:09
少し調べれば分かることなのに、
WARPが分かっていなくてソフトウェアエミュレーションとぼかして言ったり、
Direct3D11エミュレーション機能が無いことが分かっていなかったりで、
あるようなニュアンスで答えるような>>91って何なの?

ちなみにWARPはVistaでも使えるし、機能レベルはDirect3D10まで。
100デフォルトの名無しさん:2010/10/02(土) 08:30:02
>>97
シェーダーがおかしいとか
αテストの閾値が64以上になってるととか
101デフォルトの名無しさん:2010/10/02(土) 08:40:35
>>98
煽るだけの馬鹿はいい加減消えてください
102デフォルトの名無しさん:2010/10/02(土) 09:20:55
程度が低いよね
よくそんな姿勢で技術者やってられるなと思う
すぐに仕事なくなっちゃうし
職場でも浮いちゃうと辞めるしかなくなっちゃうぞと思う
103デフォルトの名無しさん:2010/10/02(土) 09:23:22
>>54とか前スレにも何回かでてたけど
エフェクトを難しく考えすぎなんじゃないか?

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


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

http://www5b.biglobe.ne.jp/~mya_a/dx/effect.html
104デフォルトの名無しさん:2010/10/02(土) 09:24:18
>>103
天使ちゃんマジ天使
105デフォルトの名無しさん:2010/10/02(土) 10:21:59
この程度のだったらアニメーション付きのモデルファイルを再生して終りだね
106デフォルトの名無しさん:2010/10/02(土) 10:40:24
まぁ、それ以前に初心者だと光っぽいグラフィックが描けないんだけどな
107デフォルトの名無しさん:2010/10/02(土) 10:44:12
>>105
モデルにする意味がわからない
108デフォルトの名無しさん:2010/10/02(土) 10:50:11
>>107
単純に職場のデザイナさんがアニメーション形式で作ってきてくれるってだけ
俺は画面に出すだけw
109デフォルトの名無しさん:2010/10/02(土) 11:06:04
>>103
十分よくできてると思うよ。
筋の方のテクスチャの半透明の部分をもっと増やして太くすると
ライトブルームっぽくなるかも。
110デフォルトの名無しさん:2010/10/02(土) 11:11:23
>>106
本屋に雷や炎、水しぶき、雲、煙、岩のテクスチャの描き方的な本ってあるんだぜ
俺がもってる本(photoshop デザインコレクション)が絶版状態だから似たような本を探してくればいいんじゃね?
デザイナさんもそーゆーの見て描いてたしw
111デフォルトの名無しさん:2010/10/02(土) 13:15:48
グラボ付けたらトゥーンシェーダーできたwwwwwwwwwwwwwww
これで俺も3Dゲームプログラマーの仲間入りだおwwwwwwwwwwwwwww
112デフォルトの名無しさん:2010/10/02(土) 13:31:22
>>111
スキニングできましたか?
スキニングできましたか?
113デフォルトの名無しさん:2010/10/02(土) 13:40:10
>>112
なんで2回言うんですか…
114デフォルトの名無しさん:2010/10/02(土) 13:42:05
>>113
大事なことなので2回言いました
115デフォルトの名無しさん:2010/10/02(土) 15:22:52
画像を表示させるのにZ座標を持たせる方法ってあります?
いまやってる方法だとどうも描写順に表示してしまってるようで不便でして
116115:2010/10/02(土) 15:33:57
自己解決した
117デフォルトの名無しさん:2010/10/02(土) 17:28:09
COMオブジェクトはboost::shared_ptrで管理してデストラクタでreleaseすれば問題ないですよね?
118デフォルトの名無しさん:2010/10/02(土) 19:16:34
boostならintrusive_ptrを使うといい
119デフォルトの名無しさん:2010/10/02(土) 19:33:25
ATL使えるならCComPtr使え
120デフォルトの名無しさん:2010/10/02(土) 19:38:05
ありがとうございます
効率の面でintrusive_ptr、CComPtrをつかえってことですよね?
121デフォルトの名無しさん:2010/10/02(土) 19:40:24
効率面で言えば使う必要はない
122デフォルトの名無しさん:2010/10/02(土) 22:11:09
shared_ptrとの比較の話じゃ?
余計な処理のないCComPtr一択っしょ
123デフォルトの名無しさん:2010/10/02(土) 22:24:37
ATLの要らない_com_ptr_tの事も思い出してあげてください
124デフォルトの名無しさん:2010/10/03(日) 02:44:11
>>103みたいなエフェクトテクスチャは何で描くの?フォトショ?
125デフォルトの名無しさん:2010/10/03(日) 03:34:03
gimp
126デフォルトの名無しさん:2010/10/03(日) 03:45:03
本とか読まなくても
そういうのを描く用のブラシとテクニックがあってだな
127デフォルトの名無しさん:2010/10/03(日) 03:47:02
kwsk
128デフォルトの名無しさん:2010/10/03(日) 05:42:54
テクスチャを設定する時に
Device->SetTexture(ステージの番号,ポインタ)
とする時のステージを指定するのって
Effect->SetTexture("識別子",ポインタ)でする時はどうすれば良いのでしょうか?
129デフォルトの名無しさん:2010/10/03(日) 06:03:56
>>128
pEffect->SetTexture("シェーダーのテクスチャ変数orセマンティクス", テクスチャオブジェクトへのポインタ);
130デフォルトの名無しさん:2010/10/03(日) 06:04:18
>>128
シェーダー側のテクスチャ変数を増やせば良いだけじゃ
131デフォルトの名無しさん:2010/10/03(日) 06:06:46
132デフォルトの名無しさん:2010/10/03(日) 06:11:45
>>129
>>130
ありがとうございます
ずっとググってるのですが全然理解できません
ステージの番号iはfxファイルの中のTexiと繋がっているのでしょうか?
133デフォルトの名無しさん:2010/10/03(日) 06:26:15
>>132
指定するのはステージ番号じゃないよ。リファレンスにはステージ番号なんて書いてないだろ。

SetTexture(D3DXHANDLE hParameter, LPDIRECT3DBASETEXTURE9 pTexture);

IDirect3DDeviceのSetTextureとID3DXEffectのSetTextureは違うモノだ。
134デフォルトの名無しさん:2010/10/03(日) 06:34:10
135デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/10/03(日) 06:49:24
ありがとうございます。
>>133
だろ。に笑ってしまったのですがw
>>134
>>135
よくわかりません…具体的にはマルチレンダリングターゲットをしてて0と1とあるのですが
サンプルだとdevice->SetTexture(1or0,ptex)で指定してるのでわかりやすいのですが
>>135だと全くeffect->を使ってないのですが自分は殆どeffect->SetTexture("g_texture",ptex)を使ってるのでどうすれば良いのかわからないのです
effectでやりたいのですがこういう時どうすれば良いのでしょうか?
137デフォルトの名無しさん:2010/10/03(日) 06:51:08
すいません
目が腐ってました
138デフォルトの名無しさん:2010/10/03(日) 06:54:55
目より頭が腐ってると思うよ
139デフォルトの名無しさん:2010/10/03(日) 06:55:30
>>138
黙れよカス
140デフォルトの名無しさん:2010/10/03(日) 06:56:09
まさか
SetTexturetとSetRenderTargetを勘違いしてたってオチ?
141デフォルトの名無しさん:2010/10/03(日) 07:00:19
えっ
SetTexturetとSetRenderTargetの第一引数って関係無いんですか?
142デフォルトの名無しさん:2010/10/03(日) 07:01:48
なんで質問するやつはすぐカスだの何だの言い出すの?
143デフォルトの名無しさん:2010/10/03(日) 07:02:10
どうりでググってもでてこないわけだな
144デフォルトの名無しさん:2010/10/03(日) 07:04:17
>>141
まったく関係ないっすなぁ
145デフォルトの名無しさん:2010/10/03(日) 07:06:22
やべええガチで頭腐ってた
146デフォルトの名無しさん:2010/10/03(日) 10:04:44
というかこれは教える方が悪いんでは
>>135もなんかずれてるし
エフェクトファイル側を出さないで何を伝えるつもりなの?
147デフォルトの名無しさん:2010/10/03(日) 10:32:43
シェーダデバッガーってダウンロードできますか?
ユーティリティーにPIXは入ってたのですがシェーダデバッガーらしきものは入ってませんでした
MSDNにもここからダウンロード的な誘導も付いてませんし、VisualStudio.Netが必要だというページもあるのですが自分はExpressEditionです
どうすれば入手できますか?
148デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/10/03(日) 12:02:49
>>148
変数名が同じだからでは?
fxcでコンパイルしてエラーメッセージをチェックするといいかも。
150デフォルトの名無しさん:2010/10/03(日) 12:09:10
>>149
サンクス
普通にVS_OUTPUTの前にsとかつけたら通った
なんでこんな簡単なことが気付かなかったんだろうか
2ちゃんに文句書き込んだ瞬間解決するんだよないつも
151デフォルトの名無しさん:2010/10/03(日) 12:11:03
fxcとかいうソフト、つけた瞬間一瞬だけひらいて閉じるんだけどなんだこれ?
152デフォルトの名無しさん:2010/10/03(日) 12:27:23
http://msdn.microsoft.com/ja-jp/library/bb172768(VS.85).aspx

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

hoge.fx(38,9): error X3003: redefinition of 'VS_OUTPUT::Diffuse'
153デフォルトの名無しさん:2010/10/03(日) 12:45:52
サンクス
出力のところ見たら普通に載ってたな
特殊形式っぽいしツール無いと無理だと思って探しまくってるうちに洗脳されてた
154デフォルトの名無しさん:2010/10/03(日) 13:12:37
シェーダわかった。完璧だわ
一気にトトリっぽくなったしもうあとリソース作るだけだわ
ktkr
155デフォルトの名無しさん:2010/10/03(日) 13:27:43
>>146
>>134のリンク先でその仕組みが分かって
SetTextureで設定しておいたものをシェーダ用として使うコードが>>135のつもりで貼った

まあ、でもよく考えるとすでに動くHLSLのサンプルがSDKのサンプルにあるのに
こんなことで迷ってるなんて相手にしないほうがいい人だったねw
156デフォルトの名無しさん:2010/10/03(日) 13:33:56
自分が迷ってる部分が単発でサンプルにあるなんてわからないだろw
157デフォルトの名無しさん:2010/10/03(日) 13:35:58
>>156
今回に関して言えばテクスチャが貼られてるサンプルならなんでもよかったよね?
158デフォルトの名無しさん:2010/10/03(日) 13:44:32
>>157
            __、
     ,r´⌒ヽ,⌒ヽ,ヽ
   (⌒)、   .人  λ\、 ._____
    \. \    、 ヽ./ ー  ー\
     |\ \    ヽ./ ( ●) ( ●)
     |  \  \ /     (__人__) \  はいはい、どーもすみませんでした
     |.   \   |       ` ⌒´   |
  .   |.   |.\_ノ\            /
  .   |.   |   |   \______/
  .   |   )  .|     . . ̄ ̄
  .   |   |  .|
     |   |.|  .|
  .   |  | .| .|
     /  / / ヽ,
    (__ノ  ヽ、__つ
159デフォルトの名無しさん:2010/10/03(日) 13:45:56
>>158
すっごい馬鹿だったよねw
見てて惨めなくらい間抜けだよね?
SDKに載ってることを馬鹿みたいにわかんないわかんないってw
PG向いてないんと違う?大丈夫?
160デフォルトの名無しさん:2010/10/03(日) 13:48:47
>>159
だまれ死ね
161デフォルトの名無しさん:2010/10/03(日) 13:50:52
>>160
            __、
     ,r´⌒ヽ,⌒ヽ,ヽ
   (⌒)、   .人  λ\、 ._____
    \. \    、 ヽ./ ー  ー\
     |\ \    ヽ./ ( ●) ( ●)
     |  \  \ /     (__人__) \  はいはい、どーもすみませんでした
     |.   \   |       ` ⌒´   |
162デフォルトの名無しさん:2010/10/03(日) 14:00:52
とりあえず件のトゥーン君は
質問するとき判別できるようにコテハン付けてくれ
そして質問に関係すること以外はチラシの裏にでも書いといてくれ
163デフォルトの名無しさん:2010/10/03(日) 15:00:17
しかし、DX9って息長げーな
もう8年になるかというのに、いまだ手を出す奴が絶えないもんな
といいつつ俺も9で完全に止まってる化石だが
164デフォルトの名無しさん:2010/10/03(日) 15:08:37
DX10がVistaと共に沈没してしまったからな
DX10.1もNVIDIAがついてこずこれも黒歴史化
Win7とDX11が普及しきる迄はまだまだDX9の天下
165デフォルトの名無しさん:2010/10/03(日) 15:16:42
プログラマブルシェーダーが主流になって
7以前のハードの進化とのイタチごっこが終わったからだな
今後はSMのバージョンアップ=DXのバージョンアップになっていくんだろう
166デフォルトの名無しさん:2010/10/03(日) 16:00:14
SMの進化が進んで、IA32+SIMDと同程度になったら
D3Dの時代は終わるかも
まあLarrabeeやCellがずっこけてるし、まだまだ先かもしれんけど
D3D9はその時でも依然現役だろうな
167デフォルトの名無しさん:2010/10/03(日) 16:04:07
最低でも4年後までは9の天下のままだろ
168デフォルトの名無しさん:2010/10/03(日) 17:33:53
シェア最大のIntelのグラフィックが腐ってるからな
ここがDirectX11をまともに動かせるようになるまでは駄目だ
169デフォルトの名無しさん:2010/10/03(日) 18:04:35
MSはエンドユーザーへ浸透を促進するためにまず開発者を移行させようとしてくるからな
とりあえずVS2012くらいでXPのサポート打ち切って
じょじょにDXSDKのVS2010以前のサポートを打ち切ってくるだろう
世間ではまだ9が全盛でも9で開発したかったら古い環境でやってね、となるに違いない
170デフォルトの名無しさん:2010/10/04(月) 00:32:47
ttp://www.poverty.jeez.jp/loda/img/iyan04476.jpg
こんなのでた、本当にどうしよう
171デフォルトの名無しさん:2010/10/04(月) 00:41:13
プログラムを辞める
172デフォルトの名無しさん:2010/10/04(月) 00:41:34
デバックしろ
どうせ「かまってトゥーン君」なんだろうが…
173デフォルトの名無しさん:2010/10/04(月) 00:50:57
次のトゥーン君の発言は死ねか黙れかカスだなたぶん。
174デフォルトの名無しさん:2010/10/04(月) 00:56:35
かまってツォーん君って誰だよ

弄る前の状態にしてもエラーでるしワケ分からん
175デフォルトの名無しさん:2010/10/04(月) 01:04:58
だからデバックしろって
VCみたいだからF5でデバック実行する
エラーがでて止まったら呼び出し履歴をみて最後に呼ばれた関数に飛ぶ
その中に適当にブレークポイントを打って止まる原因になってる行を突き止める
まぁ、たぶんNULLインターフェースのメンバを呼んでるとか
new してないインスタンスのメンバを呼んでるとかそんな感じだと思われ
176デフォルトの名無しさん:2010/10/04(月) 01:06:19
二重deleteだろ
177デフォルトの名無しさん:2010/10/04(月) 01:06:47
>>175
なるほど
ありがとう
178デフォルトの名無しさん:2010/10/04(月) 14:11:12
EVRでレンダリングしている動画の上にIDirect3DSurface9を使って簡単なアニメーションを重ねたいと思います。
それに使うIDirect3DSurfaceはどこから取得するのが最適でしょうか?
179デフォルトの名無しさん:2010/10/04(月) 14:35:00
別アプリのEVR対応アプリの上にってこと?
180デフォルトの名無しさん:2010/10/04(月) 20:07:15
現在、Windows2000対応のアプリのためにDirectX SDKの
October2004をインストールしているのですが、最近のバージョンの
SDKと共存させることはできるでしょうか?
インストール先を別々にするだけで良いとかだとうれしいです。
181デフォルトの名無しさん:2010/10/04(月) 20:11:28
結局何が別であるとうれしいかというとライブラリとかヘッダなので別にインストールすればいいんじゃね?
でも、環境変数とか同名の名前の衝突とかで食い合う気がするのでその辺の調整はいるかも。
182デフォルトの名無しさん:2010/10/04(月) 20:12:07
Win2000対応のアプリなんて捨てろよw
XPからにしとけwww

どうせ貧乏人をサポートしてもそいつらコピーでしかあそばねえからwww
183デフォルトの名無しさん:2010/10/04(月) 20:19:46
一応共存させることは出来る
インストール先を別にして
環境設定のインクルードディレクトリとライブラリディレクトリの優先順位を2004Octの方を上にしとけば基本そっちから使ってくれる
ただMSもあまりそれは推奨してないようなので不具合がでても自己責任
184デフォルトの名無しさん:2010/10/04(月) 20:24:47
VS2010からは環境変数で設定するんじゃなくて
個々のプロジェクトごとに設定できるようになったから良いね
その分ちょっと煩雑にはなったけど
185デフォルトの名無しさん:2010/10/04(月) 20:29:56
2010のってプロジェクトファイルそのものにSDKのフルパスが書き込まれるあたりダメダメじゃね?
インストールパスが違う他環境だとそのままじゃビルド不能になるし。
186デフォルトの名無しさん:2010/10/04(月) 20:29:59
>>181-183
ありがとうございます、一応できるんですね
環境変数も注意して見ることにします
187デフォルトの名無しさん:2010/10/04(月) 20:35:32
>>185
フルパスを書き込まなければ良い
188デフォルトの名無しさん:2010/10/04(月) 20:37:18
ソリューションフォルダ以下にヘッダとライブラリを全部コピーするような真似しない限り
結局環境依存じゃねーか
189デフォルトの名無しさん:2010/10/04(月) 20:38:15
$(DXSDK)
$(WindowsSDK)
190デフォルトの名無しさん:2010/10/04(月) 20:40:07
SDK複数バージョン同居前提の話なんだから環境変数はダメだろ。
191デフォルトの名無しさん:2010/10/04(月) 20:45:07
なんだその話続いてたのか
192デフォルトの名無しさん:2010/10/04(月) 20:45:21
そういう特殊な環境で作りたいんだったら
自分で環境変数を増やせばいいじゃない
別に一個じゃなきゃいけない理由も無いんだし
193デフォルトの名無しさん:2010/10/04(月) 21:54:52
シェーダを使った場合、
SetRenderStateで設定してるものは全て無効になるんですよね?
すべてシェーダー側で設定しろってことですか?
カリングモードの設定もですか?

よろしくお願いします。
194デフォルトの名無しさん:2010/10/04(月) 22:07:24
まずは自分で試してみろ。
そうでないと話にならない。
195デフォルトの名無しさん:2010/10/04(月) 22:13:35
>>194
試しました。たぶんそうなんですが、念のための確認です。
スパルタ教育は好きです。
196デフォルトの名無しさん:2010/10/04(月) 22:15:57
もう一度やり直せ。
197デフォルトの名無しさん:2010/10/04(月) 22:19:34
>>196
やり直して確信に変わりました。ありがとうございました。
198デフォルトの名無しさん:2010/10/04(月) 22:39:44
>>179
同じアプリ内のEVR (DirectShow)です。
199デフォルトの名無しさん:2010/10/04(月) 23:17:10
>>197
αブレンドの設定は生きてるぞ
他にも生きてるもんあんだろ
200デフォルトの名無しさん:2010/10/05(火) 00:11:45
ひねくれたこと言わないでちゃんと回答してればこんなことにはならなかったのに
201デフォルトの名無しさん:2010/10/05(火) 00:17:34
固定シェーダの恐怖が減っただけでもありがたいことだな
202デフォルトの名無しさん:2010/10/05(火) 00:31:12
>>199
何が生きて何が生きてないんですか?
勉強不足でホントすみません。
203デフォルトの名無しさん:2010/10/05(火) 00:32:23
あ、生きてるやつだけでいいです。
204デフォルトの名無しさん:2010/10/05(火) 00:41:45
>>202
知らん
そのときどきで「おーこいつ生きてるじゃんoh!yeah!」って対処しろ
205デフォルトの名無しさん:2010/10/05(火) 00:46:58
>>204
もうしょうがないわね。わかったよ。
206デフォルトの名無しさん:2010/10/05(火) 01:10:11
なんか釣りっぽいけど
マジレスするとシェーダー使っててもSetRenderStateは全て無効にならない
基本事項はSetRenderStateで設定しといて
シェーダー内のみで変更したい項目をシェーダー側で変更する
ID3DXEffect::Beginでパラメーターを指定しなければEndの時に変更部分が復元される
207デフォルトの名無しさん:2010/10/05(火) 09:22:16
>>206
最高です!釣りじゃありません!
ちょっと前から厳しい人がいたんで反応を見てただけです!
スパルタ教育は好きなんですけどね!
ありがとうございました!
208デフォルトの名無しさん:2010/10/05(火) 09:33:01
>>206
追加で質問です。
Beginでパラメータを指定しないってことは第二引数を0にするってことですよね?
変更部分が復元されるというのは、シェーダ内での変更がそのまま維持されるということでしょうか?
それとも、シェーダ内で変更した項目は全てリセットされ、シェーダーで変更する前の状態に復元されるということでしょうか?

何度もすみません。よろしくお願いします。
209207:2010/10/05(火) 09:52:12
もうわかったのでいいです。
シェーダ内の変更がそのまま復元され維持されるということですね。
復元されちゃったら、また元に戻さないといけないのでやめたほうが良さそうですね。
210デフォルトの名無しさん:2010/10/05(火) 11:49:07
話の流れが見えない
207=209じゃないよな?
211デフォルトの名無しさん:2010/10/05(火) 11:52:30
思い込みが激しい奴に何を言っても無駄。
212デフォルトの名無しさん:2010/10/05(火) 12:01:20
普通に同一人物に見えるが
213デフォルトの名無しさん:2010/10/05(火) 12:08:39
だから思い込みが激しい奴に何行っても無駄だって
214デフォルトの名無しさん:2010/10/05(火) 12:11:23
人の話も聞かずに勝手に頓珍漢な結論を出すんだから放っておけばいい。
215デフォルトの名無しさん:2010/10/05(火) 12:38:59
>>211-214が普通に同一人物に見えるんだが
216デフォルトの名無しさん:2010/10/05(火) 12:47:47
てか、昨日から上から目線で混乱させるようなことばかり言ってるやつでしょ
だろ。の人は回答する気がないならいい加減消えればいいのに
217デフォルトの名無しさん:2010/10/05(火) 12:59:42
なんだかんだ言って、誰も間違いに突っ込まないところが、
人が悪いなと思ってしまう。
218デフォルトの名無しさん:2010/10/05(火) 13:22:13
合ってるって言ってあげろよ
219デフォルトの名無しさん:2010/10/05(火) 13:29:03
てか勘違いしてるのか日本語が下手なだけなのゆとりなのか判断に悩む
220デフォルトの名無しさん:2010/10/05(火) 13:56:58
リソースをコンパイル中にこんなエラーが出ました。
対処法がわかりません。教えて下さい。

fatal error RC1011: compiler limit : 'XSKINEXP_TEMPLATES': macro definition too big
221デフォルトの名無しさん:2010/10/05(火) 14:00:50
>>219
日本語でおk
222デフォルトの名無しさん:2010/10/05(火) 14:08:52
誰もわからないの?バカなの?死ぬの?
223デフォルトの名無しさん:2010/10/05(火) 14:12:07
>>220
compiler limit : 'identifier' : macro definition "too big"

Try to split the definition into shorter definitions.
224デフォルトの名無しさん:2010/10/05(火) 14:21:35
LoadObjectFromFileでWAVは読み込めるんだけど
MP3が読み込めません。
どうすればいいんでしょうか。
225デフォルトの名無しさん:2010/10/05(火) 14:34:29
API調べるのめんどい。Direct何のどのクラス使ってるのさ
XAudioだかはWMA風データなら読めるがMP3は読めない
MP3を簡単に再生するならWin32APIかDirectShow
ちゃんとやりたかったらSDKなりでWAVに変換せよ
226デフォルトの名無しさん:2010/10/05(火) 14:36:30
>>224
自前でデコードするかDirectShowを使うしかない
227デフォルトの名無しさん:2010/10/05(火) 14:50:56
mp3はライセンス問題があるからoggにしとけ
oggなら展開用のライブラリもそのへんに転がってるし
228デフォルトの名無しさん:2010/10/05(火) 15:47:29
>>225-227
レスありがとうございます。
DirectShowやoggを検討してみます。
229デフォルトの名無しさん:2010/10/05(火) 22:53:52
230デフォルトの名無しさん:2010/10/05(火) 22:59:49
>>229
こいつ宣伝しまくってるな。
231デフォルトの名無しさん:2010/10/05(火) 23:02:11
>>230
面倒だけど癖になるからアク禁依頼だしてくるか
232デフォルトの名無しさん:2010/10/06(水) 00:27:49
>>178もよろしくお願いしますよ〜
233デフォルトの名無しさん:2010/10/06(水) 02:09:23
こいつマ板でも宣伝してたわ。
234デフォルトの名無しさん:2010/10/06(水) 17:48:33
皆さんのテクスチャ管理方法をざっくりでいいんで簡単に教えてください。
読み込みから解放までを。

すみません。
235デフォルトの名無しさん:2010/10/06(水) 18:06:57
テクスチャ登録用のリストを作る
ファイル名や識別子などからリストを検索
未登録ならテクスチャを作成しリストに登録
登録済みならテクスチャへのポインタを返しAddRef(参照カウントを増やす)
必要なくなったら参照先でRelease
参照カウンタが0になったらリストから削除
236デフォルトの名無しさん:2010/10/06(水) 18:21:14
シェーダープログラムでのテクニックとパスの違いを教えてください

パスはレンダーステートとプログラムのセットですか?
237デフォルトの名無しさん:2010/10/06(水) 18:22:49
>>235
ありがとうございます。
描画する際もファイル名などからリストを検索して描画ルーチンに渡しているのでしょうか?
もしそうなら、その検索時間は気になりませんか?
238デフォルトの名無しさん:2010/10/06(水) 18:24:04
>>237
ハッシュマップとかIDでソートかけておくとか
239デフォルトの名無しさん:2010/10/06(水) 18:26:45
ちゃんと文章読んでるのかよ
240デフォルトの名無しさん:2010/10/06(水) 18:26:55
>>238
なるほど。ありがとうございます。
STLのコンテナを使わないのは何故ですか?
241デフォルトの名無しさん:2010/10/06(水) 18:36:44
>描画する際もファイル名などからリストを検索して描画ルーチンに渡しているのでしょうか?

しないよ
描画オブジェクトもテクスチャへのポインタを持たせておけば読み込み時の1回だけでいいだろう?
なんのための参照カウンタだ
242デフォルトの名無しさん:2010/10/06(水) 19:30:24
>>241
なるほど!本当にありがとうございます!
最高のシステムですね!参考にさせていただきます!
243デフォルトの名無しさん:2010/10/06(水) 19:32:35
すごいですね!
本当に本当にありがとうございました!
244デフォルトの名無しさん:2010/10/06(水) 20:44:49
float4 col = 1って全部1が入るんですか?
col.xyzw = 1と同じですか?
245デフォルトの名無しさん:2010/10/06(水) 21:03:34
yes
246デフォルトの名無しさん:2010/10/06(水) 21:08:49
thankyou
247デフォルトの名無しさん:2010/10/06(水) 22:35:30
>>235
自分は別な質問者ですが、
参照カウンタが0になったら、というので
内部参照カウンタの値を取得するにはどうすればよいですか?
それとも自分で数えておくのですか?
248247:2010/10/06(水) 22:39:48
すみません普通にわかりました
ULONG = Hoge->addref() - 1;
Hoge->Relase();
ですね
249デフォルトの名無しさん:2010/10/06(水) 23:31:02
そのカウンタを使って処理をするな的なことがドキュメントのどっかに書いてなかったっけ
250デフォルトの名無しさん:2010/10/06(水) 23:41:09
D3DXCreateEffectFromFile()って素敵ですね。
251247:2010/10/07(木) 07:23:57
>>249
あれ?そうなんですか?
もしよければ詳しくおねがいします
252デフォルトの名無しさん:2010/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.
253247:2010/10/07(木) 09:30:05
>>252
まじすか ありがとうございます
じゃあ上の参照カウンタが0になったら、
っていうのは自分で数えておけということでしょうか?
それとももっとましな方法がありますか?
254デフォルトの名無しさん:2010/10/07(木) 10:00:58
>>253
自分で覚えておけばおk
255247:2010/10/07(木) 10:54:31
>>254
まあ、たいした手間ではないですよね
ありがとうございました
256デフォルトの名無しさん:2010/10/07(木) 11:13:43
>>252
それって単にマルチスレッド環境での保証がされてないってだけじゃね?
257デフォルトの名無しさん:2010/10/07(木) 13:58:14
僕はテクスチャ型と座標を毎回関数に渡して描画してるんですが、
もっといい方法ないですか?
皆さんの描画システムを簡単に教えてほしいです。
258デフォルトの名無しさん:2010/10/07(木) 14:06:26
何をしたいのか目的も書かないで、方法だけ語ることに何の意味があるの?
前提条件も把握せずに答える馬鹿が出てくるかもしれないが、
頭の悪い内容しか返ってこないぞ。
259デフォルトの名無しさん:2010/10/07(木) 14:13:06
頭の悪い回答すると

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


てか、テクスチャ型と座標って何の話だ?www
260デフォルトの名無しさん:2010/10/07(木) 14:28:26
ごめんなさい。
具体的に言うと、LPDIRECTD3DTEXTURE9とそのキャラクターの位置座標を渡して
描画してもらうようにしています。

>>259
こんな回答でも参考になります。
261デフォルトの名無しさん:2010/10/07(木) 15:05:21
IDirectSoundBuffer8::SetVolume を使って音のフェードアウト中にノイズが乗ってしまいます。

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

フェードアウトの方法が間違っているのでしょうか。
よろしくお願いします。
262デフォルトの名無しさん:2010/10/07(木) 15:05:49
目的があって手段があるのに、未だに目的が不明。
手段の説明しかしていないのが分からないのか?
263デフォルトの名無しさん:2010/10/07(木) 15:08:46
>>261
まずはサウンドカードを別の物に交換して確認する。
264261:2010/10/07(木) 15:30:21
>>263
DirectSound対応を堂々とうたっているサウンドカードにて確認してみましたが、
やはりノイズが乗ります。
265デフォルトの名無しさん:2010/10/07(木) 15:34:58
>>264
日本語は通じてる?
対応云々の話なんて一切していない。
別のサウンドカードで確認しろと言ってるの。
266261:2010/10/07(木) 15:38:26
>>265
すみません。説明が不足していました。
>>264は別のサウンドカードです。
267デフォルトの名無しさん:2010/10/07(木) 15:40:21
それでノイズが気になるのなら、波形データの方を少しずつ減衰させるしかない。
268デフォルトの名無しさん:2010/10/07(木) 15:44:54
>>266
具体的にその2品の製品名なりチップセット名は?
269デフォルトの名無しさん:2010/10/07(木) 16:01:10
ボリューム値の変動を細かくする。
Sleep間隔を長くする。
もっとまともなタイマーを使う。
完全なフェードにするには1サンプル毎に減衰させる。
270261:2010/10/07(木) 16:04:38
>>267
wavデータをセカンダリバッファに書き込むときに減衰した値を書き込む訳ですね。
しかし、ストリーミング再生をしているので、恐らくセカンダリバッファをロックして
バッファの値を読んで減衰した値に書きなえないとダメだと思うのですが、
フェードアウトするためにバッファをロックするタイミングがわからなかったりします。

>>268
@SoundMAX Integrated Digital Audio
ADigidesign MBOX2Pro ← プロ用のDirectSound対応
です。
271デフォルトの名無しさん:2010/10/07(木) 16:05:03
まずは製品の名前を聞こうぜ。
272デフォルトの名無しさん:2010/10/07(木) 16:09:15
@SoundMAX Integrated Digital Audio
サウンドカードとしては最悪に分類される製品。
音が出るだけありがたいと思わなければならない。

ADigidesign MBOX2Pro ← プロ用のDirectSound対応
不明
273デフォルトの名無しさん:2010/10/07(木) 16:19:06
しつこく聞いといてこの体たらくである。
274デフォルトの名無しさん:2010/10/07(木) 16:20:20
確かあんまり細かい間隔でボリュームを変えようとするとダメだった記憶がある
Sleep(1)が良くないんじゃね?
275261:2010/10/07(木) 16:20:38
>>269
>ボリューム値の変動を細かくする、Sleep間隔を長くする
10秒ぐらい掛けてフェードアウトするとなめらかなのですが・・・
50ms以内にフェードアウトしたいです。

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

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

>>272
>Digidesign MBOX2Pro
ミュージシャンがDirectSound対応のソフトシンセを使って
音を鳴らすことを前提に設計されているようです。
276デフォルトの名無しさん:2010/10/07(木) 16:21:53
>Digidesign MBOX2Pro ← プロ用のDirectSound対応
USB接続の時点で、細かく切り替えたら駄目だろ。
277デフォルトの名無しさん:2010/10/07(木) 16:24:49
とりあえず60FPSで1フレームごとに下げることを想定して
Sleep(16)くらいで試してくれ
278デフォルトの名無しさん:2010/10/07(木) 16:27:30
そもそもフェードとはいえ短時間に急激に音を止めたり発生させたりすれば、
その衝撃がノイズになって当たり前なのは分かっているのか?
279261:2010/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を目標にしています。
280261:2010/10/07(木) 16:33:29
>「Windows プロフェッショナルゲームプログラミング」という本からの引用ですが、
>このバグの対処法として、セカンダリバッファの停止時に、
>50msくらいでフェードアウトさせると良い、とあります。
というのを見かけました・・・
281デフォルトの名無しさん:2010/10/07(木) 16:34:30
50msでファードアウトって・・・

5段階くらいのフェードアウトで十分だと思う
282デフォルトの名無しさん:2010/10/07(木) 16:41:22
それって50msでフェードアウトじゃなくて
50ms間隔でフェードアウトの間違いなんじゃ
283デフォルトの名無しさん:2010/10/07(木) 16:59:53
俺の持ってる本じゃこういう表記になってるな。
> 徐々に(50msぐらいで)フェードアウト
284デフォルトの名無しさん:2010/10/07(木) 17:05:05
そんな本は窓から投げ捨てた方がいいんじゃないか?
285デフォルトの名無しさん:2010/10/07(木) 17:06:01
その文だと50msってのが間隔なのか総時間なのかどっちとも取れるような
286デフォルトの名無しさん:2010/10/07(木) 17:09:45
ここって何でこんなに低レベルなの?
二度とこないよ。
287デフォルトの名無しさん:2010/10/07(木) 17:11:28
はい、おつかれさん
288デフォルトの名無しさん:2010/10/07(木) 17:17:22
無音の音を流し続けるって解決方法は別の話なんだっけ?
289デフォルトの名無しさん:2010/10/07(木) 17:33:30
Stopノイズが発生するのは
DirectSoundって言うよりWDMサウンドデバイスのバグでしょ?
290デフォルトの名無しさん:2010/10/07(木) 17:38:42
>>286
さようならノシ
291261:2010/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デフォルトの名無しさん:2010/10/07(木) 20:08:34
sleepが1mscのままじゃん
293デフォルトの名無しさん:2010/10/07(木) 20:20:28
ストップノイズが出るのと
変更間隔が短すぎてノイズが出るのは別問題
294デフォルトの名無しさん:2010/10/07(木) 21:29:18
50msなんて極小の時間の中でリニアに変化させたって人間には知覚できん
x+=20.0fにしてSleep(10)くらいにしとけ
295デフォルトの名無しさん:2010/10/07(木) 23:07:16
Core2のWinXPの話だが、Sleepは10以下を設定しても10より小さくならないからな。
296デフォルトの名無しさん:2010/10/07(木) 23:44:36
>>295
timeBeginPeriod()で精度上げれるよ。
今はMSDNライブラリにも明記されてる。
ttp://msdn.microsoft.com/en-us/library/ms686298(VS.85).aspx
297デフォルトの名無しさん:2010/10/07(木) 23:48:32
10msってかOSのタイマー割り込みの精度による
Sleepから復帰させるスケジューラーがこの割り込み分解能より短い時間で仕事できないから
10msだったり16msだったりまちまち

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


ところでtimeBeginPeriodを呼んでる臭いアプリ(WindowsMediaPlayerとか)を同時に立ち上げとくと
いきなりぬるぬる動き出すアプリあるよねw
そのプログラム内のみの変更じゃなくて
OS自体のタイマー割り込みに対する変更だから起動してる全てのアプリに影響があるので注意
298261:2010/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);』
の式が本当にあっているか、とても怪しいです。
上記の式では、音は多少小さくなりますが、きちんと無音までフェードアウトしているようには
聞こえないからです。
ちなみにこのサイトに情報が載っていました。
ttp://www.hgw-a.info/?date=200304
申し訳ありませんが、音の世界に詳しい人に上記の式を検証していただけると幸いです。

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

>>297
>ところでtimeBeginPeriodを呼んでる臭いアプリ(WindowsMediaPlayerとか)を
>同時に立ち上げとくといきなりぬるぬる動き出すアプリあるよねw
興味があるので検証してみたいと思います。
300デフォルトの名無しさん:2010/10/08(金) 01:12:12
結局、ノイズ自体を出さないようにすることはもうできる状態なの?
301デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/10/08(金) 01:24:28
>>298
人のソースを意味も分からずコピペして
「怪しいです」「検証してください」はどうかと・・・。
ソースを公開している方にも失礼ですよ。明らかに間違っているならともかく。

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

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

といった部分だと思う。
>>291のソースでは、x =98 でループを抜けてしまう(xが100にならない)から
無音にならないのでは?
303デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/10/08(金) 02:40:46
>>303
いや、時間を基準とか関係無しに
線形にデジベルを下げると
音の性質上急速にボリュームが下がってしまうという話だから
言ってることは正しいが今は関係ない

組み合わせて
pDSData->SetVolume(-1000.0f*log(1.0f-total/fadetime)/log(0.5f));
とするなら有りだと思うが
305デフォルトの名無しさん:2010/10/08(金) 02:41:38
Direct3DのPresentメソッドが -2005530516って素敵な数を返すんですが、これって何の
エラーですか?どうやらClearなどは成功していて、この関数だけが失敗しているようなんですが
306デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/10/08(金) 03:03:54
DirectX エラー処理ユーティリティ ライブラリ
http://msdn.microsoft.com/ja-jp/library/bb173034(v=VS.85).aspx

失敗したときに原因がすぐ分かるようにしといたほうがいいよ
308デフォルトの名無しさん:2010/10/08(金) 03:17:31
>>306
>>307
ありがとうございます。BeginScene〜EndScene間で呼んじゃってました。
エラー処理って大事ですね、今度から使うようにします
309デフォルトの名無しさん:2010/10/08(金) 08:18:21
>>307
こんな便利なのあったのか
半年間知らずにdirectXやってた
310261:2010/10/08(金) 16:46:48
皆様ご指摘ありがとうございました。
>>303>>304のソースを、そのまま使わせていただきましたが、
SetVolume命令を使うとSleepを何ミリ秒にしようが、
ノイズが乗る仕様だと諦めました。
『fadetime = 0.3f; //フェード時間(秒)』にて実装しました。

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

>>304
ご指摘ありがとうございます。
>>303の方法とマージさせていただきました。
311デフォルトの名無しさん:2010/10/08(金) 18:40:06
フォームアプリにdirectxって組み込める?
312デフォルトの名無しさん:2010/10/08(金) 19:25:26
できる
313デフォルトの名無しさん:2010/10/08(金) 20:21:24
そもそもフォームアプリって何?
ダイアログベースのアプリのこと?
CLIで作ったWindowsフォームアプリケーションのこと?
314デフォルトの名無しさん:2010/10/08(金) 20:31:35
>>313
すいません、説明不足でした。
Windowsフォームアプリケーションのことです。
普通にcppファイルに書き込めば良いのでしょうか?
315デフォルトの名無しさん:2010/10/08(金) 21:34:52
どっかにCLIでDirectXの動かす解説のあるサイトがあったはず
ぐぐれ
316261:2010/10/08(金) 23:47:56
話題を引きずって申し訳ないのですが、DirectSoundのSetVolumeによるフェードアウトの件、
CPU:atom330 OS:Win7で試してみたところ、ノイズはまったく乗りませんでした。
Win7ってリアルタイム処理が強化されているのかなって思いました。

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

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

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

よろしくお願いします。
317デフォルトの名無しさん:2010/10/09(土) 00:13:15
自分も丁度曲チェンジの時ノイズが乗ってるって友達に指摘されたから聞きたいとこでした。
318デフォルトの名無しさん:2010/10/09(土) 02:09:27
IDirectMusicAudioPath8::SetVolumeは、まんまフェードを作れる模様。
ただどういう実装でどの程度の精度があるのかは知らない。
ただDirectMusic自体が廃止される方向なのは周知の通り。

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

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


なんつって
319デフォルトの名無しさん:2010/10/09(土) 07:17:17
>>316
リアルタイム処理云々は無関係。
いい加減な間違った情報を書き込む前に、WindowsVista以降でDirectSoundのデバイスドライバがどういう扱いになったのか調べろ。
320デフォルトの名無しさん:2010/10/09(土) 08:21:05
>>319
最近のOSのサウンド事情っぽい記事読んできたけど混乱してるなぁw
エミュレーション機能があるならこのままDirectSoundがいいんじゃねぇかと思ったけど
使っただけでエラーでたって報告あるのかよ
でも、それだと以前のゲームが動かないからそれは修正するハメになると思うけどね

俺等はとりあえずエミュにまかせてこのまま様子見か?
なんかいま色々動くのは損な気がする
321デフォルトの名無しさん:2010/10/09(土) 13:10:03
DirectX10使ってるんですが
CreateTextureとかで作ったリソースについて
デバイス解放前に全て開放されているかどうかチェックしたいのですが
そういう機能ってSDK側では用意されてますか?
322デフォルトの名無しさん:2010/10/09(土) 13:58:48
自分で管理するしかない
323デフォルトの名無しさん:2010/10/09(土) 14:42:10
SetTextureStageStateを使わなくてもピクセルシェーダーでテクスチャブレンディングできるとおもうのですが
なぜ存在するのでしょうか
324デフォルトの名無しさん:2010/10/09(土) 14:45:42
固定機能パイプライン
325デフォルトの名無しさん:2010/10/09(土) 14:45:46
>>323
固定シェーダの名残みたいなもんじゃねーの?
326デフォルトの名無しさん:2010/10/09(土) 14:48:41
DirectX10以降で消滅
327デフォルトの名無しさん:2010/10/09(土) 15:06:52
どうも
328デフォルトの名無しさん:2010/10/09(土) 15:51:28
329デフォルトの名無しさん:2010/10/09(土) 16:02:06
そういや11のテッセレーターは固定機能シェーダーなんだよね?
シェーダー側に記述するんじゃなくて
デバイスに対して設定するとかそんな感じなの?
330デフォルトの名無しさん:2010/10/09(土) 16:34:30
Direct3D11では描画に関する操作は、デバイスから一切が切り離されているが、
いったい何を言ってるんだ?
331デフォルトの名無しさん:2010/10/09(土) 21:21:06
>>328
バカですね
332デフォルトの名無しさん:2010/10/09(土) 21:50:10
お前ら頭よすぎなんだよ。ちくしょう。
333デフォルトの名無しさん:2010/10/09(土) 23:28:18
>>322
どうもです
うーん独自レイヤー作るのだるいな・・・
334デフォルトの名無しさん:2010/10/09(土) 23:39:46
そもそも開放し忘れが起きるかもしれないような設計がおかしい
それとも何か特殊なタイミングでチェックしたいわけ?
335デフォルトの名無しさん:2010/10/10(日) 02:53:14
質問です。
Direct3Dで読み込んだ256色bmpの
パレットの操作はどうすればいいんでしょうか?

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



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

シェーダーで似たようなことはできるかもしれないけど
素直に画像で用意した方が早いと思われ
338デフォルトの名無しさん:2010/10/10(日) 10:28:05
確かにD3Dだとスライムベスすら
簡単に表示できない・・
339デフォルトの名無しさん:2010/10/10(日) 11:34:42
昔あったアルファ値と普通の画像を2枚用意して合成して透かすのってできる?
検索しても見つからないし困ってるんだよ
340デフォルトの名無しさん:2010/10/10(日) 12:42:51
>>339
どういう意図でアルファ値と画像を分離したいわけ?

単に抜きがやりたいだけなら最初からアルファチャンネル付の画像フォーマットを使えばいい
アルファ部分を動的に変化させたいとかなら
シェーダーを使うかテクスチャブレンドで対応できる
341デフォルトの名無しさん:2010/10/10(日) 13:37:28
>>337,338
回答ありがとうございます。
素直に画像用意します。

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





342デフォルトの名無しさん:2010/10/10(日) 13:44:11
聞きたいのはPC版の方なので、PS2の方はスルーして下さい。
スマソorz
343261:2010/10/10(日) 15:22:34
>>318
使用する関数を教えていただきありがとうございます。
なんとかフェードアウトを実装することができました。

@GetCurrentPositionにて再生カーソルを取得する
A再生カーソル+60ミリ秒の位置からバッファをロックする
B100ミリ秒のフェードアウトをさせる
 (バッファの中のサンプル値をフェードアウトした値に書き直す)
Cフェードアウト後の100ミリ秒のバッファを0(無音)に書き直す
Dバッファのアンロック
ESleep(60 + 100) ⇒ A+Bの時間
F再生のStop命令

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

とりあえず、問題はなさそうに動いています。
どうもありがとうございました。
344デフォルトの名無しさん:2010/10/10(日) 16:07:12
>>341
画像ファイルから直接テクスチャを作ってるんじゃなくて
インデックスデータとパレットデータを使って
生成した空テクスチャに色情報を書き込んでるんじゃないの?
動的に変化とかじゃなくて.palの上書きとかでしょ?
345デフォルトの名無しさん:2010/10/10(日) 18:10:46
ピクセルシェーダを使って、画像を二枚用意して片方をテーブルデータとして使えばパレット的なことは出来るけど、
そこまでして何故パレットが必要なのか理由がさっぱり分からない。
346デフォルトの名無しさん:2010/10/10(日) 18:20:33
10年前からきたんじゃないの?
347デフォルトの名無しさん:2010/10/10(日) 18:35:32
>>344
>>動的に変化とかじゃなくて.palの上書き
俺がやりたいのはそれです。
PC版のGGイスカやGGXX#REには外部コンフィグには
「パレットエフェクト」って設定項目があるのでD3Dで出来るのかと
思ったんです。

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



348デフォルトの名無しさん:2010/10/10(日) 18:39:40
それをやるのにパレットにする必要性が全くないんだが、
何故パレット云々が出てくるんだ?
349デフォルトの名無しさん:2010/10/10(日) 19:15:04
読み取り時にパレット情報を使ってるだけでパレット操作をしてるわけではないな
普通にテクスチャをロックして書き込んでるだけでしょ
350デフォルトの名無しさん:2010/10/11(月) 03:07:22
DirectX9.0cなんだけど、
デバイスを作成した後 IDirect3DDevice9::GetBackBuffer() でバックバッファを一度だけ取得して
そのインターフェイスをずっと保持して使いまわすのは変?

デバイスロストとかはちゃんと処理するとして
351デフォルトの名無しさん:2010/10/11(月) 08:47:30
好きにすればいいよ。
いちいち聞くことじゃない。
352デフォルトの名無しさん:2010/10/11(月) 11:50:00
スワップチェーンとの兼ね合いを考えると
毎フレームインデックス0のバックバッファを取得する方が
自然を思うな。
つーか、普通レンダーターゲットを使うよな。
バックバッファ直接描画ならD3D使う意味無いし。
353デフォルトの名無しさん:2010/10/11(月) 19:44:23
シェーダー使って描画する際、2D描画の時は皆さんどうしてますか?

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

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

今まで固定機能パイプラインでやってきました。
そのときは変換済み座標を使ってました。
それをそっくりそのままシェーダーでの描画に変えたいのです。
すいません。
354デフォルトの名無しさん:2010/10/11(月) 19:48:35
シェーダーで何もしなけりゃいいだろwwwwwwwwwww
355デフォルトの名無しさん:2010/10/11(月) 20:10:27
シェーダーでやりたいのです。
頂点変換済み座標ってシェーダーでは使えないんですか?
356デフォルトの名無しさん:2010/10/11(月) 20:13:24
とりあえず試してみれば?
357デフォルトの名無しさん:2010/10/11(月) 20:26:07
>>355
頂点シェーダで出力する頂点は
-1 < x < 1
-1 < y < 1
0 < z < 1
で、たとえば(-1,1,-)の頂点が画面左上にくる
同様に(1,-1,-)が右下にくる
この考え方でとりあえず3角形を描画してみたらどうだろう
358デフォルトの名無しさん:2010/10/11(月) 20:30:31
ありがとう。本当に。
やってみます。
359デフォルトの名無しさん:2010/10/11(月) 20:54:47
あの、シェーダーで描画するときの話です。
移動行列や回転、拡大行列等の行列の計算についてお伺いしたいです。

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

そのほうがはやいですか?
360デフォルトの名無しさん:2010/10/11(月) 21:03:41
まずは試せ。
その結果に疑問があるのならそれを聞けばいい。
361デフォルトの名無しさん:2010/10/11(月) 21:06:42
ごめんなしゃい
362デフォルトの名無しさん:2010/10/11(月) 21:17:43
シーンによると思うけどね
363デフォルトの名無しさん:2010/10/11(月) 22:50:34
>>359
行列を作るのはCPU
適用するのはGPU
頂点トランスフォームは、GPUがその能力を発揮出来る
数少ない機会だからな、やらせなきゃ損
364デフォルトの名無しさん:2010/10/11(月) 22:57:16
カリカリに描画命令数の最適化をしない限り
CPU時間は余りまくりなんだからどっちにやらせてもトータルは変わらんよ
365デフォルトの名無しさん:2010/10/11(月) 22:59:44
>>363みたいな間違った認識をするから自分で試すべき何だろうね。

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

つまり速いかどうかは環境依存。
366デフォルトの名無しさん:2010/10/11(月) 23:15:49
>>365
で、レアケース持ち出して
「いろんなパターンがあるからわかりません」が
正しい認識だって?
笑える
367デフォルトの名無しさん:2010/10/11(月) 23:17:31
確かにそこら中に存在するIntelのオンボードがレアケースだと言う認識は笑える。
368デフォルトの名無しさん:2010/10/11(月) 23:31:49
DrawPrimitiveを連発してるようなアプリなら普通にCPUにやらせた方が速いんじゃね?
369デフォルトの名無しさん:2010/10/12(火) 06:39:41
まあ、そっからの議論は実測値が予想と違うときのみすればいい話であって
いま、色々考えてみるのははっきりいって無駄

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

この考え方は徹底しておかないといつまでも無駄なことをしたり
おかしな発言を繰り返したりと現場を混乱させるばかりでちっとも開発は進まないとかいう状況になる
370デフォルトの名無しさん:2010/10/12(火) 08:54:44
Directxで何も描画しないのに、FPSが62ぐらいしかでないんだが、
内部で60ぐらいに制御するようにコード組まれてるの?

本当にbeginsceneとendsceneぐらいしかしてないんだが。
371デフォルトの名無しさん:2010/10/12(火) 08:56:48
VSYNC
372デフォルトの名無しさん:2010/10/12(火) 09:03:19
D3DPRESENT_INTERVAL_ONE
D3DPRESENT_INTERVAL_IMMEDIATE
373デフォルトの名無しさん:2010/10/12(火) 09:18:54
ありがとうございます!
oneにすると自動的にリフレッシュレートを超えないように制限されてしまうんですね!

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

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

でも環境によって、FPSが変わるとゲームにならないので、前者の方法が良いですね!
知らなかったら、環境によってFPSが変化してしまうところでした。
本当にありがとうございました!
374デフォルトの名無しさん:2010/10/12(火) 10:50:04
DIRECTXってなんで座標指定するときにFLOAT型なんでしょう?

画面に描画されるときの最小単位はピクセルなんですよね?
375デフォルトの名無しさん:2010/10/12(火) 10:59:13
ドットバイドットで表示するなんてめったに無いわけで
376デフォルトの名無しさん:2010/10/12(火) 11:17:07
シェーダープログラムのコンパイル済みファイルをエクセルで全パターン自動生成することを思いついた
377デフォルトの名無しさん:2010/10/12(火) 11:24:54
>>371
>DIRECTXってなんで座標指定するときにFLOAT型なんでしょう?
そもそもそんな規則はない
378デフォルトの名無しさん:2010/10/12(火) 12:00:42
たとえば(1.5F,1.5F)のところに描画しても、切捨てられて
(1,1)のところに描画されるんですよね?

考え方自体破綻してますか?
379デフォルトの名無しさん:2010/10/12(火) 12:01:40
破綻している。
380デフォルトの名無しさん:2010/10/12(火) 12:11:59
そもそもDirectXとDirect3Dは同義ではないので、
>DIRECTXってなんで座標指定するときにFLOAT型なんでしょう?
は意味不明。
Direct3Dのことだったとしても整数型の入力はサポートされているし、
Direct3D10以降なら整数値のハードウエアサポートもある。
またラスター化されるときにどうなるかも設定次第。
381デフォルトの名無しさん:2010/10/12(火) 15:01:36
もしかしてシェーダーで、行列をセットするとき
beginPass,Endpassの間でセットしても反映されない?
382デフォルトの名無しさん:2010/10/12(火) 15:19:41
>>381

>ID3DXEffect::BeginPass/ID3DXEffect::EndPass 対応ペア内部にある Effect::Setx メソッドのいずれかを使用して、
>アプリケーションがエフェクト ステートを変化させる場合、アプリケーションは ID3DXEffect::CommitChanges を呼び出して、
>ステート変化のあるデバイスに更新を設定する必要があります。
>ステート変化が ID3DXEffect::BeginPass および ID3DXEffect::EndPass 対応ペア内で発生していない場合、
>ID3DXEffect::CommitChanges を呼び出す必要はありません。
383デフォルトの名無しさん:2010/10/12(火) 15:21:03
>>382
ありがとう!
384デフォルトの名無しさん:2010/10/12(火) 17:58:27
ID3DXSPRITEでやってたときは画像の範囲していの描画はうまくできていたんですが、
シェーダーを使ったときの範囲指定描画の方法がわかりません。

頂点バッファを毎回いじればできそうですが、いじりたくないです。
いじらずにやる方法ないですか。
385デフォルトの名無しさん:2010/10/12(火) 18:23:01
画像範囲指定とは、たとえばキャラ画像が8枚で一セットになった画像とかを
ちょっとずつ分割して描画したいってことです。
386デフォルトの名無しさん:2010/10/12(火) 18:27:19
シェーダでuvを好きなように調整しろ
387デフォルトの名無しさん:2010/10/12(火) 18:29:37
頂点バッファに全て書き込んどいて読み出し位置をずらすことで切りかえるか
サイズが一定ならシェーダーにどれだけずらすか送るだけ
388デフォルトの名無しさん:2010/10/12(火) 18:42:07
ありがとうございます。参考にさせていただきます。
389デフォルトの名無しさん:2010/10/12(火) 21:31:59
>>378
描画される位置は一緒でも、参照されるテクスチャ座標が変わる。
390デフォルトの名無しさん:2010/10/12(火) 22:17:30
シェーダ万能すぎない?
なんか有るぞこれは
391デフォルトの名無しさん:2010/10/12(火) 22:23:10
馬鹿にはそう見えるんだろうな。
392デフォルトの名無しさん:2010/10/12(火) 22:28:25
>>387
頂点バッファに全て書き込んどく方法はやめます。
サイズは等間隔の画像になります。
どれだけずらすかを送ってその後どうするんですか?

そもそも、頂点シェーダは書けるんですけど、どういった順序で計算されてるのかわからないんです。
例えば頂点が4つあったとしたら、頂点シェーダの関数は4回実行されてるんですか?
一回ごとに渡される頂点が違うってことですか。
その辺が詳しく解説されてるサイトがあれば教えていただきたいです><
393デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/10/12(火) 23:17:23
>例えば頂点が4つあったとしたら、頂点シェーダの関数は4回実行されてるんですか?

その認識で正しい
395デフォルトの名無しさん:2010/10/12(火) 23:37:10
静的な頂点バッファに書き込むとどうなるんですか?
396デフォルトの名無しさん:2010/10/12(火) 23:38:45
パフォーマンスが落ちる
397デフォルトの名無しさん:2010/10/12(火) 23:47:04
て言うかシェーダってなんなんですか
398デフォルトの名無しさん:2010/10/12(火) 23:49:16
399デフォルトの名無しさん:2010/10/13(水) 00:06:43
>>396
どうもありがとう
400デフォルトの名無しさん:2010/10/13(水) 00:10:41
>>398
要するに描写の前にフィルタをかませてなんかいろいろ効果を出すってことか
まるで目の前にフィルムがあるかのような
401デフォルトの名無しさん:2010/10/13(水) 02:48:55
そういう使い方もあるがそれだけじゃない
402デフォルトの名無しさん:2010/10/13(水) 03:00:40
>>393
なるほど!
その手がありましたか!
すごい嬉しいです!ありがとうございました!
403デフォルトの名無しさん:2010/10/13(水) 06:40:18
でもさ、俺も同じことやってるけど
物理的にはDrawPrimitiveUPなんかと似たようなもんだよねw
って思うんだけど違うの?
404デフォルトの名無しさん:2010/10/13(水) 08:25:04
>>403
は?じゃあ具体的に説明してみろ
405デフォルトの名無しさん:2010/10/13(水) 16:32:36
シェーダーを設定しなおすと前に設定していたシェーダー定数の値はクリアされてしまうのでしょうか?
406デフォルトの名無しさん:2010/10/13(水) 16:39:46
>>405
テストコードかけばいっぱつじゃない?
まあ環境依存のことを考えれば未初期化で使うなんてことは考えないはず。
407デフォルトの名無しさん:2010/10/13(水) 16:56:08
>>406
簡単なテストでしてみました。レジスタには同じ値が入っているみたいです。
408デフォルトの名無しさん:2010/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デフォルトの名無しさん:2010/10/13(水) 18:23:27
何が言いたいのかまるで伝わってこない
410デフォルトの名無しさん:2010/10/13(水) 18:47:13
>>409
だから>>408の例って頂点バッファ自体が無意味じゃん
411デフォルトの名無しさん:2010/10/13(水) 18:57:25
頂点に座標を含むかどうかの違い?
412デフォルトの名無しさん:2010/10/13(水) 19:02:26
>>411
いや、SetVectorなどの関数から描画に必要なデータをすべて渡している状態(でも頂点バッファにはアクセスせず)
DrawPrimitiveUPで描画するのとどっちが速いの?的な話

この2つとも1フレ当たりにグラボに渡すデータ量はほとんど変わらないよね?
大して変わらないことしてるのか、大きな差があるのか?ってとこ
413デフォルトの名無しさん:2010/10/13(水) 19:17:11
何か勘違いしてるみたいだがグラボに送る情報量とか関係ない
頂点バッファは一度のDrawprimitiveで数千ポリを同時に描画するときに真価を発揮する
そもそも1矩形を1回のDrawprimitiveで描くような仕様ならUP系とコスト的には大差ない

UP系は使ってもいいけど使うときは
1000〜2000ポリくらいをバッファに溜め込んで一度のDrawprimitiveUPで描画したほうが効率は良い
それ以上になるとシステムメモリからの頂点情報の転送がボトルネックになって
頂点バッファを使った時ほどのパフォーマンスが出せなくなる
414デフォルトの名無しさん:2010/10/13(水) 19:41:01
ちょっとまってください。
DrawPrimitiveで数千ポリを一気に描画する方法があるんですか!?

メッシュとかの話じゃなくて?
415デフォルトの名無しさん:2010/10/13(水) 19:55:54
すいません。
まちがえました。。。
416デフォルトの名無しさん:2010/10/13(水) 20:19:16
いえ、間違えてません。↑は別人です
417デフォルトの名無しさん:2010/10/13(水) 20:31:16
ネタなのかマジボケなのか判断に困る
418デフォルトの名無しさん:2010/10/13(水) 21:02:08
そこらへんの詳しい情報ってデベロッパーにしか公開されないんですか?
419デフォルトの名無しさん:2010/10/13(水) 21:05:12
>>418バカは死ね
420デフォルトの名無しさん:2010/10/13(水) 21:21:24
バカだからって死ねって言うのは差別につながると思うんです
そもそもバカというのは基準が決まっていないじゃないですか
何が出来なかったらバカなんですか?それじゃあまだ何も出来ない幼児赤子はバカなんですか?
421デフォルトの名無しさん:2010/10/13(水) 21:21:43
>>419
お前みたいなクズこそ死ね
422デフォルトの名無しさん:2010/10/13(水) 21:29:22
ここは初心者スレです
423デフォルトの名無しさん:2010/10/13(水) 21:33:37
なんで死ねといわれなきゃいけないの?
424デフォルトの名無しさん:2010/10/13(水) 21:33:45
まずは>>414がポリゴンとメッシュをどう認識しているのか確認するのが先だろう。
425デフォルトの名無しさん:2010/10/13(水) 21:46:28
ポリゴンはいくつかの頂点で作られたオブジェクト

メッシュは頂点データのかたまり。

これぐらしかわかりません。ごめんなさい。
426デフォルトの名無しさん:2010/10/13(水) 21:47:36
ということで間違った認識をしていることが確定したので、
まずはポリゴンがなんなのかを調べるところから始めろ。
427デフォルトの名無しさん:2010/10/13(水) 21:54:26
本当にどーやって勉強してるんですか?皆さん。

独学っすか?学校の授業とかですか?
428デフォルトの名無しさん:2010/10/13(水) 21:56:49
まずはチュートリアルをやれ
429デフォルトの名無しさん:2010/10/13(水) 22:17:54
ググったらいくらでも出てくるだろうが。
そんなことだからバカとか言われるんじゃね
430デフォルトの名無しさん:2010/10/13(水) 22:34:38
いや、情報少ないよ
仕方ないよ
431デフォルトの名無しさん:2010/10/13(水) 22:40:21
2DでdirectX9使うの完璧になったけど
3Dが全く分からなくて手を着けられない。
シェーダの仕組みもさっぱり分からない。
次に進む為のお勧めの書籍はありませんか?
432デフォルトの名無しさん:2010/10/13(水) 22:41:37
自分で完璧とか言ってしまう人はちょっと
433デフォルトの名無しさん:2010/10/13(水) 22:48:41
完璧なのにシェーダが分からないってどういうことだろう?
434431:2010/10/13(水) 23:13:58
シェーダって3Dを表示する時使う奴じゃないんですか?
435デフォルトの名無しさん:2010/10/13(水) 23:19:22
理解できてないという意味では完璧だな。
入門書買って1からやりなおせ。
436デフォルトの名無しさん:2010/10/14(木) 00:39:09
こういう場合に分かる奴、出きる奴は何でソースファイルとかアップしないの?
俺も分からないから知りたいんだけど何を信じていいのか分からん。
437デフォルトの名無しさん:2010/10/14(木) 00:43:44
何のソースが欲しいんだよ?
438デフォルトの名無しさん:2010/10/14(木) 00:44:14
ここは初心者質問スレです。

お願いですので、やさしくしてくださいよ。
439デフォルトの名無しさん:2010/10/14(木) 00:45:46
シェーダーを使ったパーティクル形エフェクトのソースをお願いします。

バージョンはvs,psとも3_0でお願いします。
440デフォルトの名無しさん:2010/10/14(木) 01:02:47
>>439
前スレにあったぞ
441デフォルトの名無しさん:2010/10/14(木) 01:18:17
3Dが分からないってことはチュートリアルとか全然やってないのか?
ドキュメントとか全然読んでないのか?
442デフォルトの名無しさん:2010/10/14(木) 04:12:39
3Dまったくわからないとかいってるヤツに何のソースを出すんだよ。
初心者以前の問題
443デフォルトの名無しさん:2010/10/14(木) 07:47:46
「UP系は本当に遅いのか?」計測してみたよ
結果から言うとだいたいヘルプに書いてあるのと同じ感じ

DrawIndexedPrimitive、DrawIndexedPrimitiveUPで
それぞれ20000ポリを1〜10000回に分けて描画
DrawIndexedPrimitiveの方は
静的頂点バッファ(Lock無し)
動的頂点バッファ(描画と同じ回数だけLock)の両方計測

静的頂点バッファをロックするのはお話にならないのでやってません
以下結果


20000ポリ(40000頂点)×1回
静的VB:890fps
動的VB:790fps
DrawUP:710fps

2000ポリ(4000頂点)×10回
静的VB:880fps
動的VB:780fps
DrawUP:700fps

1000ポリ(2000頂点)×20回
静的VB:870fps
動的VB:760fps
DrawUP:690fps


このあたりはほとんど変化なし
やはり1000〜2000ポリを1回で描画するのが効率がよさげ
444デフォルトの名無しさん:2010/10/14(木) 07:51:56
続き

200ポリ(400頂点)×100回
静的VB:830fps
動的VB:680fps
DrawUP:650fps

100ポリ(200頂点)×200回
静的VB:760fps
動的VB:590fps
DrawUP:590fps

20ポリ(40頂点)×1000回
静的VB:470fps
動的VB:300fps
DrawUP:340fps

4ポリ(8頂点)×5000回
静的VB:165fps
動的VB: 85fps
DrawUP:120fps

2ポリ(4頂点)×10000回
静的VB: 90fps
動的VB: 45fps
DrawUP: 65fps

動的頂点バッファを200回LockしたあたりでUP系と並び、それ以上で逆転

1000回ほど描画命令を発行すると最高速の半分以下までパフォーマンスが落ちる
それ以上はお察し
445デフォルトの名無しさん:2010/10/14(木) 08:00:03
UPとの差はまぁこんなものだろうか?

計測に使ったチップはGeForce 9600M GT(モバイル用チップ)なので
ちゃんとしたビデオカードでやればもうちょい差は開くかも?
暇な人は試して見てね


計測に使用したソース
ttp://www5b.biglobe.ne.jp/~mya_a/dx/SimpleSample2.zip
446デフォルトの名無しさん:2010/10/14(木) 08:01:15
なんだよ。結局DrawPrimitive数千ポリゴン描画できるって言ってたのは嘘かよ

Draw[Indexed]Primitiveじゃねえかよ。













ありがとう。
447デフォルトの名無しさん:2010/10/14(木) 08:18:43
>>446
何をどう勘違いしたのか分からんが
頂点数が増えるだけでDrawPrimitiveでも当然出来るぞ
448デフォルトの名無しさん:2010/10/14(木) 08:33:23
今日夜中に質問しまくるから、よろしく。

見捨てないでください。お願いします。
449デフォルトの名無しさん:2010/10/14(木) 08:58:27
>>445
DrawPrimitiveを連投してポリゴンをたくさん描画するより、
一回のDrawPrimitiveでたくさんのポリゴンを描画したほうが断然速いんですね。

今まで2ポリをオブジェクトの数だけDrawPrimitiveを連投してたわ。

勉強になった。ありがとう。
450デフォルトの名無しさん:2010/10/14(木) 09:27:42
ビデオメモリへの転送量は少ない方が速い。
API呼び出し回数は少ない方が速い。
おっぱいは小さく方が美しい。
基本です。
451デフォルトの名無しさん:2010/10/14(木) 09:41:28
なんかめんどくさい事を言ってる奴がいるので
>>445をプリプロセッサで
DrawPrimitiveとDrawIndexPrimitiveを切り替えられるようにしたものと差し替えた

後、補足して置くとこの計測値は低CPU負荷の状態で
D3DPRESENT_INTERVAL_IMMEDIATEでぶん回してるだけなので
一見、描画命令1回と10000回の間に10倍のパフォーマンスの違いが有るように見えるけど
例えば当たり判定やAI処理などでCPUに高負荷をかけると
1回の方はその分がガッツリFPSに影響が出るのに対し
10000回の方はGPUのブロック時間の間にCPUが仕事できるのであまりFPSに影響は出ません
つまり、パフォーマンスは差は縮まります

上の方で描画命令が多い場合はCPUで計算させてもかわらねーよ、と言われてるのはこのせいです
それでもなるべくまとめて描画した方が圧倒的に速いですが

その辺の詳しい理屈はこのあたりを読むとわかるかも?
ttp://www.atmarkit.co.jp/fdotnet/directxworld/directxworld01/directxworld01_03.html
452デフォルトの名無しさん:2010/10/14(木) 09:47:11
高速に大量に描きたいならインスタンシングとかも勉強しとけよ
453デフォルトの名無しさん:2010/10/14(木) 09:49:09
>>451
心から感謝いたします。
さっき生意気なこといってすみませんでした。
本気で勉強いたします。
454デフォルトの名無しさん:2010/10/14(木) 17:04:11
レンダーステートの切り替えとか定数パラメータのセットって重いんですか?
455デフォルトの名無しさん:2010/10/14(木) 17:05:51
ダミー設定を用意して実際に測定してみるといいよ。
456デフォルトの名無しさん:2010/10/14(木) 17:27:44
最近のチップは以前と比べると格段に負荷は軽くなったけど

>ステート変更をできるだけ減らし、残ったステート変更をグループ化する。

とMSDNにはある
457デフォルトの名無しさん:2010/10/14(木) 17:53:55
誰がUPが遅いなんて話してたの?
変なことやったシェーダとUPとの比較の話だったんでしょ?
458デフォルトの名無しさん:2010/10/14(木) 17:55:15
>>457
お前はちゃんと勉強した方が良い
459デフォルトの名無しさん:2010/10/14(木) 18:10:36
>>458
お前は日本語の文章を読む練習からしろ
460デフォルトの名無しさん:2010/10/14(木) 18:18:08
>>457
じゃあ、変なことやったシェーダーとUPで実際に動かして比較して見ろよ
絶対にお前が思った通りにはならないから
何を、もって違いがないって言ってるわけ?
461デフォルトの名無しさん:2010/10/14(木) 18:28:24
「なんとなくいっぱい情報送ったら遅くなりそう」とか思い込んでるだけじゃね?
462デフォルトの名無しさん:2010/10/14(木) 19:10:05
>>460
そんなこといってねぇだろ
日本語大丈夫か?
いきなり誰も聞いてないような比較データが貼られるから
話わかってるの?って言っただけ

今の話題と違うデータ出してない?

ってことな
463デフォルトの名無しさん:2010/10/14(木) 19:12:57
ろくに理解してないのに煽るだけの奴より
データ出してくれる奴のほうがよっぽどマシ
464デフォルトの名無しさん:2010/10/14(木) 19:15:02
ここまで説明されて何が遅くなる原因なのかが理解できないとは…
お前さんがまるで見当違いの問題提起してることに気づけよ
465デフォルトの名無しさん:2010/10/14(木) 19:17:59
馬鹿なんだろ。
466デフォルトの名無しさん:2010/10/14(木) 19:32:04
真面目に質問します。

皆さんはDIRECTXをどうやって勉強したんですか?

独学ですか?

ある壁を境になかなか進まないのです。

それはシェーダです。
おそらく座標変換がちゃんとわかってないのです。

皆さんの学習法をお教えください。

真剣ですので、バカとか死ねとか言わないでください。
467デフォルトの名無しさん:2010/10/14(木) 19:34:45
>>466
とりあえず死ね。
入門本買え。
468デフォルトの名無しさん:2010/10/14(木) 19:37:12
もういいです。

本気で呪っときます。
469デフォルトの名無しさん:2010/10/14(木) 19:44:39
>>464
は?
誰もそんな話してなかったじゃん
お前馬鹿?
もう一度言うよ

 誰 も そ ん な 話 し て な い よ ね ?

もう一度言うよ

 誰 も そ ん な 話 し て な い よ ね ?
470デフォルトの名無しさん:2010/10/14(木) 19:54:49
顔真っ赤w
471デフォルトの名無しさん:2010/10/14(木) 19:58:28
>>463
まったく関係ないデータでも?
はぁ?プログラマ辞めちまえよクズ
472デフォルトの名無しさん:2010/10/14(木) 20:00:04
>>470
そうやって誤魔化してるけど
君、自分がまったく関係ない話をしてること理解できてないでしょ?
新卒によくいるんだ君みたいなの
会話にちょろっと出てきた単語だけつまんで発言する人w
473デフォルトの名無しさん:2010/10/14(木) 20:04:49
誰と戦ってるんだ?
474デフォルトの名無しさん:2010/10/14(木) 20:06:10
どうせ全部自演だろ
475デフォルトの名無しさん:2010/10/14(木) 20:07:44
>>472はもう黙ってろ。真っ赤な顔なんとかしてこいよ


>>466おまえ>>431だろ、入門書買えっつってるだろカス
476デフォルトの名無しさん:2010/10/14(木) 20:08:11
このスレの存在意義ないだろ。

毎回人をけなすようなアドバイスしかできないカスがいるからな。
477デフォルトの名無しさん:2010/10/14(木) 20:08:46
そう思うならこなければいい。さようなら
478デフォルトの名無しさん:2010/10/14(木) 20:10:08
なんかいつも人のことをバカにするゴミみたいなやつがいるよな。

毎日どんな時間帯にもいるし、おそらくニートだろうねw
479デフォルトの名無しさん:2010/10/14(木) 20:15:47
で?
480デフォルトの名無しさん:2010/10/14(木) 20:18:29
>>478
入門書は買えたのかい?
481デフォルトの名無しさん:2010/10/14(木) 20:24:41
みんな苦労してるんだよ
482デフォルトの名無しさん:2010/10/14(木) 20:28:33
>>466
ただ漠然とどうしたら良い?とか聞かれても困るな
シェーダーが分からないにしても
どの段階で分からないのかも伝わってこないし
とりあえず手を動かして具体的に躓いたら質問に来ればいいよ
とりあえずサンプルのチュートリアルをシェーダーで表示するところから始めたら?
483デフォルトの名無しさん:2010/10/14(木) 20:30:30
参考にならないかもしれないが俺はPIXでデバッグするようになって理解が深まったよ
484デフォルトの名無しさん:2010/10/14(木) 20:32:47
オススメの入門書を載せてるサイト紹介して
485デフォルトの名無しさん:2010/10/14(木) 20:34:29
>>466
>おそらく座標変換がちゃんとわかってないのです。

答えは出ているじゃないか。
486デフォルトの名無しさん:2010/10/14(木) 20:37:41
入門書は無い
487デフォルトの名無しさん:2010/10/14(木) 20:41:39
>>482
本当にありがとうございます。
単純に画像を表示するまでならできます。
その後の応用が効かない感じです。
エフェクトファイルもパスをわけて、新しい関数定義すべきなのか、
新たにファイル作るべきなのかとか、その辺もです。

>>483
こんなツールあったんですね・・・!これかなり良さそうです!
本当にありがとうございます。
488487:2010/10/14(木) 20:42:52
今日から座標変換について質問しまくる予定です。

どうか見捨てないで下さい。お願いします。
489デフォルトの名無しさん:2010/10/14(木) 21:06:45
ここにそんなクソ下らないこと書いてる暇あったら
ググればいいと思う
490デフォルトの名無しさん:2010/10/14(木) 21:15:02
アホなんだろ。
491デフォルトの名無しさん:2010/10/14(木) 21:22:06
質問するのは構わないけど「何がやりたいのか」ははっきりさせてね
492デフォルトの名無しさん:2010/10/14(木) 21:26:25
>>1が読めない奴が多いな
493デフォルトの名無しさん:2010/10/14(木) 21:49:24
アホかどうかの境目は、質問する前にどういう回答が返ってくるか予想しているかどうか。
それだけで質問内容が的を射るかどうかが決まる。
494デフォルトの名無しさん:2010/10/14(木) 22:36:31
座標変換をGoogleで調べて勉強しようとすると大変だな
ボケとかカスとか教えるの下手糞なサイトばっかり当たる

基本、物理とか数学まわりってはじめからよく知ってないといいサイト見つけるの難しいな
495デフォルトの名無しさん:2010/10/14(木) 22:51:51
つーか、DirectXの最良の資料は
DirextXSDKドキュメントだろ。
とりあえずD3D9の日本語版ドキュメント全ページ嫁
496デフォルトの名無しさん:2010/10/15(金) 11:55:36
本格的なのやりたいなら英語か数学のどちらかができないと
497デフォルトの名無しさん:2010/10/15(金) 15:21:09
数学ができないならミドルウェアとか使ったほうがいいのかなぁ。
498デフォルトの名無しさん:2010/10/15(金) 15:44:11
DirectXを使いたいだけなら数学はいらない
ある程度まともなゲームを作りたいなら多少は求められるがそれならミドルウェアでも変わらない
それに数学が必要といっても公式覚えたり難しい方程式が解ける必要はない
計算はプログラムがやってくれるんだから
要は自分が求めたいことを何を使えば求められるか、ということを知ってれば良いだけ

例えば「2本のベクトルの内積や外積が一体何になるのか」ということさえ知ってれば
内積・外積を求める計算自体は別に知らんでもいい事だ
499デフォルトの名無しさん:2010/10/15(金) 15:51:03
ゲーム作るたってモノによる
だから線形代数はちゃんとやろう
500デフォルトの名無しさん:2010/10/15(金) 15:51:54
ついでに群論環論もやろう
501デフォルトの名無しさん:2010/10/15(金) 15:58:23
三角関数と内積外積、あと行列を少し分かっていれば3Dゲームは作れちゃうでしょ
まぁ、だいたい線形代数の範囲内なんだが。
ライブラリ作成に命をかけてる人たちはその限りではないが
502デフォルトの名無しさん:2010/10/15(金) 16:02:08
基底とかは?
503デフォルトの名無しさん:2010/10/15(金) 17:08:39
知ってた方が楽な知識はたくさんあるが
知らなければならない知識はそれほどない
難しく感じるとしたら単に慣れが足りないのだろう
504デフォルトの名無しさん:2010/10/15(金) 17:12:00
どれぐらい勉強したら、
普通にゲーム作れるようになりましたか?
505デフォルトの名無しさん:2010/10/15(金) 17:13:04
勉強とおもっているうちはゲームを作れない。
506デフォルトの名無しさん:2010/10/15(金) 17:21:25
早くMMDが作れるようになりたいよぉ
507デフォルトの名無しさん:2010/10/15(金) 17:36:14
答えになってないんですが。

勉強と思わなくなるのにどれぐらいかかりましたか?
508デフォルトの名無しさん:2010/10/15(金) 17:38:36
>>507
10年
509デフォルトの名無しさん:2010/10/15(金) 17:40:24
ゲームを作るだけなら勉強と同時進行で出来たしそれなりのものも作れた
しかしDirectXを理解してきたなぁと実感できるようになるまでには5年かかった
510デフォルトの名無しさん:2010/10/15(金) 17:41:26
マジすか・・。

数ヶ月でマスターなんて無理なんですかね・・・・
511デフォルトの名無しさん:2010/10/15(金) 17:42:57
まぁ個人差あるだろうね。。。
俺みたいな馬鹿だと20年掛かるかもしれない
512デフォルトの名無しさん:2010/10/15(金) 17:44:54
まあいい。私は不可能を可能にする男だ。
513デフォルトの名無しさん:2010/10/15(金) 17:49:08
勉強してマスターしようなんて土台無理な話
とにかく手を動かして何度も失敗して試行錯誤していくうちに身につくもの

最初はどんなにショボくても何か形になるものを仕上げた方がいいよ
やりたい事が明確になれば自分に何が足りないのかが見えてくる
そうなれば「どんな本を読めばいいですか?」なんてアホな質問しなくても自分で選べるようになるし
ただ漠然と「覚えなきゃいけない事がたくさんある」なんて考えて立ち止まるのはむしろ時間の無駄
514デフォルトの名無しさん:2010/10/15(金) 17:52:17
>>513
すばらしいご意見ありがとうございます。
本当にその通りだと思います。
何事もたくさん経験して、失敗して覚えていくものですね。
これからはアホな質問はしないように頑張ります。
515デフォルトの名無しさん:2010/10/16(土) 16:30:05
前にここでパーティクル系のソースアップしてくれた人いますか?
あの画像って何のソフトで作ったんですか?

GIMPで同じようなもの作れますか?
516デフォルトの名無しさん:2010/10/16(土) 17:09:28
517デフォルトの名無しさん:2010/10/16(土) 17:12:51
>>516
おお!すごいです!
photoshopのようですが、参考にさせていただきます!
ありがとうございます!
518デフォルトの名無しさん:2010/10/16(土) 18:08:32
このレスは俺の日記帳の切れ端

こうやったらクオータニオンうまくいった
mQuaはXファイルのアニメーションキーの回転から取得した値

D3DXQUATERNION q1,q2;
q1.x =-mQua[key.index[1]].x;
q1.y =-mQua[key.index[1]].y;
q1.z =-mQua[key.index[1]].z;
q1.w =mQua[key.index[1]].w;

q2.x =-mQua[key.index[2]].x;
q2.y =-mQua[key.index[2]].y;
q2.z =-mQua[key.index[2]].z;
q2.w =mQua[key.index[2]].w;
D3DXQuaternionSlerp(&q,&q1,&q2,time);
519デフォルトの名無しさん:2010/10/17(日) 02:16:41
>>515
あれ、やっぱ気にしてる人まだいたか
描き方説明しようかと思ったけど微妙に言葉で説明するのが面倒で
どうしようかと思ってるうちに忘れてた

そんなたいしたことしてる訳じゃないんよ
>>516みたいにちゃんと描けるのが一番なんだろうけどもっと手抜きです
ネットに転がってるフョトショ用のブラシを落としてきて
描画モードを「スクリーン」にして何回か連打するだけ
ちょっとやってみたけどGIMPはフォトショのブラシファイルをそのままフォルダに突っ込めば使えるので
シェイプ機能とかはないけど大体同じようなことはできた


一発撮り未編集なのでぐだぐだだけど参考
http://www5b.biglobe.ne.jp/~mya_a/dx/light_effect.html

ブラシはこことか。後はググって
ttp://www.chethstudios.net/2010/05/1000-beautiful-abstract-light-photoshop.html
520デフォルトの名無しさん:2010/10/17(日) 02:16:50
一念発起してD3D11のサンプルをみているが
やっぱりいろいろ整理されててわかりやすい印象
移行すべきだろうなあ・・
521デフォルトの名無しさん:2010/10/17(日) 02:22:26
>>519
おもしれー
522デフォルトの名無しさん:2010/10/17(日) 04:04:26
マでもPhotoshopくらい扱えないとだめなのか
魔方陣色々使えそうで良いな
523デフォルトの名無しさん:2010/10/17(日) 09:36:15
>>519
どうやって書いてるのかと思ったら専用のブラシがあったんですね。
本当に助かりました。ありがとうございます。
524デフォルトの名無しさん:2010/10/17(日) 14:36:55
知ってみれば大したことじゃなくても
知らなければ手も足も出ないなんて良くあること
525デフォルトの名無しさん:2010/10/17(日) 15:28:22
じゃあ、そのブラシはどうやって作ってるんだよ
とか疑問もたないところが初心者だよねw
526デフォルトの名無しさん:2010/10/17(日) 15:37:05
ブラシなんて普通の画像と大差ないじゃん
何いっちゃってるの?
527デフォルトの名無しさん:2010/10/17(日) 15:38:12
ハイハイw
この話題はここでおしまい
528デフォルトの名無しさん:2010/10/17(日) 15:38:44
いままで真面目に描いてたのが悔しくてしょうがないんだろw
そっとしといてやれよ
529デフォルトの名無しさん:2010/10/17(日) 15:42:03
自分で新しいの作れない子がなにか言ってるよw
530デフォルトの名無しさん:2010/10/17(日) 16:11:19
自分で話題終了を宣言しといてちょっと煽られたくらいで反応しちゃう男のひとって
531デフォルトの名無しさん:2010/10/17(日) 16:25:07
上の方で顔を真っ赤にしてたやつと同じ臭いがするな
自分じゃロクな情報出さないくせにやけに他人に絡む奴
532デフォルトの名無しさん:2010/10/17(日) 16:46:49
でもこのやり方で毎回同じものしか作れないとかはちょっと困る
533デフォルトの名無しさん:2010/10/17(日) 16:57:59
初心者スレなのに初心者をバカにする風潮どうにかならんのかね
こちとらどんな情報でもありがたいのに
534デフォルトの名無しさん:2010/10/17(日) 17:03:07
>>533
どこにそんなレスがあるんだ?
535デフォルトの名無しさん:2010/10/17(日) 17:04:19
プログラマが自分で用意しなきゃいけないのってどうせ仮素材くらいなんだからこの程度でいいんじゃないの?
大事なのはどういう絵が実際の画面上でどう見えるかを知っておくことだと思う
プログラマ側からグラフィッカに指示を出す事だって結構あるしこんな感じって具体的に言えるだけでも大分違うと思われ
536デフォルトの名無しさん:2010/10/17(日) 17:05:10
537デフォルトの名無しさん:2010/10/17(日) 17:07:03
>>536
いいじゃん
必要ないんだから
538デフォルトの名無しさん:2010/10/17(日) 17:09:35
そういう形でブラシを使っちゃうならはじめからフリー素材貼り付けろと
539デフォルトの名無しさん:2010/10/17(日) 17:11:25
>>538
フリー素材のサイト教えてください
540デフォルトの名無しさん:2010/10/17(日) 17:13:17
プログラマらしく数式で求めるんだ
541デフォルトの名無しさん:2010/10/17(日) 17:13:26
>>519見る限り結構応用が利きそうだけどな
まぁ、Photoshop限定だろうが
542デフォルトの名無しさん:2010/10/17(日) 17:15:13
いつもサンプルを作ってくれる519さんってプロですか?
543デフォルトの名無しさん:2010/10/17(日) 17:37:57
GIMPでもできますー
544デフォルトの名無しさん:2010/10/17(日) 17:46:44
会社で使ってるのだとただ貼り付けるのって結構少ないな

ムービーっていうかテクスチャにもZやややこしいαが入ってたりしてわけわからん
http://www.cri-mw.co.jp/product/lineup/movie/crisofdec/demo.html

こんなん多いこんなん
上のじゃないんだけど・・・ちょっと仕組みは近いかも
545デフォルトの名無しさん:2010/10/17(日) 17:48:56
IMPO
546デフォルトの名無しさん:2010/10/18(月) 09:37:38
DirectX11のスレどっかにある?
547デフォルトの名無しさん:2010/10/18(月) 09:53:29
DirectX12っていつでるの?
548デフォルトの名無しさん:2010/10/18(月) 10:55:14
11の話もここでいいと思う

分かる範囲でなら教えるよー
549デフォルトの名無しさん:2010/10/18(月) 10:56:29
10のスレも死んでるしこっちでいいだろ
550デフォルトの名無しさん:2010/10/18(月) 15:50:46
それ以前に10のスレなんてあったのか
551デフォルトの名無しさん:2010/10/18(月) 16:00:07
でたばっかのころはそれなりに活発だった
552デフォルトの名無しさん:2010/10/18(月) 16:51:51
質問する人間は、捨てでいいからトリップつけるべきじゃないか?
最近ム板全般で、質問人を騙って話ひっかきまわす奴が目立っててな

前からID入れてくれって話はでてるんだが、運営はとりあえず入れる気ないみたいだし
553デフォルトの名無しさん:2010/10/18(月) 17:11:45
何をいまさら
554デフォルトの名無しさん:2010/10/18(月) 17:12:47
日本にはgamedevみたいなサイトは無いのか
555デフォルトの名無しさん:2010/10/18(月) 17:27:13
dxlibとかのライブラリ限定なら活発かもね
556デフォルトの名無しさん:2010/10/18(月) 17:30:41
>>554
つくってもあらされておわるでしょ。
あとジェムズのX巻にのってるから読めでおわったりとかね。

個人的にはTrueTypeFontのファイルフォーマット。
それをポリゴンで表示する為のメッシュ化アルゴリズムをしりたいな。
557デフォルトの名無しさん:2010/10/18(月) 17:31:10
メンバー制のところなら1つ大きいのがあるが
紹介が無いと入れないので一般人は無理だぜ
558デフォルトの名無しさん:2010/10/18(月) 17:32:51
日本人の体質かもしれんね
559デフォルトの名無しさん:2010/10/18(月) 17:36:30
別に海外のコミュだって荒らされたりしてっけど、日本人がそんな話までは知らないってだけ
成功した例しか聞いたことないだろ?
560デフォルトの名無しさん:2010/10/18(月) 18:31:58
BBXでいいじゃん
あそこで駄目ならここでも駄目だろ
561デフォルトの名無しさん:2010/10/18(月) 18:38:22
あそこもすでに終わっている。
562デフォルトの名無しさん:2010/10/18(月) 18:40:49
>>561
具体的になにが駄目だったの?
あそこで答えてもらえないならみんな知らないか
くだらないこと質問して相手にしてもらえないかのどっちかじゃね?

いまレスしてる面子みても結構できる人いるよ
563デフォルトの名無しさん:2010/10/18(月) 19:19:45
BBX見てきたけど加曾利杉
564デフォルトの名無しさん:2010/10/18(月) 20:23:10
>>556
Windows限定でよければ、GetGlyphOutlineでフォントの輪郭線とれるよ。
TrueTypeのフォーマットまでは知る必要ない。

最近はGGO_BITMAPの方の機能ばかり有名になってしまって、
曲線データの方の解説は見つけるのが大変だけど。
565デフォルトの名無しさん:2010/10/19(火) 00:08:38
そういやDirect2D/DirectWriteではアウトラインの
テッセレート化したメッシュデータまで取得できたなぁ
566デフォルトの名無しさん:2010/10/19(火) 00:33:39
DXSDK 2010 Octキター
567デフォルトの名無しさん:2010/10/19(火) 09:10:18
なに!?つい先日Febあてたばかりなのに・・・

BBX昔はよく利用したけど今はなぁ
568デフォルトの名無しさん:2010/10/19(火) 13:34:43
本当にDirectXって難しいね。君たちすごいよ。
569デフォルトの名無しさん:2010/10/19(火) 13:50:09
1000個のオブジェクトをDrawIndexedPrimitiveを使って、一気に全部描画しようとしてます。
その一つ一つに対して、別々のアルファ値を持たせる場合は、
頂点デクラレーションの作成の時にアルファ値用の値を設定しといて、
描画するときになったら、一気に頂点バッファをロックして、
個別に設定するしか方法ないですよね?

当然このオブジェクトはそれぞれ別々の方向に動くので、座標も一気に変える
つもりなんですが。

570デフォルトの名無しさん:2010/10/19(火) 14:13:14
動かし方による
ある程度規則的な動きなら書き換えずに済むかも知れない

どうしても書き換えなくてはいけない時でも
1000回Lockするのではなく1回で済むような仕組みを考えるべき
571デフォルトの名無しさん:2010/10/19(火) 14:21:35
>>570
ありがとうございます。
シューティングを作っているので、規則的な動きにはならないですね。
その座標は当たり判定とかの計算にも利用するつもりなので。


>1000回Lockするのではなく1回で済むような仕組みを考えるべき
5種類の弾があって、それぞれ100発ずつ撃たれている状況だとしたら、
テクスチャはそれぞれ変えなきゃならないので、
一種類ごとにテクスチャをセットして、100発まとめてlockして描画。
というのを5回繰り返すイメージですよね?
572デフォルトの名無しさん:2010/10/19(火) 14:24:13
5種類の弾を1枚のテクスチャに乗せとけば切り替えなし
573デフォルトの名無しさん:2010/10/19(火) 14:25:50
>>572
なるほど!そういえばそうですね。助かりました。
ありがとうございました。
574デフォルトの名無しさん:2010/10/19(火) 14:28:16
毎フレームLockするなら動的頂点バッファにするのも忘れないように
575デフォルトの名無しさん:2010/10/19(火) 14:41:28
>>574
D3DUSAGE_DYNAMICとD3DPOOL_DEFAULTにしておけば大丈夫ですよね?
576デフォルトの名無しさん:2010/10/19(火) 14:52:59
>>574-575
動的頂点バッファにしたほうが、D3DPOOL_MANAGEDで確保した静的頂点バッファより遅かったんだが・・・
1・俺のテストコードが悪い
2・ループが速すぎて、動的頂点バッファのロック待ちよりも、MANAGEDが確保しているシステムメモリーに書き込んだ(そしてMANAGEDがいっきにVRAMにUPDATEした)ほうが速かった
どっちだ!
577デフォルトの名無しさん:2010/10/19(火) 14:57:38
>>576
ちなみに静的頂点バッファっていうのは、頂点バッファの内容はいじらないってことですよね?
いじれないんだったら、それぞれのオブジェクトを好きな位置に移動するときに、
DrawIndexedPrimitiveで一気に描画することはできないですよね?
一つ一つ、DrawPrimitiveを連投する方法だったら、個々に移動行列を与えて移動できそうですけど。
578デフォルトの名無しさん:2010/10/19(火) 15:01:57
>>577
>ちなみに静的頂点バッファっていうのは、頂点バッファの内容はいじらないってことですよね?
「いじらない=いじれない」のではなく「いじらないつもりなので、そのつもりでバッファ確保してね」というのが静的頂点バッファ。

MSDN読めば書いてあるが、静的はVRAM上に。動的はAGPメモリー上に配置する傾向にあるとかなんとか。
俺も詳しくは知らん。
静的だからといって書き換え不可能ってわけではない。
579デフォルトの名無しさん:2010/10/19(火) 15:03:12
>>576
IDirect3DVertexBuffer9::Lockの実行するロックのタイプの指定フラグが正しくないんじゃない?
どういうLockの仕方してるのか分からんから何とも言えんが
580デフォルトの名無しさん:2010/10/19(火) 15:05:47
>>578
わかりました。詳しくありがとうございます。
581デフォルトの名無しさん:2010/10/19(火) 15:07:15
1回も書き換えないなら静的頂点バッファの方が速い
1回ですむならやや動的頂点バッファの方が上だがほぼ大差ない
2回以上Lockするなら動的頂点バッファの方が上になるが
Lockの仕方を間違うとめちゃくちゃなパフォーマンスダウンを起こす
582デフォルトの名無しさん:2010/10/19(火) 15:19:25
DirectX SDKの最新版では VisualC++2005 のサポートが打ち切られたと聞きました
テキストに買ってきた書籍が少し古くて 2005 基準で書かれたものなのですが
ここに書かれているソースコードが使えないということなのでしょうか
それともVisualC++2010 に DirectX SDK の最新版を入れて 同じ環境とみなせるでしょうか

サポートが打ち切られるというのがどういうことか分りません
583デフォルトの名無しさん:2010/10/19(火) 15:19:27
システムメモリとVRAMを共用してるようなビデオチップだとどっちでも変わらなかったり
584デフォルトの名無しさん:2010/10/19(火) 15:27:18
>>582
ソースコードが使えなくなるということではない
2010で動かすなら問題なく使える

とりあえず目立つところではたぶんサンプルから2005用のソリューションが消えたんじゃない?
あとは今後.libの互換性がなくなって
2005+2010Oct以降だとリンクができなくなる(かもしれない)
585デフォルトの名無しさん:2010/10/19(火) 15:34:31
SDKのOct 2010なんて何処にある?
MSDN探しても見当たらないぞ。
586デフォルトの名無しさん:2010/10/19(火) 15:39:58
探したけどOct 2010なんてないなw
587デフォルトの名無しさん:2010/10/19(火) 15:41:25
釣りだったのか?
588デフォルトの名無しさん:2010/10/19(火) 15:44:34
>>584
ありがとうございます とりあえず同じ環境とみなして進めていきます
.lib の互換性がなくなるというのは文法も変わってしまうということ?
サポートの打ち切りとはどういった背景(理由)で行われたかわかりますか
何か変えなくてはいけないことがあったんだと思うのですが
589デフォルトの名無しさん:2010/10/19(火) 15:47:58
M$の陰謀
590デフォルトの名無しさん:2010/10/19(火) 15:48:48
>>585
DirectX SDK は3,4か月に一度更新されているようですので 今後更新されるであろう
バージョンをさしてOct 2010(以降)と言ったのだと思います
591デフォルトの名無しさん:2010/10/19(火) 15:51:12
>>579
D3DLOCK_DISCARD使ってるから、使い方間違えてはいないと思うんだけどなぁ・・・

>>581の言う通り、1ループで1回しかLockしないから誤差の範囲内なのかもしれん。

>>583
GF9600だから、動的のほうが速いのを期待したんだけどなー
592デフォルトの名無しさん:2010/10/19(火) 16:00:05
>>581
そもそも1つのループで複数回ロックは論外。
593デフォルトの名無しさん:2010/10/19(火) 16:04:17
>>592
D3DLOCK_NOOVERWRITEでロックして追記や部分書き換えすればそれほどコストは掛からないんだぜ
これをD3DLOCK_DISCARDでロックするとアホみたいなことになる
594デフォルトの名無しさん:2010/10/19(火) 16:06:51
>>576
考えられる問題点

読み込みを伴うアクセスを行っている
全体を書き換えるのにDiscardを指定していない
Lockを複数回行っている
595デフォルトの名無しさん:2010/10/19(火) 16:08:41
>>593
そもそも何度もロックを繰り返すようなプログラムを組まなければならない時点で、
処理に無駄が多すぎる。
596デフォルトの名無しさん:2010/10/19(火) 16:17:41
>>594
んー、どれにも当てはまらないなぁ…。
とはいっても、さすがに俺のコードに問題があるんだろうし、ちょっと今再度計測してみるわ
597デフォルトの名無しさん:2010/10/19(火) 16:18:19
環境によって違う場合もあるしテストコードをうp
598デフォルトの名無しさん:2010/10/19(火) 16:19:50
ロックを繰り返さない方法って、ある程度は仕方ないと思うんだが、
どーすりゃいいんだ。
599デフォルトの名無しさん:2010/10/19(火) 16:26:50
1フレーム1回のDrawPrimitiveに対し複数回のLockは無駄でしかないが
1フレーム複数回のDrawPrimitiveに対し複数回Lockは当然あり得る
複数Lockする必要が無いなんていってる奴は単純な描画しかしたことがないんじゃね?
600デフォルトの名無しさん:2010/10/19(火) 16:29:35
>>599
やっぱりそうですよね。
601デフォルトの名無しさん:2010/10/19(火) 18:11:14
んー、やっぱり差が見られないなぁ

D3DPOOL_DEFAULT版
dev->CreateVertexBuffer(
desc.Size,
D3DUSAGE_WRITEONLY | D3DUSAGE_DYNAMIC,
desc.FVF,
D3DPOOL_DEFAULT
&buffer,
NULL
);
buffer->Lock(0, 0, &to, D3DLOCK_DISCARD);
::memcpy(to, from, desc.Size);
buffer->Unlock();

D3DPOOL_MANAGED版
dev->CreateVertexBuffer(
desc.Size,
0,
desc.FVF,
D3DPOOL_MANAGED
&buffer,
NULL
);
buffer->Lock(0, 0, &to, 0);
::memcpy(to, from, desc.Size);
buffer->Unlock();

こんな感じ。
もちろんCreateVertexBufferは最初の1回だけね。
モーフィングをやろうとして色々研究してたんだけど、D3DLOCK_DISCARDを使っても早くならねーなーと思ってたとこ。
後者のほうが微妙に速い上、D3DLOCK_DISCARDしないでモーフィング差分だけ書き変えればいい(memcpyいらね)から、ますます後者が速くなるんだ
602デフォルトの名無しさん:2010/10/19(火) 20:35:36
D3DPOOL_MANAGEDで作った頂点バッファは静的バッファってことでいいっすか?
603デフォルトの名無しさん:2010/10/20(水) 10:51:33
MANAGEDとD3DUSAGE_DYNAMICは共存できない

・・・いや、もしかしてMANAGEDの野郎、1度でも動的な使い方したら、内部で動的として確保しなおすとかしやがるのか・・・?
604デフォルトの名無しさん:2010/10/20(水) 12:22:51
下手に頂点バッファ使うくらいなら大人しくDrawXxxUP版にしておけば
すべての悩みから開放されます
605デフォルトの名無しさん:2010/10/20(水) 12:36:58
それは何ですか?
606デフォルトの名無しさん:2010/10/20(水) 13:19:02
D3DLOCK_NOOVERWRITE は、既に使用中である動的バッファー内のデータをアプリケーションが上書きしないことを示します
ロック呼び出しは古いデータへのポインターを返します。これにより、アプリケーションは
頂点バッファーまたはインデックス バッファー内の未使用領域に新しいデータを追加できます。

この古いデータへのポインターっていうところなんですが、
1000KBの頂点バッファがあったとして、200KB分しか使用してなかったとしたら、
その200KBの先頭のポインタを取得できるってことでしょうか?

もしそうだとしたら、未使用領域に新しいデータを追加できるっていうのは、
この先頭ポインタから200KB分のポインタを進めたところから追加しろってことでしょうか?
607デフォルトの名無しさん:2010/10/20(水) 13:25:59
それはないとおもう
608デフォルトの名無しさん:2010/10/20(水) 13:30:00
思ったんですが、座標を変えなきゃいけないやつは、DrawPrimitive系を使わない方がよくないですか?
座標をいじらずに、行列とかで移動できるやつはDrawPrimitive系でいいかもしれませんが、
それ以外の直接座標をいじるやつに関しては、DrawPrimitiveUP系を使ったほうが、管理とか速度面においても、
良いきがするんです。
609デフォルトの名無しさん:2010/10/20(水) 13:30:12
合ってるよ

0-199までLock
0-199までをDrawPrimitive
200-399を(使用中かもしれない0-199の中身が変わらないことを保証して)Lock
200-399までをDrawPrimitive

みたいな時に使う
610デフォルトの名無しさん:2010/10/20(水) 13:34:14
>>609
ありがとうございます!

ですが200-399までをDrawPrimitiveするときの、引数の指定がよく分からないです。
MSDNには、第二、第三引数は下記のように設定しろと載ってました。

StartVertex
[in] ロードする最初の頂点のインデックス。StartVertex を先頭に、正しい頂点数が頂点バッファから読み取られる。
PrimitiveCount
[in] レンダリングするプリミティブの数。プリミティブの許容最大数は、D3DCAPS9 構造体の MaxPrimitiveCount メンバをチェックして決定される。
PrimitiveCount は、プリミティブ タイプで指定されたプリミティブの数である。ライン リストの場合、各プリミティブは 2 つの頂点を持つ。三角形リストの場合、各プリミティブは 3 つの頂点を持つ。

これのプリミティブの数は分かりますが、頂点のインデックスって言う値が良くわからないです。
インデックスって何のことですか?
611デフォルトの名無しさん:2010/10/20(水) 13:51:16
>>610
頂点何個分ずらした位置から読むか
0-199で200プリミティブ(600頂点)だとしたら
200-399での先頭頂点は600、から200プリミティブ
400-599での先頭頂点は1200、から200プリミティブ
612デフォルトの名無しさん:2010/10/20(水) 14:24:18
>>611
なるほど!ありがとうございました!
613デフォルトの名無しさん:2010/10/20(水) 14:27:10
D3DDECLUSAGE_POSITIONTを使うのって邪道ですか?
614デフォルトの名無しさん:2010/10/20(水) 14:32:50
>>613
邪道ではないけど、いろいろ融通が利かなくなるから結局普通にやった方がよくなりそうな
615デフォルトの名無しさん:2010/10/20(水) 14:35:30
>>614
うう。そうですか。
どうにかして通常の座標変換で左上を0,0として、スクリーン座標で指定できる
方法があればいいんですが。
616デフォルトの名無しさん:2010/10/20(水) 14:44:04
617デフォルトの名無しさん:2010/10/20(水) 15:15:56
落ちちゃってますね。。。
618デフォルトの名無しさん:2010/10/20(水) 15:25:52
781 名前:デフォルトの名無しさん[sage] 投稿日:2010/09/13(月) 23:31:17
>>>780
>2Dスプライトを直感的にスクリーン座標と一致させたいってことだよね?
>パースペクティブ射影(D3DXMatrixPerspectiveFovLH)じゃなくて
>正射影(D3DXMatrixOrthoOffCenterLH)で射影行列作ればいいと思うよ
>スクリーンサイズが800x600なら
>
>D3DXMatrixOrthoOffCenterLH( D3DXMATRIX *pOut, 0, 800, 600, 0, FLOAT zn, FLOAT zf);
>
>で左上(0.0)になって分かりやすいんじゃないかな
>
619デフォルトの名無しさん:2010/10/20(水) 15:30:05
ありがとうございました
620デフォルトの名無しさん:2010/10/20(水) 16:51:30
カメラ空間はこう、ワールド空間はこう、射影空間はこう、ビューポート空間はこう
みたいな解説をしてくれてるページってないですかね?
621デフォルトの名無しさん:2010/10/20(水) 16:59:07
622デフォルトの名無しさん:2010/10/20(水) 17:03:18
>>621
ありがとうございます。
623デフォルトの名無しさん:2010/10/20(水) 17:11:32
>>608
UP系の最大の欠点は頂点ストリームが1つしか使えないこと
それでまかなえる程度の単純なスプライト描画しかしないなら十分な速度は確保できると思われ
624デフォルトの名無しさん:2010/10/20(水) 17:38:18
>>623
ああ・・そういえばそうでしたね。
検討してみます。ありがとうございました。
625デフォルトの名無しさん:2010/10/20(水) 20:15:18
何度も質問して申し訳ないんだが、
DrawPrimitiveUPとDrawIndexedPrimitiveUPではどちらの方が効率が良いのでしょう?

DrawPrimitiveUPでもD3DPT_TRIANGLESTRIPで描画すればそんなに変わらないでしょうか?
626デフォルトの名無しさん:2010/10/20(水) 20:45:42
質問するよりも、自分で試してみるといいよ。
627デフォルトの名無しさん:2010/10/20(水) 22:32:31
俺が計った環境だとUPは何故か頂点数が多いにも関わらず
DrawIndexedPrimitiveUPよりDrawPrimitiveUPの方が速かった
628デフォルトの名無しさん:2010/10/21(木) 03:52:44
結局、DirectXのAPIはインターフェイスを提供してるだけであって
実際は、各グラボのドライバの処理による環境依存だからね

その時点までの他の頂点を含む状況、今描画しようとしている頂点内容や数、
これらの組み合わせで、どれが効率良いかなんて言えない

だから、これが効率的だ(自分のPCだけの話ってなら別だが)、
なんて物を求めないで、これは大多数のケースで非効率だって実装を避ければ良いだけだと思うが
629デフォルトの名無しさん:2010/10/21(木) 09:12:34
最後に一つだけ。。。本当ごめん。

色々やってみたんですが、DrawPrimitive系(UP含む)では、
四角形のポリゴンを一気に描くことはできないですよね?
ここで言う一気とは「一回の」DrawPrimitiveで描画という意味です。
何度やっても、思い通りの頂点と頂点がつながってくれなかったので、
最終確認したいんです。

これを可能にするにはDrawIndexedPrimitive系(UP含む)で、好きな頂点を指定してあげて
自分の思ったとおりに描画させるしかないってことでよいでしょうか?
630629:2010/10/21(木) 09:13:58
ここで言っている四角形はお互いがくっついているわけではなく、
バラバラにある一定の距離を保って、大量にあるものとします。
631デフォルトの名無しさん:2010/10/21(木) 09:41:06
トライアングルリストで6頂点使えばいける
632629:2010/10/21(木) 09:56:48
方法としては、順番に6頂点ずつバッファを埋めていけば、出来るってことですか?
633デフォルトの名無しさん:2010/10/21(木) 10:00:36
yes
634629:2010/10/21(木) 10:04:21
>>633
ありがとうございました。嬉しいです。
頑張ります。当分一人で頑張りますね。
635デフォルトの名無しさん:2010/10/21(木) 22:30:01
VC2008でDXライブラリを使用しています
PlayMusic命令でMIDIファイルが再生できません
0x4b7e2bd8 で初回の例外が発生しました: 0xC0000005: 場所 0x4b7e2bd8 を読み込み中にアクセス違反が発生しました。
というエラーで出力が埋め尽くされています…
636デフォルトの名無しさん:2010/10/21(木) 22:31:44
637デフォルトの名無しさん:2010/10/21(木) 22:32:56
そっちのあったのですね
素早いご指摘ありがとうございました
638デフォルトの名無しさん:2010/10/22(金) 00:27:34
たまにDXライブラリの質問が来るなあ
639デフォルトの名無しさん:2010/10/22(金) 00:45:44
DXライブラリは2chで聞くより本家で聞いたほうが速い希ガス
640デフォルトの名無しさん:2010/10/22(金) 02:42:29
FloatMax()なんて今更誰得だよ
641デフォルトの名無しさん:2010/10/22(金) 03:15:30
642デフォルトの名無しさん:2010/10/22(金) 07:14:42
それだけDXライブラリがいいってことだな
643デフォルトの名無しさん:2010/10/22(金) 07:24:05
DXライブラリを使う人間に、適切なスレを判断する程度の能力すらない者が多く混じっているということだろう。
644デフォルトの名無しさん:2010/10/22(金) 15:49:02
DXライブラリのスレにDirectXについて質問しにいったらどうなるのっと
645デフォルトの名無しさん:2010/10/22(金) 16:17:28
なんで自分でプログラミングする以前の問題として、
まともなモデリングソフトを触って研究しようとしないんだろう?
どれだけ馬鹿なの?
646デフォルトの名無しさん:2010/10/22(金) 16:20:29
はいはい、えらいでちゅねぇ
647デフォルトの名無しさん:2010/10/22(金) 17:54:58
シューティング作ろうと思ってるんですが、
弾は動的確保にしたほうがいいですか?
648デフォルトの名無しさん:2010/10/22(金) 18:07:23
>>647
一度に画面に出る最大数を決めておいて配列で用意したらいいじゃん
649デフォルトの名無しさん:2010/10/22(金) 18:08:13
>>648
やっぱりそのほうがいいですか?
動的確保はやっぱり重いでしょうか?
650デフォルトの名無しさん:2010/10/22(金) 18:15:01
初心者は重いかどうかなど考えなくて良い。
馬鹿の考え休むに似たりということにしかならない。
余計なことは考えずにやりたいようにどんどん作れ。
651デフォルトの名無しさん:2010/10/22(金) 18:15:21
>>649
やりたきゃ好きにしろよ
あんまり意味はなさそうだけど
なんだ?
弾一発めちゃくちゃ場所とるのか?
652デフォルトの名無しさん:2010/10/22(金) 18:42:37
>>649
とりあえずn発までがMAXって定義しといて、先に領域確保しといて弾ブッパするのと
1発ずつ確保してブッパするプログラム組んで、速度見てみるといいと思うの。
653デフォルトの名無しさん:2010/10/22(金) 18:52:26
>>649
処理オチする位に弾出してみればいいじゃん。そこから逆算してみたら?
むかーし、セレロン600Mhz位とGPU不明でやったときでも100位は出てたぞ。
現実的に300位出ちゃうとよけるの不可能じゃね?
654デフォルトの名無しさん:2010/10/22(金) 19:15:02
皆さんたくさんの意見ありがとうございました。
とりあえず好きにやってみて、処理落ちしたらまた考えます。
ありがとうございました。
655デフォルトの名無しさん:2010/10/22(金) 19:15:59
「馬鹿の考え休むに似たり」

いい言葉だな
656デフォルトの名無しさん:2010/10/22(金) 19:19:24
連射によるメモリーが足りなくなる場合のテストとかめんどくさそうだ
657デフォルトの名無しさん:2010/10/22(金) 19:30:06
馬鹿の考え休むに似たりですね。覚えときます。
658デフォルトの名無しさん:2010/10/22(金) 20:33:53
>>656
何億発打てばメモリ不足になるんだよ?
というか馬鹿?
659デフォルトの名無しさん:2010/10/22(金) 20:37:41
メモリ不足より分断化の方が気になる
動的確保にしても予め確保しといたヒープ内からとかにしたい所だ
660デフォルトの名無しさん:2010/10/22(金) 20:39:32
>連射によるメモリーが足りなくなる場合のテストとかめんどくさそうだ
馬鹿の考え休むに似たり

>メモリ不足より分断化の方が気になる
馬鹿の考え休むに似たり
661デフォルトの名無しさん:2010/10/22(金) 20:48:25
メモリフラグメンテーションは普通に起きそうだけどな
662デフォルトの名無しさん:2010/10/22(金) 21:01:53
>>658
しらないけど、動的に取るならテスト項目に上がるでしょ?
663デフォルトの名無しさん:2010/10/22(金) 21:07:50
「しらないけど」ってどれだけアホな発言しているんだよ
664デフォルトの名無しさん:2010/10/22(金) 21:14:44
>>663
じゃ何発打てばメモリー不足になるんですか?
665デフォルトの名無しさん:2010/10/22(金) 21:43:26
動的に確保したら
解放とか忘れちゃうだろ
666デフォルトの名無しさん:2010/10/22(金) 21:52:34
っSTL
667デフォルトの名無しさん:2010/10/22(金) 21:55:41
STLはそのつど動的に確保してるわけじゃなくて
最初にある程度大きく確保しておいてその範囲内の内はそこから確保されるので
結局配列で確保したのと一緒になる
668デフォルトの名無しさん:2010/10/22(金) 22:22:32
STGの敵の弾はタスクシステムが一番だと思います。
重い仮想関数とか使わずとも多態化できますし。



嘘です。上のようなこと書くとスレがと荒れるらしいです。
669デフォルトの名無しさん:2010/10/22(金) 22:36:44
STLといってもアルゴリズムが複数あって手法が異なるのに
特定のアルゴリズムの限定的な話を突然始める>>667みたいな馬鹿って何なの?
670デフォルトの名無しさん:2010/10/22(金) 22:58:38
まあ、ぶっちゃけ今回の例だと動的確保してもメリットないよでFAだな
デメリットは穴ぼこメモリもたしかに気になるけど
それも極小すぎてデメリットといえるかどうかっつーとよくわからないな
ガベコレ動き出したコレ!とかいうjavaみたいな環境ならデメリットありまくりだけどw

まあ、でもかっちょよく(?)動的にしたいなら
「意味はないけど好きやりたいなら好きにしたらいーんじゃないですか?
それであなたが気持ちよくゲームを作れるならそれもいーんじゃないですか」でFA
671デフォルトの名無しさん:2010/10/23(土) 04:03:24
お前らここ何のスレか分かってる?
672デフォルトの名無しさん:2010/10/23(土) 04:53:32
スレチうざいから消えろ
673デフォルトの名無しさん:2010/10/23(土) 05:02:26
comインターフェースってwindowsがドライバのAPI呼んで実体作ってるんでしょ?
メモリ管理とかどうなってるの?
674デフォルトの名無しさん:2010/10/23(土) 05:15:30
>>672
なんか語りたい話題があるならどうぞ
675デフォルトの名無しさん:2010/10/23(土) 07:02:57
>>673
COMはインタフェイスの実装手法であって、ドライバ云々との関連は通常のAPIと同じでしかない。
676デフォルトの名無しさん:2010/10/23(土) 10:44:07
ある空間上の点が、ウィンドウ上で描画領域内に
収まっているかどうかわかる方法はありますか?
677デフォルトの名無しさん:2010/10/23(土) 11:12:56
投影してみればいい
678デフォルトの名無しさん:2010/10/23(土) 11:16:33
>>676
点を座標変換して射影空間内に収まってるかどうかをチェックする

D3DXMATRIXA16 matWorld,matView,matProj;//各変換行列
D3DXVECTOR3 v ;// 空間上の点

D3DXVec3TransformCoord ( &v, &v, &(matWorld*matView*matProj) ) ;//既に移動済みの点ならmatView*matProj

-1.0 <= v.x <= 1.0
-1.0 <= v.y <= 1.0
0.0 <= v.z <= 1.0

でどうだろう?
679デフォルトの名無しさん:2010/10/23(土) 14:26:29
PIXで分かった希ガス
680デフォルトの名無しさん:2010/10/23(土) 18:36:23
DirectXはCOMで使うのとLoadLibraryどっちが良いの?
681デフォルトの名無しさん:2010/10/23(土) 20:55:22
サミータウンをやりたくて本日登録してゲームをダウンロードしたんですがDirectXのダウンロードに失敗したと出て起動出来ません…
どうしたら起動出来ますか?
682デフォルトの名無しさん:2010/10/23(土) 20:58:56
ここはDirectX"プログラム"の質問スレです
エンドユーザーの方はご遠慮下さい
683デフォルトの名無しさん:2010/10/23(土) 21:42:36
OSを含めたPCの性能がヘボ過ぎると予想
684デフォルトの名無しさん:2010/10/23(土) 22:54:35
>>683
Machine name: EPSON112157501
Operating System: Windows XP Home Edition (5.1, Build 2600) Service Pack 3 (2600.xpsp_sp3_gdr.100427-1636)
Language: Japanese (Regional Setting: Japanese)
System Manufacturer: EPSON DIRECT CORP.
System Model: P4BGV-ED
BIOS: Award Modular BIOS v6.0
Processor: Intel(R) Celeron(R) CPU 2.40GHz
Memory: 1016MB RAM
Page File: 487MB used, 1131MB available
Windows Dir: C:\WINDOWS
DirectX Version: DirectX 9.0c (4.09.0000.0904)
DX Setup Parameters: Not found
DxDiag Version: 5.03.2600.5512 32bit Unicode
これがスペックです。
685デフォルトの名無しさん:2010/10/23(土) 23:08:35
ここはDirectX"プログラム"の質問スレです
686デフォルトの名無しさん:2010/10/23(土) 23:10:00
ネトゲ質問に行けよカス
687デフォルトの名無しさん:2010/10/23(土) 23:25:40
>>682 >>685
もっと噛み砕いた文章にしないと伝わらんと思う

>>681
このスレは作り方の質問スレなので、使い方の質問は他所でやってくれ
688デフォルトの名無しさん:2010/10/24(日) 00:12:32
またパチンカスか
689デフォルトの名無しさん:2010/10/24(日) 02:06:15
DirectInput の仮想キーコードあるじゃない。DIK_NUMPAD8 とかの奴ね。
これに紐づいた文字列データとか無いかな。

キーコンフィグで今登録されてるキーが何かって表示したいんだけど、
自分で文字列登録していくしかないかな。
690デフォルトの名無しさん:2010/10/24(日) 02:14:31
無い
691デフォルトの名無しさん:2010/10/24(日) 02:22:23
>>690
ありがとう、安心して作れるよ
692デフォルトの名無しさん:2010/10/24(日) 03:00:58
ある
693デフォルトの名無しさん:2010/10/24(日) 03:55:10
日本語化されてるので最新のってDirectX SDK (August 2008)ですか?
694デフォルトの名無しさん:2010/10/24(日) 04:19:39
何が?
695デフォルトの名無しさん:2010/10/24(日) 04:35:41
>>694
DirectX SDK 日本語
で検索して出てきたのがこれだったので
英語出来ないからこれ使おうとおもったんですが他にありますか?
696デフォルトの名無しさん:2010/10/24(日) 04:40:10
>>695
ヘルプとSDKは別物ですけどそのへんわかってますか
697デフォルトの名無しさん:2010/10/24(日) 04:52:37
>>696
ヘルプだけ翻訳されてるってことでしょうか?
で、よく見てみたら2009版のヘルプもあったのでそれと2009sdkをインストしてみます
698デフォルトの名無しさん:2010/10/24(日) 04:56:22
DXSDKに日本語版なんて存在しません。
ドキュメントには日本語版がありますが最新の情報は基本的に英語です、慣れて下さい。
699デフォルトの名無しさん:2010/10/24(日) 05:06:58
>>698
辞書片手に何とかやってみます
深夜にあほな質問してすみません 有難うございました
700デフォルトの名無しさん:2010/10/24(日) 12:07:16
C#でDirectXしようと思うとXNAしかないんですかねー
701デフォルトの名無しさん:2010/10/24(日) 12:32:12
ぐぐれかす
702デフォルトの名無しさん:2010/10/24(日) 12:34:39
>>700
SlimDX
703デフォルトの名無しさん:2010/10/24(日) 13:28:01
API Code Packもあるけど、自分で調べられるようでないと使えないな。
704デフォルトの名無しさん:2010/10/24(日) 16:23:27
>>700
箱とマルチしたいならXNAでいいけど、そうでないならSlimDXオヌヌメ
705デフォルトの名無しさん:2010/10/24(日) 16:41:33
ドキュメントやサンプルの多さが強みかな < XNA
706デフォルトの名無しさん:2010/10/24(日) 19:44:51
思ったんだけどさ、ここ”初心者質問”スレだよな?
”初心者”質問してる人らに冷たすぎないか?

もちろんちゃんと答えてあげてる人もいるし、ひどい質問してる人らもいる。
でも見てると初心者脱却したてのやつらが”初心者”いじめて気持ちよくなるスレに思えて来るんだが。
707デフォルトの名無しさん:2010/10/24(日) 19:46:59
ふーん
708デフォルトの名無しさん:2010/10/24(日) 19:47:50
そういうのはスルーしてればいいじゃまいかー
709デフォルトの名無しさん:2010/10/24(日) 20:06:37
>>708
普段はスルーしてるんだけど、
このスレの存在意義とかあり方についてどうなのかなって思って
710デフォルトの名無しさん:2010/10/24(日) 20:08:38
>>706
具体的にどのレスにどう答えてほしいのか言え
抽象的過ぎてさっぱりわからない
711デフォルトの名無しさん:2010/10/24(日) 20:09:09
気になるんなら自分で答えればいいじゃない
712デフォルトの名無しさん:2010/10/24(日) 20:31:09
にちゃんで傍観者の自治活動は無意味です。
あくまで具体的な質疑応答のみがスレを形作ります。
自分の好みのスレにしたいなら一晩中張り付いて全ての質問に対応するぐらいの気概が必要です。
713デフォルトの名無しさん:2010/10/24(日) 20:34:06
そうだな・・・
714デフォルトの名無しさん:2010/10/24(日) 21:02:25
初心者です!質問です。

DrawIndexedPrimitiveUPを使って描画しようとしています。

これを使って描画する場合、頂点デクラレーションを自分で定義したものを
セットして使用することはできるのでしょうか?

それともSetFVFしか使えないのでしょうか?
715デフォルトの名無しさん:2010/10/24(日) 21:14:08
>>714
自分で定義したものを使える
ただしストリームは0番しか使えないので頂点情報は1つに纏める必要がある
716デフォルトの名無しさん:2010/10/24(日) 21:29:30
>>715
ありがとうございます!

追加で質問させてください。
VERTEX v[400]//頂点バッファ
WORD iv[600]//インデックスバッファ

上記の配列にそれぞれ、値が格納されているとします。
VERTEXは頂点データの構造体です。
その状態で、下記のように実行するとします。
DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST,0,8,4,iv,D3DFMT_INDEX16,v,sizeof(VERTEX));

この場合頂点バッファとインデックスバッファの配列にデータが全部埋まっていたとしても、
上記で指定した通りに四角形が二つ(三角形が4つ)描画されるのでしょうか?

ちょっとやってみたら、上手く描画できなかったものでして^^;
717デフォルトの名無しさん:2010/10/24(日) 21:30:59
補足です。
三角形が4つ「だけ」描画されると思ってていいのでしょうか?
配列に入っている他のデータは無視されるのかが聞きたいです。
718デフォルトの名無しさん:2010/10/24(日) 21:42:08
>>716
その認識で合ってるよ

頂点の指定の順番が逆周りになってて裏面が表を向いてるとかってオチはない?
カリングモードをNONEにして試して見るとか
719デフォルトの名無しさん:2010/10/24(日) 21:51:38
>>718
カリングモードをNONEにしても駄目でした。
でも認識は合ってるとのことですので、もう一回色んなところ見直してみます。
ありがとうございました。
720デフォルトの名無しさん:2010/10/24(日) 23:03:18
D3DXMatrixRotationX(Y,Z)、D3DXMatrixRotationAxis、D3DXMatrixRotationQuaternion等の関数は、

(1)ある軸まわりにベクトルを回転した時の、回転前のベクトルr1と回転後のベクトルr2の間の関係
を表す回転変換行列E (r2 =E * r1) を生成している (座標系は基本的にWorld座標系O-xyzの一つだけ)。

(2) あるベクトルを、モデルに固定されたローカル座標系O-ξηζで成分表示した時の成分
(ξ, η,ζ)と、World座標系O-xyzで成分表示した時の成分(x,y,z)との間の関係を表す座標変換行列R

(x, y, z)T = R * (ξ, η,ζ)T、
Tは転置記号で(x,y,z)T、(ξ, η,ζ)Tは列ベクトル

を生成している。複数個のローカル座標系とworld座標系が存在する。



のどちらなのかわからない。

自分としては、(1)の方が理解し易い。最初、O-ξηζ座標系はworld座標系0-xyzと一致していて、
ξ、η、ζ軸の単位ベクトルi',j',k'に回転変換行列Eをかけることによってξ、η、ζ軸と
O-ξηζ座標系で成分表示されたベクトルを回転させる。

が、DirectXの参考書をみると座標変換行列という言葉を使っている本もある。


(1)(2)のどちらで解釈してもいいかもしれないが(EとRの要素は一致する)、(1)(2)のどちらの立場で
話をしているか明確にしておかないと話がかみ合わないと思う。

皆さんは(1)(2)のどちらで解釈してますか? それとも、私が勘違いしてるんでしょうか?
721デフォルトの名無しさん:2010/10/24(日) 23:09:15
722デフォルトの名無しさん:2010/10/24(日) 23:11:55
あっ、DirectXの場合は行ベクトル=行ベクトル*転置行列ですが、
その話はおいといて
723デフォルトの名無しさん:2010/10/24(日) 23:17:11
ワールド行列の中身をきちんと理解してればそんな疑問は出ないはず
724デフォルトの名無しさん:2010/10/24(日) 23:27:25
PIXでpre-vertex-shaderのほうでは思ってる通りの頂点の順番じゃなくて
反転してるんだ。

post-vertex-shaderの方では思ってる通りの頂点順になってるんだ。

これってどういう原因が考えられますか?

preの方は半時計まわり。
postの方は時計周り。
になってます。

カリングモードは左周りをカリングするように設定してます。
頂点データを作ったときは、時計周りに定義してるんですけどね。
725デフォルトの名無しさん:2010/10/24(日) 23:28:08
>>723

すみません。で、どちらの立場なんですか?
726デフォルトの名無しさん:2010/10/24(日) 23:28:08
part27の401に似てるな
727デフォルトの名無しさん:2010/10/24(日) 23:29:45
釣りかw
728724:2010/10/24(日) 23:30:51
私は本気ですよ。
729デフォルトの名無しさん:2010/10/24(日) 23:32:35
>>720のことに言ったんだよ>釣り
730724:2010/10/24(日) 23:33:20
そうでしたか。しつれいしました 。
731デフォルトの名無しさん:2010/10/24(日) 23:36:34
釣りだと思われるのが嫌ならフシアナして質問すればいいと思う
732デフォルトの名無しさん:2010/10/24(日) 23:36:46
それ、何のことですか?
733724:2010/10/24(日) 23:55:08
ちょっと自力で頑張ってみます。
734デフォルトの名無しさん:2010/10/24(日) 23:55:46
> 401 名前:デフォルトの名無しさん[] 投稿日:2010/02/13(土) 19:14:54
> D3DXMatrixRotationX(&matWorld, cta);
> pDevice->SetTransform(D3DTS_WORLD, &matWorld);
>
> におけるマトリックスmatWorldの解釈は次のどれが正しいでしょうか?
>
> (1)World座標系XYZにおいて、3Dモデル(の頂点ベクトル)をX軸まわりに
> θradだけ回転させるためのベクトル回転変換行列。
>
> (2)3Dモデルの各頂点座標(ξ,η,ζ)を記述しているξηζ座標系が
> ワールド座標系XYZに対してX軸回りにθradだけ回転している(3Dモ
> デルもX軸回りにθradだけ回転している)。matworldは3Dモデルの
> 各頂点座標(ξ,η,ζ)を(X,Y,Z)座標に変換する座標変換行列。
>
> (3)どちらの解釈でもいい。
>
> (4)どちらの解釈も正しくない。
>
> ベクトルの回転変換行列であろうと座標変換行列であろうと両者の要素の中身
> は一致するから(3)でいい気がしますが、回転、移動操作に対応した行列
> 乗算の順序が右側にかけていくか、左側にかけていくかの違いが生じるのでは
> ないか? という気もします。


> 403 名前:デフォルトの名無しさん[] 投稿日:2010/02/13(土) 20:32:15
> はあ
735デフォルトの名無しさん:2010/10/24(日) 23:57:25
> 433 名前:デフォルトの名無しさん[] 投稿日:2010/02/14(日) 10:09:54
> >>415
>
> 回答ありがとう。
> directXは(行列*列ベクトル)の演算と違って(行ベクトル*行列)の演算
> だから行列を転置にしなければならない。したがって、行列の積ではかける
> 順序が逆になる、というのはあなたの指摘どおりだ。
>
> ところがベクトルを回転させる回転変換行列か、座標軸(もの指し)を
> 回転させた座標系間の座標変換行列かによっても乗算の順序は違う。
>
> >>412 >> 414 >> 428
> わかりもしないくせに偉そうなこと言うな雑魚! ひっこんでろ
>
> >>416
> お前も黙ってろ。
>
> (1)の解釈で納得していたんだが、(2)の解釈でないと説明できない
> 問題が発生したんで(と、その時は思ってた)。
>
> DirectXでは回転、移動の操作順ごとに行列を右側にかけていくよう
> だから(そして転置行列の積だから)、(1)の解釈でいいようだ。
>
> ただ、DirectXの関数が(1)(2)のどちらの考えにたって実装されているのか
> 確認したかったから聞いたのに >>410 の馬鹿が仕様を調べれば、とアホな
> 回答をしているのには閉口した。そんな事しか言えないなら黙ってろや。
>
>
> わかっている人からのアドバイスには感謝するが、アホ相手するのも
> 面倒だからもう書かない。
>
> アホはまた何か書くだろが、相手しない。
736デフォルトの名無しさん:2010/10/25(月) 00:34:44
>>720
(1)でも(2)でもない場合はどうやって理解しようとしてるわけ?
737デフォルトの名無しさん:2010/10/25(月) 00:36:57
こういう輩は自分が聞きたい意見しか聞かないから何言っても無駄
738デフォルトの名無しさん:2010/10/25(月) 00:43:29
まあ、質問に抜けがあるよね
どちらですか?って聞いてもどっちでもねぇときはどうやって受けとる気なんだろねw
739デフォルトの名無しさん:2010/10/25(月) 01:52:00
>>706
ほらっ、お前の嫌いな初心者イビリが始まったぞ
助けてやれや
740デフォルトの名無しさん:2010/10/25(月) 06:47:16
>>739
いや、違うって
どういう脳みそしてんだよ
つまり、こういう状況だろ↓

このパンはなんのパンですか?
(1)あんパン
(2)クリームパン
(1)か(2)のどっちですか?

正解はジャムパンなのに回答が(1)か(2)に固定されてて答えようがないよw
741デフォルトの名無しさん:2010/10/25(月) 09:28:37
>>736>>738 は偉そうに言ってるけど、結局わかってないんだ。
過去ログからわざわざ挙げる奴もひまと言うか、何と言うか。

ひょっとしたら、わかる人がいるかもしれないと期待したんだが。
742デフォルトの名無しさん:2010/10/25(月) 12:27:20
>>720 は釣りだろ?

数学それほど詳しくはないが、そういう関数で生成できる行列って、
変換元座標系からみた変換先座標系への差分を表してる。

どっちでもあってるんじゃない?回転だけ考えれば(1)もあってるし、行列全体の動作として見たら(2)でもあってる


つか釣りだろ?
743デフォルトの名無しさん:2010/10/25(月) 13:45:27
いまdxライブラリでゲーム作ってるんだけど、dxライブラリで得た経験ってDirectXじゃ無意味?
最終的にDirectXを使いたいんだったら最初からDirectX使った方が良いのかな
744デフォルトの名無しさん:2010/10/25(月) 13:45:57
うん
745デフォルトの名無しさん:2010/10/25(月) 13:48:46
>>744
そっか、俺の知能だとかなり厳しいががんばってみる 即レスありがとう
746デフォルトの名無しさん:2010/10/25(月) 13:54:30
DirectXはでかすぎてわけわかめになるからどのみちいきなりは扱えん
747デフォルトの名無しさん:2010/10/25(月) 14:00:17
>>746
う…む…?
無意味になるの前提でもdxライブラリから入るのは有りって事?
748デフォルトの名無しさん:2010/10/25(月) 14:18:32
なんでもできたほうがいいから無意味じゃない
749デフォルトの名無しさん:2010/10/25(月) 14:19:32
意見が分かれると子だと思うが俺は意味ないと思う
それよりマクロ定義の意味とかDLL回り固めて
意味不明なメソッドやクラスの詳細を片っぱしからコメントアウトした方が早いかとおも
750デフォルトの名無しさん:2010/10/25(月) 14:25:19
いきなりDirectX扱ってもなにこれわけわかんねーなんにもできねーって状態が長いからなんか作る前にくたばる
根気があるならいきなりいってもいいけど
751デフォルトの名無しさん:2010/10/25(月) 14:35:01
まぁ今後3Dやらないっていうなら全く問題ない
752デフォルトの名無しさん:2010/10/25(月) 14:48:31
あとで本格的にやったときに
「あぁ、あれはコレを内部でやってたのね」と思い当たる的な役立ちかたはするかもしれんが
DXライブラリを事前にやっておくことで
DirectXが理解しやすくなるような役立ち方はあまりしない気がする
753デフォルトの名無しさん:2010/10/25(月) 14:56:29
うーん…やっぱりDirectXに挑戦した方が良いのかな、3dもやってみたいし
それで駄目だったらライブラリ使う事にするよ 皆さんどうもありがとう
754デフォルトの名無しさん:2010/10/25(月) 15:05:58
DXライブラリに3Dもあるよ
755デフォルトの名無しさん:2010/10/25(月) 15:49:51
DXライブラリ 関数リファレンスページ 3D関係関数リファレンス
ttp://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_3d.htm

カメラとか行列とか3D独特なものには触れれるから3Dの感触を確かめる意味ではいいんじゃないかな。
756デフォルトの名無しさん:2010/10/25(月) 15:53:02
>>755
俺もそれで3Dをマスターした。
757デフォルトの名無しさん:2010/10/25(月) 15:53:44
>>747

DXライブラリからDirectX直たたきにいこうするなら、
このライブラリのソースを読むのが一番はやいんじゃないかな?

DXライブラリでXXを行うには・・・からはいっていって、
中身の実装でDirectXの勉強とかね。

で、ソースって公開されてるの?w

758デフォルトの名無しさん:2010/10/25(月) 15:56:00
マスター(笑)
759デフォルトの名無しさん:2010/10/25(月) 16:02:15
>>755
うわあしらんかった
すぐ使ってみよう。今すぐ使おう
760デフォルトの名無しさん:2010/10/25(月) 16:02:50
公開されてる。
761デフォルトの名無しさん:2010/10/25(月) 16:41:06
主語が無い
762デフォルトの名無しさん:2010/10/25(月) 16:56:38
SlimDXもC++のソースが公開されてるし勉強になるよ。
一応、薄いラッパだし直に触るのに近い。
763デフォルトの名無しさん:2010/10/25(月) 16:57:52
>>755は最後の htm を html に修正してくださいな。
764デフォルトの名無しさん:2010/10/25(月) 16:59:21
なんですぐマスター(笑)したとかいってしまうん(´・ω・`)
765デフォルトの名無しさん:2010/10/25(月) 17:02:34
おまいらの過剰反応がおもしろいから
766デフォルトの名無しさん:2010/10/25(月) 17:20:11
UV座標のUとVって何の略でしたっけ?
767デフォルトの名無しさん:2010/10/25(月) 17:27:21
XYZW使っちゃってたからUVにしただけだったような・・・
768デフォルトの名無しさん:2010/10/25(月) 17:27:53
特に意味はないらしいよ
769デフォルトの名無しさん:2010/10/25(月) 17:36:06
>>767-768
thx!
770デフォルトの名無しさん:2010/10/25(月) 17:56:54
物体を移動させたら、一定ごとにガタンガタンってなるんですが。

floatで計算させたら一定ごとに誤差がでることあるんですか?
771デフォルトの名無しさん:2010/10/25(月) 18:11:57
>>770
移動処理はfloatでやってるのに
座標管理をintとか整数でやってたら誤差はでるかもね


でも、なんとなくだけど
垂直同期を取らずに精度の悪いタイマーでPresentしてるせいな予感
772デフォルトの名無しさん:2010/10/25(月) 18:18:26
タイマーの精度は大丈夫だと思うんですけどね。
ちなみに壁に思いっきりキーを押しっぱなしでぶつかってる時は、
ガタンガタンにならないんですよね。

移動するときだけガタンガタンってなるんですよ。
773デフォルトの名無しさん:2010/10/25(月) 18:28:36
じゃあ、タイマーじゃなくて
垂直同期待ちして描画してごらんよ
774デフォルトの名無しさん:2010/10/25(月) 18:32:54
うおおお!垂直同期待ちしたらスムーズに動きました!
ってことは私のFPS制御がおかしいってことでしょうか?
775デフォルトの名無しさん:2010/10/25(月) 18:42:57
>>774
毎フレーム、タイマーの値を吐き出してみるとか・・・
776デフォルトの名無しさん:2010/10/25(月) 18:52:18
DWORD static waittime=0;
static DWORD oldtime=0;
float wt=1000.0f/FPS;

wt=(cnt%60+1)*wt;//待つべき時間

//分解能の精度を変更(制度をあげる)
timeBeginPeriod(1);

waittime+=timeGetTime()-oldtime;

if(waittime<wt)
Sleep(wt-waittime);

oldtime = timeGetTime();

if(waittime<wt){
waittime=wt;
}

//分解能の設定を戻す
timeEndPeriod(1);
++cnt;
}

こんな感じなんですがダメですかね?
FPSには60.0fが入っています。
777デフォルトの名無しさん:2010/10/25(月) 19:04:43
>>776
毎フレーム描画のタイミングのタイマの数値をアウトプット画面にでも出して
エクセルにでも貼り付けてちゃんと正しいタイミングで機能してるか見てみたらいいんじゃね?

と、その前にSleep(0)にしてみたかったりして・・・
俺も理詰めでプログラム組めないw
778デフォルトの名無しさん:2010/10/25(月) 19:11:05
16msは垂直同期に近いってだけで実際はちょっとズレてる
垂直同期を待たずにタイマーでフリップさせると
画面の更新途中で表示されてしまうのでティアリング線がでてしまう
そしてズレがどんどん大きくなって1画面文に達すると
まったく更新されてない画面(2フレーム前)が表示されてしまいガタッっとなってみえる
779デフォルトの名無しさん:2010/10/25(月) 19:18:01
え?じゃあ皆さんは垂直同期待ちでやってて、
自分でFPS制御してないんですか?
780デフォルトの名無しさん:2010/10/25(月) 19:24:09
デバッグ出力したら、16ミリ秒か17ミリ秒でした。
これをどうやって制御をあげればいいのでしょうか?
781デフォルトの名無しさん:2010/10/25(月) 19:32:47
>>776
変に省略されてるので分かりにくいけど、cntが59から60になるときに破綻してない?


>>779
場合によりけりでは。
垂直同期させてゲーム進行が問題ないのであれば、それが一番綺麗で楽だと思う。
ゲームの性質上自分でFPS制御する必要があるのであれば、自前でできるだけやるしかない。
782デフォルトの名無しさん:2010/10/25(月) 19:36:55
垂直同期を待つか
待たずにやるにしてもそもそもFPS制御をしない
移動量を前フレームからの経過時間から算出すれば問題ないでしょ?

ターマーでやったら
60FPS以上を60に固定することはできるかもしれないけど
20FPSしかでないようなPCで動かさなきゃいけないときどうするの?
783デフォルトの名無しさん:2010/10/25(月) 19:45:34
皆さんありがとうございます。

FPSで制御しようと思ったのはどんなマシンでも一定のスピードで動かしたかったからです。
FPSが低いマシンだったら、当然ガクンガクン動くことにはなるんですが、逆に60以上のマシンは
制御できると思ったので。

いくつかのフリーゲームではFPSを自分で選択して、設定できるようにしてあるのをいくつか見たことがありました。
そういうのはやっぱり自分で計算してるんですよね。

う〜ん。悩むところですが、垂直同期待ちでやることにします。

ありがとうございました。
784デフォルトの名無しさん:2010/10/25(月) 20:07:36
「FPSを自分で選択して」
ってディスプレイがサポートしてるリフレッシュレート列挙して
選んだ値に強制的に変更してるだけんじゃないの?
785デフォルトの名無しさん:2010/10/25(月) 20:25:06
あ、なるほど。。
そんなもんなんですかね。
結局は自分でFPS制御してる人って少ないんんですかね。。
786デフォルトの名無しさん:2010/10/25(月) 20:27:58
>>785
自分が何かいてるか理解できてねえだろw
787デフォルトの名無しさん:2010/10/25(月) 20:32:09
いえ、たぶん理解できてると思いますよ
788デフォルトの名無しさん:2010/10/25(月) 20:38:44
>>787客観的事実ではないので無効です。
789デフォルトの名無しさん:2010/10/25(月) 20:40:48
そうですね。わかってないですかね。勉強しなおしますよ。
790デフォルトの名無しさん:2010/10/25(月) 20:52:56
処理落ち時にコマ落ちさせないと不味いジャンルって
MMO以外に何がある?
791デフォルトの名無しさん:2010/10/25(月) 20:59:26
>>783
ウィンドウモードの場合は垂直同期でタイミングとろうとすると
使ってるモニタが変わるとタイミング変わるけど大丈夫?
792デフォルトの名無しさん:2010/10/25(月) 21:40:09
ウィンドウモードで垂直同期なんて関係あったっけ?
なんかDirectXの初期化時にテキトーに値入れるとよろしくやってくれね?
793デフォルトの名無しさん:2010/10/25(月) 21:54:36
>>782の場合だと、入力系の反応に差が出来ちゃうよね。
その辺はどう扱ってるのだろ。
794デフォルトの名無しさん:2010/10/25(月) 22:00:22
そんなのゲーム内時間を採用すればすむではないかとおもってしまうのですよ。
描画は出来るときにすればいい。

日本伝統の2Dシュー見たいのだとフレームスキップはきらわれるから、
垂直同期で特定ゲーム内時間分の更新じゃないとだねだけどな。
795デフォルトの名無しさん:2010/10/25(月) 22:01:00
>>792

下の設定の事だと思って話を進めるけど。

 FullScreen_refreshRateInHz = 60;
 PresentationInterval = D3DPRESENT_INTERVAL_ONE;

この場合フルスクリーン時は60で更新するように設定できるけど
ウィンドウモード時は、そのモニタが設定してる垂直同期になるから
"垂直同期だけ"を使用してると環境でタイミングがずれる。

そもそもウィンドウモード時に FullScreen_refreshRateInHz 設定すると
エラーでちゃうけどね。

間違っていたら指摘おねがい。
796デフォルトの名無しさん:2010/10/25(月) 22:02:56
>>791
そうだとは思ったんですが、どうしてもきっちりFPS制御できそうにないものでして。。。
このゲームは大体60FPSで動きますので、モニタのリフレッシュレートが60ヘルツぐらいじゃないと
うまく遊べないかもしれません。という断りをいれとこうかと。。。

あと思ったんですが、皆さんって、移動量を計算するときに、前回の時間から現在の時間までの経過時間を元に
計算してる人が多いんですか?
私は1フレーム当たりの移動量をあらかじめ決めといて、足してるだけなんですが。。
797デフォルトの名無しさん:2010/10/25(月) 22:06:50
>>796
>あと思ったんですが、皆さんって、移動量を計算するときに、前回の時間から現在の時間までの経過時間を元に
>計算してる人が多いんですか?
しねーよそんなこと
バグりまくってゲーム完成するどころじゃねぇぞ
798デフォルトの名無しさん:2010/10/25(月) 22:08:05
ですよね。すいません。
799デフォルトの名無しさん:2010/10/25(月) 22:14:08
描画用と入力・計算用のスレッドは別って事?
800デフォルトの名無しさん:2010/10/25(月) 22:15:41
>>797>>782って矛盾してないか?
801デフォルトの名無しさん:2010/10/25(月) 22:17:40
そうしとかないとマズイゲームもあるでしょ
1フレームの時間が変わったら
格ゲーのコマンド入力の難易度が変わったり
スペックの低いPCでやったらすり抜けが起きたり
802デフォルトの名無しさん:2010/10/25(月) 22:19:19
DXUTみると
処理用と描画用のコールバックは
トータルフレーム時間と前フレームからの経過時間が受け取れるようになってるね
803デフォルトの名無しさん:2010/10/25(月) 22:31:50
ダイレクトサウンド使ってるんですが、
SEとBGMで大きくわけて音量を調整したいです。

この場合プライマリバッファを2個作ったほうがいいですか?
804デフォルトの名無しさん:2010/10/25(月) 22:36:07
ボリュームはセカンダリバッファごとに設定できるでしょ
805デフォルトの名無しさん:2010/10/25(月) 22:38:07
そうでしたっけ
すんづれいしました
806デフォルトの名無しさん:2010/10/25(月) 22:41:07
dxとfps固定
ttp://www.t-pot.com/program/103_FPSFixing/index.html

こんなんがあった
807デフォルトの名無しさん:2010/10/25(月) 22:41:39
>>801
内部の処理だけ回して描画しなけりゃいいじゃない
808デフォルトの名無しさん:2010/10/25(月) 23:06:34
>>806
本当にありがとうございます。助かりました!
809デフォルトの名無しさん:2010/10/25(月) 23:15:41
>>806
D3DPRESENT_INTERVAL_DEFAULTの挙動って、
確定じゃなかったような気がするんだが違ったかな
810デフォルトの名無しさん:2010/10/25(月) 23:23:45
>D3DPRESENT_INTERVAL_DEFAULT と D3DPRESENT_INTERVAL_ONE は、ほぼ等価です
>D3DPRESENT_INTERVAL_DEFAULT では、既定のシステム タイマーの分解能が使用されます。
>一方、D3DPRESENT_INTERVAL_ONE では timeBeginPeriod を呼び出し、システム タイマーの分解能を拡張します。
>これにより、垂直同期の品質が改善されますが、処理に時間が少し多くかかります。
>いずれのパラメーターの場合も、垂直同期が試行されます。
811デフォルトの名無しさん:2010/10/25(月) 23:27:09
でも、問題になってるのは垂直同期の仕方じゃなくて
固定動作で垂直同期した場合、
プレイ環境によりリフレッシュレートが60fpsだったり75fpsだったりして困るでしょ?って話じゃ
どうしても固定じゃないと処理が難しいって言うなら
Win32APIでもうゲーム中だけ60fpsに変更しちゃえよと思ってしまうが
812デフォルトの名無しさん:2010/10/25(月) 23:32:41
フルスクリーンモード
→望みのリフレッシュレートになる

ウィンドウモード
→垂直同期なんて気にする必要ない

って感じだった気がするけどそんなことない?
813デフォルトの名無しさん:2010/10/25(月) 23:35:58
>>811
頑張ってWINAPIで60FPSにしようとしたんですが、
ガタン、ガタンってなってしまうんです。
私の制御に問題があるんでしょうが。
814デフォルトの名無しさん:2010/10/25(月) 23:35:59
>>811

それだと、60Hzに対応してないモニタだと映らなくなったりチラついたりしないかね?

多くのウィンドウズゲームでティアリング発生が放置されているのは
結局モニタの垂直同期がバラバラだからって事だと思ってるけど。

因みに、俺の場合は高分解能パフォーマンスカウンタでFPS固定してる。
必要がないからコマ落ちは、一切みてない。
815デフォルトの名無しさん:2010/10/25(月) 23:37:24
話の元は>>770で、ティアリングが問題だった訳で、
>>806によりPresentがリフレッシュレートに同期し回避されますねって話では
816デフォルトの名無しさん:2010/10/25(月) 23:45:04
>>815
「ガタンガタン」って表現は、本当にティアリングの事なのか?
俺は、移動量が一定じゃなくて、たまに移動が変になるって読み取ったけど。
817デフォルトの名無しさん:2010/10/25(月) 23:46:43
60Hzに対応してないディスプレイとかあるの?
818デフォルトの名無しさん:2010/10/25(月) 23:51:21
対応しててもプログラムから強制変更できない環境が結構あるからねえ
819770:2010/10/25(月) 23:55:53
ガタンガタンは
垂直同期待ちにしたら解消したので、ティアリングが原因かと思われます。
820デフォルトの名無しさん:2010/10/25(月) 23:58:16
DXライブラリなら気にしなくて済むのにね
821デフォルトの名無しさん:2010/10/25(月) 23:58:55
>>819
ウィンドウモードの話?
822770:2010/10/25(月) 23:59:42
>>821
はい。ウィンドウモードです。
823デフォルトの名無しさん:2010/10/26(火) 00:28:42
元々のタイマー処理に穴があって、表示タイミング自体がずれていたのか
ティアリング現象によるチラつきが問題だったのかは闇の中だな・・・。
824デフォルトの名無しさん:2010/10/26(火) 00:39:09
>>796から推測するに>>816は否。よって>>823も否。

でおk? >>770 w
825デフォルトの名無しさん:2010/10/26(火) 01:09:57
ガタンガタンはわかるな
俺も綺麗にスクロールとかしたらなった気がする

でもそんときは同期またずに更新するようにしたらなんか直った記憶あるんだけどな
タイマでやってたときってD3DPRESENT_INTERVAL_IMMEDIATEだよね?
826デフォルトの名無しさん:2010/10/26(火) 01:42:57
いや、だから垂直同期時間とタイマのズレのせいで
0と1のダブルバッファとして
ズレが蓄積して1画面分に達すると

010101001010
     ↑
    ガタンとなる
827デフォルトの名無しさん:2010/10/26(火) 02:46:04
はまったので質問。

マルチパスレンダリングで描画しようとしてるんだけど
バックバッファにレンダリング済みのテクスチャの描画が
特定の状況のみできなくて困ってる

描画できない設定は以下
バックバッファのサイズが 800x450
レンダリング先テクスチャのサイズが 1280x720

描画できる設定は以下
バックバッファのサイズが 1280x720
レンダリング先テクスチャのサイズが 1280x720

レンダリングターゲットってバックバッファのサイズよりでかいと
ダメなのかな?
828デフォルトの名無しさん:2010/10/26(火) 03:05:30
>>827
デプスバッファはどうしてる?
829デフォルトの名無しさん:2010/10/26(火) 03:07:36
>>827

http://msdn.microsoft.com/ja-jp/library/bb147221(v=VS.85).aspx

>複数のレンダー ターゲットのすべてのサーフェスは、幅と高さが同じでなければなりません。
830デフォルトの名無しさん:2010/10/26(火) 03:15:32
>>828
深度も作ったけどダメだった。

>>829
まじかよ!困ります。
831770:2010/10/26(火) 03:23:42
>>823-826
私にもはっきり原因がわかりません。
直ったときにやったことと言えば、

D3DPRESENT_INTERVAL_IMMEDIATEを0に変更。
FPS制御用の関数をメインループから外す。

この2点だけです。

ガタンガタンの表現が悪くて申し訳ないんですが、
縦でも横でも移動するときに発生します。
それは一定の間隔です。
通常ならスーッっと行くものが、一瞬ブルッと震える感じになります。

ただしこれは、壁にぶつかってるときはこの現象は起こりません。
その現象を具体的に説明すると、

if(x<LEFT_MAX)
x=LEFT_MAX;

上記のように上下左右に移動制限をかけてます。
このようなコードだと、左を押し続けてても、座標は変わりません。
ですが、キーは押し続けてるので移動している際のアニメーションは動きます。
この時はガタンガタンとはなりません。

壁にぶつからないときの移動の時に、ガタンガタンとなってしまうわけです。


個人的には自分でFPSを制御したいと思っています。
こんな感じです。
832デフォルトの名無しさん:2010/10/26(火) 03:51:59
垂直同期の回数とフリップの回数が違うのが原因
タイマの待ち時間を
16 17 17 16 17 17 16 17 17
みたいに1秒間に確実に60回になるようにやってみな
833770:2010/10/26(火) 03:57:39
ありがとうございます
やってみます
834デフォルトの名無しさん:2010/10/26(火) 04:17:37
>>829-830
いや、それ複数のレンダーターゲットに同時に描画する機能の説明だから。

駄目な設定のときって、デバッグランタイムにしてデバッグメッセージ見たら、
何かメッセージ出てない?
835デフォルトの名無しさん:2010/10/26(火) 04:29:32
某サイトのせいで
MRTのことをマルチパスレンダリングって言ってるだとおもうけど
836デフォルトの名無しさん:2010/10/26(火) 13:41:26
頂点フォーマット(頂点宣言)の組み合わせって無数に在ると思うんですけど
同じものがあればそれを使う方法って無いですかね?
837デフォルトの名無しさん:2010/10/26(火) 13:53:33
は?じゃあ使えばいいだろ
838デフォルトの名無しさん:2010/10/26(火) 13:57:27
>>835
どこか判ったw
839デフォルトの名無しさん:2010/10/26(火) 14:06:33
この中にニートが何人かいるな。絶対。
840デフォルトの名無しさん:2010/10/26(火) 14:08:02
>>837
頂点バッファ作るたびに頂点宣言オブジェクトを作るってことですか?
841デフォルトの名無しさん:2010/10/26(火) 14:16:39
頂点宣言オブジェクトって何だよ。
説明してみな
842デフォルトの名無しさん:2010/10/26(火) 14:31:43
JAVAとかC#のnewってなにしてたんだっけ
コンストラクタとか言わないよね
843デフォルトの名無しさん:2010/10/26(火) 14:33:38
C++のnewは何をしているんでしょうね?www
844デフォルトの名無しさん:2010/10/26(火) 14:34:23
ですよねwww
845デフォルトの名無しさん:2010/10/26(火) 15:16:30
malloc
846デフォルトの名無しさん:2010/10/26(火) 15:25:00
callocでもいいんじゃよ?
847デフォルトの名無しさん:2010/10/26(火) 15:52:04
ID3DXMesh->DrawSubsetって内部でDrawPrimitiveが使われているみたいなのですが、
PRIMITIVETYPEではどれを使って描画してるのですか?
848デフォルトの名無しさん:2010/10/26(火) 16:13:43
MICROSFTに聞けや
849デフォルトの名無しさん:2010/10/26(火) 16:15:16
>>847
D3DPT_TRIANGLELIST
850デフォルトの名無しさん:2010/10/26(火) 16:47:04
>>848
おまえ消えろや
851デフォルトの名無しさん:2010/10/26(火) 17:00:05
顔真っ赤(笑)
852デフォルトの名無しさん:2010/10/26(火) 17:01:15
ヒント 初心者スレ
853デフォルトの名無しさん:2010/10/26(火) 17:01:57
知らないならレスしなきゃいいのにね。
854デフォルトの名無しさん:2010/10/26(火) 17:04:55
真っ赤(笑)
855デフォルトの名無しさん:2010/10/26(火) 17:10:26
公式より
>The subset that is specified by AttribId will be rendered by the IDirect3DDevice9::DrawIndexedPrimitive method,
>using the D3DPT_TRIANGLELIST primitive type, so an index buffer must be properly initialized.

PIXでみると中で何をどう呼んでるか全部見れるよ
856デフォルトの名無しさん:2010/10/26(火) 17:14:54
>>851
おまえ消えろや
857デフォルトの名無しさん:2010/10/26(火) 17:17:20
真っ青(怖)
858デフォルトの名無しさん:2010/10/26(火) 17:19:23
無知を晒した挙句それをごまかす為に荒らしてる困ったちゃんがいると聞いて飛んできました
859デフォルトの名無しさん:2010/10/26(火) 17:22:53
お礼も言えないカスは徹底的に叩くべき
860デフォルトの名無しさん:2010/10/26(火) 17:23:54
真っ赤っ赤(笑)
861デフォルトの名無しさん:2010/10/26(火) 17:30:18
自分が回答したわけでもないのにお礼を要求する男の人って
862デフォルトの名無しさん:2010/10/26(火) 17:36:29
常識に対して反論する人って(笑)
863デフォルトの名無しさん:2010/10/26(火) 17:58:53
2chではそれがデフォ
著作権者でもなくむしろ普段は著作権侵害側の癖に、
特定可能な個人が著作権侵害行為を行うと狂った様に集団で攻撃したりとかな
864デフォルトの名無しさん:2010/10/26(火) 18:02:28
>>863
まあ、それぐらいで調度いいんじゃね?
みんながおおっぴらにやるようになったらそれこそ最期だと思われ
865デフォルトの名無しさん:2010/10/26(火) 18:21:21
一見関係ありそうで関係ない話を始める
866デフォルトの名無しさん:2010/10/26(火) 18:28:04
俺が言いたかったのはこういう初心者をバカにする発言をするなってことだ
これでよくわかっただろ
いつも上から目線のクズさんよ
867デフォルトの名無しさん:2010/10/26(火) 18:40:54
>>866
お前も上から・・・いやなんでもない
868デフォルトの名無しさん:2010/10/26(火) 18:58:41
>>866
初心者攻撃と著作権侵害の関係性がまったく分かりません
869デフォルトの名無しさん:2010/10/26(火) 19:27:40
>>868
俺はそいつとは別人だ
870デフォルトの名無しさん:2010/10/26(火) 21:32:18
>>868
同意
このタイミングで言うからさっぱりわからないw
「これでよくわかったろ?」とかwわからねーよw
871デフォルトの名無しさん:2010/10/26(火) 21:39:23
だから、そいつと俺は別人だって
872デフォルトの名無しさん:2010/10/26(火) 23:06:20
そろそろ次スレいる?
873デフォルトの名無しさん:2010/10/26(火) 23:06:53
900超えてからでいいんじゃね?
874デフォルトの名無しさん:2010/10/26(火) 23:12:24
950くらいでも余裕
875デフォルトの名無しさん:2010/10/26(火) 23:36:30
で、何か質問はないんかね?
876デフォルトの名無しさん:2010/10/26(火) 23:47:13
ゲーム作りについての質問ってココで聞いてもいいの?
DirectXから話それるけど。
877デフォルトの名無しさん:2010/10/26(火) 23:48:42
つゲーム製作板
878デフォルトの名無しさん:2010/10/26(火) 23:49:50
そんな板あったのか。失礼しました。
879デフォルトの名無しさん:2010/10/26(火) 23:50:32
DirectXに関係することなら答えて貰えるかもしれないけど
設計とか全然関係ないことだと叩かれる可能性大
880デフォルトの名無しさん:2010/10/26(火) 23:53:04
すごい叩く人がいるので遠慮しときますw
881デフォルトの名無しさん:2010/10/27(水) 00:36:43
ローカル変数にLPDIRECTSOUNDBUFFER8型の変数を作って、
そいつを戻り値にした場合、そのポインタって消滅するんですか?
それとも使えますか?
882デフォルトの名無しさん:2010/10/27(水) 00:55:28
こんばんは。Direct3Dを最近ほどでもないんですが始めました。
Direct3D9よりかはDirect3D10のサンプルを見ながらやっているのですが、
Direct3D9でデバイスにSetTextureStageState関数でD3DTSS_TCI_CAMERASPACEPOSITIONのフラグを
使っているプログラムがあり、これをDirect3D10で書くにはどうしたらいいのでしょうか。
全部シェーダー側でやると思うのいですが、どのような計算をしているのかが分かりません。
よろしければ教えていただけないでしょうか。
883デフォルトの名無しさん:2010/10/27(水) 00:58:32
テクスチャ座標かけるビュー行列
884デフォルトの名無しさん:2010/10/27(水) 00:59:56
>>881
つかえるとおもいます
885デフォルトの名無しさん:2010/10/27(水) 01:03:22
使えるんですね。ありがとうございます。
886827:2010/10/27(水) 01:13:13
一応、レンダリング先のテクスチャよりバックバッファが小さくても
レンダリングできるようになったので報告。

原因不明、なぜかできるようになった。
たぶん、ポインタ指定ミスとかそんなショボイミスだと思う。

てか、普通にダウンサンプリングっていう技法?で存在するから
できなきゃおかしいって話だった。
887デフォルトの名無しさん:2010/10/27(水) 01:16:15
>>882
頂点座標をカメラ空間まで変換した座標をそのままテクスチャ座標に入れる。
頂点座標にWorld*View行列をかけるだけ。
プロジェクション行列はかけないのが、普通の座標変換とは違うとこ。

しかし、TexGenを使っているプログラムでは、間違いなくテクスチャ座標変換も同時に
使われているから、D3DTSS_TEXTURETRANSFORMFLAGSやD3DTS_TEXTUREnも要確認。
888デフォルトの名無しさん:2010/10/27(水) 13:44:15
質問です。
hlslでビューポートを変更できますか?

ビューポートが固定機能パイプラインってのは判ったのですが、
ではプログラマブルパイプラインではどうやるのか判らないのです…
889デフォルトの名無しさん:2010/10/27(水) 13:46:33
ビューポートってデバイスに設定されるものだから関係ないんじゃないの
890デフォルトの名無しさん:2010/10/27(水) 13:47:45
>>888
9以前は無理
10からは可能
891デフォルトの名無しさん:2010/10/27(水) 14:13:01
>>889
>>890
ありがとうございます!
892デフォルトの名無しさん:2010/10/27(水) 17:54:11
ビューポートって、左上が0,0のスクリーン座標なんですか?
893デフォルトの名無しさん:2010/10/27(水) 18:05:53
DirectX 9
894デフォルトの名無しさん:2010/10/27(水) 18:25:01
>>892

>D3DVIEWPORT9 構造体の X、Y、Width、Height メンバに指定する値は、
>レンダリング ターゲット サーフェイスの左上角からのスクリーン座標である。

http://msdn.microsoft.com/ja-jp/library/cc324602.aspx
895デフォルトの名無しさん:2010/10/27(水) 18:26:52
わお!ありがとうございます!
896デフォルトの名無しさん:2010/10/27(水) 19:56:45
LPDIRECT3DTEXTURE9型の変数を作ってそいつを
a=b;
みたいに代入したあとに、
b->Release()って、リリースしたら
どうなるの?
aにはポインタは入ったままだけど、テクスチャの実体は消えてる状態と思っていいですか?
それとも代入した時点で、内部参照カウンタが増えちゃってるんですかね?
897デフォルトの名無しさん:2010/10/27(水) 20:14:17
ただのIDirect3DTexture9ポインタのtypedefなので、
自分でAddRefするかスマートポインタにブチ込むかしない限り消えちゃうよ。
898デフォルトの名無しさん:2010/10/27(水) 20:25:43
消えちゃうんですね。そりゃ好都合です。
ありがとう。
899デフォルトの名無しさん:2010/10/27(水) 22:46:28
>>898
いえいえ
900デフォルトの名無しさん:2010/10/28(木) 00:51:45
>>883
>>887
ありがとうございます!!
ところでTexGenとはなんでしょうか?
すこし調べてみましたがこれといったものが引っかからなくてよく分かりません。
TexGen?
Texture Generation?
Texture Generation Plane?
行列かPLANEかなにかでしょうか?
OpenGLでは何かに(glGetTexGen?)使われていそうです。
901デフォルトの名無しさん:2010/10/28(木) 00:53:38
なんでジェネレータが出てこないのか。
902デフォルトの名無しさん:2010/10/28(木) 01:37:45
>>900
Texture Coordinate Generationが妥当な言葉かな?

ttp://developer.nvidia.com/object/texgen_texmatrix.html
DX7の解説なんでフラグとか微妙に違うかもしれないが、これで一通り説明されてる。

ちなみに、883は間違ってるよ。
903デフォルトの名無しさん:2010/10/28(木) 03:36:02
すいません
Spriteで表示させたい2つの画像があって
それぞれの画像を別々の角度で回転させらい場合
Spriteオブジェクトを2つ作らないとできませんか?
904デフォルトの名無しさん:2010/10/28(木) 04:34:58
まず"Sprite"の定義を明確にして
905デフォルトの名無しさん:2010/10/28(木) 08:54:03
バカ。
初心者なんだから、ID3DXSPRITEインターフェースを使った
描画に決まってるだろ。
そんぐらいわかってやれ。
906デフォルトの名無しさん:2010/10/28(木) 10:05:30
そう思うならそれ前提で回答してあげればいいじゃない
907デフォルトの名無しさん:2010/10/28(木) 10:14:08
荒らししかできない能無しなんだからほっとけよ
908デフォルトの名無しさん:2010/10/28(木) 11:11:02
しゃあねえ答えてやるよ
Spriteなんか使うな。以上。あれは邪道。
909デフォルトの名無しさん:2010/10/28(木) 11:44:41
ID3DXSpritesスプライトのことを言ってるならまったく使って問題ない
使い方さえ間違えなければ下手な初心者が自分で組んだシステムよりよほど高速に動作する
まぁ、ある程度理解してないと使いこなすのは地味に難しいんだけど
910デフォルトの名無しさん:2010/10/28(木) 12:11:56
ID3DXSpritesって知らなくて自前でつくっちゃったんだけど割と高速なん?

100万もの粒子表現とかに使えます?
911デフォルトの名無しさん:2010/10/28(木) 12:24:49
無理無理。
遅いし、自由がきかない
912デフォルトの名無しさん:2010/10/28(木) 12:35:15
自作自演カッコワルイ
913デフォルトの名無しさん:2010/10/28(木) 12:37:16
てか秒間1億2000万ポリも表示したら
普通に描いてもフィルレートで死ぬんじゃね?
914デフォルトの名無しさん:2010/10/28(木) 12:56:15
ここでID3DXSpritesは糞って言われてるのを鵜呑みにして
まともに使ったことない奴多そうだな
915デフォルトの名無しさん:2010/10/28(木) 12:59:34
男は黙ってSprite
916デフォルトの名無しさん:2010/10/28(木) 13:16:15
検索に引っかかる馬鹿一覧
http://www.google.co.jp/search?q=ID3DXSprites
917デフォルトの名無しさん:2010/10/28(木) 13:18:09
馬鹿者に日本語サイトが含まれていないのが救いだろう。
918デフォルトの名無しさん:2010/10/28(木) 13:20:28
で実際に計測した人はいないの?
919デフォルトの名無しさん:2010/10/28(木) 13:29:34
計測するまでもないだろ。邪道邪道。
920デフォルトの名無しさん:2010/10/28(木) 13:37:22
だろ。
921デフォルトの名無しさん:2010/10/28(木) 13:49:42
そもそもあくまで表現なのに、正確に一つ一つ出力しようと考える時点で能無しとしかいいようがない。
922デフォルトの名無しさん:2010/10/28(木) 13:52:21
日本語でおk
923デフォルトの名無しさん:2010/10/28(木) 15:21:24
>>903
これを見る限り1つで十分だ
http://msdn.microsoft.com/ja-jp/library/cc372355.aspx
924デフォルトの名無しさん:2010/10/28(木) 16:55:34
シェーダーで宣言したスカラー型の定数はfloat4型のレジスタに格納されるのですか
925デフォルトの名無しさん:2010/10/28(木) 17:51:55
答えずに荒らして、答えろといわれたら邪道wwwww
どんなけおまえバカなんだよ消えろカス。
926デフォルトの名無しさん:2010/10/28(木) 18:11:51
>>924
float4に展開されるけど
値は0〜255ではなく0.0〜1.0にマッピングされることに注意
927デフォルトの名無しさん:2010/10/28(木) 18:16:55
903です。ID3DXSpritesのことです。
すいませんでした。

923さんありがとうございます。
引数が5個のdrawを使ってたみたいです。
928デフォルトの名無しさん:2010/10/28(木) 18:17:53
>>926
なるほど、つまりboolを4つ使いたい場合はfloat4で格納したほうが節約になるんですね
929デフォルトの名無しさん:2010/10/28(木) 18:39:10
903です。
やってみたのですが
error C2660: 'ID3DXSprite::Draw' : 関数に 7 個の引数を指定できません。
のエラーが出ました。

調べたところDX9.0aでは引数7個で
DX9.0b以降は引数5個で回転角度が指定できなくなってました
私が使っているのはDX11(2010_JUNE)です。

やっぱりテクスチャーを個別に回転させる場合は
スプライト2個用意しないとだめなのかな?


930デフォルトの名無しさん:2010/10/28(木) 18:48:27
931デフォルトの名無しさん:2010/10/28(木) 21:00:37
>>929
おお、まじか申し訳ない
SetTransformで回転させたらどうだろう
932デフォルトの名無しさん:2010/10/28(木) 22:19:27
先に言っとくが、いずれ詰むよ。
スプライトで出来ることは単純なことしかできないから。
普通の描画を覚えなさい。
933デフォルトの名無しさん:2010/10/28(木) 22:24:35
スプライトと一口にいっても色々な実装方法があるので一概には言えない。
934デフォルトの名無しさん:2010/10/28(木) 22:26:54
檸檬味のスプライト美味いからオススメ
期間限定だし
935デフォルトの名無しさん:2010/10/28(木) 22:43:29
てゆうか、なんでSDKのチュートリアルもやんないの?
あそこで単純な三角形を描画したよな?
だったら、四角形だって余裕だろ

ってならないところに希望がまったく見えない
てか、これができないレベルのままゲーム作ろうってのが正直ホントすげぇと思う
936デフォルトの名無しさん:2010/10/28(木) 22:46:12
また微妙に荒れそうだけど
ID3DXSpriteを真面目に使ったことなかったのでちょっと試して見た

GeForce 9600M GT(モバイル用チップ)にて
Debugコンパイルだと妙に重いけど
Releaseコンパイルならまぁ実用範囲内か?
遅いはともかく自由度が効かないという印象はなかった
頂点のローカル軸がスクリーン座標に合わせてy軸が下向きな以外は後はどうとでもなりそう
(計算でひっくり返してもいいけど計算量削減のため今回は元画像を反転で対応。だれか対応策知ってたら教えてください)

テクスチャ1枚だと面白くないので2枚を使ってランダムで描画した場合を想定して計測
 100 スプライト( 200ポリ) :630FPS
1000 スプライト( 2000ポリ):490FPS
5000 スプライト(10000ポリ):230FPS
10000スプライト(20000ポリ):140FPS
20000スプライト(40000ポリ): 75FPS

半透明スプライトの整合性を保つために
D3DXSPRITE_SORT_DEPTH_BACKTOFRONTフラグを立ててソートした場合

100 スプライト( 200ポリ) :590FPS
1000 スプライト( 2000ポリ):240FPS
5000 スプライト(10000ポリ): 50FPS
10000スプライト(20000ポリ): 25FPS
20000スプライト(40000ポリ): 14FPS
937デフォルトの名無しさん:2010/10/28(木) 22:50:05
初心者が一度初心者な質問しただけでカッカすんなよ
カルシウム足りてねぇよ・・・な?
938936:2010/10/28(木) 22:50:16
>>936の計測に使用したソース
ttp://www5b.biglobe.ne.jp/~mya_a/dx/SimpleSample3.zip

ソートした場合スプライト数が増えるとかなりしんどい感じだけど
半透明オブジェクトは分離して最後に描画するようにすればまぁ、普通につかえるんじゃない?
939デフォルトの名無しさん:2010/10/28(木) 23:07:21
それぐらい考えてできるようになると、
もうスプライトなんか使わなくなってるよ。
940デフォルトの名無しさん:2010/10/28(木) 23:09:44
>>937
こんな糞クラスについて悩んでる時間がすでに無駄
なんでチュートリアルもやらないの?って怒りはさすがにわく
とりあえず虎を表示しろと
なぜ虎を表示できないのか?と

DirectX SDK チュートリアル
http://msdn.microsoft.com/ja-jp/library/bb219685%28v=VS.85%29.aspx

テンプレにぶち込んでいいレベルだろこれ
941デフォルトの名無しさん:2010/10/28(木) 23:13:12
>>940
もういいよ
勝手に一人でイライラしてろよ・・・
942デフォルトの名無しさん:2010/10/28(木) 23:16:43
たぶん虎はできるんだよ。
その応用ができないだけだと思う。
943デフォルトの名無しさん:2010/10/28(木) 23:33:38
>>942
したらモデリングソフトで4頂点の三角形2枚を設定するだけじゃね?
努力の方向がまちがってんねん
メタセコに金入れてXファイル出力できるようにすりゃそれで終りだろ
944デフォルトの名無しさん:2010/10/28(木) 23:35:31
虎までのチュートリアルでスプライトの設計までできるようになるわけないだろう
945デフォルトの名無しさん:2010/10/28(木) 23:36:31
たぶん座標変換でつまずいてるんでしょ。
表示は出来ても、理解してないから応用ができない。
つまり、自分のイメージしたとおりに描画ができないってことだろ。

まあ、そういう初心者を救ってあげるのがこのスレの役目だ。
946デフォルトの名無しさん:2010/10/28(木) 23:36:38
>>943
関係ないが、金入れなくてもxファイル出力できるぞ
947デフォルトの名無しさん:2010/10/28(木) 23:39:12
>>946
金入れたほうがいいと思うな
keynoteがないから階層出力できないし
948デフォルトの名無しさん:2010/10/28(木) 23:39:40
スプライトをメッシュにするとかないわ〜
949デフォルトの名無しさん:2010/10/28(木) 23:39:54
頭が悪いだけだろ。
どうせまたすぐ躓く。
950デフォルトの名無しさん:2010/10/28(木) 23:41:02
君なりのテンプレを作ってくれたまえ。
一度見てみたいよ。
951デフォルトの名無しさん:2010/10/28(木) 23:41:57
>>948
なんで?
なにか不具合ある?
俺からしたら手動でUV設定してるお前のがありえねーよ
952デフォルトの名無しさん:2010/10/28(木) 23:43:17
板ポリにxファイル使うのもちょっと冗長じゃないか?
953デフォルトの名無しさん:2010/10/28(木) 23:43:24
UVなんかどうでもなるが
1スプライトごとに1回DrawSubsetするの?
954デフォルトの名無しさん:2010/10/28(木) 23:43:43
板ポリにXファイル使うのはありえないだろ。
それぐらい普通にやれ
955デフォルトの名無しさん:2010/10/28(木) 23:44:17
>>953
パーティクルがやりたいとかそういう例の話はいまはしてないからね?
956デフォルトの名無しさん:2010/10/28(木) 23:45:38
>>954
なんで?
あってもいいじゃん
957デフォルトの名無しさん:2010/10/28(木) 23:45:46
はいはい邪道邪道
958デフォルトの名無しさん:2010/10/28(木) 23:46:09
次スレ立ててくる
959デフォルトの名無しさん:2010/10/28(木) 23:47:34
>>955
パーティクルなんて関係ねぇーよ
普通に2Dゲーム作るのだってスプライトごとにDrawPrimitiveなんてしねーよ
960デフォルトの名無しさん:2010/10/28(木) 23:49:01
>>959
別にDrawPrimitiveをやるやらないはお前がタイミング決めろよ
XファイルをMSの関数にまかせたら1枚ごとになるけど
読み込んだXファイルを自分のフォーマットに変換して
好きにすればいいだろ
961デフォルトの名無しさん:2010/10/28(木) 23:49:02
と思ったら規制だった
>>970たのむ
962デフォルトの名無しさん:2010/10/28(木) 23:51:34
悩んで成長するんだ
963デフォルトの名無しさん:2010/10/28(木) 23:54:26
>>960
>読み込んだXファイルを自分のフォーマットに変換して

ができるくらならもうそれは初心者じゃない
Xファイルで読んだら簡単じゃんって言っておいてハードルを上げる矛盾
964デフォルトの名無しさん:2010/10/28(木) 23:57:48
「遅いし、自由がきかない」とか言ってたのをひっくり返されて論点をずらそうとしてるだけじゃね?
965デフォルトの名無しさん:2010/10/28(木) 23:59:21
DirectX11を使えばいいだろ。
966デフォルトの名無しさん:2010/10/29(金) 00:06:26
>>963
なんで速度出そうとする話になってるの?
Xファイルは遅いの?
967デフォルトの名無しさん:2010/10/29(金) 00:09:14
速度いらないならID3DXSpriteでいいじゃんw
968デフォルトの名無しさん:2010/10/29(金) 00:10:05
Xファイルもシェーダーを使わなきゃ自由はきかないだろ。
969デフォルトの名無しさん:2010/10/29(金) 00:10:20
>>967
速度だけがネックなんだっけ?
970デフォルトの名無しさん:2010/10/29(金) 00:13:23
チュートリアルで虎を表示した延長で表示できてかつ応用が利くって話だったと思うんだけど
971デフォルトの名無しさん:2010/10/29(金) 00:18:14
質問で返して論点ずらしまくりだな
972デフォルトの名無しさん:2010/10/29(金) 00:21:03
>>971
一番はじめはスプライトなんてゴミを使うなだし
どこも間違ってないじゃん

現時点でメリットないんだからw
仕様もよくわからんし、扱いづらいし
やってることは板ポリの表示だろ

何が魅力あるのかねwこのクラスw
この初心者ホイホイ力はすさまじいな
本当に役に立つチュートリアルのほうは手を出さないんだな
973デフォルトの名無しさん:2010/10/29(金) 00:23:58
仕様もよく分かってないのに批判してるのか
974デフォルトの名無しさん:2010/10/29(金) 00:28:36
>>973
細かいところでたしか罠があったな
忘れちまったけど
975デフォルトの名無しさん:2010/10/29(金) 00:32:09
んで、Xファイルはやっぱり遅いから使わないの?
976デフォルトの名無しさん:2010/10/29(金) 00:33:55
うん
977デフォルトの名無しさん:2010/10/29(金) 00:43:17
∵ゞ(≧ε≦o)ぶっ
978デフォルトの名無しさん:2010/10/29(金) 01:09:18
979デフォルトの名無しさん:2010/10/29(金) 02:52:51
>>901
>>902
すいません。どうにも用語が分からなくて。片っ端から調べたつもりでした。
早速そのPDFを読んでみます。ありがとうございました。
980デフォルトの名無しさん:2010/10/29(金) 15:40:56
うめ
981デフォルトの名無しさん:2010/10/29(金) 18:28:57
982デフォルトの名無しさん:2010/10/29(金) 18:30:11
うめ
983デフォルトの名無しさん:2010/10/29(金) 20:30:39
COM用のスマートポインタって実際クラスでラップするからあまり使わなかったりする・・・
984デフォルトの名無しさん:2010/10/29(金) 21:26:20
>>983
そのラップするクラスの中で使えば解k(ry
985デフォルトの名無しさん:2010/10/29(金) 22:45:09
986デフォルトの名無しさん:2010/10/29(金) 23:51:56
D
987デフォルトの名無しさん:2010/10/29(金) 23:57:07
i
988デフォルトの名無しさん:2010/10/30(土) 00:55:00
r
989デフォルトの名無しさん:2010/10/30(土) 01:47:53
e
990デフォルトの名無しさん:2010/10/30(土) 01:52:52
c
991デフォルトの名無しさん:2010/10/30(土) 02:04:32
t
992デフォルトの名無しさん:2010/10/30(土) 02:45:33
S
993デフォルトの名無しさん:2010/10/30(土) 04:35:15
o
994デフォルトの名無しさん:2010/10/30(土) 09:31:32
u
995デフォルトの名無しさん:2010/10/30(土) 10:27:35
n
996デフォルトの名無しさん:2010/10/30(土) 11:16:59
ko
997デフォルトの名無しさん:2010/10/30(土) 12:37:52
x
998デフォルトの名無しさん:2010/10/30(土) 15:15:06
yuko
999デフォルトの名無しさん:2010/10/30(土) 15:15:47
yuko
1000小倉優子 ◆YUKOH0W58Q :2010/10/30(土) 15:15:57
  ∧,,,∧ 
 (  ・∀・) 1000ならジュースでも飲むか
  (    ) 
  し─J 
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。