トップページgamedev
1001コメント372KB

DirectX総合スレ (Part5)

レス数が1000を超えています。これ以上書き込みはできません。
0001名前は開発中のものです。2006/09/08(金) 23:56:42ID:0F5D1JWX
言語はC++
他の言語使ってる奴はいますぐ消えろ
0981名前は開発中のものです。2006/11/16(木) 01:24:21ID:1aVg1Jra
j2RP45RNさんはやさしいなぁ
0982名前は開発中のものです。2006/11/16(木) 01:31:20ID:j2RP45RN
問題点が山積みだから一つ一つクリアにしていかないと・・

書き込みが1000に近づいてきたし、もう寝るんで結果でたら
あとは自力でがんばれ。>>ID:bg7PnqAA
0983名前は開発中のものです。2006/11/16(木) 01:35:22ID:bg7PnqAA
>テクスチャ座標は1.0で範囲外にならんよ。
>255x255にしなくちゃいけない理由が分からない。
DirectXのマニュアルによりますと、テクスチャ座標は以下の式で決定されます。

以下マニュアルより抜粋

T_x=(u*M_x)-0.5
T_y=(v*M_y)-0.5
テクスチャ座標の下限と上限の 0.0 と 1.0 をこれらの公式に代入すると、
テクスチャ座標 0.0 は反復テクスチャ マップの最初と最後のテクセル間の
中間点にマッピングされる。テクスチャ座標 1.0 は、現在の補間テクスチャ
マップの最後のテクセルと次の補間テクスチャ マップ間の中間点にマッピングされる。

〜ここまで抜粋

これをニヤーポイントでフィルタリングしますと、テクスチャ座標の切り上げが発生し、
結果、0.0は最初の座標を、1.0は一番外のテクセルの一つ向こうを指すことになります。

>あと、「見た目上のサイズ」が分からない。
見た目上のサイズとは、DirectXを通して見えるテクスチャのサイズのことです。
テクスチャアドレッシングはこの値のみに左右されます。
ドライバーが実際にテクスチャ割り当てたメモリサイズをプログラマが気にする必要はありません。
0984名前は開発中のものです。2006/11/16(木) 01:39:06ID:1aVg1Jra
だから、今すぐ>>980でテクスチャサイズをチェックしろ。
これがおまえの言うところのプログラマが気にすべき「DirectXを通して見えるテクスチャのサイズ」なんだから。
0985名前は開発中のものです。2006/11/16(木) 01:40:32ID:SEFYYBum
>D3DX系のテクスチャ関数は一切使用しておりません。
>使用しているのはIDirect3DDevice9::CreateTextureのみです。
>どこにアクセスしても常に黒が返ってきます。

あのさぁ・・・せめてCreateTextureの返り値くらい調べたら?
0986名前は開発中のものです。2006/11/16(木) 01:52:42ID:bg7PnqAA
>>980
調べました。255x255のテクスチャを作成したところ、
Width=255
Height=255
となりました。ドライバレベルでは256x256サイズのテクスチャが確保されていることでしょうが、
DirectXはそれを吸収してくれています。
このテクスチャのテクスチャサイズは 255x255、ドライバレベルでの(プログラマには関係の無い)
テクスチャブロックのサイズは(おそらく) 256x256 ということでFAでしょう。
つまり、DirectXではいかなるサイズのテクスチャの作成も可能だということになります。

そしてこのテクスチャをポリゴンに貼り付ける(tex命令)ことも出来れば、
レンダリングターゲットにしてレンダリングできることもできることを確認しました。
なのに、texreg2ar texreg2gb だけはうまくいきません。

>>985
調べました。そのテクスチャをポリゴンに貼り付けて表示してみたりもしました。
正常に表示されました。
0987名前は開発中のものです。2006/11/16(木) 01:54:28ID:6gwZldY7
>>956,958,965,966
D3DPTEXTURECAPS_POW2がYesでも
D3DPTEXTURECAPS_NONPOW2CONDITIONALもYesなら
2のn乗以外のテクスチャは使えるよ。(色々と制限はあるが)
そして、これに対応してないビデオカードなんて相当古いのしかない。

ようするに、いまどき2のn乗以外のテクスチャが使えないハードウェアの方がレア。
0988名前は開発中のものです。2006/11/16(木) 01:59:06ID:1aVg1Jra
>>986
それならドライバレベルでも255×255が確保されている。

> ドライバレベルでは256x256サイズのテクスチャが確保されていることでしょうが、
> DirectXはそれを吸収してくれています。
> このテクスチャのテクスチャサイズは 255x255、ドライバレベルでの(プログラマには関係の無い)
> テクスチャブロックのサイズは(おそらく) 256x256 ということでFAでしょう。

根拠のない勝手な理屈を付けて自分を納得させるのはやめようぜ。
0989名前は開発中のものです。2006/11/16(木) 02:03:37ID:SEFYYBum
D3DPTEXTURECAPS_NONPOW2CONDITIONAL

つまり、ディメンジョンが 2 の累乗でないテクスチャは、シェーダ内で計算されるテクスチャ座標を使ってアドレス指定したりサンプリングしたりすることはできません。
このタイプの処理は従属読み込みと呼ばれ、これらのタイプのテクスチャに対しては実行できません。


まぁ紆余曲折下が・・・リファレンス読もうぜ。
0990名前は開発中のものです。2006/11/16(木) 02:05:00ID:bg7PnqAA
>>987
>(色々と制限はあるが)
その制限にtexreg2ar texreg2gb が引っかかっているということですよね。
texreg2ar texreg2gb が 2^n サイズ制限に引っかからないカードって有りますかね。
有るのでしたら今すぐにでも買い換えたいのですが。
でもどうやって探せばよいのだろう。メーカーに電話するしかないのかしら。
0991名前は開発中のものです。2006/11/16(木) 02:08:10ID:SEFYYBum
いやいやいや普通に2^nでテクスチャ作れよw
0992名前は開発中のものです。2006/11/16(木) 02:09:43ID:1aVg1Jra
>>990
http://www.netsphere.jp/dxinfo/
ここで D3DPTEXTURECAPS_POW2 と D3DPTEXTURECAPS_NONPOW2CONDITIONAL
が両方とも Yes になっていないビデオカードを探しな。
NVIDIA の GeForce 6000 シリーズ以降ならたぶん大丈夫。
0993名前は開発中のものです。2006/11/16(木) 02:09:55ID:bg7PnqAA
>>988
いやだって、2^nサイズしかテクスチャ作れないって言い張る人が多かったから
そうなのかなと。

>>SEFYYBum
あー貴方は神様です。心から感謝します。なるほど、そういう制限があったのか。
長らくお付き合いいただいた皆様、本当にどうもありがとう御座いました。

こうなると、今度はtexreg2arとtexreg2gbの欠陥仕様をどうしたものか・・・
頭が痛い・・・
0994名前は開発中のものです。2006/11/16(木) 02:21:33ID:SEFYYBum
自分に都合悪いと欠陥呼ばわりってのもどうなの・・・
2^n以外のテクスチャサイズのほうが一般的じゃないは理解してるんだろうか。
0995名前は開発中のものです。2006/11/16(木) 02:31:46ID:SEFYYBum
ってかPS2.0使えば解決するんじゃないの?
0996名前は開発中のものです。2006/11/16(木) 02:33:50ID:bg7PnqAA
>>994
私は 2^n サイズしか使えないことを欠陥だと主張しているのではありません。
>>960 の前半と >>983を読んでみてください。

texreg2ar と texreg2gb は 色の再マップに使われるとマニュアルに
も書いてあります。
しかしこれは実際にはうまくいきません。これはあきらかに欠陥仕様だと思います。
0997名前は開発中のものです。2006/11/16(木) 02:36:43ID:SEFYYBum
だから2^nじゃなきゃダメともリファレンスに書いてあるだろうが。
都合のいいところしか読めないのかよw
0998名前は開発中のものです。2006/11/16(木) 02:43:59ID:bg7PnqAA
2^nしか使えないことはどうでも良いのです。
ただ、texreg2ar と texreg2gb は 色値255において、テクスチャ座標1.0(テクスチャ範囲外)
を叩きにいきます。これは好ましい仕様だとは思えません。
色の再マップを行ううえで回避不能な問題を発生します。
(もともと色の再マップを行うためだけに作られた命令であるにもかかわらず)
色値255を他の色再マップすることが原理的に不可能です。
0999名前は開発中のものです。2006/11/16(木) 02:59:11ID:gbtniTxU
なんだ、結局無駄にスレ消費しただけじゃん。
1000名前は開発中のものです。2006/11/16(木) 03:04:04ID:bg7PnqAA
1000取る人は次スレ立ててくださいね。
私は無理でした。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。