Direct 3D
■ このスレッドは過去ログ倉庫に格納されています
0001.
01/11/09 17:06ID:wrfy6OtCとりあえずDX8以降は初期化が簡単になったり関数が変わったり
結構大幅に変わりましたがその辺も踏まえてお願いします。
0022名無しさん@お腹いっぱい。
01/11/09 23:46ID:???>ヤパーリ本命は鬱だ氏のうスレだ。
それなら下げとけYO!
0023名無しさん@お腹いっぱい。
01/11/09 23:50ID:???0024名無しさん@お腹いっぱい。
01/11/10 00:04ID:???D3Dって、GLみたく、textureのalphaとフラグメントのalphaの
乗算ってできないの?それで解決できるんちゃうん?
00251
01/11/10 01:24ID:qy22xnnZTrueにはないけどHighにはパレットありますよ。確か。
>>20 >>21
Direct XといってもInputから何から範囲が広いので
分けた方がよくないかなと何となく思ったので。
>『ポリゴン毎に色を毎回変えるのは面倒くさい。』は悶絶したYO。
いやテクスチャ付きメッシュ読むからプログラム上からはあまり色は指定しないのです。
何か効果つける時とかはもちろん指定してますが。
0026名無しさん@お腹いっぱい。
01/11/10 03:39ID:???君、面白いね
00271
01/11/10 04:10ID:???0028名無しさん@お腹いっぱい。
01/11/10 10:55ID:???DirectXのような超簡易ライブラリレベルで
もめるなよ。みんな。楽しくやろうぜ。
0029名無しさん@お腹いっぱい。
01/11/10 11:51ID:???面白がってるだけさ。1さんのさりげない天然ボケが魅力だ。
ま、ここはネタスレということでその辺も踏まえて(以下略)
>プログラム上からはあまり色は指定しない
7の「ポリゴン毎に色情報を変える」てのは時系列の話じゃないでしょ。
ポリゴン面毎に頂点色が別になって三角形strip化の邪魔になるけど
プログラマとしてはどうよ?って話。で、無難な答えは>>9。
0030名無しさん@お腹いっぱい。
01/11/10 14:17ID:CpeGeB26できない。
0031名無しさん@お腹いっぱい。
01/11/10 18:06ID:???0032_
01/11/10 18:59ID:lcUrEUKoエラーになってしまう。
D3D8のバグかなあ。
0033名無しさん@お腹いっぱい。
01/11/10 20:02ID:wXbui20Cこらこら。そのくらいできるって(w
0034名無しさん@お腹いっぱい。
01/11/11 20:31ID:SNwGUBkaあまり叩くな、バカども、せっかくの大事な天然素材だぞ。
>>1
>何か効果付けるときとかはもちろん指定してますが。
具体的にどんなことしてるのですか?
頑張って下さい、期待しています。
00351
01/11/11 21:20ID:Y789xs3a効果といっても大した事はしていません。
上にかいてあるようなアルファブレンディングで爆発の効果を表現したりしています。
あと最近頂点バッファの使い方を覚えました。
でも持っているハードが対応していないので効果はよく解りません。
0036名無しさん@お腹いっぱい。
01/11/11 22:19ID:HopZamBAできないってば。初心者からかうなYO!
0037名無しさん@お腹いっぱい。
01/11/11 23:03ID:???俺の知る限り、Dx8 から出来るようになったYO
0038名無しさん@お腹いっぱい。
01/11/11 23:28ID:???1さんの謎ビデオカードについてもっと知りたいYO・・・・(;; ´Д`)ハァハァ
003924
01/11/11 23:39ID:???m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_MODULATE );
/**************************************************************************
こっち?
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_DISABLE );
こっちでもOKか?
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_ADD);
****************************************************************************/
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
m_pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
m_pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_ONE );
m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_ONE );
/*************************************************************************
diffuseのalphaを小さくしながら(大きくしながら?)オブジェクト描画
**************************************************************************/
これできるんちゃうの? D3Dよく知らないからマニュアル
見て書いてみただけだけど
0040名無しさん@お腹いっぱい。
01/11/11 23:40ID:???頂点バッファ使えない?そんなもん捨てちまえ
DX8を踏まえてお願いしたいのなら頂点バッファ避けるわけにゃいかんでしょ
0041名無しさん@お腹いっぱい。
01/11/11 23:47ID:20Q7MVnaどうすりゃいいっすか?
004224
01/11/12 00:07ID:???m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
こうだ、たぶん。
0043名無しサソ
01/11/12 01:37ID:????乗算だったら
m_pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
m_pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_DESTALPHA );
ではないの?上だと混合合成にならない?
00451
01/11/12 02:02ID:JGmI7m98これは2万円以上したのでまだ買い換えたくないです。
所で上の最後の引数はD3DBLEND_BOTHSRCALPHAじゃないですか?
00461
01/11/12 02:04ID:JGmI7m98上の最後の行は忘れてください
004724
01/11/12 02:05ID:???加算ー>乗算
0048名無しさん@お腹いっぱい。
01/11/12 02:12ID:???前から出来るような雰囲気なんだけど、
0049名無しさん@お腹いっぱい。
01/11/12 03:53ID:hzjMPIYHで、ソースのalpha値をチクチク書き換えるには幾つかの方法があるよね。
例えば、対象物の全頂点のdiffuse-alpha成分を頑張って書き換える方法。
当然ながらパフォーマンス悪し。低ポリゴンの物体なら何とかなるかも程度。
他にはt、>>16がさりげなく書いてるようにブレンドファクタのalpha値を書き換える方法。
テクスチャステージ1以降で
pd3dDevice->SetTextureStageState( n_stage, D3DTSS_COLORARG1, D3DTA_CURRENT );
pd3dDevice->SetTextureStageState( n_stage, D3DTSS_COLOROP, D3DTOP_BLENDFACTORALPHA );
pd3dDevice->SetTextureStageState( n_stage, D3DTSS_COLORARG2, D3DTA_TFACTOR );
みたいな感じで。
テクスチャステージが2つ以上あれば使える。パフォーマンス良し。
0050補足
01/11/12 03:55ID:???005134
01/11/12 05:08ID:DmTmPUJO自覚してるバカなんて、そうはいないものだぜ。
>あと最近頂点バッファの使い方を覚えました。
頂点バッファ使わないでどうやって組んでいるのでしょうか。
私の浅学ぶりに1さんに嫌われないかと心配です。
>>48
勿論できた。もっと余裕をもって楽しもうヨ。
0054名無しさん@お腹いっぱい。
01/11/12 05:53ID:???己より下と見るや嬉しそーに弄んで悦に浸ってる人間てーのは
どうしてこうも滑稽に映っちまうだろうなぁ。
005534
01/11/12 06:23ID:DmTmPUJO悪ぃな、滑稽に映るだけなら構わねぇんだが
不愉快に感じたんなら謝るぜ。そういうつもりはねぇんだ。
てわけで消えるます。それじゃネ。
005634
01/11/12 06:37ID:???>>13は「加算合成」つってるから、
ブレンドファクターでアルファ使うのはルール違反だぜ。
引っかけ問題ってやつか?その辺も踏まえてお願いします。
んじゃ、今度こそ本当にサヨナラです。
0057名無しさん@お腹いっぱい。
01/11/12 06:43ID:VxqY6PcNいい加減な比較テストだけど、一応そんな結果んなった。
環境は、GeForceでT&L有効のときの頂点バッファ。
頂点数300〜400程度のトライアングルリスト。
>>55
54=me
00581
01/11/12 07:37ID:JGmI7m9853さんが言ってるとおりDrawPrimitiveじゃなくてDrawPrimitiveUPで
毎回指定していましたけど、これっておかしいですかねぇ。
他の人は全部頂点バッファ使っているのでしょうか。
頂点が頻繁に変わる時とか、逆に効率悪くならないですか?
0060名無しさん@お腹いっぱい。
01/11/12 15:35ID:IxLumFOK別に効率は変わらないと思う。
というか頂点バッファをロックして値を変更するってこと自体あんまりやらない。
簡単なモーフィング等ならD3Dのファンクションで十分表現出来るし。
あと、DrawPrimitiveUPを使う事は全然問題なし。
アホな煽り豚は無視するべし。
0061名無しサソ
01/11/12 17:43ID:???HT&Lが使えない時はシステムメモリにVertexBufferを確保する
様にするから、頂点操作にLockが必要だとしても目立つほどの
オーバーヘッドは無いように思う。それなら、新しいデバイスを利用
してVertexBufferは積極的に使って良いと思うんだけど。とりあえず、
自分はG400だけど使ってるよ。毎度Lockして書き換えてるけど(苦笑)
さっさとUV自動生成使ってマルチテクスチャにしてしまおう・・・。
0062名無しさん@お腹いっぱい。
01/11/12 17:43ID:???毎回データを内部のバッファにコピーしているから。
頂点バッファを使うとこのコピーが無くせる。
でもUPは実験用には便利。
頂点バッファをロックして値を変更は
頂点数が不定なパーティクルでは使うかもしれない。
PointSpritesというサンプルがやってるよ。
0063名無しサソ
01/11/12 17:48ID:???事になるから、逆に不利になるかも。でも、その時はその時でVertex
Bufferを使いつつ別の工夫をした方が良いような・・・。さすがにあまり
にアクセスが頻繁だと使わないほうが良いだろうけど。
0064名無しさん@お腹いっぱい。
01/11/12 18:44ID:???黙ってそれに従うほうが幸せになれるってものさ。
0065名無しさん@お腹いっぱい。
01/11/13 09:14ID:???VRAM上に頂点バッファを作らないようにするためのフラグが
CreateVertexBuffer()にあるよ。
PointSpritesでは使ってる。
006634
01/11/13 10:20ID:???>>60
アホな煽り豚より知能足りてねぇ昆虫野郎の方がよほど有害だ。
UPが(カードにもよるが一般論として)非効率的なのは常識だろが。
それともあれか?初心者虐めってやつか?
まぁいいや、とりあえず逝っとけ。
つうか、頂点いじりたきゃvs使え。テメェの将来の為にもな。
006760じゃないけど
01/11/13 12:30ID:ppy9bP4V(゚Д゚)ハァ?
DrawPrimitiveかDrawPrimitiveUPかなんて状況によって使い分ける
のが普通だろ?
一概にどっちが速いなんていえねーよ。
こいつはタダの知ったか野郎だな。
ひょっとして頭でっかちのVB房なんぢゃねーの。
0068名無しさん@お腹いっぱい。
01/11/13 12:36ID:???0070名無しさん@お腹いっぱい。
01/11/13 13:04ID:???>>51で1を馬鹿にしているのにも関わらず自分が馬鹿にされると
このキレ模様。
バカ丸出しだねっ
007168
01/11/13 13:09ID:???0072名無しさん@お腹いっぱい。
01/11/13 13:21ID:???0073名無しサソ
01/11/13 17:28ID:???あ、それは知ってるよ。ただ、メカニズム的にシステムメモリに
VBufferを作った時に、HT&Lってどう言う風に動作しているのか
がよく分かって無いのだけど。自動的にVRAMに転送して処理
してくれるのかな?それとも、CPUが座標変換??
0074名無しさん@お腹いっぱい。
01/11/13 18:34ID:???システムメモリのAGPメモリに置いてある頂点バッファから
グラフィックチップがダイレクトに読み込んでくれるメカニズムだよ。
AGPメモリ以外のシステムメモリにある頂点バッファでは駄目だけど。
AGPメモリに頂点バッファを置くように指定するのが
CreateVertexBufferのフラグの組み合わせで
PointSpritesの通りにやればOK
0075名無しサソ
01/11/13 23:21ID:???成る程。AGPメモリに置けばビデオカードからはVRAMとして
見えて、実際はメインメモリだからLockしての書き換えもそこまで
遅くはならない、と。ありがとう、完全に疑問が解けたよ。
となると、書き換えが頻繁でも充分VertexBufferは使えるかな。
0076レックス
01/11/18 00:50ID:k3asQ08Vアニメーションさせる場合は、パーツをバラバラの
状態で読みこんで自分で一つ一つモーションを付けるものなんでしょうか。
他に効率のいい方法があれば教えて下さい。
0077名無しさん@お腹いっぱい。
01/11/18 01:28ID:IsgYCSXR(階層構造と行列のデータ群)それをそのまま再生させるよ。
で、モーションと別のモーションの間は補間でつなぐ。
モーション中に別のモーションに移りたいことがあるからね。
あとは例外的に特定のパーツに差分行列かけて個別に動かすこともある
ケースバイケースばい。
0078レックス
01/11/18 01:37ID:???そうやるんですか・・アニメXファイルが出せるモデラ
は高いんでゲームでは使わないのではと勘違いしてました。
ありがとうございます。
007977
01/11/18 02:48ID:???おれは自前ファイルだけど目で読めるテキストXファイルからモーション情報だけ
取り出させて使わせてもらうことがある。
逆にXファイルのケツに他のフォーマットから取ったモーション行列を
自分でくっつけてやればモデラが対応してなくてもアニメXファイルの出来上がりじゃないか?
0080名前は開発中のものです。
01/11/26 03:08ID:???0081名前は開発中のものです。
01/11/26 23:02ID:uAFlRpp20082
01/11/26 23:49ID:e4V2gjyGヘンテコXファイルなんていつまでも残してもしょうがないだろ〜
0083名前は開発中のものです。
01/11/27 00:13ID:???・拡張性はあるけど拡張は出来ないに等しい。
・ストリップ等、データの最適化をデータ段階で出来ない。
・テキストだとバカでかい。バイナリでもかなりデカイ
・読み込みが遅い。
・モーションデータを不動少数マトリクスで持つために無駄が多すぎる。
ま、こんな感じ?それにしてもリアルタイム系のモデル
フォーマットをどこかが提唱してくれないとそれそろ、個人で
手が届く時代じゃなくなってきたね。
0084名前は開発中のものです。
01/11/27 06:31ID:???http://www.xglspec.org/
0085名前は開発中のものです。
01/11/27 07:00ID:???とりあえず質問とかする前に最低限↓くらいは読んでおこうよ。(下の2つは暗記するくらいのつもりで)
ttp://www.microsoft.com/japan/developer/directx/techart/DirectX8faq.asp
ttp://www.microsoft.com/japan/developer/library/jpdx8_c/_dx_d3drenderstatetype_graphics.htm
ttp://www.microsoft.com/japan/developer/library/jpdx8_c/_dx_d3dtexturestagestatetype_graphics.htm
それと、DrawPrimitiveとDrawPrimitiveUPだけど、速度だけで言ったら
DrawPrimitiveの方が速いよ。適切な使い方をする必要があるけど。
確かにいちいちLockするのは面倒だし、使い方を間違えるとだいぶ遅くなって
面倒ではあるけど。得にTnL使用時は気をつけないとパフォーマンスがた落ち。
ただ、1はそこまで気にするような段階には見えんが。
0086名前は開発中のものです。
01/11/30 01:05ID:???0087名前は開発中のものです。
01/12/01 03:26ID:3MhhzyVSLightwaveのデータ形式なら比較的読み込みが楽なんで自前で読み込み
作ってもバチはあたらないと思うが、以下のライブラリがとっかかりには
なると思う。
http://www.dstorm.co.jp/dev/sdk/sdk.html
のObject, Sceneライブラリ。
もしLightwaveのデータを何も考えずに表示したいのなら、X形式にコンバート
すればよいし、自前のフォーマットを作りたいのならそれを改造するもよし、
直接読み込むような形であれば、親切なドキュメントとOpenGLのサンプル
プログラムを参考にしてみれ。全部ソース付きなので根気よく解析すれば
かならずわかるはず。
0088.
01/12/07 12:54ID:Wr0guOjeきたよ、毎度のごとく現れる高飛車君。
この程度っていうぐらいだったら自分で高度(?)な話題でもふってみれば?
0089名前は開発中のものです。
01/12/07 20:53ID:???「3Dやってるプログラマは人を小馬鹿にしたやつが多い」
と言われる。
0090名前は開発中のものです。
01/12/07 22:33ID:DT4mxdiM高度な話題振っても付いてこれる奴がいない(アマだから)
or付いてこれても書きこまない(プロだから)
0091名前は開発中のものです。
01/12/07 23:29ID:???0092名前は開発中のものです。
01/12/07 23:43ID:???ガイジンはプロもアマも出し惜しみしないあるよ。
0093名前は開発中のものです。
01/12/08 00:02ID:???下手な言い訳はやめなさい。
単に高度なネタ持ってないだけでしょ?オレモナー
0094名前は開発中のものです。
01/12/08 09:59ID:???そこが日本特有の長所でもあり短所でもあるな。
0095名前は開発中のものです。
01/12/08 15:21ID:???>ガイジンはプロもアマも出し惜しみしないあるよ。
アマだったら日本でも出し惜しみしてない良質なコンテンツが豊富にあるだろ?
プロに関しては、技術隠蔽するのは当然。それは海外も同じ。
ただ、海外はプログラマー社長が極めて多いので、
社長判断で勝手に公開している例が目立つ。
0096名前は開発中のものです。
01/12/08 21:46ID:???Stable Fluids使わせろやゴルァ
0097名前は開発中のものです。
01/12/09 01:04ID:???もし使ったとして、A|Wがお得意先の日本のゲーム会社を訴えるんだろうか?
0098名前は開発中のものです。
01/12/16 21:46ID:???レベルも人数もちがう。
まぁ、日本は少数精鋭ってことにしとこう。
0099名前は開発中のものです。
02/01/03 20:37ID:3/AaBPnv0100名前は開発中のものです。
02/01/03 22:50ID:???何、アげてんの?
0101名前は開発中のものです。
02/01/04 01:50ID:???何、サげてんの?
0102名前は開発中のものです。
02/02/10 14:33ID:???0103名前は開発中のものです。
02/02/10 21:33ID:???ヴォケどもが。
0104.
02/02/12 21:05ID:9lA8tETCという事で質問させてください。
D3DXLoadMeshFromX関数でXファイルを読み込んだ後、
このオブジェクトに対して行列を設定するには(既にローカル座標は作っているのですが)
どの関数を使うのでしょうか。
とりあえずそのままだと座標(0,0,0)に表示されているのですが、、
0105名前は開発中のものです。
02/02/12 21:06ID:???うるせー馬鹿
0106名前は開発中のものです。
02/02/12 21:09ID:???質問はこちらへ
プログラム板
Direct3D
http://pc.2ch.net/test/read.cgi/tech/1011762546/
0107104
02/02/12 21:25ID:9lA8tETCそれってココじゃないんですか?
0108名前は開発中のものです。
02/02/13 04:05ID:NOxt2cqPオブジェクトに対し、トランスフォーム行列を設定するという認識がそもそも間違い。
D3DDeviceに対しトランスフォーム行列を設定し、
D3DDeviceに対し表示するメッシュを設定する、が正しい。
即ち、IDirect3DDevice8::SetTransform。これ最強。
0109なかまかな
02/02/22 18:51ID:Lhsx7X1+DXでサーフェースとして管理してる2Dキャラを、
D3Dで表示して、回転できるようにしたい。
DX8には、ハードウェアが対応してないようなので、DX7で。
まず、テクスチャを準備して、テクスチャサーフェースに割り当てた。
あとは、このサーフェースを、座標指定して表示すればいいと思う。
●今までのやり方
描画先エリア サーフェス
↓ ↓
ret=pDDSBack->Blt( &rect1, g_pDDS,NULL, 0, NULL );
●D3Dでのやり方
テクスチャサーフェス
↓
pd3dDevice->SetTexture( 0, g_pDDS );
pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, D3DFVF_VERTEX,ddx_txv, 4, NULL );
今までは、rect1にピクセル座標(?)を代入してた。
D3Dでは、ddx_txv に座標を設定するらしい。
が、ヘルプ読んだが良くわからん。
どうやればいいか、分かる人教えてみないか。
0110↑
02/02/22 18:53ID:Lhsx7X1+ずれてる。こっちに差し替え。
描画先エリア サーフェース
↓ ↓
ret=pDDSBack->Blt( &rect1, g_pDDS,NULL, 0, NULL );
●D3Dでのやり方
テクスチャサーフェース
↓
pd3dDevice->SetTexture( 0, g_pDDS );
0111名前は開発中のものです。
02/02/22 21:30ID:???> D3Dで表示して、回転できるようにしたい。
この程度の処理が
> DX8には、ハードウェアが対応してないようなので、DX7で。
DirectX7で対応していて、DirectX8では対応していない
ハードウェアがなんなのか教えて欲しい。
そんなものあるの?
0112なかまかな
02/02/22 23:09ID:8+9pSBiPDX8だと、ハードウェアが新しくないと機能しないよね。
サンプルを実行したら、ダイアログボックスがでて、ソフトウェアモードで処理された。
DX7のサンプルは、ハードウェア(HAL)で動いた。
それとも、回転だけなら、今までのビデオカードでもハードウェアで動くの?
0113名前は開発中のものです。
02/02/22 23:15ID:???0114名前は開発中のものです。
02/02/22 23:32ID:lyn6ieNNつまんねぇネタだな
0115名前は開発中のものです。
02/02/23 02:42ID:???持ってるハードが古いorメーカが既に逝っててドライバが更新されてないとか(w
0116なかまかな
02/02/23 10:43ID:OEDm8gEoでもほかのDXのスレで、DX8は、ビデオカードとかが新しくないと
ダメだったようなこといってたよーな
0117名前は開発中のものです。
02/02/23 11:32ID:???板ポリゴンにテクスチャ張ってD3DXMatrixRotationXなどで
回転させてる。
0118名前は開発中のものです。
02/02/23 11:53ID:???DirectX8固有の機能でなければ古いドライバでも動作します。
動かないのはサンプルに新機能のデモが多いせいでは?
0119109
02/02/23 15:23ID:u/EZFxFIでもXファイルを表示するだけのサンプルも、ソフトで処理された。
>117
なんだ。D3DXってライブラリ、付属してるのか。別途かと思った。
最初からコレ使えば良かった。どうしようかな。
おわる。
0120プログラマになりたい厨房(ひきこもり)
02/03/05 01:37ID:???このスペックのPC使ってDirect3Dimモードで作成して動かしても普通に動くかな?
VRAMは8Mバイト3Dチップ付き
メモリ64MB
CPUはPentium2 400MHz
0121名前は開発中のものです。
02/03/05 02:36ID:vchuM+1Wチップの名称くらいかけ。
ちなみにi810とかsisみたいなチップ内蔵の場合、UMAの方で
不具合でるからむり。
■ このスレッドは過去ログ倉庫に格納されています