鬱だ氏のう DirectX (Part 7)
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
02/12/10 17:34ID:tkEwMMYm初心者用相談室では扱わないような少し高度な話題も受け持つ。
■ 過去スレ
Part 1 http://piza.2ch.net/tech/kako/966/966655286.html (プログラム板)
Part 2 http://pc3.2ch.net/test/read.cgi/tech/997101556/ (プログラム板)
Part 3 http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html
Part 4 http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html
Part 5 http://game.2ch.net/test/read.cgi/gamedev/1027351925/
Part 6 http://game.2ch.net/test/read.cgi/gamedev/1033920036/
0509名前は開発中のものです。
03/02/05 09:14ID:C8LBuEyAv2へのベクトルの代入が2回あるよ
最後はv3の間違いでは
0510名前は開発中のものです。
03/02/05 11:26ID:WNKlFOrlpVerticesの型は問題無い?
それと余計なお世話かもしれないが、いちいちpVerticesの値を書き換える
のはどうかと思うが。
0511名前は開発中のものです。
03/02/05 11:43ID:Rpyfjb59VCの機能で、構造体がstだとするとst.と打つと変数がズラっと出てくるのですが
DXの場合でてきません(;´Д`)
たとえばこんば場合
lpD3DDEV-> この場合だとメンバがズラっと出てきてもおかしくないはずでは…?
0512名前は開発中のものです。
03/02/05 12:18ID:79QNGJq6ニュアンスとしては「テキストファイルから文字配列に読み込む」と似たようなもんだ。
>>511
DirectXに限らずいつの間にか出なくなってるのはよくあることさ。
VC終了させてncbファイルを削除してリビルドすると直ることがある。
0513名前は開発中のものです。
03/02/05 14:33ID:pCUaxWgd/  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ /
/ このスレは無様に . /
/ 終了いたしました /
/ ありがとうございました /
/ /
/ モララーより /
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄/
∧_∧ / /∧_∧
( ・∀・) / /(・∀・ )
( )つ ⊂( )
| | | | | |
(__)_) (_(__)
0514名前は開発中のものです。
03/02/05 14:45ID:VhnI0t6fDirectX関係のヘッダファイルを
メニューの「プロジェクトに追加」から追加すれば すべて表示される様になるよ。
0515名前は開発中のものです。
03/02/05 14:48ID:VhnI0t6f0516497
03/02/05 15:56ID:Px3YyVPbすみません、コピぺミスでした。
プログラムの方は3になっています。
>>510
pVerticesはBYTE*型で宣言しています。
0517名前は開発中のものです。
03/02/05 20:05ID:33SsFAZ7教えて下さい。
ほとんど、C/C++環境しか載ってませんでした。
0518名前は開発中のものです。
03/02/05 20:16ID:79QNGJq6http://www.google.com/search?lr=lang_ja&q=VB+DirectX+DirectGraphics
http://www.google.com/search?lr=lang_ja&q=VB+DirectX+DirectInput
http://www.google.com/search?lr=lang_ja&q=VB+DirectX+DirectAudio
http://www.google.com/search?lr=lang_ja&q=VB+DirectX+DirectPlay
0519名前は開発中のものです。
03/02/05 20:17ID:79QNGJq60520あぼーん
NGNG0521名前は開発中のものです。
03/02/05 22:45ID:gmQcAvyIpIndicesってBYTE*?
インデックスってunsigned short(2バイト)だよね。
>pVertices += ( models[mdl].dwVertexSize * (*(pIndices))) ;
これだとDWORDにcharを掛けることになるんじゃない?
0522名前は開発中のものです。
03/02/05 23:03ID:j4N+VLbo0523名前は開発中のものです。
03/02/05 23:18ID:gmQcAvyI>models[mdl].pMesh -> LockIndexBuffer (D3DLOCK_READONLY,&pIndices);
でもここでエラーが出るよ。これってエラー回避できたっけ?
0524497 508
03/02/06 00:06ID:OnKQhdzM参考に、いろいろと調べながら改良したところ上手くいったのですが。
pVerticesは自前の頂点フォーマットなので、Xファイルの頂点フォーマットが変わったら対処出来なくなりますよね・・・
models[ObjInfo[obj_num].mdl_num].lpVertexBuffer -> Lock(0,0,(BYTE**)&pVertices,D3DLOCK_READONLY);
models[ObjInfo[obj_num].mdl_num].lpIndexBuffer -> Lock(0,0,(BYTE**)&pIndices,D3DLOCK_READONLY);
for(i=0;i<models[ObjInfo[obj_num].mdl_num].dwNumFaces;i++)
{
indx0 = *pIndices++;
indx1 = *pIndices++;
indx2 = *pIndices++;
v1.x = (pVertices+indx0)->x;
v1.y = (pVertices+indx0)->y;
v1.z = (pVertices+indx0)->z;
※以下v2,v3はindx0をindx1とindx2にする。
0525名前は開発中のものです。
03/02/06 00:14ID:PXQKBNV4CloneMeshFVF()
0526名前は開発中のものです。
03/02/06 00:18ID:h7fxXUIR文字の出来栄え(?)がよく見えません…。
もっと自然に見せるのはどうしたらいいですか?
0527名前は開発中のものです。
03/02/06 00:48ID:XOPRT3wt変態がイパーイいるサイトでつ!ヨロシク!!
http://homepage2.nifty.com/tikan/
0528名前は開発中のものです。
03/02/06 02:03ID:uf/6vI/uあのゲームの海岸の処理が綺麗でちょっと興味が…。
あれって具体的にどうやってるんでしょうかね?
海岸線を記憶しておいて、半透明テクスチャを多重に重ねてるだけ?
0529あぼーん
NGNG0530497 508
03/02/06 10:37ID:GRrNUBHfそう言えば、色々な所でD3DRS_LIGHTINGは重いので自前で計算するというのを見かけるのですが。
どれくらい違ってくるのでしょうか。
また、自前で計算するとすれば頂点から光源までのベクトルと、法線ベクトルとの角度が
大きくなるにつれ、頂点色を黒に近づければ良いのでしょうか?
0531あぼーん
NGNG0532あぼーん
NGNG0533あぼーん
NGNG0534あぼーん
NGNG0535あぼーん
NGNG0536名前は開発中のものです。
03/02/06 20:32ID:pjoIkZidあー、AoMの表現は繊細やねー。
2Dエンジンの頃の「味」を3Dエンジンで再現してやろう
みたいな開発者の姿勢に惚れたよ。
海岸線の技法はごく普通の頂点α&テクスチャUVのアニメーションの
マルチパスレンダリングかと思われ。
0537名前は開発中のものです。
03/02/06 23:47ID:uf/6vI/uなるほど。テクスチャアニメーションですか。
海岸線を割り出すのが面倒そうですが、
理論的にはできそうですね。ちょっと試してみますw
0538名前は開発中のものです。
03/02/07 00:42ID:WYEzYilN>そう言えば、色々な所でD3DRS_LIGHTINGは重いので自前で計算するというのを見かけるのですが。
点光源や複数光源は確かに重いですね
光源計算を自前ってシェーダーでってことでしょう
でもVertexShaderをソフトウェア処理すればもちろん重いです
まぁ点光源を使わず平行光源1〜2個程度なら重くはないと思いますが…
0539名前は開発中のものです。
03/02/07 02:13ID:cVuOSA76てか、そいつらちゃんとライトのクリッピングしてるのかな?
単純に考えて描画されない範囲はライトの計算はない。
さらにその中でライトの影響があるものに絞れるわけだから結構糞みたいなもんだと思うのだが。
そうでもない?
0540あぼーん
NGNG0541名前は開発中のものです。
03/02/07 02:54ID:vOLsbN51自前で作るシェーダってどういうことですか?
0542名前は開発中のものです。
03/02/07 03:47ID:d8M6ISnChttp://www.google.com/search?q=%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80
0543名前は開発中のものです。
03/02/07 05:01ID:q+CKg/Cpフルスクリーンにした際にメニューバーが見えてしまうのでメニューバーを隠したい
のですが、メニューバーを隠すにはどうしたらいいですか?
0544名前は開発中のものです。
03/02/07 05:55ID:XjdSy754SDKのサンプルを見ろ。HMENUで検索すればすぐ見つかるよ。
0545あぼーん
NGNG0546あぼーん
NGNG0547名前は開発中のものです。
03/02/07 13:52ID:q7wZvQmWそこそこ新しいグラボだったらそんなに重くない気がする
>>530の言ってるのがどんな方法かわからんのだが
>>538の言ってる方法は古いグラボと新しいグラボの差を広げるので
使いにくいのではないかなぁ。
光源固定の場合にはマップなど動かないオブジェクトのライティングも固定なので
最初に一回だけ計算しておいてライティング済頂点として描画、
という方法なら、状況によってはそこそこ速くなるんでない?
0548530
03/02/08 00:16ID:r5v2mdj8今使っているのは、平行光源とAMBIENT(全体の明度?)なので大丈夫そうですね。
0549あぼーん
NGNG0550530
03/02/08 05:53ID:tP3Uar1nフルスクリーン動作を前提に作っているのですが。
マウスカーソルを画面上の方に持っていくとタイトルバーに常駐するアプリが、
表示はされていないのですが反応してしまいます。
市販のゲームではこう言う現象は起きないのですが、どうやって回避すれば良いのでしょうか?
詳しい方ご教授お願いします。
0551530 550
03/02/08 06:07ID:tP3Uar1nちなみに、問題のアプリはコレです。
http://www.vector.co.jp/vpack/browse/pickup/pw4/pw004591.html
0552名前は開発中のものです。
03/02/08 07:55ID:wHa+Kz3S0553名前は開発中のものです。
03/02/08 08:29ID:vaToSwV10554名前は開発中のものです。
03/02/08 08:30ID:kW0mtyecウィンドウスタイル = WS_POPUP
分からないところが出る度にこうやって聞きにくるつもりかな?
自分で調べる力がないとゲームを作る上で大きな障害になるぞ。
0555Newbie
03/02/08 10:54ID:tP3Uar1nWS_POPUPでは無理だったので、ウィンドウを生成する直前で
long nStyle = GetWindowLong ( hWnd, GWL_STYLE );
nStyle &= ~WS_BORDER;
SetWindowLong ( hWnd, GWL_STYLE, nStyle );
SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
としたところ、上手くいきました。
>>554
googleでいろいろ検索しているのですが、情報があまりにも少なかったり
いろいろな方法があったりと、ここで聞くと最良の方法がわかりそうで
ついつい質問してしまいます。
頑張って質問は3日に一回くらいにします。
と言うかコテハンにします(・∀・ )
0556名前は開発中のものです。
03/02/08 14:25ID:kW0mtyecウィンドウ位置 = CW_USEDEFAULT
これまで書かなきゃいかんかったのかな。
あと行数多い上にWS_BORDERは必要ないぞ。
前の質問も見てみたけど、ポインタの意味も理解できてないようだから
ttp://www.kumei.ne.jp/c_lang/
ここを紹介しておく。よ〜く理解を深めてからDirectXを始めるといい。
0557Newbie
03/02/08 18:29ID:Lgzi6Y2ESetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
だけでいけるようです。
WS_POPUP等は真っ先に試したのですがだめでした。
どうやら、Direct3Dデバイスを初期化した後にクライアント領域を上書きする
必要があるようです。
0558名前は開発中のものです。
03/02/08 19:03ID:RpJY5FZv0559名前は開発中のものです。
03/02/08 19:35ID:kW0mtyec??? ちょっとソース見せてみ。
0560Newbie
03/02/09 02:21ID:h8vA8e3Lこんな感じです。一応ウィンドウモードに切り替えることも考慮してます。
RECT rect;
SetRect(&rect, 0, 0, WIDTH, HEIGHT);
DWORD style = (FULLSCREEN) ? WS_POPUP :(WS_CAPTION|WS_SYSMENU|WS_BORDER|WS_MINIMIZEBOX);
AdjustWindowRect(&rect, style, FALSE);
int width = rect.right - rect.left;
int height = rect.bottom - rect.top;
WNDCLASS wc;
ZeroMemory(&wc, sizeof(WNDCLASS));
wc.hbrBackground= (HBRUSH)GetStockObject(BLACK_BRUSH);
wc.hCursor = LoadCursor(NULL,IDC_ARROW);
wc.hInstance = hInst;
wc.lpfnWndProc= MsgProc;
wc.lpszClassName= CAPTION;
if(RegisterClass(&wc) == 0) return 0;
HWND hWnd = CreateWindow(CAPTION,CAPTION,style,CW_USEDEFAULT,CW_USEDEFAULT,width,height,NULL,NULL,hInst,NULL);
if(hWnd == NULL) return 0;
if(FAILED(InitD3D(hWnd))){return 0;}
if(FULLSCREEN)
{
SetWindowPos(hWnd, NULL, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED);
}
ImmAssociateContext(hWnd,0);
ShowWindow(hWnd, SW_SHOW);
UpdateWindow(hWnd);
0561名前は開発中のものです。
03/02/09 07:50ID:JOf4tO9W環境は?DXバージョン、OSとグラフィックカード、メモリ容量も書いて。
0562名前は開発中のものです。
03/02/09 09:18ID:fW4IKGf/あとはアホな組み方してもCPU使用率が100%にならないんだけど」ウチだけ?
デフォルトでPresentにSleepが入るようになったんかな。
自前で制御してるからいらんのだが、無効にするやり方がわからん・・・
まぁ特に害は無いから良いんだけど。
0563名前は開発中のものです。
03/02/09 10:05ID:EhDX4MWWそれだけで9に移行したくなった、へたれグラマがここに…
0564名前は開発中のものです。
03/02/09 16:56ID:3OGaUPxJ0565名前は開発中のものです。
03/02/09 17:05ID:uxVt/yIf0566名前は開発中のものです。
03/02/09 17:12ID:3OGaUPxJアニメーションする700ポリぐらいのXファイルを10個ばかり連続して描いたら遅くなるんだが。
0567名前は開発中のものです。
03/02/09 19:51ID:QY+T3Yh80568名前は開発中のものです。
03/02/09 20:10ID:nYwSnCHE0569Newbie
03/02/09 20:28ID:l8jF+XK3環境は、
DirectX8, OS Win2000pro , CPU P4 1.6Ghz, RAM ddr512MB, VideoCard Radeon9000pro, VRAM 128MB です。
>>562
9に移行したくなりますた。
でも、とりあえず8で基本押さえて一本完成させてからにします。
検索しても見つからなかったので、ここで質問させて下さい。
現在建物との当たり判定は、自キャラから一定距離以内のモデルの全面検索(一応いろいろ絞り込んでますが)
で取っているのですが。
フレーム毎に頂点バッファをロックして頂点座標を取得するのと、
マップを作るときに予め頂点座標のみ取得しておき、それを使うのではどちらが良いのでしょうか。
ロックアンロックは重いというのをちらほら見かけたし、予め格納するなら結構無駄にメモリを食いそうで悩んでます。
0570名前は開発中のものです。
03/02/09 20:30ID:yUWb7xodテクスチャ等の切り替え回数を減らすとか工夫しないと。
0571名前は開発中のものです。
03/02/09 21:08ID:JOf4tO9WWindows98SE AthlonXP1500+DDR512MB+GFMX400(VRAM64MB) DirectX8.1では
正常に表示されるんだがな。win2000では無理って事か。ふむふむ・・・。
>フレーム毎に頂点バッファをロックして頂点座標を取得するのと、
>マップを作るときに予め頂点座標のみ取得しておき、
>それを使うのではどちらが良いのでしょうか。
どちらがいいでしょうか、ってそりゃソフトの使い道や環境によって自分で決めれば
いいことだろう。必ずこっち、という解答があるわけではない。
>>569の環境だとグラフィックカードがよさげなのでバッファロックも特に問題なさそう
だが、速度重視ならソフトでバッファを持てばいい。建物(直方体)ならそれほどメモリ
を食わないので普通ゲームを作る場合はこちらの方法で速度を上げる。
あと分かってないみたいだが当たり判定というのはあらかじめバウンでィングボックス(もしくは球)
を作ってそれを使い衝突判定をする。いちいち全部の頂点・面を判定に使用するのは
地形接触判定以外ではやらない。オブジェクトごとにそんな事をしていたらロック無しでも
アホみたいに遅くなる。バウンディングボックスという言葉は分かるよな?
0572名前は開発中のものです。
03/02/09 21:08ID:0kXKwYwrよほど複雑だったり数が多くなければ、後者ならそんなにメモリ食わないと思うけど。
計算してみた?
0573Newbie
03/02/09 22:08ID:l8jF+XK3>>570
計算してみます・・・
>>571
バウンディングボックスは最初考えていたのですが、家の中に入ったり家の中の
階段を上ったりするので。家の中をどうするかを考える時点で挫折しますた・・・
全面検索だと、この辺は簡単にいけるのですが。
>>572
建物はかなりローポリで作ってテクスチャでごまかしてます。
今のところ小さい家で、頂点数118(GetNumVerticesで取った値)
2階建ての家で390くらいなので、恐らくこれから追加するモデルも500は越えないと思います。
人やモンスター等、複雑な形状になる物体には周りにエフェクト貼り付け用の透明な六角柱を用意して
それと当たり判定を取る予定です。
0574名前は開発中のものです。
03/02/09 22:34ID:JOf4tO9W>バウンディングボックスは最初考えていたのですが、家の中に入ったり家の中の
>階段を上ったりするので。家の中をどうするかを考える時点で挫折しますた・・・
>全面検索だと、この辺は簡単にいけるのですが。
クリッピングもできないみたいだな・・・。ポインタもよく分からないのだから
この辺が限界か。ま、頑張れ。
0575Newbie
03/02/09 23:10ID:l8jF+XK3クリッピングはバウンディングボックス使ってスクリーン座標から8頂点全部
はみ出したら描画しないようにしているのですが、ダメなのでしょうか・・・
0576名前は開発中のものです。
03/02/09 23:25ID:JOf4tO9W笑 家のモデルはたしか頂点数118の単一モデルだったよな?
家の中もそのモデル内に作ってあるとすればお前の仕様だと家に入ると家の内部を
いちいち全て描画することになる。
家の外装と内装(部屋、廊下、ドア、階段、壁)をそれぞれ
家のオブジェクト内に存在する子オブジェクトとして持てば描画範囲からあたり判定、
個別の仕様変更にも耐える設計となる。無論自作エディタも必要になってくるがな。
まぁ、ちいちゃい箱庭作って遊んでる程度なら気にしなくてもいいよw。
0577名前は開発中のものです。
03/02/09 23:35ID:fW4IKGf/こんなことを言ってしまうと元も子もないが、はっきり言ってどうでもいい。
メモリを鬼のように食おうが泣けるほど重かろうが、とにかくまず動くものを。
今のおまいの話は完成後(ここ肝心)に速度その他に疑問をもったら聞きに来ればいい。
迷わず進めでFA。
0578Newbie
03/02/09 23:37ID:d++7OTj6なるほど、かなり参考になります。
そうなった場合、いかにバウンディングボックスを作るかが問題になりますね。
まだLightWaveではき出したXファイルをメッシュ単位で描画している程度なので、
そのレベルまでの道のりは遠そうです・・・
連続投稿規制はじめて食らいますた・(ノД`)・゜
0580名前は開発中のものです。
03/02/10 00:15ID:iTDKJLi8>>バウンディングボックスは最初考えていたのですが、家の中に入ったり家の
>>中の階段を上ったりするので
普通は別にコリジョン用のモデルを準備しとく
家ならさらにローポリで単純な形のモデル
表示しないのでテクスチャ、マテリアル、頂点カラーも不要
メモリも表示用モデルに比べれば小さくてすむし
0581名前は開発中のものです。
03/02/10 00:20ID:Pol7gVJ3いいこというねぇ。
とりあえず動くものができてからだよね。
0582DirectPlay
03/02/10 02:44ID:Oiatng7o「セッションの場所」という、接続を検出する先のホストを入力するためのダイアログボックスが、
自動的に起動してしまうのですが、これは、ロビーに対応しないでは抑制するのは不可能なのでしょうか?
また、擬似的でもなんでもいいので、見えなくする、とか、なんでも方法を知っている方がいらっしゃいましたらご教授くださいまし。。
0583名前は開発中のものです。
03/02/10 02:54ID:h4+lH33Uカメラ座標系の行列mCamera,透視座標系の行列mPersを
DirectXにある演算でD3DXMATRIXとして作って
点の座標をD3DVECTOR3型のpointで宣言して
pointDst=point*mCamera*mPers;
としたときに、その点がx[-1,1] y[-1,1] z[0,1]の
中に入っていなかったらその点は見えないと言えるのでしょうか?
実際には、8X8の64ボックスのエリアからなる街を効率よく
レンダリングするために、4分木にして可視判定を行っていこうと
おもっています。上記のことで正しいならば、実行半径と軸にして
それを行おうと思っているのですがどうなんでしょうか?
0584あぼーん
NGNG0585名前は開発中のものです。
03/02/10 18:45ID:hZsKS2a4オレがいじってたのはDirectX5のトキなのだが、
そんときはダイアログ無しでアプリ側から「TCP/IPでホストになる」とか
「123.45.56.78に接続」とかできたよ。当然今のバージョンでもできるはず。
でもやりかたほとんど覚えてない。
ダイアログから得られる情報を使って次の接続処理をしていると思うのだが、
その情報を自前で生成して接続する...ってカンジだったよーな...
スマソ。いろいろ調べてみてくれ
0586名前は開発中のものです。
03/02/10 20:30ID:nRuciNwTクラサバからピアのセッションを張るときに
コールバック内からいろんな処理やったのがまずかったのかも
クラサバとピアのセッションって同時に張れますよね?
もう一度ちゃんとしたコードで書き直そうと思っているんですが
原因も知りたいので、知ってる人いたら教えて欲しいです。
リファレンスにある
「DirectPlay では、Windows 2000 上で動作するときに I/O 完了ポートを使用する。」
↑これよくわかんないんですが関係ありますか?
0587名前は開発中のものです。
03/02/10 22:00ID:umxyvTXIどこでエラー起こってるか書いてみ
0588586
03/02/10 22:36ID:nRuciNwT9xのコールバックがマルチスレッドじゃないとしたら
そんな動きかな?って感じでした。
0589名前は開発中のものです。
03/02/10 23:24ID:hzpYDER/Eventをシグナルするとかメッセージを投げるとかそれくらいに
しといたほうがいい気がする。
0590名前は開発中のものです。
03/02/11 01:27ID:u2o+UQ0aDirectPlay8の PeerToPeerで
接続している プレイヤーすべてのDPNIDは取得できるのですが
起動させている自分自身のDPNIDはどうやって特定するのでしょうか?
0591あぼーん
NGNG0592名前は開発中のものです。
03/02/11 06:28ID:KQOMDYQiその環境でその負荷は、ありえないよ。
コリジョンつっても、数が全然少ない。
(とりあえず、CPU使用率確認すべし。表示とアニメだけなら、
CPU使用率5%以下の筈。全部HWなら)
多分、小さい頂点バッファを沢山描画してると思うんだが?
ストールしまくるよ。
0593Newbie
03/02/11 13:29ID:ANuI3/isアドバイスありがとうございます。
なるほど。参考になりますた。
>>583
D3DXVec3Projectという便利なモノがあります。
範囲はD3DVIEWPORT8で宣言した値で決まります。
>>592
566さんへのレスでしょうか?
俺の方は今のところ可視範囲を家で埋め尽くしても全然軽いです。
この先アニメーション付きの人物とか追加していくと不安ですが・・・
0594あぼーん
NGNG05951/2
03/02/11 18:44ID:iYhjkWBr640*480の画面いっぱいに同サイズのbmpファイルを表示させようとしてるんですが、
ぼやけてしまうのはなぜでしょうか?(表示はできてるんですが)
#define FVF_CUSTOM (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1)
struct CUSTOMVERTEX
{
FLOAT x, y, z, rhw;
DWORD color;
FLOAT tu, tv;
};
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
0596名前は開発中のものです。
03/02/11 18:44ID:iYhjkWBrm_vtx[0].x = -0.5f;m_vtx[0].y = -0.5f;m_vtx[0].z = 0.0f;
m_vtx[1].x = 639.5f;m_vtx[1].y = -0.5f;m_vtx[1].z = 0.0f;
m_vtx[2].x = 639.5f;m_vtx[2].y = 479.5f;m_vtx[2].z = 0.0f;
m_vtx[3].x = -0.5f;m_vtx[3].y = 479.5f;m_vtx[3].z = 0.0f;
m_vtx[0].rhw = 0.5f;m_vtx[0].color = 0xffffffff;
m_vtx[1].rhw = 0.5f;m_vtx[1].color = 0xffffffff;
m_vtx[2].rhw = 0.5f;m_vtx[2].color = 0xffffffff;
m_vtx[3].rhw = 0.5f;m_vtx[3].color = 0xffffffff;
m_vtx[0].tu = 0.0f;m_vtx[0].tv = 0.0f;
m_vtx[1].tu = 1.0f;m_vtx[1].tv = 0.0f;
m_vtx[2].tu = 1.0f;m_vtx[2].tv = 1.0f;
m_vtx[3].tu = 0.0f;m_vtx[3].tv = 1.0f;
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
m_pd3dDevice->SetVertexShader(FVF_CUSTOM);
m_pd3dDevice->SetTexture(0, m_pTexture);
m_pd3dDevice->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, m_vtx, sizeof(CUSTOMVERTEX));
05973/2
03/02/11 18:46ID:iYhjkWBr0598名前は開発中のものです。
03/02/11 19:03ID:oc2BIV/D1024x512のが拡大縮小されてる余寒。
0599名前は開発中のものです。
03/02/11 19:19ID:iYhjkWBr内部的には1024*512作ってるので、どうしてもぼやけてしまうんでしょうか?
0600名前は開発中のものです。
03/02/11 19:37ID:oc2BIV/D1024x512の、640x480の部分(たとえば左上)にBMPを転送して、
テクスチャの頂点位置を調節しろ。
0601_
03/02/11 19:40ID:jSG2fsEsfor(i=0;i<4;i++)
{
m_vtx[i].x-=0.5f;
m_vtx[i].y-=0.5f;
}
たぶん、描画前これを入れるとうまく行くと思う。
0602_
03/02/11 19:42ID:jSG2fsEs0603595
03/02/11 19:57ID:WEOw/ne+だよね、640*480なんてありえないよね。
D3DXCreateTextureFromFileでおかしな大きさのテクスチャでも作れてたから、
それをそのまんま使ってた。
512*512で試したらボケもなく表示されました。
お騒がせしました。
ああ、ボケてるのは画像じゃなくて自分の頭だ……
メシ食って歯磨いてオナニして風呂入って寝よう。
0604あぼーん
NGNG0605名前は開発中のものです。
03/02/11 21:53ID:XJp4wK9HD3DXのテクスチャ作成サポート関数で画像をロードすると、
デフォルトではサイズを2の階乗に合わせてフィルタリングを行います。
読み込みの際にフィルタリング設定でD3DX_FILTER_NONEを設定して、
頂点のuvに(imgが640*480 テクスチャが1024*512として)
u = 0.625; v = 0.9375;
と入れれば正常に描画できると思いますよ。
>メシ食って歯磨いてオナニして風呂入って寝よう。
メシ食ったら風呂場で歯磨いてオナニすればよかろう…
って人生も最適化始めたら人間おしまいよね(笑)
0606名前は開発中のものです。
03/02/12 03:03ID:1pSK5fDwジョイスティックからの入力を受け取ろうとプログラムを実行すると、
ある特定のキーが押しっぱなしになった状態で起動しまうと何件か
報告されました。
自分の環境ではないので(自分の環境では大丈夫でした)、デバッグを
することが難しいのですが、どのへんがあやしそうかを教えてください。
ちなみに、起動時に何もキーなどは押していないそうです。
0607あぼーん
NGNG0608名前は開発中のものです。
03/02/12 03:34ID:0lnWkCvL「ある特定のキー」ってのが十字キーなら、少し遊びを持たせてみるとか。
■ このスレッドは過去ログ倉庫に格納されています