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

Direct 3D

■ このスレッドは過去ログ倉庫に格納されています
0001.01/11/09 17:06ID:wrfy6OtC
Direct Xはあるみたいですが、こちらはD3D専門という事で。
とりあえずDX8以降は初期化が簡単になったり関数が変わったり
結構大幅に変わりましたがその辺も踏まえてお願いします。
0375名前は開発中のものです。04/02/04 00:40ID:8XXIUaLn
>>374
いや、さすがにそれだけじゃ判断できないって。
0376名前は開発中のものです。04/02/04 01:22ID:S4gpfpmI
一緒に机並べてる奴がこんなソース書いてきたら、
どんな力を利用してでも自分の周りから遠ざけるけどな。
0377名前は開発中のものです。04/02/04 02:01ID:yUu1C7Gn
>>375
問題ないと思うならメッセンジャーでアドバイスしてあげてよ。
0378名前は開発中のものです。04/02/04 07:36ID:r/i/wFB8
これだけでもstatic floatとか色々と突っ込みたいところいっぱいあるなぁ。
0379X04/02/04 08:32ID:TUjDrKub
void DrawMain(){
lpD3DDEV->Clear(0,NULL,D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER,D3DCOLOR_XRGB(0,0,0),1.0f,0);
lpD3DDEV->BeginScene();
D3DXMATRIX matWorld,matRotateX,matTrans,matView;
static float PlayX=12,PlayY=10,PlayZ=-8;
static float BectolX=3,BectolY=0,BectolZ=8;
D3DXMatrixLookAtLH(&matView,&D3DXVECTOR3(PlayX,PlayY,PlayZ),&D3DXVECTOR3(BectolX,BectolY,BectolZ),&D3DXVECTOR3(0,1,0));
D3DXMATRIX matProj;
D3DXMatrixPerspectiveFovLH(&matProj,60.0f * PI / 180.0f,1.0f,0.1f,100.0f);
lpD3DDEV->SetTransform(D3DTS_VIEW,&matView);
lpD3DDEV->SetTransform(D3DTS_PROJECTION,&matProj);

// MAP表示
int X,Y,Z;//各座標ループ用
lpD3DDEV->SetTexture(0,BLOCK01texture);
for(Z=0;Z<2;Z++){
for(Y=0;Y<6;Y++){
for(X=0;X<10;X++){
switch(MAP[Z][Y][X][1]){
case 111:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,0,6);break;
case 211:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,6,12);break;
case 311:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,12,18);break;
case 411:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,18,24);break;
case 511:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,24,30);break;
case 611:PrintBLOCK(&matTrans,&matWorld,Z,Y,X,30,36);break;

}}}
po=1;
FrameCnt();
lpD3DDEV->EndScene();
if (FAILED(lpD3DDEV->Present(NULL,NULL,NULL,NULL))){lpD3DDEV->Reset(¶m);}
}
0380X04/02/04 08:35ID:TUjDrKub
遅くなってすいませんでした。
改行が多くて乗せれないみたいなことがでてしまい時間がかかりました。
皆さんアドバイスお願いいたします。
MAP表示のSelect文のcaseはあともっとあります。
0381名前は開発中のものです。04/02/04 09:12ID:S4gpfpmI
ここまでやっちゃいけない事例のオンパレードなコードも珍しい。
D3Dより先にC言語を勉強するべき
0382名前は開発中のものです。04/02/04 09:43ID:+5PC35hU
#define BLOCK_SIZE_X (1.0f)
#define BLOCK_SIZE_Y (1.0f)
#define BLOCK_SIZE_Z (1.0f)

CUSTOMVERTEX *pcv = (CUSTOMVERTEX *)locked_ptr; // 頂点バッファが望ましい
for(Z=0;Z<2;Z++){
for(Y=0;Y<6;Y++){
for(X=0;X<10;X++){

 if( MAP[Z][Y][X] != 0 ) { // 描画するか否か
  float x = X*BLOCK_SIZE_X;
  float y = Y*BLOCK_SIZE_Y;
  float z = Z*BLOCK_SIZE_Z;
  D3DCOLOR c;
  float tu,tv;

  // 立方体を構成 (カラー、UVは適当に設定)
  (*pcv++) = CUSTOMVERTEX( x, y, z, c, tu,tv );
  (*pcv++) = CUSTOMVERTEX( x, y+BLOCK_SIZE_Y, z, c, tu, tv );
  (*pcv++) = CUSTOMVERTEX( x+BLOCK_SIZE_X, y+BLOCK_SIZE_Y, z, c, tu, tv );
  (*pcv++) = CUSTOMVERTEX( x+BLOCK_SIZE_X, y, z, c, tu, tv );
                     :
                     :
  poly_counter += 1ブロックあたりのポリゴン数;
 }
}}}

DrawPrimitive( QUADLIST, poly_counter );

もしくは1ブロックごとにD3DTS_WORLDを更新してDrawPrimitive系()を複数回呼ぶ。
・・・俺はなにか勘違いしてるんだろうか
0383名前は開発中のものです。04/02/04 14:21ID:fWwu0COO
ソースを圧縮してアップローダーにでも上げてくれれば良いのに
0384名前は開発中のものです。04/02/04 22:39ID:uFnV7/G9
ああ・・・クラクラしてきた。
漏れダメかもしんない。
0385X04/02/05 14:10ID:6C1zUxy0
>ここまでやっちゃいけない事例のオンパレードなコードも珍しい。
どこか教えて戴けないでしょうか。
0386名前は開発中のものです。04/02/05 14:15ID:8EbK+SUS
>>385
switchの事だと思うけど。

あと、PrintBLOCK()の中身の一部を晒しつつ
トリップつけてみてよ
0387X04/02/05 14:40ID:6C1zUxy0
void PrintBLOCK(D3DXMATRIX *matTrans,D3DXMATRIX *matWorld,int MapZ,int MapY,int MapX,int H,int OF){
int HF,W,WF,O;
HF=H+2;W=H+2;WF=H+4;O=H+4;
if(MAP[MapZ][MapY][MapX][0]==1){H++;}
             ・
for( ;H<HF;H++){
D3DXMatrixTranslation(matTrans,MoveX[MapZ][MapY][MapX],MoveY[MapZ][MapY][MapX],MoveZ[MapZ][MapY][MapX]);
*matWorld = *matTrans;
lpD3DDEV->SetTransform(D3DTS_WORLD,matWorld);
lpD3DDEV->SetStreamSource(0,vb[H],0,sizeof(LVERTEX));
lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
}
for( ;W<WF;W++){
D3DXMatrixTranslation(matTrans,MoveX[MapZ][MapY][MapX],MoveY[MapZ][MapY][MapX],MoveZ[MapZ][MapY][MapX]);
*matWorld = *matTrans;
lpD3DDEV->SetTransform(D3DTS_WORLD,matWorld);
lpD3DDEV->SetStreamSource(0,vb[W],0,sizeof(LVERTEX));
lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
}
for( ;O<OF;O++){
D3DXMatrixTranslation(matTrans,MoveX[MapZ][MapY][MapX],MoveY[MapZ][MapY][MapX],MoveZ[MapZ][MapY][MapX]);
*matWorld = *matTrans;
lpD3DDEV->SetTransform(D3DTS_WORLD,matWorld);
lpD3DDEV->SetStreamSource(0,vb[O],0,sizeof(LVERTEX));
lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN,0,2);
}
}
こんな感じです。LPDIRECT3DVERTEXBUFFER9 vb[]がグローバルでvb[1800]確保していてその変数の中に頂点データを格納してます。
379のfor文のZが少しおかしかったです。終了条件は30でした。
if文の・はその数値によって立方体のどの面を表示しないかを設定してます。
0388名前は開発中のものです。04/02/05 15:01ID:8EbK+SUS
なにゆえ頂点バッファが1800も?
1つじゃだめなの?
0389名前は開発中のものです。04/02/05 15:14ID:/vLOTadA
もはやつっこむ所が多すぎてつっこみきれん。
もうネタとしか思えない。
0390名前は開発中のものです。04/02/05 15:18ID:yFFdfEYa
ポリゴン2つ描画するのに、毎度DrawPrimitive使うのはかなり重いんじゃないか?
あと、もし毎フレームごとに頂点バッファ作っているようなら、
背景みたいに変形しないモデルなら、最初に全てのポリゴンを含んだ頂点バッファを
1つ作っておいて、それをDrawPrimitiveで描画したほうが手間がかからないよ。
0391名前は開発中のものです。04/02/05 15:53ID:8EbK+SUS
int flag = MAP[MapZ][MapY][MapX][0];
ブロック[0,0,0]の 常に描画する6ポリゴン
ブロック[0,0,0]の flag!=1の時だけ描画する6ポリゴン
ブロック[1,0,0]の 常に描画する6ポリゴン
ブロック[1,0,0]の flag!=1の時だけ描画する6ポリゴン
ブロック[2,0,0]の 常に描画する6ポリゴン
ブロック[2,0,0]の flag!=1の時だけ描画する6ポリゴン
            :

void DrawMain() {
  lpD3DDEV->SetStreamSource(0,vb,0,sizeof(LVERTEX));
  for(Z=0;Z<2;Z++){
  for(Y=0;Y<6;Y++){
  for(X=0;X<10;X++){
    PrintBLOCK(Z,Y,X);
  }}}
}
void PrintBLOCK( int MapZ, int MapY, int MapX ) {
  D3DXMATRIX matWorld;
  D3DXMatrixTranslation(&matWorld, MoveX[MapZ][MapY][MapX], MoveY[MapZ][MapY][MapX], MoveZ[MapZ][MapY][MapX]);
  lpD3DDEV->SetTransform(D3DTS_WORLD, &matWorld);

  int StartVertex = (((CAP_X * CAP_Y) * MapZ) + (CAP_X + MapY) + MapX) * 12;
  int PrimitiveCount = (MAP[MapZ][MapY][MapX][0]==1)? 6 : 12;
  lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN, StartVertex, PrimitiveCount);
}
0392名前は開発中のものです。04/02/05 16:14ID:8EbK+SUS
ものすごい勢いで間違えてた・・・

× :
int StartVertex = (((CAP_X * CAP_Y) * MapZ) + (CAP_X + MapY) + MapX) * 12;
lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLEFAN, StartVertex, PrimitiveCount);

○ :
#define TRIANGLE_NUM (12) // 1ブロックを構成するポリゴン数
#define VERTEX_NUM (3)   // 1トライアングルを構成する頂点数
int StartVertex = (((CAP_X * CAP_Y) * MapZ) + (CAP_X * MapY) + MapX) * TRIANGLE_NUM * VERTEX_NUM;
lpD3DDEV->DrawPrimitive(D3DPT_TRIANGLELIST, StartVertex, PrimitiveCount);
0393X04/02/06 09:41ID:0X7fE0LV
1800個用意してるのはブロックの大きさの違う頂点データを格納しているからです。
MAP情報(ブロックの大きさ、表示面FLG)をtxtから読み込んで表示させています。
1ブロック分の頂点データでMAP表示をしたところポリゴン数が多かったので
違う大きさのブロックを用意してポリゴン数を減らそうとしました。
0394X04/02/07 12:19ID:HQxh50cd
頂点バッファは最初に用意しています。
ポリゴン数は500強まで抑えれたのですが全然FPSがでません。
原因として考えられるものを見たのですがわかりません。
たとえばどんなことをすればFPSがでないのでしょうか。
どなたか教えていただけませんでしょうか。
0395名前は開発中のものです。04/02/07 12:23ID:CLQE2Fb+
>>394
だから500ぽっちのポリ数で処理オチなんてするわけないでしょ。
なんでわからんのかねチミ。
原因は別のところにあるのだよ。
0396名前は開発中のものです。04/02/07 12:31ID:cF8RWyca
劣悪な環境なのかもよw
0397名前は開発中のものです。04/02/07 12:36ID:o6RXyTtt
>>394 少しずつ処理を止めていって、どの処理が重いのか検討つけてみなよ。
その上で、
PCやグラボがショボイってことは無い?MSのサンプルはきちんと動く?HELで動かしてない?
初期化の段階で一度、定義取得すればいいような処理を、毎回やってない?
無駄にループ処理が多くない?ループの外に出せる処理をループ内でやってない?
0398名前は開発中のものです。04/02/07 16:09ID:VKCT6fFP
ソースをうpしてくれん事には
どうにも解決できない希ガス
0399X04/02/08 03:00ID:VlGbZ8et
皆さんができるだけレベルの高い人が多くの見れくれる場所はどこですか。
そういった事をしたことがなくて少しびびってます。
0400名前は開発中のものです。04/02/08 03:17ID:FsAxusDH
え?
0401名前は開発中のものです。04/02/08 03:18ID:X73WE+nW
コーディングも変だが日本語も変だな。
0402名前は開発中のものです。04/02/08 03:45ID:jR1jDgu/
翻訳サイトでも使ったのか?
0403名前は開発中のものです。04/02/08 04:30ID:UH78BtVm
貴様どこの星から来た!?
0404デフォルトの名無しさん04/02/08 07:38ID:EfTOxtBw
>>403
そりゃ遊星だろw
0405名前は開発中のものです。04/02/08 07:46ID:Bpmlhhr/
>>404
座布団一枚。
0406名前は開発中のものです。04/02/08 10:16ID:tWxjYBbl
>>399
もういちど言い直してみてくれ・・・ 
0407名前は開発中のものです。04/02/08 12:05ID:OMvVX0nS
さすがに>>399 は別人ネタレスじゃないか?まあX氏自身もネタに近いものがあるが・・・
はたして彼は、今までに出たアドバイスを試すことができたのだろうか?
0408X04/02/08 12:46ID:1SC30ugo
どうもXです。399はいちよX本人です。
日本語がおかしいのは実は1ヶ月ほど1日の睡眠時間が3時間程度の状態
が続いてるからです。それとネタ的なプログラムな事は3Dのプログラム
に関してまだ触って3ヶ月だからです。あと私の理解力のなさからです。
ビルボードに関しては試させて戴きました。まだカメラを移動させてそれに
大してビルボードされておりませんが。
0409名前は開発中のものです。04/02/08 13:59ID:Bpmlhhr/
釣りな気がしてきた
0410名前は開発中のものです。04/02/08 14:49ID:6M6RYNuz
釣りが気にしてきた。
0411名前は開発中のものです。04/02/08 15:47ID:P2w3BnL9
あそこまで遅くなるほうに最適化出来るということは

釣 り な 気 が し て き た
0412X04/02/08 18:32ID:nsvaA+4r
信じて戴けないかもしれませんがネタではありません。
あと数日である程度動く物にしなければいけません。
誠に自分勝手ではございますがもしよければメッセンジャーでアドバイスを戴けないでしょうか。
あと数日は寝ずにがんばっておりますので入って下されば絶対います。
当然メッセンジャーに入って気が向いてる時だけアドバイスして戴けるだけで結構です。
本当にご迷惑だとは思いますが10秒でも20秒でもアドバイスして戴きたい状態です。
もしアドバイスしてやってもいいと思われる方が居られましたらお願い致します。
0413名前は開発中のものです。04/02/08 18:53ID:2mWO52jY
いちお 紹介しておきます。

ゲーム製作技術@2ch掲示板避難所の アップローダ
ttp://gamdev.org/up/upload.php
0414名前は開発中のものです。04/02/08 20:18ID:Xhkqx59O
睡眠時間をけずらなければいけないほど
切羽詰った状況とは何だ?
答えなさい。話はそれからだ。
0415名前は開発中のものです。04/02/08 20:27ID:0s9yjcTA
>実は1ヶ月ほど1日の睡眠時間が3時間程度
であのレベルじゃあと数日じゃどうにもならんだろ。
いっそもう他人に頼んじゃったほうがいいんじゃない?
アドバイスでどうにかなるレベルじゃない。
0416X04/02/08 20:43ID:AyXCEV6t
実は数日後にある程度完成させた作品をソースごとネットで公開し、
オープンソース的な状態でどんどんそのゲームを進化させていきたいと
思っております。それまではソースを完全公開は避けたいので
メッセンジャーでアドバイスを戴ける方だけに渡したいと思っております。
正確には何日後かわかりませんが数日後にある程度完成した作品を
とある場所で公開するのでそれまでにという思いです。
0417名前は開発中のものです。04/02/08 21:02ID:0s9yjcTA
趣味でやってるの?
だとしたら数日後じゃなくてもいいじゃない。
全くダメなんでもっと修行したほうがいいよ。
あんなのオープンソースにしても意味がない。

それともやっぱりネタですか?
0418名前は開発中のものです。04/02/08 21:05ID:1IkWSScj
状況を正確に言いなさい!
学校の宿題なら手伝えないでしょ
0419名前は開発中のものです。04/02/08 21:08ID:OMvVX0nS
急がなくても、自分の気の済むように作りこんでから公開してもいいんじゃないの?
ここでゲームプログラム作っている人達は、他人のソースは参考にしても、それを
拡張してまでゲーム作ったりする人は少ないんじゃない?
最初から作ったほうが面白いし、俺イズムなコーディングできるから。
0420X04/02/08 21:44ID:AyXCEV6t
正確な状況を言います。
まず宿題ではありません。ゲームを作る宿題があると思われてるということは
そういった学校に通われてると思われてるみたいですね。
私は大学生で趣味でゲームを作っております。しかし今回の作品は私と知人2人の3人で作っているものでして
新しくHPを作って目玉としてオープンソース的なゲームプログラムを公開します。
公開日は今週の水曜日の18時です。メンバが各々違う処理を担当しており
最初最低限の仕様を決めてそこまで作り上げて公開ということです。
今まで公開日が伸びてしまい最終的な公開日が今週の水曜になっています。
私が最低限するべくレベルまで出来ていない状況なのでアドバイスを戴けたらと
思い書き込ませていただきました。
0421名前は開発中のものです。04/02/08 21:51ID:DCWz8J9a
宿題だったか…
0422名前は開発中のものです。04/02/08 21:52ID:OMvVX0nS
>>420 早めに他のメンバーに謝った方が良くないか?
コンピュータ関連の会社だったら修羅場になっちゃうけど。
  ↓
Flash「新世紀エヴァングラマー」
http://crybaby-sakura.hp.infoseek.co.jp/flash/eva.html
0423名前は開発中のものです。04/02/08 21:53ID:K5PzK6gp
HPのURLをキボンヌ
0424名前は開発中のものです。04/02/08 21:55ID:pUbFdPa3
プロの方々に質問させてください。

私のノートパソコンはDirect3D対応していないのですが
(お兄ちゃんから貰ったもので古いんです)
うっかりDirect3D対応のゲームを買ってしまいました。
あきらめるしかないのでしょうか?

Direct3Dの確認はdxdiagってやつで見ました。
Direct3Dアクセラレータ利用できません。
って書いていました。
デバイス名はTridentVideoAccelerator9525DVD 5.6070.26
ってあります。

お兄ちゃんはあきらめろって言ってたんですが
もったいないので助けてください!
0425名前は開発中のものです。04/02/08 21:57ID:K5PzK6gp
つーか完成品じゃない物を期日決めて公開しても
しょうがないと思うけど。
0426名前は開発中のものです。04/02/08 22:13ID:Bpmlhhr/
>>424
http://www.google.co.jp/search?num=50&lr=lang_ja&q=お兄ちゃんどいて!そいつ殺せない!
0427名前は開発中のものです。04/02/08 22:42ID:lI5pQUKp
>>424
ビデオカードが対応してないんだから
どうあがいても無理。
そんなことよりおじちゃんと遊ばない?
0428名前は開発中のものです。04/02/08 22:51ID:OMvVX0nS
>>424 またネタっぽい質問がきてるな

パソコン初心者版
http://pc2.2ch.net/pcqa/
そちらの質問スレで尋ねた方がいいんじゃない?ノートパソコンだと難しいと思うけど・・・
0429名前は開発中のものです。04/02/08 22:58ID:jR1jDgu/
いや、これは間違いなくネタだろ
0430名前は開発中のものです。04/02/09 00:11ID:h+IssnCf
お兄ちゃんといっても弟でしょ
0431名前は開発中のものです。04/02/09 13:42ID:DNtgH3z+
>X
大阪府の人?
0432X04/02/11 01:35ID:RvFWUtYj
なぜに大阪?
0433名前は開発中のものです。04/02/11 14:32ID:FwrI7GbY
>>424
ちょっとワラタ

俺も今度どこかで質問するときは妹のフリをしよう。
0434名前は開発中のものです。04/02/12 23:29ID:ZfdN/mCD
directxを簡単に扱えるライブラリって結構あるけどどれが最強よ?
0435デフォルトの名無しさん04/02/13 00:02ID:s0TZDiXw
>>434
D3DX
0436名前は開発中のものです。04/02/13 01:15ID:FlhNvr4y
自作
0437名前は開発中のものです。04/02/13 08:44ID:DZhOTV1Z
他人のソース読むのメンドウ。カスタマイズすると何処で影響出るか判らずブキミ。
なので、原理をパクって、ソースは自作。
0438名前は開発中のものです。04/02/13 09:12ID:SH5YdBQJ
仕事でライブラリ屋やってたから自作の利点は分かるけど、
気力的に続かなくなる。ゲーム作ることに気力を割いた方がいいよ。
0439名前は開発中のものです。04/02/18 13:34ID:p73oUtCq
ビルボードでの計算式を教えていただけませんか。
if( BillBoard.x<0.0f){
   rad = (float)acos(D3DXVec3Dot(&BillBoard, &sBillBoard)/(D3DXVec3Length(&sBillBoard)*D3DXVec3Length(&BillBoard)));
}else{
   rad = -(float)acos(D3DXVec3Dot(&BillBoard, &sBillBoard)/(D3DXVec3Length(&sBillBoard)*D3DXVec3Length(&BillBoard)));
}
D3DXMatrixRotationY(&mRotateY, rad);
}
これで平面におけるビルボードはできているのですが
カメラの位置がXYZどの方向に移動してもそちらへ向くための数式を
誰か教えていただけませんか。
0440名前は開発中のものです。04/02/18 16:09ID:0iEToC7t
平面が出来てるなら、もう1軸足すだけですね
0441名前は開発中のものです。04/02/18 17:12ID:6LPAs+mf
イチジク
0442名前は開発中のものです。04/02/18 18:27ID:4Zkw2dJi
ニンジン
>>336 >>351 >>354
0443匿名君04/02/20 01:07ID:63doXt8J
すいません、質問させて下さい。
こんな画像を
http://www.xxxx.nu/upload/upload.cgi?page=Download&dir=&sort=date&filename=flare.JPG

こんな風に
http://www.xxxx.nu/upload/upload.cgi?page=Download&dir=&sort=date&filename=ViwP.JPG

表示したいんですがやり方がわからないので助言していただけたらなと。
黒色のアルファを透明色にしたらいい?のかな?
出来れば、頂点シェーダーを使わないでやりたいのですができますでしょうか?
スプライトだけとかでできませんかね?
0444名前は開発中のものです。04/02/20 01:12ID:cjTWv5RL
>>443
ただの加算ブレンドだと思われ。
ここなんかいいと思われ
http://platz.jp/~moal/old.html
0445匿名君04/02/20 01:28ID:63doXt8J
>>444
ああ、そうだったのですね。(^^;
基礎知らなくてどうもすんません。
044644504/02/21 22:42ID:DrvAnV60
スプライトを使って簡単に加算合成ができました!
しかしながら、常に画面手前に表示されてしまいます。
SetVertexShader(FVF_LVERTEX) と SetTexture(0,Img); つかってやることは出来ないでしょうか?
スプライトで3Dの表現は難しいですか?
0447名前は開発中のものです。04/02/21 22:46ID:Dt5hTRW3
>>446
どうも何がやりたいのかがよく分からないんだが、、
エフェクトなら画面一番手前に表示されるのが普通じゃないのか?
044844504/02/21 22:49ID:DrvAnV60
あ、すいません、できました(汗
上げてすいません
044944504/02/21 22:51ID:DrvAnV60
>>447
3Dアクションゲームだったんで、そのキャラの手前にエフェクト表示とかしたかったんですよ。
0450名前は開発中のものです。04/02/27 21:28ID:CEfjX1WV
大学のHPに公開して、教授にオープンソースする


宿題・・・ですかね、期日も決まってるしなんか変
0451名前は開発中のものです。04/02/28 15:16ID:UeeMPs1b
シェーダについて質問があります。DirectXのBumpEarthサンプルのように、
ピクセル単位の凹凸と映り込みの表現を、シェーダとキューブマップを使って再現
したいのですが、バンプ等に使用するノーマルマップを参照してキューブマップを
ピクセル単位で貼り付けるなんてことは、シェーダで可能なんでしょうか?
0452名前は開発中のものです。04/03/01 05:59ID:/hzutH0D
グループで卒業論文にあたるプロジェクトをやってるとか。
0453名前は開発中のものです。04/03/06 09:36ID:SFWQB4Uj
モデルにスケール100倍をかけて描画したらライトの
影響を受けなくなりました。ライトの強さを100倍にしたら
普通に受けるようになりました。

なぜ?
0454名前は開発中のものです。04/03/06 11:07ID:gyOTZTVe
>>453 法線ベクトルを正規化しなかったからじゃない?
0455名前は開発中のものです。04/03/06 15:41ID:XiMT98gx
>>453
実はレンダリングステータスにこんなものがある

D3DRS_NORMALIZENORMALS

ためしにTRUEにしてみるよろ。
0456名前は開発中のものです。04/03/08 14:47ID:QnrLNmbR
>>453
スケーリング行列の場合はベクトルの長さは保たれません。(当たり前)
法線ベクトルを正規化して頂点ストリームに渡しても、変換したら長さが1以外になります。
455にもあるD3DRS_NORMALIZENORMALSを使って法線変換後に正規化させましょう。
0457名前は開発中のものです。04/03/21 15:36ID:LgK8+mJY
大変初歩的な質問ですが

D3DXCreateTextureFromFileAで取得したテクスチャの縦横ピクセルサイズは
どこで取得すればよろしいでしょうか?
(フォーマットがわかればなおよしA8R8G8B8<ビットフォーマット)

調べたのですが、納得がいく方法が見つかりません。

現状は横1ピクセルのデータ−を仮で読み込んで、ロックしそのピッチ幅を取得
それを基準にして、他の画像は横幅を割り算して取得しています。

目的は大きいテクスチャの一部分を、動的に他のテクスチャに複写し
ポリゴンに貼り付ける為です。


もっともゲームで使うなら最初からサイズは解っているので、
決め打ちでいいのですが、そこは突っ込まないでください^^




0458名前は開発中のものです。04/03/21 16:56ID:BxdkMd0d
>>457
テクスチャからサーフェースを、そのサーフェースからD3DSURFACE_DESCを。
ここにサイズやらフォーマットやらが書かれている。
045945704/03/21 17:58ID:LgK8+mJY
>>458 レス有難う。こちらも調べて幾つか解ったことがあったので自己れすします

D3DXCreateTextureFromFileAではなくD3DXCreateTextureFromFileEXの
ColorKey パラメーターの説明
透明となる値。カラーキーを無効にする場合は 0 を指定する。
ソース イメージのフォーマットとは関係なく、これは常に 32 ビットの ARGB
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
カラーである。アルファが有意であり、通常はカラーキーを不透明にする場合は
FF を指定する。したがって、不透明な黒の場合、値は &HFF000000 となる。

実験しましたら確かにこのフォーマットで作られていました。EXもAもたぶん同じ^^

更に質問
3Dモデルに結び付けられていない。1枚絵(ポリゴンに貼り付けるだけ)で使うテクスチャをどのように管理されていますか?

私は以下のように考えているのですが、他の方はどのような方法をとられてますか?

巨大なテクスチャファイル(いろんなパーツが入っている)
テクスチャ配列(クラス) それぞれのテクスチャクラスにサイズと位置を記憶
使用時*テクスチャ番号(引数) 

これによってテクスチャクラスは自分が必要な
データ−を巨大テクスチャより切り取り動的に切り替えることができる。

小さなパーツで構成される画面を作る時に適している。
テクスチャ間のコピーのときに任意の処理ができる(例:枠をつけたり)
テクスチャクラスに振る舞いを登録できるような設計にできる為、
使用する側はそのままの表示ロジックを維持しながら、データ−を供給するクラス側で
データを入れ替えることが可能。
(例えば時間に応じて変化するテクスチャなど)
0460名前は開発中のものです。04/03/22 01:06ID:tNFLCTBp
>>459
ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=39&vew=30
0461初心者04/03/23 14:04ID:Jczyt83k
初歩的な質問で申し訳ないのですが
読み方はダイレクトサンディでよろしいのでしょうか?
0462名前は開発中のものです。04/03/23 21:23ID:Yrm+HBGz
>>461
違うよ サムディ 信じる心いつまでも おーーーーサムディ♪
0463名前は開発中のものです。04/03/23 22:42ID:5PwlM6K3
>>461
ダイレクトエッキスです
0464名前は開発中のものです。04/03/24 00:22ID:YZ3i2F6G
ディレクトセックス
0465名前は開発中のものです。04/03/24 08:33ID:jOSSC0EV
>>461
3Dを「サンディ」と呼ぶのは
出版業界から嫌われているサンディ○○ぐらいだろ
0466名前は開発中のものです。04/03/24 14:29ID:IJNb+c5r
>>465
任天堂が64のCMでサンディって言ってたじゃん。
任天堂が言うんだから、サンディが正しいに違いない。
0467名前は開発中のものです。04/03/25 00:09ID:kQT5/IqP
http://www.tosp.co.jp/i.asp?i=shogunsan

http://www.geocities.co.jp/AnimeComic-White/2682/

先生!サンディについて調べました
0468名前は開発中のものです。04/03/25 12:07ID:F7pYy+Ij
bio100%のサンディー恋塚
0469名前は開発中のものです。04/03/30 23:59ID:fcRSAwJm
皆、バーテックスバッファをどういう構成で使ってます?
MSのFAQを読む限りでは、なるべくSetStreamをしないほうがいいって書いて
あるんだけど、単一のVBに全てのメッシュ頂点を置くより、メッシュ単位で
VBを持たせて、各Meshを描画するたびにSetStreamでVBを切り替えたほうが
圧倒的に速かった。これはVRAM容量と頂点数に依存すると思われるけれども、
mesh毎にVBをもつ方法だとFVFをモデル単位で最適化できるし
利点の方が多そうなんだけど、実の所どうなんでしょうか?
もう一つは、FVF単位で複数のVBを持つというのもあるかと思いますが。

あと、SetStreamでVBを切り替えるたびに、System RAM→VRAM間の
データ転送が起きるんでしょうか?
0470名前は開発中のものです。04/03/31 03:36ID:wPHsbNEc
どのスレで聞いたらいいかよく分からんのでここで聞かせてもらいます。
3Dで雷みたいなエフェクトをビルボードでアニメーションさせて表示して
るんですがビルボード以外でなるだけ軽くて使えそうな方法って無いんでしょうか?
教えてください

0471名前は開発中のものです。04/03/31 07:08ID:uLEtiF6X
空の描画みたいな完全に2Dでいいモノなら、FVF_XYZRHW でスクリーン座標系で描く。
0472名前は開発中のものです。04/04/04 01:41ID:hMv86NdG
http://pc5.2ch.net/test/read.cgi/tech/1011762546/438
どうなんだろ
0473名前は開発中のものです。04/04/07 12:07ID:Z8uh3z3S
DirectX9を学ぼうと思ってるのですが、いきなりじゃ難しいでしょうか?
DirectX7とかを学んでからの方が良いでしょうか?
0474名前は開発中のものです。04/04/07 12:36ID:zQ7BBAvd
>>473
初めて学ぶのであれば、どちらも大差ない。
■ このスレッドは過去ログ倉庫に格納されています