【C++】DirectX初心者質問スレ Part8 【D】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/02/22(水) 22:20:55これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ
【C++】 DirectX初心者質問スレ Part7 【C++】
http://pc8.2ch.net/test/read.cgi/tech/1132216611/
0002デフォルトの名無しさん
2006/02/22(水) 22:21:27鬱だ氏のう DirectX (Part 16)
http://pc8.2ch.net/test/read.cgi/tech/1133007002/
C#でDirectX9 初心者の館 2頂点目
http://pc8.2ch.net/test/read.cgi/tech/1103998649/
Managed DirectX vol.2
http://pc8.2ch.net/test/read.cgi/tech/1061285378/
VB.NET で DirectX 初心者の箱庭
http://pc8.2ch.net/test/read.cgi/tech/1106216291/
Direct3D
http://pc8.2ch.net/test/read.cgi/tech/1011762546/
0003デフォルトの名無しさん
2006/02/22(水) 22:21:59DirectShowと戦うスレ
http://pc8.2ch.net/test/read.cgi/tech/1026666092/
SDL=Simple DirectMedia Layerでゲームだ
http://pc8.2ch.net/test/read.cgi/tech/1103655588/
OpenGL VS Direct3D
http://pc8.2ch.net/test/read.cgi/tech/1044308707/
OpenGLスレ Part9
http://pc8.2ch.net/test/read.cgi/tech/1132403929/
くだすれOpenGL(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1131208166/
OpenGL 2.0 専用スレ
http://pc8.2ch.net/test/read.cgi/tech/1126268759/
0004デフォルトの名無しさん
2006/02/22(水) 22:22:31Direct 3D
http://pc8.2ch.net/test/read.cgi/gamedev/1005293179/
2D!!のDirectXをやってみるかもな
http://pc8.2ch.net/test/read.cgi/gamedev/1005133911/
━━━━Direct Draw━━━━
http://pc8.2ch.net/test/read.cgi/gamedev/1031289035/
ゲームを作るための素材を集めよう! Part2
http://pc8.2ch.net/test/read.cgi/gamedev/1113207836/
ゲームプログラミング相談室【Part6】
http://pc8.2ch.net/test/read.cgi/gamedev/1078503950/
■3Dツール総合@ゲーム製作■
http://pc8.2ch.net/test/read.cgi/gamedev/1094144808/
【フリー】モーション付きXファイル出力【ツール】
http://pc8.2ch.net/test/read.cgi/gamedev/1068375798/
0005デフォルトの名無しさん
2006/02/22(水) 22:23:04MSDN DirectX
http://www.microsoft.com/japan/msdn/directx/default.aspx
DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.mspx
BBX (掲示板)
ttp://isweb8.infoseek.co.jp/computer/bbx/
DXライブラリ置き場
ttp://homepage2.nifty.com/natupaji/DxLib/
Lamp:ゲーム開発とその学習をサポートするミドルウェア
ttp://lamp.sourceforge.jp/
TWINTAIL LOVERS.
ttp://www.twin-tail.jp/
Pastel's Laboratory
ttp://www.roy.hi-ho.ne.jp/pastel/home/index.html
GamDevPukiWiki - DirectX総合スレ (過去ログ等)
http://gamdev.org/w/?%5B%5BDirectX%C1%ED%B9%E7%A5%B9%A5%EC%5D%5D
GamDevPukiWiki - 3DCG製作ソフト (過去ログ等)
http://gamdev.org/w/?%5B%5B3DCG%C0%BD%BA%EE%A5%BD%A5%D5%A5%C8%5D%5D
ゲームを作るための素材を集めよう まとめサイト
http://paw.my-sv.net/index.html
0006デフォルトの名無しさん
2006/02/22(水) 22:28:38馬鹿に餌を与えないでください
0007デフォルトの名無しさん
2006/02/22(水) 22:39:500008デフォルトの名無しさん
2006/02/22(水) 22:58:00つ 金が無い奴はゲーム作るな
0009デフォルトの名無しさん
2006/02/22(水) 22:59:10早く言え
0010デフォルトの名無しさん
2006/02/23(木) 00:33:51時間もだ
0011デフォルトの名無しさん
2006/02/23(木) 01:38:35いくらあっても駄目な奴は駄目。
しかし、必要条件ではある。
0012デフォルトの名無しさん
2006/02/23(木) 03:57:17みなさん、参考になる意見ありがとうございました。
0013デフォルトの名無しさん
2006/02/23(木) 08:26:40なぜD言語w
0014デフォルトの名無しさん
2006/02/23(木) 10:49:19マウスカーソルが砂時計のままなんですが
対処法ありますか?
とりあえずSetCursor試しましたが
すぐに変わらず、クリックすると通常に戻る感じなのです。
0015デフォルトの名無しさん
2006/02/23(木) 11:03:40うちは砂時計になったことないぞ。
他のアプリでもその症状なのかい。
0016デフォルトの名無しさん
2006/02/23(木) 11:15:25DirectX Sample Browserの
Tutorial 1: CreateDevice
をコンパイルして
実行した時、
起動時にウィンドウの上にカーソルがあると同じ症状(砂時計)が起こりました。
起動時にウィンドウ外にカーソルがあるとノーマルカーソルになりました。
謎です
0017デフォルトの名無しさん
2006/02/23(木) 11:17:51001814
2006/02/23(木) 11:29:24Lunaってライブラリでも同じ症状が出てたみたいなので
ソース見てみました。
CreateWindowに渡す構造体のカーソルがNULL指定の時起こるみたいでした。
どうみてもスレ違いです。
本当にありがとうございました。
ゴメーヌ
0019デフォルトの名無しさん
2006/02/23(木) 13:27:130020デフォルトの名無しさん
2006/02/23(木) 13:29:130021デフォルトの名無しさん
2006/02/23(木) 15:26:41>CreateWindowに渡す構造体のカーソルがNULL指定の時起こるみたいでした。
CreateWindow?RegisterClassではなくて?
0022デフォルトの名無しさん
2006/02/23(木) 15:26:47特にデバイスロストの勉強をしたいのでヨロシクおねがいします。
0023デフォルトの名無しさん
2006/02/23(木) 15:37:290024デフォルトの名無しさん
2006/02/23(木) 15:41:31d3d9.dllをc:\windows\system32以外に置きたいんですが、
なにか問題とかってあるんでしょうか?
0025デフォルトの名無しさん
2006/02/23(木) 15:44:010026デフォルトの名無しさん
2006/02/23(木) 16:42:07簡潔かつ冷酷なレスありがとうございました。
0027デフォルトの名無しさん
2006/02/23(木) 16:53:240028デフォルトの名無しさん
2006/02/23(木) 16:59:30手を抜いているのに、他人にはそれを許さない。
0029デフォルトの名無しさん
2006/02/23(木) 17:03:47DirectX9が入ってないパソコンでもそのまま動くようにしたいんです。
つまりd3d9.dllとかをゲームといっしょにするわけです。
0030デフォルトの名無しさん
2006/02/23(木) 17:12:000031デフォルトの名無しさん
2006/02/23(木) 17:12:13つーか、DirectXってDLL等置いただけでどうさするんか?
0032デフォルトの名無しさん
2006/02/23(木) 17:29:35無理なのであきらめなさい。
0033デフォルトの名無しさん
2006/02/23(木) 18:24:47うーん25は問題ないと言ってるし。
今C:\Documents and Settings\Saotome\HyperAzumaにd3d9.dll入れてみましたが動きますよ。
0034デフォルトの名無しさん
2006/02/23(木) 18:25:520035デフォルトの名無しさん
2006/02/23(木) 18:26:540036デフォルトの名無しさん
2006/02/23(木) 18:27:22>>25をそのように補完したお前のIntelliSenseは性能がいいなぁ。
0037デフォルトの名無しさん
2006/02/23(木) 18:28:020038デフォルトの名無しさん
2006/02/23(木) 18:29:29おまいさん何でそんなに頭悪いの?www
0039デフォルトの名無しさん
2006/02/23(木) 18:30:180040デフォルトの名無しさん
2006/02/23(木) 18:38:17そうするとCD-ROM入れて遊んでもらうにはちゃんとDirectX9を入れないと駄目なんですね。
うーん遊びたいけどDirectX9入れたくない人はどうすれば。。。
0041デフォルトの名無しさん
2006/02/23(木) 18:42:210042デフォルトの名無しさん
2006/02/23(木) 18:43:320043デフォルトの名無しさん
2006/02/23(木) 18:44:420044デフォルトの名無しさん
2006/02/23(木) 18:47:020045デフォルトの名無しさん
2006/02/23(木) 18:47:20OSによっては、DirectX8か7を入れないといけないじゃないか。
結局ターゲットしだい。
0046デフォルトの名無しさん
2006/02/23(木) 18:49:210047デフォルトの名無しさん
2006/02/23(木) 18:50:56つWin95無印
0048デフォルトの名無しさん
2006/02/23(木) 18:53:470049デフォルトの名無しさん
2006/02/23(木) 18:55:04でもまあDirectX9入れてでも遊びたくなるでしょうからこのままいきます。
ありがとうございました。
0050デフォルトの名無しさん
2006/02/23(木) 18:55:14それなんてみりす?
0051デフォルトの名無しさん
2006/02/23(木) 19:04:53みりすってなに?
005251
2006/02/23(木) 19:21:170053デフォルトの名無しさん
2006/02/23(木) 19:47:110054デフォルトの名無しさん
2006/02/23(木) 20:35:51え、まじですか・
0055デフォルトの名無しさん
2006/02/23(木) 20:36:030056デフォルトの名無しさん
2006/02/23(木) 20:37:10立方体の場合、任意の視点から見えるのは高々3面しかない。
0057デフォルトの名無しさん
2006/02/23(木) 20:57:06ビルボードみたいに視点に応じて回転させるってことですか?
0058デフォルトの名無しさん
2006/02/23(木) 20:58:21つ 脳味噌が無い奴はゲーム作るな
0059デフォルトの名無しさん
2006/02/23(木) 21:22:38ロボットのキャラアニメ部分を製作中です。
D3DXFRAME と ID3DXAnimationController
1対1のアニメは成功しました。
最終的には4対1になるのですが、ID3DXAnimationController.CloneAnimationControllerで4対4にする方法しか思いつきません。
パフォーマンス的にそれは避けねばならない場合、どうしたら良いでしょうか?
0060デフォルトの名無しさん
2006/02/23(木) 21:31:41これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【質問をする前に】
金が無い奴はゲーム作るな
時間が無い奴はゲーム作るな
脳味噌が無い奴はゲーム作るな
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
※早乙女には要注意!
前スレ
【C++】 DirectX初心者質問スレ Part7 【C++】
http://pc8.2ch.net/test/read.cgi/tech/1132216611/
006159
2006/02/23(木) 23:11:27勝手ながら、ココでの質問は無しにさせてください。
0062デフォルトの名無しさん
2006/02/23(木) 23:14:30006359
2006/02/23(木) 23:18:02今から。
0064デフォルトの名無しさん
2006/02/23(木) 23:37:56飯に困ったら土を食うんだぞ
006559
2006/02/24(金) 00:15:37お陰さまで、有益な情報が得られました。
どなたか存じませんが、ありがとうございます。
0066デフォルトの名無しさん
2006/02/24(金) 04:55:07最近馬鹿が沸くようになった
0067デフォルトの名無しさん
2006/02/24(金) 10:49:40誰?
0068デフォルトの名無しさん
2006/02/24(金) 11:04:530069デフォルトの名無しさん
2006/02/24(金) 13:00:12それで大抵の問題は解決するだろう。
0070デフォルトの名無しさん
2006/02/24(金) 15:10:09SDK : Microsoft DirectX 9.0 SDK Update (Summer 2004)
ドライバは最新のものにしています。
DirectX 7でのプログラミングについてです。
ウィンドウモードです。下記のように16ビットのテクスチャサーフェスを作成(スプライトとして利用するため)し、カラーキーを指定しています。
そのサーフェスからバックバッファ(同じ16ビットカラー)へカラーキー付きで Blt をしたとき、
テクスチャサーフェス大きさが、
width, height がともに512以上のときに正常に動作し、
width, height のいずれかが256以下のとき、DDERR_UNSUPPORTEDが返ってきます。
テクスチャの幅や高さの最大値が2048や4096があるのは知っていますが、
最小値は存在するのでしょうか?ちなみにMatrox や VIA のものだと正常に動作します。
どなたか、お分かりになりましたらよろしくお願いいたします。
0071続きです
2006/02/24(金) 15:10:44ddsd.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
ddsd.ddsCaps.dwCaps = DDSCAPS_3DDEVICE | DDSCAPS_TEXTURE | DDSCAPS_VIDEOMEMORY;
ddsd.dwWidth = width; // オフスクリーンの幅
ddsd.dwHeight = height; // オフスクリーンの高さ
// 16ビットカラー(R5,G6,B5)
ddsd.ddpfPixelFormat.dwSize = sizeof(DDPIXELFORMAT);
ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB;
ddsd.ddpfPixelFormat.dwRGBBitCount = 16;
ddsd.ddpfPixelFormat.dwRBitMask = 0x0000F800;
ddsd.ddpfPixelFormat.dwGBitMask = 0x000007E0;
ddsd.ddpfPixelFormat.dwBBitMask = 0x0000001F;
lpDD->CreateSurface(&ddsd, &lpDDSTex, NULL);
// カラーキーでクリアする
DDBLTFX ddbltfx;
INITDDSTRUCT(ddbltfx);
ddbltfx.dwFillColor = 0x0000007E0;
lpDDSTex->Blt(NULL, NULL, NULL, DDBLT_COLORFILL, &ddbltfx);
(lpDDSTexになにかを描画をする)
DDCOLORKEY ddck;
ddck.dwColorSpaceLowValue = 0x000007E0; // 緑をカラーキーにセット
ddck.dwColorSpaceHighValue = ddck.dwColorSpaceLowValue;
lpDDSTex->SetColorKey(DDCKEY_SRCBLT, &ddck);
・・・・
hr = lpddsBackBuffer->Blt(&r_dest, lpDDSTex, &r_src, DDBLT_KEYSRC, NULL);
0072デフォルトの名無しさん
2006/02/24(金) 17:33:20これ、「SDK」の部分テンプレから外して良いと思うんだが。
最低SDKは見れ。
初心者スレだし、見て分からんのはしゃーないが、
見てもおらんヤツがいっぱいいるだろ。
0073デフォルトの名無しさん
2006/02/24(金) 17:37:15>3.SDKを見ても、Googleで検索しても、いまいち理解できない人
本当は、これがあるから、見ても無い奴はスルーするのが良いのだが、
ちょっとかじった奴でも教えられる質問ばかりで、
誰でも簡単に優越感に浸るから。
0074デフォルトの名無しさん
2006/02/24(金) 17:41:100075デフォルトの名無しさん
2006/02/24(金) 18:15:59そういう殺伐さが必要だと思うのです。
あなた一人で全部答えてしまったらスレの人材が育ちません><
0076デフォルトの名無しさん
2006/02/24(金) 20:32:15StretchBltの場合、小さすぎると失敗する。
0077デフォルトの名無しさん
2006/02/25(土) 00:04:14DirectDrawなんてすっかり忘れてるけど、勘で答えれば、
Blt()ってBlt元とBlt先のフォーマットが一致してないと駄目なんじゃないのか?
でかいサーフィスを確保した場合、何らかの理由によりシステムメモリに確保されて、
システムメモリ→ビデオメモリの転送時には、
異なるフォーマットでもソフトウェア変換が実行されるようになってるとか。
BltをBltFastに変えて試してみたらどうなる?
007870
2006/02/25(土) 01:44:52お返事ありがとうございます。
BltをBltFastで試してみたところ、結果は同じでした。
512x512のサーフェスを確保すると動作します。
また、Bltをしている矩形は貼り付け元(0, 0)-(100. 100)、貼り付け先(150, 100)-(250, 200) です。
今のところドライバの列挙を行い、NVIDIAだったらテクスチャの最小の幅及び高さを 512 にすることでしのげればと思っていますが、
正直なところ、大変気持ちが悪いです・・・。
0079デフォルトの名無しさん
2006/02/25(土) 01:47:15貼り付け先のRECTをNULLにしたらどうなる?
008070
2006/02/25(土) 01:58:43結果は同じでした。512x512にしたとたん動作しました。
それから、貼り付け元と貼り付け先のフォーマットについてですが、共にR5G6B5の16ビットでした。
また、貼り付け元のサーフェスのCapsの DDSCAPS_TEXTURE を DDSCAPS_OFFSCREENSURFACE にすると
動作することは確認しているのですが、そのようにすると D3DXDrawSpriteSimpleで描画できなくなってしまいます。
0081デフォルトの名無しさん
2006/02/25(土) 04:11:239で2Dゲーム作りたいんだけどよくわからない
0082デフォルトの名無しさん
2006/02/25(土) 04:15:550083デフォルトの名無しさん
2006/02/25(土) 04:21:42Googleの方は見てみたけどDirectX8のものしか出てこなかった
0084デフォルトの名無しさん
2006/02/25(土) 04:31:450085デフォルトの名無しさん
2006/02/25(土) 04:34:080086デフォルトの名無しさん
2006/02/25(土) 04:36:370087デフォルトの名無しさん
2006/02/25(土) 04:40:210088デフォルトの名無しさん
2006/02/25(土) 04:42:570089デフォルトの名無しさん
2006/02/25(土) 04:44:110090デフォルトの名無しさん
2006/02/25(土) 04:45:55お前俺のケツの中でションベンしろ
0091デフォルトの名無しさん
2006/02/25(土) 04:46:030092デフォルトの名無しさん
2006/02/25(土) 04:46:48:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 次のかたどうぞ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0093デフォルトの名無しさん
2006/02/25(土) 05:03:29Sprite::Drawの中心位置と配置位置についてだけ教えてくれ
0094デフォルトの名無しさん
2006/02/25(土) 05:14:350095デフォルトの名無しさん
2006/02/25(土) 05:26:550096デフォルトの名無しさん
2006/02/25(土) 05:29:210097デフォルトの名無しさん
2006/02/25(土) 05:31:070098デフォルトの名無しさん
2006/02/25(土) 05:36:280099デフォルトの名無しさん
2006/02/25(土) 05:38:390100デフォルトの名無しさん
2006/02/25(土) 05:44:54:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 次のかたどうぞ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0101デフォルトの名無しさん
2006/02/25(土) 06:30:45他のプレイヤー(MediaPlayer、Lilith)と聞き比べて音がこもっているように聞こえます。
DirectX9のドキュメント参考に作ったのですが、
ほかに設定があるのでしょうか?
0102デフォルトの名無しさん
2006/02/25(土) 07:36:01試しにクォリティを一番上にする。
レートとか落としてないか確認する。
0103デフォルトの名無しさん
2006/02/25(土) 08:11:26探してるんですが、それらをセットする関数が見当たらないんです
0104デフォルトの名無しさん
2006/02/25(土) 09:19:380105デフォルトの名無しさん
2006/02/25(土) 11:05:09おとなしくDirectSound使います。。。
>>102 >>104
回答サンクスです
0106デフォルトの名無しさん
2006/02/25(土) 11:10:140108デフォルトの名無しさん
2006/02/25(土) 11:37:160109デフォルトの名無しさん
2006/02/25(土) 11:45:00:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ 次のかたどうぞ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0110デフォルトの名無しさん
2006/02/25(土) 12:56:28:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_ さあ、質問をいえ
三.ヽ= (⌒ヽ;:;:;,.二) どんな質問も話だけなら聞いてやろう
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ ├┤|
0111デフォルトの名無しさん
2006/02/25(土) 16:23:54まあ確かにmidi鳴らすんじゃなければMusic使わない方がいいけど。
0112101
2006/02/25(土) 16:34:44プラマリバッファ作成→SetFormatですね。
サウンドフォーマットはweveとoggを考えてます。
とりあえず、今エラーで止まって orz ...
0113デフォルトの名無しさん
2006/02/25(土) 17:17:450114デフォルトの名無しさん
2006/02/25(土) 17:58:230115デフォルトの名無しさん
2006/02/25(土) 18:52:170116デフォルトの名無しさん
2006/02/25(土) 19:43:39動的なテクスチャとして使っているのですが
このテクスチャにカラーキーを設定することはできないのでしょうか?
もしくは他の方法で抜けを実現する方法はありませんか?
0117デフォルトの名無しさん
2006/02/25(土) 19:50:580118デフォルトの名無しさん
2006/02/25(土) 21:03:31俺はいつもα値設定した画像使ってる
0119デフォルトの名無しさん
2006/02/25(土) 22:25:180120デフォルトの名無しさん
2006/02/25(土) 22:30:000121116
2006/02/25(土) 22:36:570122奈々@スーパープログラマ ◆Xl6OTFSLJ2
2006/02/25(土) 22:40:40DDSファイルを使えばOKです。
DXSDKに変換するソフトがついてきているはずです。
0123デフォルトの名無しさん
2006/02/25(土) 22:58:39テクスチャを動的に作っているのなら、
ターゲットのテクスチャフォーマットをα付きのにして
ソースの抜きの部分は(αテストで)描画しないようにすればいいんじゃないの。
ソースのテクスチャ自体はもちろんα付きテクスチャにした方がいいわね。
特定の色の時だけαをゼロにする、みたいなのは
シェーダでも使わないと無理じゃないかしら。
0124116
2006/02/25(土) 22:59:24テクスチャ領域をフレームバッファに設定して動的に作ったテクスチャを使いたいのです
例えば、描画負荷の大きい木のモデルを作り一度テクスチャ領域に描画して
それをビルボードとして3D領域に複数配置するなどの使い方ってできないでしょうか?
0125デフォルトの名無しさん
2006/02/25(土) 23:05:36ファイル格納形式は関係無い
知ったかはすっこんでろ
>>124
そのやり方のメリットが見出せないのだが…
0126デフォルトの名無しさん
2006/02/25(土) 23:06:52メリットは関係無い
知ったかはすっこんでろ
0127デフォルトの名無しさん
2006/02/25(土) 23:09:35つーか、普通にできる。
0128デフォルトの名無しさん
2006/02/25(土) 23:10:460129デフォルトの名無しさん
2006/02/25(土) 23:15:150130デフォルトの名無しさん
2006/02/25(土) 23:21:44ターゲットのClear色もD3DCOLOR_ARGB(0,0,0,0)
(×D3DCOLOR_XRGB(0,0,0))にすればできそうよね。
0131116
2006/02/25(土) 23:32:33レス遅くなってすみません
ターゲットのテクスチャフォーマットを調べてました、ウィンドウモードでもターゲットのフォーマットは変えられるのですね
>>125
木のモデルを1万ポリゴンで作ってビルボード化してそれを100本配置すれば100万ポリゴン
こういう使い方は駄目なのでしょうか?
これ以外でも動的に抜けがあるテクスチャを使い道は色々あるかと思います
>>130
ずばりできました
ありがとうございます
0132デフォルトの名無しさん
2006/02/25(土) 23:37:10>木のモデルを1万ポリゴンで作ってビルボード化してそれを100本配置すれば100万ポリゴン
それってあらかじめそういうテクスチャを作っておくのと何が違うの?
0133116
2006/02/25(土) 23:37:18拙い説明しか出来ず申し訳ないです
0134デフォルトの名無しさん
2006/02/25(土) 23:38:47>木のモデルを1万ポリゴンで作ってビルボード化してそれを100本配置すれば100万ポリゴン
パソコンの解像度で1万ポリゴンの恩恵は受けられないと思う
何かと使えるテクではあるが、
この木の画像はレンダリングソフトなんかで画像出力しておいたほうがいいz
0135116
2006/02/25(土) 23:42:27近くにきた場合はモデル化、遠くの場合はビルボードに切り替えたり
角度が変わった場合にもその場でテクスチャを作成しなおすこともできますし
アニメーションしているものだけをモデルで表示、アニメーションが止まったときはビルボード化など
色々使えるかと思います。
0136デフォルトの名無しさん
2006/02/25(土) 23:49:32一応全ての木で使いまわせるわね、ライティングもできるし。
同じ向きでないなら無難にプリレンダかしらね。
0137デフォルトの名無しさん
2006/02/25(土) 23:59:28>一応全ての木で使いまわせる
と思ったけど、多分違和感バリバリだからやめた方がいいわw
0138デフォルトの名無しさん
2006/02/26(日) 01:10:510139デフォルトの名無しさん
2006/02/26(日) 02:13:510140デフォルトの名無しさん
2006/02/26(日) 02:31:34DirectXのチュートリアルをやってから出直してきてください。
0141デフォルトの名無しさん
2006/02/26(日) 02:57:540142デフォルトの名無しさん
2006/02/26(日) 02:58:150143デフォルトの名無しさん
2006/02/26(日) 03:00:14ちょ、以下なら初心者も含まれるだろw
初心者未満はお帰りください。
0144デフォルトの名無しさん
2006/02/26(日) 03:00:46俺もチュートリアルとかちゃんと進めてみることを薦める。
0145デフォルトの名無しさん
2006/02/26(日) 08:48:19ここのページのプログラムなのですが
WinMain関数内の
pDirect3D = Direct3DCreate8(D3D_SDK_VERSION);の行とhWnd = CreateWindow(の行についてです。
もし先にhWnd = CreateWindow( .. )を処理してからpDirect3D = Direct3DCreate8(D3D_SDK_VERSION);を処理しますと
私の環境ではプログラムが強制終了してしまいます。
なぜでしょうか・・
0146デフォルトの名無しさん
2006/02/26(日) 09:10:41ウィンドウプロシージャのWM_CREATEの処理中に
pDirect3Dを使っているんだから当たり前。
0147デフォルトの名無しさん
2006/02/26(日) 09:13:07デバッガの使い方くらい覚えた方がいいぞ。
0148デフォルトの名無しさん
2006/02/26(日) 09:14:21あ!
すみませんそういうことですかorz
精進しますorz
0149デフォルトの名無しさん
2006/02/26(日) 13:49:19pDev->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_NONE);//頂点フォグ
pDev->SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_LINEAR);//ピクセルフォグ
�A
pDev->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_LINEAR);//頂点フォグ
pDev->SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_NONE);//ピクセルフォグ
�@のようにすると綺麗にフォグがかかり、
�Aのようにすると近くのキャラや、2Dで描画しているプリミティブにまでフォグがかかってしまいます。
何故�Aの設定で上手くフォグがかからないのでしょうか?
分かる方、お願いします。
0150デフォルトの名無しさん
2006/02/26(日) 14:02:05フォグが一種類しか指定できないからだと思うが。。。
0151デフォルトの名無しさん
2006/02/26(日) 14:50:26物体1つ1つの描画毎にフォグを有効にするか無効にするか決める必要があんじゃねーの?
0152デフォルトの名無しさん
2006/02/26(日) 14:50:29頂点フォグは、ビュー空間での距離に依存するけど、
変換済み座標だと頂点処理が行われないから
スペキュラのアルファ値がそのままフォグ濃度(0.0:100% 1.0:0%)になるみたいね。
この値はデフォルトで0.0だから、フォグが100%になっちゃうわけね。
んでピクセルフォグも、普通は各ピクセルのビュー空間での距離(w)に依存するんだけど
変換済み座標なら多分rhw=1.0にしてると思うから、
フォグのnear距離が1.0以上なら、フォグがかかっていないようにみえるわけね。
それより、�Aの"近くのキャラにフォグかかかる"というのは、正しい結果じゃないかしら。
0153デフォルトの名無しさん
2006/02/26(日) 14:55:06(2)のほうでちゃんとフォグの設定してないだろ?
0154149
2006/02/26(日) 15:38:44スペキュラのアルファですか。。。
確かに言われた通り、�@でrhw=0.0にすると2Dプリミティブにフォグが100%かかりました。
とりあえず�@のままで行こうと考えています。
(ボードの対応は考えなくても良いかな。。。!?)
ありがとうございました。
0155デフォルトの名無しさん
2006/02/26(日) 18:39:47CD-Rにゲームを焼いてからプレイするとロードが遅すぎます。(HDで4秒程度なのがCD-Rだと50秒前後)
これはDirectX9の限界として諦めるしかないのでしょうか。
0156デフォルトの名無しさん
2006/02/26(日) 18:42:210157デフォルトの名無しさん
2006/02/26(日) 18:42:23いいえ。
CD-Rの限界です。
0158デフォルトの名無しさん
2006/02/26(日) 18:48:090159デフォルトの名無しさん
2006/02/26(日) 18:54:01標準CD-ROMドライブです。
データは全部で430MBぐらいです。
0160デフォルトの名無しさん
2006/02/26(日) 18:55:14コンシューマよろしく、読み込みを細かく制御した上で、
どうしても時間が掛かるところは「now loading...」とか表示しとけ。
0161デフォルトの名無しさん
2006/02/26(日) 19:00:00プログラマがアホなのが原因。
0162デフォルトの名無しさん
2006/02/26(日) 19:16:130163デフォルトの名無しさん
2006/02/26(日) 19:17:03いいえ。
>>155の限界です。
0164デフォルトの名無しさん
2006/02/26(日) 19:17:16大人ならスルー汁
0165デフォルトの名無しさん
2006/02/26(日) 19:18:210166デフォルトの名無しさん
2006/02/26(日) 19:21:530167デフォルトの名無しさん
2006/02/26(日) 19:25:28そう、DirectX9の限界。
DirectX8にしたら、多分改善される。
0168デフォルトの名無しさん
2006/02/26(日) 19:33:490169デフォルトの名無しさん
2006/02/26(日) 19:41:400170デフォルトの名無しさん
2006/02/26(日) 19:53:240171デフォルトの名無しさん
2006/02/26(日) 19:54:570172デフォルトの名無しさん
2006/02/26(日) 19:55:27>読み込みを細かく制御した上で、
そうすると最後がFromFileとなってる関数だと丸ごとロードしてしまうので、
べつな方法で一度ロードしておいてから、
最後がFromFileInMemoryとなってる関数を使えばいいんでしょうかね。
ありがとうございました。
0173デフォルトの名無しさん
2006/02/27(月) 12:22:39CDとHDDは読み込み速度違うからCDだと遅くなるのは当然
そもそもCDから起動して遅いのであれば、ユーザー側がHDDにコピーすればいいし
CDから起動させるのを前提にしている意味がわからん
0174デフォルトの名無しさん
2006/02/27(月) 18:00:070175デフォルトの名無しさん
2006/02/27(月) 18:54:170176デフォルトの名無しさん
2006/02/27(月) 20:31:52DirectX7 のlpdds->Bltに相当する DirectX9の関数はありますか?
0177デフォルトの名無しさん
2006/02/27(月) 20:36:560178デフォルトの名無しさん
2006/02/27(月) 20:38:160179デフォルトの名無しさん
2006/02/27(月) 20:40:480180デフォルトの名無しさん
2006/02/27(月) 20:42:250181デフォルトの名無しさん
2006/02/27(月) 21:17:28同一人物だと思うが質問を一行で跳ね飛ばされるのはおかしい
0182デフォルトの名無しさん
2006/02/27(月) 21:24:50検索は廃止してもいいと思うが、SDKはやっぱり必要だ。
SDKを見ても分からないということは、まだ手を出すレベルではないということだ。
0183デフォルトの名無しさん
2006/02/27(月) 21:24:570184デフォルトの名無しさん
2006/02/27(月) 21:35:01というか、分かりにくいな。
【質問する方】に加えるべき。
・SDKは全て読んでください。SDKを理解できないがための疑問は諦めてください。
・Googleで検索をしてください。検索に使ったワードも書いてください。
0185デフォルトの名無しさん
2006/02/27(月) 21:41:170186デフォルトの名無しさん
2006/02/27(月) 21:42:49SDKを理解できないのは初心者以前だろ
0187デフォルトの名無しさん
2006/02/27(月) 21:45:46採用されつつあるんですか?
0188デフォルトの名無しさん
2006/02/27(月) 21:49:230189デフォルトの名無しさん
2006/02/27(月) 21:51:150190デフォルトの名無しさん
2006/02/27(月) 21:52:480191デフォルトの名無しさん
2006/02/27(月) 21:54:38読んでも分からないのは、このスレの範疇なんだし。
0192デフォルトの名無しさん
2006/02/27(月) 22:11:59GeForce2〜4などのDirectX7、8世代のグラボ(ドライバは最新のDirectX9c対応のもの)に対して、
シェーダー2(3?)などのDirectX9の機能を使ったプログラムを動かした場合、
ソフトウェア的にエミュレートされるものなのでしょうか?
それとも動作不定になるのでしょうか?
これからDirectXを本腰いれて勉強しようと思っているのですが、
ビデオカードにあわせてDtx8にしようか、最新の9にしようか、考えたいので
よろしくお願いします。
0193デフォルトの名無しさん
2006/02/27(月) 22:17:350194デフォルトの名無しさん
2006/02/27(月) 22:18:24>ソフトウェア的にエミュレートされるものなのでしょうか?
どうなるかはプログラムの実装次第。
PS2のソフトウェア処理なんてつかいものにならんよ。
0195デフォルトの名無しさん
2006/02/27(月) 22:23:060196デフォルトの名無しさん
2006/02/27(月) 22:23:400197デフォルトの名無しさん
2006/02/27(月) 22:23:500198デフォルトの名無しさん
2006/02/27(月) 22:24:460199デフォルトの名無しさん
2006/02/27(月) 22:26:090200デフォルトの名無しさん
2006/02/27(月) 22:40:180201デフォルトの名無しさん
2006/02/28(火) 01:01:50ここの下のプログラムをコンパイルしようと思うのですが、
<D3dx8math.h>を開けません。と怒られてしまいます。
そこでDirectXSDKをインスコしたフォルダのincludeフォルダを覗いてみるとD3dx8math.hが存在しませんでした。
(D3dx9math.hはあるのですが・・)それとライブラリ D3dx8.libも存在しませんでした。
インスコしたSDKは2006(feb)なのですが、これはどうすればいいんでしょうかorz
0202デフォルトの名無しさん
2006/02/28(火) 01:09:18ライブラリインクルードしてないから
0203デフォルトの名無しさん
2006/02/28(火) 01:14:54ライブラリとヘッダは別物ですよね
言葉足らずでしたらすみませんが、2006febにはD3dx8math.hもD3dx8.libも存在しないのでお手上げ状態なのです
検索しても圧倒的に引っかからないですし
0204デフォルトの名無しさん
2006/02/28(火) 01:16:540205デフォルトの名無しさん
2006/02/28(火) 01:18:550206デフォルトの名無しさん
2006/02/28(火) 02:23:33ID3DXSprite::Draw(引数5個のやつ)でスプライト表示すると、
拡大、縮小され色が変になったりするんです。
引数7個時代の産物ではそのようなことは起こらないのですが、
feb2006では同等の処理はできないのですか?
0207デフォルトの名無しさん
2006/02/28(火) 04:02:27ID3DXSprite::SetTransform
0208デフォルトの名無しさん
2006/02/28(火) 04:12:19IDirect3DDevice9::StretchRect
0209206
2006/02/28(火) 04:13:30調べてみます。
0210デフォルトの名無しさん
2006/02/28(火) 06:08:36たしか頂点シェーダーはエミュされるけど
ピクセルシェーダーはされなかったハズ
…と見た記憶がある
0211デフォルトの名無しさん
2006/02/28(火) 12:01:24せめて値だけでも表示できれば良いんですが。
0212デフォルトの名無しさん
2006/02/28(火) 14:44:050213デフォルトの名無しさん
2006/02/28(火) 15:06:170214デフォルトの名無しさん
2006/02/28(火) 15:38:31一部をメモリに読み込んで新たなテクスチャを作っとくとか?
素人が適当に言ってみた。
0215デフォルトの名無しさん
2006/02/28(火) 17:27:01>>180-191
0216デフォルトの名無しさん
2006/02/28(火) 17:35:040217デフォルトの名無しさん
2006/02/28(火) 17:50:49SDK見れ
0218デフォルトの名無しさん
2006/02/28(火) 17:53:400219デフォルトの名無しさん
2006/02/28(火) 18:01:32英語しか無いならまだしも、日本語ヘルプすら読まないのは怠慢としか言えないだろ・・・
0220デフォルトの名無しさん
2006/02/28(火) 18:20:29失礼ですが、ヘルプ、サンプルはどこにあるのですか?
0221デフォルトの名無しさん
2006/02/28(火) 18:22:43MSのサイト
SDK付属って書くと、日本語ヘルプが入って無いからなぁ・・・
0222デフォルトの名無しさん
2006/02/28(火) 19:13:190223デフォルトの名無しさん
2006/02/28(火) 19:20:38そんなの初心者スレじゃない
0224デフォルトの名無しさん
2006/02/28(火) 19:22:14読んで分からない所を聞くなら、みんな親切に教えてくれると思うけど。
説明書を読まずに分かりませんって。
そんなの初心者でもなんでもないだろ
0225デフォルトの名無しさん
2006/02/28(火) 19:25:31その労力を別の方向に使ったほうがいいぞw
0226211
2006/02/28(火) 20:35:040227デフォルトの名無しさん
2006/03/01(水) 00:03:56VC6使いなら、RenderMonkeyか、FX何たら辺りを使うのもいいぞ。バグ多いけど。
>>212
ID3DXSpriteは使ったことないけど、0.5ずらせば解決すると思う
「テクセルとピクセル間の直接マッピング」、「最近点サンプリング」の項辺りに詳しい
0228212
2006/03/01(水) 02:21:23SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_NONE)
で無しにしているのですが、自分が使っている Millennium G450上では右端に指定した矩形の隣のピクセルが少し描かれてしまいます。
同じプログラムで nVIDIA や VIA のもので動かしてみたらそういったことがありませんでした。
Millennium のほうのドライバは最新にしています。
こういった同じプログラムで表示が違うというのは起こり得るのでしょうか?
もしあるのでしたら、そのときの対処などありましたら教えていただければと思います。
0229デフォルトの名無しさん
2006/03/01(水) 02:24:49対処法は、
1、動作対象から外す。
2、ビデオカードを判別して微調整する。
0231デフォルトの名無しさん
2006/03/01(水) 19:05:46ビデオカード3D設定で、「アプリケーション依存」にする。
0233212
2006/03/01(水) 19:40:31ビデオカード3D設定というはビデオカード別にあるユーティリティー内にあるのでしょうか?
こちらにある Matrox QuickDesk内にはありませんでした。
0234デフォルトの名無しさん
2006/03/01(水) 20:38:23通常は
画面のプロパティ>設定>詳細ボタン
を押した先のタブにある。
0235デフォルトの名無しさん
2006/03/01(水) 21:38:500236デフォルトの名無しさん
2006/03/01(水) 23:23:490237デフォルトの名無しさん
2006/03/02(木) 06:00:40カメラの位置の修正
バッファサイズのリサイズ
などをすると思います
しかし私の環境では最小化時に(WPARAMがSIZE_MINIMIZEの時)以下の関数
IDirect3DDevice8::SetTransform();
IDirect3DDevice8::SetTransform();
IDirect3DDevice8::SetRenderState();
IDirect3DDevice8::SetRenderState();
を処理しますと。ご不便をおかけしてすみません略が出てプログラムが終了してしまいます。
なぜでしょうか?
参考にしているサイトは次なのですが・・・(氏もwParam == SIZE_MINIMIZEの時は弾いている)
http://wisdom.sakura.ne.jp/system/directx/dxg8.html
0238デフォルトの名無しさん
2006/03/02(木) 12:43:51↑ここのサンプルを参考にスキンメッシュの実装を試みているのですが、
tiny.x を読ませようとすると LoadXFile.cpp の SetupBoneMatrixPointersOnMesh の中で
D3DXFrameFind が NULL を返して失敗しているようです。
SDK の Multianimation や SkinnedMesh サンプルを見ても読み込み部は同様なな処理を行っているようです。
どうすればちゃんと読み込めるのでしょうか?
0239デフォルトの名無しさん
2006/03/02(木) 13:32:45最小化のときはロストしてるんだから
0240デフォルトの名無しさん
2006/03/02(木) 15:51:21【C++】 DirectX初心者質問スレ Part9 【C++】
ね
0241デフォルトの名無しさん
2006/03/02(木) 16:09:25Dよりメジャーだからなんだっていうのよ!!
0242デフォルトの名無しさん
2006/03/03(金) 12:41:53これってなんでTESTって付いてるんでしょう?
TRUEにしたままリリースしたらまずい?
0243デフォルトの名無しさん
2006/03/03(金) 13:20:07-‐'―ニ二二二二ニ>ヽ、 ┃ ━━━━━━━━
ァ /,,ィ=-;;,,, , ,,_ ト-、 ) ┃ ┃┃┃
' Y ー==j 〈,,二,゙ ! ) 。 ┛
ゝ. {、 - ,. ヾ "^ } } ゚ 。
) ,. ‘-,,' ≦ 三
ゞ, ∧ヾ ゝ'゚ ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧ 三 ==-
/ |ヽ \-ァ, ≧=- 。
! \ イレ,、 >三 。゚ ・ ゚
| >≦`Vヾ ヾ ≧
〉 ,く 。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
0244デフォルトの名無しさん
2006/03/03(金) 13:20:58アルファテストでググれ
…と思ったがβテストと同じような意味のαテストばかりヒットするか。
物凄く古い記事だが、↓が参考になるかと。
ttp://platz.jp/~moal/colorkey.html
ちなみに今はカラーキーなんて物は絶滅していて、αブレンドかαテストを
使うようになっているから、そのサイトの説明とは状況が変わっている。
(D3DXのテクスチャ関係のカラーキーはα値を設定しているだけ)
0245242
2006/03/03(金) 13:38:58-‐'―ニ二二二二ニ>ヽ、
ァ /,,ィ=-;;,,, , ,,_ ト-、 )
' Y ー==j 〈,,二,゙ ! ) 。
ゝ. {、 - ,. ヾ "^ } } ゚ 。
) ,. ‘-,,' ≦ 三
ゞ, ∧ヾ ゝ'゚ ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧ なるほど。 三 ==-
/ |ヽ \-ァ, ありがとう ≧=- 。
! \ イレ,、 ござい >三 。゚ ・ ゚
| >≦`Vヾ ました。 ヾ ≧
〉 ,く 。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
0246デフォルトの名無しさん
2006/03/03(金) 13:54:000247デフォルトの名無しさん
2006/03/03(金) 21:16:10固定パイプラインで、
α = ((テクスチャのα) - 固定値1) x 固定値2
とやりたいんですが、
TFACTORって1つのパイプラインで1つの値しか使えないもんでしたっけ?
2つ使えると固定値1,2の両方に使えていいなぁって思ったんですが。
あと x固定値2 のところで、元のテクスチャのαよりも振れ幅を大きくしたい場合は
D3DTOP_MODULATE4X などを使うのが良いでしょうか?
これだとせいぜい4倍の振れ幅にしかならないので、もう少し大きい拡大率を
実現する方法があれば良いのですが。
よろしくたのんます。
0248247
2006/03/03(金) 23:32:480249デフォルトの名無しさん
2006/03/04(土) 01:57:12シェーダー使え。
0251デフォルトの名無しさん
2006/03/04(土) 02:37:01プログラマブルシェーダーなんて必要ないわな・・・
0252デフォルトの名無しさん
2006/03/04(土) 09:28:210253デフォルトの名無しさん
2006/03/04(土) 11:19:100254デフォルトの名無しさん
2006/03/04(土) 13:39:57http://www.geocities.jp/weekend_freegame/saotome/sub7.html
DirectX9の何かをセットするとこんなふうに拡大できるのかと思ったんですが。
0255デフォルトの名無しさん
2006/03/04(土) 13:57:11「DirectX」という言葉の意味に「DirectSound」は含まれますか?
0256255
2006/03/04(土) 13:57:430257デフォルトの名無しさん
2006/03/04(土) 14:37:29http://www.geocities.jp/weekend_freegame/saotome/sub1.html
すみません当方DirectX初心者なのですが、これブラクラですか?
0258デフォルトの名無しさん
2006/03/04(土) 14:53:25http://www.geocities.jp/weekend_freegame/saotome/helpme.jpg
0259デフォルトの名無しさん
2006/03/04(土) 15:17:080260デフォルトの名無しさん
2006/03/04(土) 15:26:36ビットマップをそんな風にリアルタイムで拡大できるフィルタあったら、
誰も大きいサイズのテクスチャなんてつかわねぇよ。
リアルタイムでなければ、かなり綺麗に拡大できる方法もある。
0261デフォルトの名無しさん
2006/03/04(土) 18:28:08が重くて困ってます。
軽くするテクニックを教えてもらいたいのですが、、、
0262デフォルトの名無しさん
2006/03/04(土) 18:42:260263デフォルトの名無しさん
2006/03/04(土) 19:28:11やっぱすか。。。
フレームは作った事がありますが、アニメーションが。。。
とか思ってたら、クローニングする方法を思いつきました。
クローニングが軽いか重いか知りませんが、一応解決したように思います。
ありがとうございました。
0264デフォルトの名無しさん
2006/03/04(土) 22:52:580265デフォルトの名無しさん
2006/03/04(土) 23:04:58落とせばいいじゃん。
http://www.microsoft.com/downloads/details.aspx?FamilyID=edb98ffa-a59c-4c23-9b92-ba304f188314&DisplayLang=en
0266デフォルトの名無しさん
2006/03/04(土) 23:18:09>>264も携帯からとか。
0267デフォルトの名無しさん
2006/03/04(土) 23:23:39今は男を見せるとき。
0268デフォルトの名無しさん
2006/03/04(土) 23:32:410269デフォルトの名無しさん
2006/03/04(土) 23:50:370270デフォルトの名無しさん
2006/03/04(土) 23:52:020271デフォルトの名無しさん
2006/03/04(土) 23:54:470272デフォルトの名無しさん
2006/03/04(土) 23:59:260273デフォルトの名無しさん
2006/03/05(日) 00:00:000274デフォルトの名無しさん
2006/03/05(日) 00:00:10もしISDNユーザーならかなりのベテラン
0275デフォルトの名無しさん
2006/03/05(日) 00:09:03↓
雑誌でゲト
だったりして。
0276デフォルトの名無しさん
2006/03/05(日) 00:11:550277デフォルトの名無しさん
2006/03/05(日) 00:20:000278デフォルトの名無しさん
2006/03/05(日) 00:25:250279デフォルトの名無しさん
2006/03/05(日) 00:30:12DirectXとは何ですか?
あって何の意味があるんですか?
もうこの質問ってでましたかね・・・
0280デフォルトの名無しさん
2006/03/05(日) 00:31:04人間とは何ですか?
あって何の意味があるんですか?
もうこの質問ってでましたかね・・・
0281デフォルトの名無しさん
2006/03/05(日) 00:31:53若さとは何ですか?
あって何の意味があるんですか?
もうこの質問ってでましたかね・・・
0282デフォルトの名無しさん
2006/03/05(日) 00:32:22マッサーカーとは何ですか?
あって何の意味があるんですか?
もうこの質問ってでましたかね・・・
0284デフォルトの名無しさん
2006/03/05(日) 00:37:570285デフォルトの名無しさん
2006/03/05(日) 00:42:21DirectXとはマイクロソフトが提供するマルチメディア向けソリューションのことなんだ。
アプリケーション開発者向けにはDirectX APIをラッピングしたDirect3DXライブラリを
中心にドキュメントやツール、デバッガを包括したDirectX SDKが用意されていて、
このスレで扱っているのはこれだ。
このDirectX APIに対応したドライバを用意して、なおかつハードウェアで高速化できるものが
DirectX対応ハードウェアだ。nVidiaやATiの製品が有名だがサウンドボードでも
ハードウェア処理が出来ればCPUへの負担が大幅に減るなどのメリットもある。
商用向けだと課金システムまで含めたネットワークソリューションが登場したり、
DirectX向けに最適化されたゲーム機が発売されるなど広がりを見せている。
要するにググれ
嫌なら工学社の刑
0286デフォルトの名無しさん
2006/03/05(日) 00:43:18ググルのを薦めるなら答えるな
嫌なら工学社の刑
0287279
2006/03/05(日) 00:46:57おお!!!ありがとうございます!!!
エロゲだけのものじゃないんですね・・・w
なるほど、勉強になりました。
DirectXでも色々なことが出来るわけですね!
本当にありがとうございました!!!
0288デフォルトの名無しさん
2006/03/05(日) 00:50:03HSPじゃあるまいし。
0289デフォルトの名無しさん
2006/03/05(日) 00:50:46>エロゲだけのものじゃないんですね・・・w
お前がエロゲ厨って事は分かった
0290デフォルトの名無しさん
2006/03/05(日) 00:55:37BC800ぐらいでがいしゅつ
ソクラテスでググれ
>>281
Oldメンバが大きくなるとBokkiメソッドが使えなくなる
これはFactoryパターンになっていてChildオブジェクトが生成できなくなるので注意
Vinnyでリーク発生などが主な原因
>>282
オプソ野郎だよ
「真っ赤さ」と揶揄されるほどのコミュニスト
>>286
工学社はプログラムの解説がはじまるまでは良書だぞ
>>287
エロゲもフォース・フィードバックに対応するべきです
そしてふたなり普及のためにもジョイスティックを想定して開発するべきだと
(FF対応上位機種だとソフトウェア制御で棒をうねらせながらプルプル震えることが可能なんです。
これはマイクロソフトがふたなり業界を強力にプッシュしてる証拠ともいえます)
アンケートハガキに書いて送りつけてください
あなたの一票がふたなりを救います
0291デフォルトの名無しさん
2006/03/05(日) 01:27:38ツマンネ
0292デフォルトの名無しさん
2006/03/05(日) 01:31:52ふたなり+つまんね = ……快便?
0293デフォルトの名無しさん
2006/03/05(日) 01:45:230294デフォルトの名無しさん
2006/03/05(日) 01:52:08なんか便利なのない?
0295294
2006/03/05(日) 01:59:26ヘルプを良く見てませんでした。
すいません。
0296294
2006/03/05(日) 02:33:29あーもう分かんなくなってきたw
改めて質問。
D3DXFRAME コピーしたいんだけど、再帰関数作んなくちゃだめ?
なんか便利なのない?
0297名無しさん@お腹いっぱい。
2006/03/05(日) 04:38:15「自分でつくれ」の思し召し
0298デフォルトの名無しさん
2006/03/05(日) 09:19:04無いんじゃね?
全体でいくつあるかわからん上に階層構造になってるから
力技でもっていくと余計複雑になったりするし、
その階層ごとに用がある場合の処理ってコールバック関数みたいなの
作らなきゃいけなくなるけど、使う側からすればそんなの複雑で使いたくないしで
そういう関数ってないんじゃないの?
0299294
2006/03/05(日) 12:50:08ただ、全ツリーの複製はできないみたいです。
やっぱり再帰作ります。
ありがとうございました。
0300デフォルトの名無しさん
2006/03/07(火) 23:32:110301デフォルトの名無しさん
2006/03/09(木) 17:54:28C、C++は最低限のことは覚えた。(柴田望洋氏の書籍で学びました)
0302デフォルトの名無しさん
2006/03/09(木) 18:01:180303デフォルトの名無しさん
2006/03/09(木) 18:08:250304デフォルトの名無しさん
2006/03/09(木) 18:21:22http://www.amazon.co.jp/exec/obidos/ASIN/4875934165/qid=1141896026/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/503-8855347-8147145
0305デフォルトの名無しさん
2006/03/09(木) 18:30:380306デフォルトの名無しさん
2006/03/09(木) 20:06:04ttp://msdn.microsoft.com/library/ja/DirectX9_c/directx/intro/dx9intro.asp?frame=true
0307デフォルトの名無しさん
2006/03/09(木) 22:22:38テキスト、バイナリ、圧縮それぞれ相互変換させる上手い方法ってありますか?
ユーザーから受けた数値をもとに様々な大きさ形の、テキスト、バイナリ、圧縮xファイルを出力するようなプログラムを作ろうと思ってるのですが…
とりあえず頑張って手書きでテキストを出力させていますが、実はこの出力に関しても上手い方法があるとかありますか?
0308デフォルトの名無しさん
2006/03/09(木) 22:30:21DirectX APIで出力したらいいんじゃない?
0309デフォルトの名無しさん
2006/03/09(木) 22:37:00形式を変えるだけなら内容に関知する必用もない。
0310デフォルトの名無しさん
2006/03/09(木) 23:25:31>>309
ごめんなさい、もうちょっと根本的なところが分かってないです…
そのパーサとやらがいまいちわからんです…
ググってももいまいちヒットしなくて…
具体的にどんな手順でどういう風にするんですか?
0311デフォルトの名無しさん
2006/03/09(木) 23:54:00>ググってももいまいちヒットしなくて…
ガンガンヒットするんだが。
0312デフォルトの名無しさん
2006/03/09(木) 23:58:42ググるのが下手な私に是非とも検索キーワードを。
0313デフォルトの名無しさん
2006/03/10(金) 00:08:430314デフォルトの名無しさん
2006/03/10(金) 00:08:580315デフォルトの名無しさん
2006/03/10(金) 00:15:27そこまで根本的じゃなくて… パーサ位辞書にも載ってるしそもそもその意味じゃなくて。
0316デフォルトの名無しさん
2006/03/10(金) 00:20:30次のかたドゾー
0317デフォルトの名無しさん
2006/03/10(金) 00:33:41ご迷惑をおかけしました……i|liorz
0318デフォルトの名無しさん
2006/03/10(金) 00:57:22この手順をソース踏まえてやり方を書いているような所ってありませんか?
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/programmingguide/advancedtopics/xfiles/loadingxfile.asp
ヘルプ見てもよく分からないです;
0319デフォルトの名無しさん
2006/03/10(金) 03:17:480320デフォルトの名無しさん
2006/03/10(金) 03:33:49また、この程度書けないと、DirectXを使うこと自体が難しいとおもわれる。
ついでに、そのページに書いてあるキーとなる単語をWebで検索すれば、ある程度出てくる。
日本じゃまだ情報量が少ないみたいだけれど。
=まぁ、頑張れ。
0321デフォルトの名無しさん
2006/03/10(金) 05:11:360322デフォルトの名無しさん
2006/03/10(金) 05:14:420323デフォルトの名無しさん
2006/03/10(金) 08:56:58出力オプションで好きな形式を選んで吐き出すだけ。
迷うところや難しい所などどこにもない。
0324318
2006/03/10(金) 14:15:40ご教授どうもありがとうございました。
0325デフォルトの名無しさん
2006/03/10(金) 19:47:21何が悪いのでしょうか?
ttp://goods.is-a-geek.com/fup_35b/src/harinoana1710.zip
0326デフォルトの名無しさん
2006/03/10(金) 20:06:180327デフォルトの名無しさん
2006/03/10(金) 20:35:48頭
0328デフォルトの名無しさん
2006/03/10(金) 20:44:48自分はどうしたかったのか
何も説明しないでzip貼り付けて終わりかよ
ここはBBXじゃねぇよ?
0329デフォルトの名無しさん
2006/03/10(金) 21:04:25親切・・・
0330325 ◆cMkVYZAp6k
2006/03/10(金) 21:13:12>何がどう上手くいかないのか
点光源が実現されません。
真っ暗になります。
>自分はどうしたかったのか
点光源を実現したかった。
0331デフォルトの名無しさん
2006/03/10(金) 21:22:23他の光源ではどうなのか
0332325 ◆cMkVYZAp6k
2006/03/10(金) 21:28:14減衰とかそういうレベルじゃありません。
板を一枚表示してみたのですが、その板が真っ暗になります。
平行光線は期待通りに実現されます。
上記と同じ位置にある板もちゃんとライティングされます。
その他の光源では試していません。
0333デフォルトの名無しさん
2006/03/10(金) 21:44:11RenderStateでライト使用設定&ライト有効化
マテリアルの設定と適応
0334デフォルトの名無しさん
2006/03/10(金) 21:49:250335デフォルトの名無しさん
2006/03/10(金) 22:14:52てめえで試しもせずにソース貼り付けて直し方教えろってか?
0336325 ◆cMkVYZAp6k
2006/03/10(金) 22:18:53してます!
>>334
失礼しました。
あのロダはリファラを見てるようです。
うpしなおしました。
ttp://www.borujoa.org/upload/source/upload5202.zip
0337325 ◆cMkVYZAp6k
2006/03/10(金) 22:22:30問題は点光源です。
使用頻度も重く、使う機会の少ないスポットライト等は試していません。
0338デフォルトの名無しさん
2006/03/10(金) 22:57:15日本語でどうぞ。
0339325 ◆cMkVYZAp6k
2006/03/10(金) 23:17:48すいません。
「使用すると重いため、使う機会も少ない」です
0340デフォルトの名無しさん
2006/03/10(金) 23:21:380341デフォルトの名無しさん
2006/03/10(金) 23:22:55…なぁ、俺には、DirectXが適切に教えてくれてるように見えるんだ。
0x77e7bc3f で初回の例外が発生しました : Microsoft C++ exception: long @ 0x0012f9fc。
Direct3D9: (ERROR) :SetLight failed.
Direct3D9: (ERROR) :All attenuation factors are 0 for non-directional light
なんだこれは?
0342デフォルトの名無しさん
2006/03/10(金) 23:24:42x light.Range = 60.0f;
o light.Range = 1000.0f;
ライト位置が平面にだいぶ近いから、前者で大丈夫に感じるけど、
ライティングは頂点単位で計算されてて、
ライト位置から四角形の4隅までは 60.0f以上あるから、
そのせいでライティングされていないわけね。
あとは減衰係数の設定が抜けてるから、設定して終わり。
light.Attenuation0 = 1.0f;
light.Attenuation1 = 0.0f;
light.Attenuation2 = 0.0f;
0343325 ◆cMkVYZAp6k
2006/03/10(金) 23:53:01>>340
はい。
>>341
すいません、わかんないです><
>>342
>ライティングは頂点単位で計算されてて、
>ライト位置から四角形の4隅までは 60.0f以上あるから、
これでやっと分かりました!
SDKで頂点頂点って書いてあるやつの意味も分かりました!
>>340さんの突っ込みの意味も分かりました!
何か目から鱗が落ちた感じです。
1年越しの謎が解けたので安心して眠れます。
本当にありがとうございました。
0344デフォルトの名無しさん
2006/03/11(土) 00:43:50http://www.excite.co.jp/world/
0345デフォルトの名無しさん
2006/03/11(土) 01:41:00まあ、最近の・・・って感じか・・・
0346デフォルトの名無しさん
2006/03/11(土) 07:52:12流石DQNは違うぜ!
0347デフォルトの名無しさん
2006/03/11(土) 07:59:40こちらでご助言いただければと思い、書き込ませて頂きます。
内容は、DirectPlayを使った簡単なP2Pチャットアプリでのホストの引継ぎについてです。
DirectPlayは、ホストがセッションから抜けた場合に
自動的に残りのピアのいずれかにホストを引き継がせてくれるそうなのですが、
なぜかその新たにホストになったピアに対して
新しく接続を試みると接続を確立できない、という状況になっています。
一応、ホストの引継ぎ自体は行われているようで、
ホストが抜けた時に発行される「DPN_MSGID_HOST_MIGRATE」を捕まえて
メッセージに付いてきたデータを比較する事で
誰か一人が新たなホストを依頼されたところまでは検出できていますし、
いままで繋がっていたピア同士では、引き続き通信はできています。
しかし、そのセッションに新たなピアが参加するということができません。
ソースは↓に全て上げてありますので見ていただければと思います。
よろしくお願いします。
ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=49&vew=81
0348デフォルトの名無しさん
2006/03/11(土) 08:11:54>ホストが抜けた時に発行される「DPN_MSGID_HOST_MIGRATE」を捕まえて
>メッセージに付いてきたデータを比較する事で
>誰か一人が新たなホストを依頼されたところまでは検出できていますし、
ですが、このことで新しくホストを任命されたピアがホストとして
きちんと機能しているかということまではわかっていません。
ただ自分の所にホスト任命のメッセージが来たということが確認できているだけです。
なのでいまのところ「新しいホスト」に問題があるのか「そこへ接続を試みているピア」に問題があるのか
というのははっきりしませんが、
接続する方としては指定されたIPとポートをめがけて接続要求するだけであり、
それまでのセッションはちゃんと同じプログラムで接続を確立できていたわけですから、
やはり待ち受け側の「新しいホスト」に問題があるような気がします。
0349デフォルトの名無しさん
2006/03/11(土) 11:49:520350デフォルトの名無しさん
2006/03/11(土) 17:03:32画像からのテクスチャー作成プロセスを探っています。
・D3DXCreateTextureFromFile
・D3DXCreateTextureFromFileInMemory
・D3DXCreateTextureFromResource
・D3DXCreateTextureで作ってRtlCopyMemoryで流し込む
上記以外ではどんな方法が存在するのでしょうか?
0351デフォルトの名無しさん
2006/03/11(土) 18:37:48・テクスチャのサーフィスがロックできるなら
ロックして書き込む。
・ロックできないなら
テクスチャと同じフォーマットのオフスクリーンサーフィスを作って、
それをロックして書き込んで、テクスチャのサーフィスにコピーする。
0352デフォルトの名無しさん
2006/03/11(土) 19:36:24下は初耳でした。
早速試してみます。
ありがとうございました。
0353デフォルトの名無しさん
2006/03/12(日) 13:18:45CreateTexture()でD3DUSAGE_RENDERTARGETを指定してテクスチャオブジェクトを
生成するまではいいのですが、実際にこれに対して描画させる方法が見つけられません
SetRenderTarget()の引数に渡すのはTxtureじゃなくてSurfaceオブジェクトだし…
0354デフォルトの名無しさん
2006/03/12(日) 13:24:58もしかしてDXが標準で対応してないテクスチャフォーマットに
対応したいって事かぇ?
0355デフォルトの名無しさん
2006/03/12(日) 13:26:500356デフォルトの名無しさん
2006/03/12(日) 13:36:40この意味がわからんのです。TextureとSurfaceは別物ですよね?
CreateOffscreenPlainSurfaceやCreateRenderTargetで作った「サーフェスへ描画」なら
判りますが、Textureへの描画ってどう指定したらよいものか…
0357デフォルトの名無しさん
2006/03/12(日) 13:47:14ヘルプでテクスチャインターフェイスのメソッドを100回見返せ。
0358デフォルトの名無しさん
2006/03/12(日) 14:07:39これか…
この名前から動作が想像できんかったよ、正直スマンカッタ
0359デフォルトの名無しさん
2006/03/12(日) 15:45:32D3DLIGHT9 light;
ZeroMemory(&light,sizeof(D3DLIGHT9));
light.Type=D3DLIGHT_DIRECTIONAL;
light.Diffuse.r=1.0f;
light.Diffuse.g=1.0f;
light.Diffuse.b=1.0f;
vecDir=D3DXVECTOR3(0.0f,-1.0,0.0f);
D3DXVec3Normalize((D3DXVECTOR3*)&light.Direction,&vecDir);
light.Range=1000.0f;
g_pd3dDev->SetLight(0,&light);
g_pd3dDev->LightEnable(0,TRUE);
g_pd3dDev->SetRenderState(D3DRS_LIGHTING,TRUE);
g_pd3dDev->SetRenderState(D3DRS_AMBIENT,0x40404040);
アンビエント光しか反映されません。
助けてください。
0360デフォルトの名無しさん
2006/03/12(日) 15:52:10頂点データに法線がないんだろう
0361359
2006/03/12(日) 16:32:59法線はあります。
SDkについている色々なXファイルで調べてみたのですが、
私の作成したXファイルと"tiger.x"を表示した場合にのみ、アンビエント光しか反映されないようです。
その他SDKについているドワーフやビッグシップ1、飛行機にはちゃんとライトが反映されます。
0362デフォルトの名無しさん
2006/03/12(日) 16:43:55tiger.xに法線データないよ。
0363デフォルトの名無しさん
2006/03/12(日) 16:48:080364デフォルトの名無しさん
2006/03/12(日) 17:02:140365デフォルトの名無しさん
2006/03/12(日) 17:49:14って警告がでました。どういったときに起こりますか?
0366デフォルトの名無しさん
2006/03/12(日) 17:51:01ttp://www.google.co.jp/search?hl=ja&q=LNK4089&lr=&btnG=Google+%E6%A4%9C%E7%B4%A2
0367359
2006/03/12(日) 18:27:30すいません、自己解決しました。
DirectX Viewerで「Normals」にチェックを入れると何か出てきたので
それで法線データがあるものと勘違いしていました。
私が作成したXファイルも保存時に法線データを含めずに保存していたようです。
お騒がせ致しました。
0368デフォルトの名無しさん
2006/03/12(日) 18:36:38一つのデバイス毎にLPDIRECTINPUT8一つで対応させても問題はないものでしょうか?
この辺りの事はチュートリアルに書いてなかったので、よろしければ教えてください。
0369デフォルトの名無しさん
2006/03/12(日) 20:25:59「必要に応じて、デバイスからアクセスできるメモリに自動的にコピーされます。」
と書いてありました。
つまり、テクスチャをD3DPOOL_MANAGEDで8MB分つくったとしても、
VRAMが8MB消費されるとは限らない、ということでしょうか?
0370デフォルトの名無しさん
2006/03/12(日) 20:36:37問題無し。
0371デフォルトの名無しさん
2006/03/12(日) 20:46:28そりゃそうだろ。
俺、ゲーム作るときにビデオメモリの量なんかほとんど気にしたことないぞ。
多分、30MB分テクスチャをつくっても、場合によっては動作環境はVRAM16MB以下になるんじゃないか?
0372デフォルトの名無しさん
2006/03/12(日) 21:00:35例えば、2パス目以降はZバッファ書き込みを切るなど
他にこうした方が効率が良いなどありますでしょうか?
0373デフォルトの名無しさん
2006/03/12(日) 23:22:58の使い方で気を付けるべき点を教えてください。
D3DERR_INVALIDCALLエラーが返ってきて困ってます。
�@転送元サーフェイスと転送先サーフェイスが同一である。
�A拡大と縮小のどちらかが行われるか、またはどちらかのサーフェイスが圧縮フォーマットである (「圧縮テクスチャの使い方」を参照)。
�B転送先サーフェイスが単純なオフスクリーンでありながら、転送元サーフェイスがそうでない。
�C転送先サーフェイスが単純なオフスクリーンであり、拡大が行われている。
上記のいずれかの時、失敗するらしいのですが、�B�Cの意味が馬鹿なので分かりません(><)
�B�Cにはどんな条件が入るのでしょうか?
0374373
2006/03/13(月) 01:37:21ありがとうございました。
0375デフォルトの名無しさん
2006/03/14(火) 19:58:42やっぱり、動作環境っていろいろなマシンで試してみないとわからないんだね。
0376デフォルトの名無しさん
2006/03/15(水) 08:29:34一つのPCで複数クライアントを立ち上げてローカルでテストした場合
ホストとピアのポート番号を同じにすると接続失敗するのはなぜですか?
0377376
2006/03/15(水) 10:12:38IDirectPlay8Peer->Hostの第二引数に渡す
IDirectPlay8AddressオブジェクトにAddComponentしたポート番号と、
IDirectPlay8Peer->connectの第三引数に渡す
IDirectPlay8AddressオブジェクトにAddComponentしたポート番号を
同じにして一台のPCで二重起動してテストしようとすると接続を確立できない
というか、connectする方がホストを発見できなくなるようなのですが。
なぜでしょうか?
0378デフォルトの名無しさん
2006/03/15(水) 21:31:29スキンメッシュについて、SkinnedMesh サンプルソースを読んでるんですが
このソースの中に出てくる、オフセット行列(メッシュコンテナクラスのメンバ)
というのがいまいちよくわかりません。
SDKのヘルプでは、「図 2. キャラクタの前腕に対するボーンのオフセット変換の効果」
の所で、回転させるためにボーンの根本を原点に移動する行列のようなことが書いてありますが
この「ボーンの根本を原点に移動する行列」という解釈でよろしいのでしょうか?
また、このオフセット行列でボーンを原点に戻して回転させた後には、当然、また元の位置に
戻してやらないといけないと思うんですが、これはどこでやってるのでしょうか?
自分は、親子関係の行列の変換について、↓のホームページの内容のように
directXも行列の変換が行われているのだろうと考えているのですが
これは正しいのでしょうか?
ttp://monsho.hp.infoseek.co.jp/dx/dx29.html
「もんしょの部屋」
DirectXの話 第29回「ボボンボンボン」
0379デフォルトの名無しさん
2006/03/15(水) 23:33:54実際に移動してるわけでなくてローカル座標だからボーンの場所が原点だと思ってくれって言ってるんだよ
0380デフォルトの名無しさん
2006/03/16(木) 01:51:20よく分かると思われ
0381378
2006/03/16(木) 18:44:08>>380
レスありがとうございます。
>実際に移動してるわけでなくてローカル座標だからボーンの場所が原点だと思ってくれって言ってるんだよ
描画する時↓にオフセット行列を掛けているので、やっぱり実際に座標変換されていると思うのですが・・
ちょっと、よくわかりません。
DrawMeshContainer()より
// set up bone transforms
for (iBone = 0; iBone < cBones; ++iBone)
{
D3DXMatrixMultiply
(
&m_pBoneMatrices[iBone],// output
&pMeshContainer->pBoneOffsetMatrices[iBone],//オフセット
pMeshContainer->ppBoneMatrixPtrs[iBone]
//↑フレームクラスのメンバ(CombinedTransformationMatrix)合成済み変換行列を参照している
);
}
0382デフォルトの名無しさん
2006/03/16(木) 19:13:30だから親が回転したりすればその累積の行列は変化するけど、
自分自身のローカルな回転の行列は変化しない。
0383デフォルトの名無しさん
2006/03/16(木) 19:15:040384デフォルトの名無しさん
2006/03/16(木) 19:22:21あんな分かり難いサンプルとしてのソースはなかなか無いと思う。
戦意喪失させる力を持っている。
0385デフォルトの名無しさん
2006/03/16(木) 19:44:48>の所で、回転させるためにボーンの根本を原点に移動する行列のようなことが書いてありますが
そもそもこの記述が見つからないんだけど、
ヘルプの何処?階層教えてプリーズ。
0386デフォルトの名無しさん
2006/03/16(木) 20:52:47これで検索→「SkinnedMesh サンプル」
0387デフォルトの名無しさん
2006/03/16(木) 21:10:070388デフォルトの名無しさん
2006/03/17(金) 07:51:09親の累積の行列を、対象のボーンのローカルな回転行列にかけることで
「あるべき場所」で回転させる、
って意味で相対的にそこが原点とみなせるってだけで、
なんか原点に「戻してる」ってのは誤解を生むような気がするんだけど、
俺って解釈間違えてる?
0389デフォルトの名無しさん
2006/03/17(金) 09:08:43英語のヘルプ読めば解決
ただ388に関しては、388が理解できてない気がするな。
ヘルプのどこか分からないから何とも言えないけど。
0390デフォルトの名無しさん
2006/03/17(金) 09:17:32したり顔で出てくるのはこのスレですか?
0391デフォルトの名無しさん
2006/03/17(金) 11:50:320392デフォルトの名無しさん
2006/03/17(金) 11:56:050393デフォルトの名無しさん
2006/03/17(金) 11:59:380394デフォルトの名無しさん
2006/03/17(金) 12:09:360395デフォルトの名無しさん
2006/03/17(金) 12:48:25多分大丈夫だよ。
新聞の記事や説明書に比べて、ほとんど簡単な文法しか使ってない。
高校卒業してたら、辞書片手に読めるはず。
0396378
2006/03/17(金) 12:55:38>オフセットって自分の親までの変換行列を累積した奴じゃねーの。
それは、オフセットじゃなくて、下記の
pMeshContainer->ppBoneMatrixPtrs[iBone]
が「変換行列を累積した奴」じゃないんでしょうか?
これは、UpdateFrameMatrices()関数で再帰的に自分の親の変換行列を
掛けて、累積されています。
>>382さんがおっしゃる、「変換行列」とはD3DXFRAME構造体のメンバーの
TransformationMatrix のことですよね?
pMeshContainer->ppBoneMatrixPtrs[iBone]
//↑フレームクラスのメンバ(CombinedTransformationMatrix)合成済み変換行列を参照している
0397デフォルトの名無しさん
2006/03/17(金) 13:17:17そっか。だったらわかんないや。
間違った事言ってしまったようでごめん。
俺も調べてみるから分かったら報告する。
君も分かったら教えてくれ。
0398デフォルトの名無しさん
2006/03/18(土) 01:17:09ここからは、メインディッシュのSkinWeightsのMatrix4x4 matrixOffset;について
俺がわかるまで(最低でも6スレ分)続く予定だ。
悪いが他の質問は諦めてくれ。
0399デフォルトの名無しさん
2006/03/18(土) 08:54:39└─┘
おらっしゃあぁぁ!!!
∩∧ ∧
ヽ( ゚Д゚)
\⊂\
O-、 )〜
∪
0400デフォルトの名無しさん
2006/03/18(土) 16:47:076スレどころではすまないから却下
0401http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 19:18:54もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
0402デフォルトの名無しさん
2006/03/18(土) 19:23:55スレ違い。マルチ乙。
あと氏ね。
0403デフォルトの名無しさん
2006/03/19(日) 13:12:130404デフォルトの名無しさん
2006/03/19(日) 23:22:22そんときに額にキズができたっていう話だったと思う
0405デフォルトの名無しさん
2006/03/19(日) 23:24:50愛と誠だっけ?
0406デフォルトの名無しさん
2006/03/19(日) 23:34:430407デフォルトの名無しさん
2006/03/20(月) 17:10:51下記のようなポリゴン生成していくと隙間が出てくるので
いろいろ調べてみたのですが、頂点を共有するというのを
みつけたのですが、イメージがわきません。
というのもテクスチャ座標をポリゴン1の右端が1.0f、ポリゴン2の左端が0.0fに
ならないとだめな気がするからです。
typedef struct _CUSTOMVERTEX
{
float x, y, z, thr; //座標
DWORD color; //色
float tu, tv; //テクスチャ座標
} CUSTOMVERTEX;
CUSTOMVERTEX vertices1[] =
{
{ 0.0f, 0.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 0.0f, 0.0f},
{ 1.0f, 0.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 1.0f, 0.0f},
{ 0.0f, 1.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 0.0f, 1.0f},
{ 1.0f, 1.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 1.0f, 1.0f}
};
CUSTOMVERTEX vertices2[] =
{
{ 1.0f, 0.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 0.0f, 0.0f},
{ 2.0f, 0.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 1.0f, 0.0f},
{ 1.0f, 1.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 0.0f, 1.0f},
{ 2.0f, 1.0f, 0.0f, 1.0f, D3DCOLOR_RGBA(0xff, 0xff, 0xff, 0xff), 1.0f, 1.0f}
};
共有頂点について、基礎知識を教えていただけないでしょうか?
また無限平面とかのサンプルソースのある本やホムペご存知ないでしょうか?
よろしくお願いしますm(_ _)m
0408デフォルトの名無しさん
2006/03/20(月) 17:12:56htmlのレンダリングは初期にCPU容量を必要とするから64ビット化は期待できる
0409デフォルトの名無しさん
2006/03/20(月) 23:51:33ヘルプ内の「基礎知識」読んだか?
0410デフォルトの名無しさん
2006/03/21(火) 00:12:08{ 0.0f, 0.0f, (ry
{ 0.0f, 1.0f, (ry
{ 1.0f, 0.0f, (ry
{ 1.0f, 1.0f, (ry
0411デフォルトの名無しさん
2006/03/21(火) 17:25:19http://www.c3.club.kyutech.ac.jp/~sukiyaki/index.php?%A5%C6%A5%AF%A5%B9%A5%C1%A5%E3%BA%C2%C9%B8
共有頂点云々よりやりたいことってこうじゃないの?
0412デフォルトの名無しさん
2006/03/21(火) 17:26:100413デフォルトの名無しさん
2006/03/21(火) 22:27:06407はポリゴンを複数麻衣並べたいのでは。
ポリゴン1とか2とかいってるとこが気になる。
>>407どっちかね?
0414デフォルトの名無しさん
2006/03/21(火) 23:12:21描画したいのですが、Xファイルのモデルに地形に貼り付けたテクスチャの
色が混ざってしまいます。
地形に貼るテクスチャの設定を以下のようにしています。
pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP , D3DTOP_MODULATE);
pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
D3DTOP_MODULATE を D3DTOP_SELECTARG1 にすると、Xファイルのモデルまで同じ
テクスチャが貼られてしまうので、おそらく描画対象がちゃんと区別できていない
と思います。
この描画対象の設定の方法をご教授ください。
0415デフォルトの名無しさん
2006/03/21(火) 23:30:21とりあえず、DirectXの描画は●と○を描画するとしたときに
(まあ、例としてこんな画面になるとしよう)
● ○
(白と黒の2つの玉が画面に表示されている状態だな)
�@●の描画に使うテクスチャAをセット
�A●を描画(DrawPrimitive)
�B○の描画に使うテクスチャBをセット
�C○を描画(DrawPrimitive)
という順番があるわけだ。
ここで�Aと�Bの間でなにか他の物体を描画(DrawPrimitive)した場合は
貼られるテクスチャは●のものとなる。OK?
0416デフォルトの名無しさん
2006/03/21(火) 23:54:150417デフォルトの名無しさん
2006/03/22(水) 00:00:110418414
2006/03/22(水) 00:30:26レスありがとうございます。
地形をDrawPrimitiveで描画したあとに、
XファイルをDrawSubsetで描画しています。
Xファイルにはテクスチャを貼らないとしたら、最初のDrawPrimitiveの後にSetTextureの取り消し
が必要っていうことですかね?
0419414
2006/03/22(水) 00:36:03pD3DDevice->SetTexture( 0, NULL )
をしたら解決しました。ありがとうございました。
>>417
やっと意味が分かりました。
0420デフォルトの名無しさん
2006/03/22(水) 01:15:28多分、その経験から得られる物は他にもあるぞ。
ステート設定は、殆どその作り。
覚えといた方が良い。
0421デフォルトの名無しさん
2006/03/22(水) 02:18:35ウィンドウモードでデバイスを初期化したウィンドウが
WM_SYSCOMMANDのSC_MAXIMIZEを受け取った時に
IDirect3DDevice9::Resetでフルスクリーンにした場合
もう一度IDirect3DDevice9::Resetでウィンドウモードに戻すと
タイトルバーとかが消えてしまい困っています
ただしその状態から最小化>元に戻すとやると
何故かタイトルバーまわりが復活し、ウィンドウの位置も元通りになります
ウィンドウモードにResetした時点でウィンドウの状態を元に戻すには
どうしたらいいんでしょうか?
WM_SIZEのSIZE_RESTOREDでMoveWindowしても反映されませんし
そもそもGetWindorRectしたらフルスクリーン化する前のままでしたし
しかも何故かウィンドウスタイルがTOPMOSTな挙動になってるし…
0422デフォルトの名無しさん
2006/03/22(水) 02:25:15物体(シェーダ)ごとにステートを設定しなきゃならないなら、
クラスか構造体にでもまとめてくれりゃいいのにな。
って、マイクロソフトのプログラマが考えたかどうかは知らんけど、
シェーダごとステートの設定とプログラム側のステートの設定とどっちが反映されるのか
ドッキドッキの状態が今だなw
まあ、シェーダで自分が設定してるならシェーダの方が設定されるっぽいけどw
プログラム側からシェーダの設定をいじりたいときはやっぱり渡してやらなきゃならないしね。
設定忘れのときはプログラム側の設定が使われるしでなにやら悪臭が漂ってるw
0423デフォルトの名無しさん
2006/03/22(水) 02:25:470424デフォルトの名無しさん
2006/03/22(水) 02:55:34俺も正しいやり方は知らないけどこうやってる
//::ShowWindow(hwnd,SW_SHOWMINIMIZED);
//::ShowWindow(hwnd,SW_RESTORE);
::SetWindowPos(hwnd,0,0,0,0,0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOREDRAW | SWP_NOSIZE | SWP_NOZORDER | SWP_DRAWFRAME);
したあと、
AdjustWindowRect
0425デフォルトの名無しさん
2006/03/22(水) 02:57:42というのは,ちょっとした仕事で,DirectX を使ったプログラムを書かなければならないからです.
VC++で,コマンドラインの32bitコンソールアプリを開発できますよね?
コンソールアプリにすると,DirectXの機能はどの程度,制限を受けるのでしょうか?
開発しようとしているのは,Direct3Dの画像をフルスクリーンで提示し,時間が来たら修了する,というものです.
VC++もDirectXも初めてなので,教えて君になってしまって申し訳ないですが,どなたかご助言下さい.
0426デフォルトの名無しさん
2006/03/22(水) 03:22:030427デフォルトの名無しさん
2006/03/22(水) 04:12:58キタワー.*:.。.:*・゚(n‘∀‘)η゚・*:.。.:*!!
ありがとうございますっ!
…でも最前面に固定されてるのが直らない(ノД`)
0428デフォルトの名無しさん
2006/03/22(水) 04:14:50SetWindowPosでTOPMOSTも変更できるよ。
0429デフォルトの名無しさん
2006/03/22(水) 04:39:38えぇと…いちお試してはみてたんですが、
教えていただいたSetWindowPosのパラメータのhWndInsertAfterの所に
HWND_NOTOPMOSTを追加してNOZORDER外してもダメでしたし
直後にHWND_NOTOPMOSTだけ指定したSetWindowPosしてもダメでした…
0430デフォルトの名無しさん
2006/03/22(水) 04:49:17君に必要なのは普通のウィドウにHello, World!と表示するプログラムだ。
0431デフォルトの名無しさん
2006/03/22(水) 06:58:51ようわからんがやめとけ、コンソールアプリはあくまでエミュ扱いだったはず。
ちゃんとWinMainのあるアプリでも大してかわらんからちゃんと本を読んで作ることをオススメする。
0433デフォルトの名無しさん
2006/03/22(水) 10:48:07Windowいじる時には一旦隠すもんだがそれはやってるんだよな?
俺はこんな感じ↓
最初にGetWindowLongでスタイルを保持しておく
ShowWindowで隠す
D3Dリセット
SetWindowLongでスタイル変更
MoveWindowで位置とか補正
ShowWindowで表示
取り合えずこれで事足りてる
0434デフォルトの名無しさん
2006/03/22(水) 12:58:56DirectXはメッセージを横取りしたりするからコンソールアプリじゃ厳しいはず。
0435デフォルトの名無しさん
2006/03/22(水) 13:14:51ただ一つ、無駄だという点を除いては。
0436デフォルトの名無しさん
2006/03/22(水) 20:12:14Jpgファイルを表示させるコードを書くことになったのですが、
Jpgファイルの画像サイズ(解像度サイズ)を取得する関数って存在するのでしょうか?
ヘルプを検索かけてみたのですが、見つかりませんでした。
矩形のポリゴンにテクスチャとして貼り付け、表示するつもりなのですが、
ちゃんとした比率にする方法がしりたいんです。
もうしわけありませんがどなたかお願いします。
0437デフォルトの名無しさん
2006/03/22(水) 20:39:39あれ、こっちはこれでちゃんと最前面解除されたんだが、
::SetWindowPos(hwnd,HWND_NOTOPMOST,0,0,0,0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOREDRAW | SWP_NOSIZE | SWP_DRAWFRAME);
0438デフォルトの名無しさん
2006/03/22(水) 20:44:18D3DXCreateTextureFromFileExのpSrcInfo
0439デフォルトの名無しさん
2006/03/22(水) 20:54:53の事もたまには思い出してあげてください…
0440デフォルトの名無しさん
2006/03/22(水) 21:21:53>439
ありがとうございます、それらをヒントにがんばってみます
0441デフォルトの名無しさん
2006/03/22(水) 21:23:30SetWindowPosなんて面倒草くないか?
D3DPRESENT_PARAMETERSのWindowedを変更したらReset
0442デフォルトの名無しさん
2006/03/22(水) 23:41:46とか便乗して言ってみるテスト
0443デフォルトの名無しさん
2006/03/23(木) 02:36:09最終的には16bit以上に拡張しなくてはならないのでしょうか?
VRAMに書き込む量を減らしたいのですが。。。
0444デフォルトの名無しさん
2006/03/23(木) 03:24:13D3DFMT_R3G3B2
をサポートしているビデオカードであれば
8bit で格納できるので 16bit 以上である必要はない
が、そんなビデオカードは存在しない気がする。
0445443
2006/03/23(木) 03:43:25B2 ってあっても無くても良い気がしますw
大人しく24bitにします。
(16bitは対応して無いオンボードがあるっぽい)
ありがとうございました。
0446デフォルトの名無しさん
2006/03/23(木) 11:28:19いや24bitに対応している方が無いだろ。
0448デフォルトの名無しさん
2006/03/25(土) 01:20:32{
float x, y, z, w;
float tu, tv;
// 頂点FVF
enum { FVF = D3DFVF_XYZRHW | D3DFVF_TEX1 };
}
/ テクスチャを設定
pDev->SetTexture( 0, pTexture );
// 頂点FVFを設定
pDev->SetFVF( VERTEX2D::FVF );
/ ポリゴンを描画
pDev->DrawPrimitiveUP( D3DPT_TRIANGLESTRIP, 2, VxData, sizeof(VERTEX2D) );
2D表示はこれでOK?
0449デフォルトの名無しさん
2006/03/25(土) 01:26:220450デフォルトの名無しさん
2006/03/25(土) 12:06:130451デフォルトの名無しさん
2006/03/25(土) 21:38:35FPSの計算そすえてー
0452デフォルトの名無しさん
2006/03/25(土) 21:48:010453デフォルトの名無しさん
2006/03/25(土) 21:51:08ありがとうございます
double NextTickCount = timeGetTime(); + 16.666666;
while (1) { //無限ループ
//描画処理をここに記載
//ウェイト
while ((timeGetTime() - NextTickCount) < 16.666666);
NextTickCount += 16.666666;
}
でいいんんですね^^
0454デフォルトの名無しさん
2006/03/25(土) 21:59:36http://tmp6.2ch.net/kitchen/
0455デフォルトの名無しさん
2006/03/25(土) 22:06:55全然駄目。
まず、ちゃんと型をみろ。
誰もdoubleなんて使ってない。
timeGetTime関数の返す型をしっかり確認しろ。
いい加減にやっていい部分じゃない。
そしたら16.66666なんてアホな数使わなくて済む。
お前のプログラムは汚い。かつ、意味がわかってないのまるわかりでみててムカツク。
就活してたら絶対に落としてやるからそのつもりで。
それと何をやるべきかわかってるの?
わかってないでしょ?
FPSってなによ?
そっからしっかり調べろ。
>>454
こだわるなよ。
板とかスレとかあくまできっかけ程度のこだわりにしとけ。
0456デフォルトの名無しさん
2006/03/25(土) 22:12:490457デフォルトの名無しさん
2006/03/25(土) 22:15:380458デフォルトの名無しさん
2006/03/25(土) 22:17:40どうやら参考にしたサイトが糞だったようです^^
>>
PGに就職しないので平気です
日曜PGです^^
>FPSってなによ?
そのくらい、自分で調べましょう
http://d.hatena.ne.jp/keyword/FPS
0459デフォルトの名無しさん
2006/03/25(土) 22:19:130460デフォルトの名無しさん
2006/03/25(土) 22:19:410461デフォルトの名無しさん
2006/03/25(土) 22:20:52double nextframe = (double)System.Environment.TickCount;
float wait = 1000f/60f;
while(frm.Created)
{
if ((double)System.Environment.TickCount >= nextframe)
{
//計算処理
if ((double)System.Environment.TickCount < nextframe + wait)
{
//描画処理
}
nextframe += wait;
}
Application.DoEvents();
}
最強です。
0462デフォルトの名無しさん
2006/03/25(土) 22:25:00文字通り一人称視点のシューティングゲームの総称。
0463デフォルトの名無しさん
2006/03/25(土) 22:28:45はぁ?死ねよ。
0464デフォルトの名無しさん
2006/03/25(土) 22:29:12intをつかって解決する方法を考えてみろ
0465デフォルトの名無しさん
2006/03/25(土) 22:29:34Wolfenstein: Enemy Territoryを目指して開発しています。
もちろん、作った僕には
・ステルス
・ライフ自動回復
・武器フルチャージ
・高速移動など
特典もりだくさんにしようと思います^^
>>
お前もなー^^
0466デフォルトの名無しさん
2006/03/25(土) 22:29:490467デフォルトの名無しさん
2006/03/25(土) 22:32:43どのバージョンか忘れたけど
0468デフォルトの名無しさん
2006/03/25(土) 22:33:25窓の杜 - 【Release NEWS】フリーのFPSゲーム「Wolfenstein: Enemy Territory」のソースコードが公開
http://www.forest.impress.co.jp/article/2004/01/29/etpublicsourcecode.html
0469デフォルトの名無しさん
2006/03/25(土) 22:33:350470デフォルトの名無しさん
2006/03/25(土) 22:34:11>>
intのサンプル発見。どうぞ^^
http://www1.obi.ne.jp/~fenrir24/vc/vc_text06.html
0471デフォルトの名無しさん
2006/03/25(土) 22:35:38>>
ありがとうございます^^
そのままコンパイルすればWETできるのかな、わくわくしてきました^^
0472デフォルトの名無しさん
2006/03/25(土) 22:37:180473デフォルトの名無しさん
2006/03/25(土) 22:38:36できました^^
ありがとうございました^^
0474デフォルトの名無しさん
2006/03/25(土) 22:44:58あれ僕が二人いる(@_@;)
驚きです^^
こんにちは。もう一人の僕さん^^
0475デフォルトの名無しさん
2006/03/25(土) 22:46:45そういう問題だったのか?
0476デフォルトの名無しさん
2006/03/25(土) 22:52:24そして次にゲームの流れがスムーズに見えるようにごまかすテクニックを学ぶ
スキップや早送りだな
ハードスペックにより極端に長くなってしまう場合は例外として扱ったほうがいいぞ
大抵の初学者が間違っているが、ループ中に差を求めて16.6秒なのかどうか調べるのはNG
ターゲット時間を求めてあとはそれと比べるだけでいいのだ
なぜそんなことをするのか?
処理用を減らしたいからだ
ゲームでもっともCPUを使う時間が長いのがFPS制御部分
無駄なことは極力避けたい
現在の時刻 + 約16.6秒 を先に求めておく
そしてこの時刻と現在の時刻を比べるのだ
そうすることで引き算1回分節約できる
0477デフォルトの名無しさん
2006/03/25(土) 22:54:120478デフォルトの名無しさん
2006/03/25(土) 22:54:30>>
つまり
while(1)
{
if(NextTime<::timeGetTime())
{
描写
NextTime+=1.6;
}
}
でいいのですか^^?
0479デフォルトの名無しさん
2006/03/25(土) 22:58:090480デフォルトの名無しさん
2006/03/25(土) 23:00:06馬鹿はおまえらだろ
0481デフォルトの名無しさん
2006/03/25(土) 23:16:28でも上のループは処理落ちした場合のこと考えてないよね。
60FPS以内で1ループ終わらすことしか考えてない、
2Dシューティングか2D格闘専用ならいいけどさ。
0482デフォルトの名無しさん
2006/03/25(土) 23:19:03>>
つまり、フレームスキップ対策すればいいのですね(^_-)ネッ
がんばってみます^^
う〜〜ん複雑だな〜。
0483デフォルトの名無しさん
2006/03/25(土) 23:28:10いったいどうしたいのかわからないな。
1時間ぐらい過ぎた後に突然起動してもこの動作でいいのか?
0484デフォルトの名無しさん
2006/03/25(土) 23:28:24>>
うは〜〜^^
0485デフォルトの名無しさん
2006/03/25(土) 23:30:06>>
うへへへへへへぇぇぇぇぇぇ〜〜〜(・∀・)
0486デフォルトの名無しさん
2006/03/25(土) 23:38:362.処理落ちのときの動作を〜にしたい
3.かなり時間が過ぎてしまったときの動作は〜にしたい
4.???
5.
・
・
・
とまずやることを書き出してからやらないとごっちゃになってなにやってるかわからなくなるに一票w
0487デフォルトの名無しさん
2006/03/25(土) 23:41:11>>
突然起動〜、、、、、意味が分かりません^^
計算が崩れなければなんでもいいのです^^
0488デフォルトの名無しさん
2006/03/25(土) 23:58:19正解だ!おめでとう
流れはそれで合ってる
1.6という数字が1フレームの最短の場合の時間だね
おそらく16msを希望する場合は桁が違うと思うから各自で確認しておいてくれ
これでフレーム当たりの最短時間を制限することができた
ゲーム内容に対してPCスペックが十分に高ければ安定した速度でゲームが進行する
では、PCスペックが十分でない時はどうだろう
たとえば16.6msで済ます予定が50msかかったとしよう
1秒間で約60回の処理をするはずが20回しか出来なくなる
これは困った
主人公が1回当たり1ドット進むようプログラムしていた場合
60ドット進むところが20ドットしか進まない
これには大きくわけて二通りの解決方法がある
かかった時間に比例してゲーム内容を進める方法と
省略しても問題がない部分を省略してしまう方法だ
0489デフォルトの名無しさん
2006/03/25(土) 23:58:24>>
最近の3Dゲームは
1〜5全部やっているんですかねFPSとかラグナロクオンラインとか^^;
0490デフォルトの名無しさん
2006/03/26(日) 00:04:00>>
わーい正解しました〜^^
なるほど、遅いPCだとズレが生じるんですね。
・比例してゲーム進める方法⇒難しそうだ^^;、しかしコレが一番アールマイティな感じだな。
・省略⇒つまりフレームスキップってことですか^^?
0491デフォルトの名無しさん
2006/03/26(日) 00:06:25ある時間にこの場所にいるはずだ!という情報をサーバーから受け取り
それをもとに再構成する
これはデータ転送量が少なくてすむ
だからネットゲームは移動先を指定するタイプのゲームが多い
移動方向を指定するタイプはこの方法は使えない
たとえばFPSには使えない
0492デフォルトの名無しさん
2006/03/26(日) 00:09:40なにこのくだすれ
0493デフォルトの名無しさん
2006/03/26(日) 00:31:25>>
改良版。
while(1)
{
if(NextTime<timeGettime())// 1/60秒たったら動き出す!
{
//計算
if(NexTime+1.6>timeGettime)// 次のフレームまでまだ時間があるなら!
{
//描写
}
NetTime+=1.6;
}
}
ってかんじですかね^^;
しかし計算が1.6超えるとアウトなんですが・・・><
0494デフォルトの名無しさん
2006/03/26(日) 02:26:08timeBeginPeriod(1);
DWORD begin = timeGetTime();
DWORD elapse;
float update = 1000.0f / 60.0f;
int limit_count = 3;//3フレ落ちまでは救う
int count;
while(/*メッセージ処理云々(falseでシステム終了)*/){
//経過時間算出
elapse = timeGetTime() - begin;
//更新時間判定
if(elapse > (DWORD)update)continue;
//タイマ初期化
begin = elapse;
//経過フレーム数算出処理
count = (int)((float)elapse / update);
//経過フレーム数補正
if(count > limit_count)count = limit_count;
//経過フレーム処理
for(int i=0;i<count;i++){
//1フレーム分処理
move();
}
//描画
draw();
}
とか即興で作ってみたけど、どうだろうか?
俺は本当はこうやって落ちたら落ちたときだけフレームを進めるとかじゃなくて、平均をとってフレーム落ちを計算してるけど。
0495デフォルトの名無しさん
2006/03/26(日) 04:02:28FPS制御に一番時間がかかる?ハァ?wwww
0496デフォルトの名無しさん
2006/03/26(日) 04:15:28そんなことは誰もいってねぇぞw
お前、スレを眺めてすらいないだろw
0497デフォルトの名無しさん
2006/03/26(日) 08:48:39いや、476が言ってるがw
476は痛い人っぽいから、あえてみんなスルーしてたのに。
0498デフォルトの名無しさん
2006/03/26(日) 09:22:140499デフォルトの名無しさん
2006/03/26(日) 09:25:10doubleは遅いからintだとか、引き算1回減らすだとか
なんで得意顔になってんだ
0500デフォルトの名無しさん
2006/03/26(日) 11:16:360501デフォルトの名無しさん
2006/03/26(日) 11:19:40自分はこれで足りてる
0502デフォルトの名無しさん
2006/03/26(日) 12:56:46Sleepに何を期待しているのかわからない。
0503デフォルトの名無しさん
2006/03/26(日) 13:02:450504デフォルトの名無しさん
2006/03/26(日) 13:17:360505デフォルトの名無しさん
2006/03/26(日) 13:18:580506デフォルトの名無しさん
2006/03/26(日) 13:21:00あいつのアプリ、動作することもままならないって感じだったじゃんw
0507デフォルトの名無しさん
2006/03/26(日) 13:30:06まさかビジーループ回しっ放しの糞アプリ作るわけじゃないだろう。
Sleepである程度待ってからビジーループで正確に待つというなら分かるが。
0508デフォルトの名無しさん
2006/03/26(日) 13:33:24暇だなw
0509デフォルトの名無しさん
2006/03/26(日) 13:41:44普通に処理が早すぎた分待ってるだけだけど
0510デフォルトの名無しさん
2006/03/26(日) 13:52:33進歩無いな。
0511デフォルトの名無しさん
2006/03/26(日) 14:18:53あのSleepだと「正確」にはまっていない。
1フレの計算と描画にかかる時間は考慮できてないじゃん。
だから何を期待してるのかわからない。
0512デフォルトの名無しさん
2006/03/26(日) 14:30:533D描画は別として
0513デフォルトの名無しさん
2006/03/26(日) 14:37:220514デフォルトの名無しさん
2006/03/26(日) 15:05:07Sleepの段階で時間のぶれがおこるので、
カウントはきちんと累積をとるようにしないと、
全体の時間がどんどん狂っていくぞ。
あとはm_ptimeとかメンバ変数にする必用のないものが
メンバに混ざっているのが気になる。
0515デフォルトの名無しさん
2006/03/26(日) 15:11:030516デフォルトの名無しさん
2006/03/26(日) 15:15:52>>
サンプルありがとうございます^^
>>
サンプルありがとうございます^^
>>
なるほど
SLEEPは精度が悪いのですね。気をつけま^^;
>>
いまどきと言うとpen4 .16Gでも平気かな^^;
>>
UPDATA!!??自動fPS制御ですか〜^^?
最後に、
おはようございます^^
みなさんの暖かい協力よりFSP制御がうまくいきました^^
では、さようなら〜^^
またピンチになったら着ます。
0517デフォルトの名無しさん
2006/03/26(日) 18:42:37{
//--------------------------------------------
// 現在の時間取得
//--------------------------------------------
m_NowTime = ::timeGetTime();
m_DifferenceTime = m_NowTime - m_OldTime;
float fWaitTime = 1000.0f / 60.0f;
//----------------------------------
// 時間経過を待つ
//----------------------------------
if ( (float)m_DifferenceTime) < fWaitTime )
{
float fSleepTime = fWaitTime + m_fRestTime - (float)m_DifferenceTime;
if ( fSleepTime > 1.0f )
{
::SleepEx( (unsigned long)fSleepTime, true );
}
m_fRestTime = fSleepTime - (float)((unsigned long)fSleepTime);
}
//--------------------------------------------
// 終了
//--------------------------------------------
m_OldTime = ::timeGetTime();
}
0518デフォルトの名無しさん
2006/03/26(日) 23:08:21プログラムは出来てもハードウェアの実際を知らない頭でっかちの典型
0519デフォルトの名無しさん
2006/03/26(日) 23:19:17DirectXのサンプルで、returnでS_OKとかE_FAILとか返してますけど
これらの詳細を教えてください
あと、ifのところによく使われるFAILEDとかSUCCEEDEDは!のマクロみたいなやつですよね?
0520デフォルトの名無しさん
2006/03/26(日) 23:27:060521デフォルトの名無しさん
2006/03/26(日) 23:30:33どこかに詳しく載ってませんか?
SDKとかに書いてないみたいなんですが、DirectXで定義されているものではないのですか?
0522132
2006/03/26(日) 23:34:15見ての通り成功か失敗かを返してる。型はHRESULTな。
これに限って言えば取り敢えずBOOLの親戚だと思っとけ。
FAILEDとSUCCEEDEDはマクロだけど'!'は論理演算子(論理否定)、マクロじゃねーよ。
0523522
2006/03/26(日) 23:35:13ここの132じゃないので念の為
0524デフォルトの名無しさん
2006/03/26(日) 23:36:35SUCCEEDEDはS_OKでTRUE
if(FAILED(処理))
MessageBox(NULL,"シパーイ","",MB_OK);
とかよくやる
0525デフォルトの名無しさん
2006/03/26(日) 23:40:31レスありがとうございます。
ただ、!がマクロかどうか聞いているんじゃなくて、FAILEDやSUCCEEDEDが何のマクロか知りたかったんです。
!っぽい感じの意味で使われていたから、それのマクロなのかな?と思っただけです。すみません。
0526デフォルトの名無しさん
2006/03/26(日) 23:41:21なるほど、解決しました。
0527デフォルトの名無しさん
2006/03/26(日) 23:44:23え?関係あるんじゃね?
例えばおなじみの値16.66666666666666666を小数点以下を切ると、
16じゃん。
2フレーム過ぎたこと知るには小数点以下を切り捨てると32だけど、本当は33以上になるはずだよね?
って計算があることを考えると1000/60とかやったときに小数点以下を切り捨てるのはどうかと・・・
まあ、どんな計算するかによるけどさw
0528デフォルトの名無しさん
2006/03/26(日) 23:53:12FAILDはhr<0
だっけか
0529デフォルトの名無しさん
2006/03/26(日) 23:58:01マイクロセカンドで扱えば?
0530デフォルトの名無しさん
2006/03/26(日) 23:59:440531デフォルトの名無しさん
2006/03/27(月) 00:01:08timeGetTimeが普通にms単位なんだからそんなわざわざバグりそうなことしなくてもいいでしょ。
小数点4〜5桁考慮してくれりゃいい程度なんだからfloat使っちゃったほうが楽でしょ。
0532デフォルトの名無しさん
2006/03/27(月) 00:41:56Windows専用のプログラム書くときにもおまいさんは
ハードウェアの事考えながらソース書くのか?
コンシューマーならそもそもタイマーで
フレームレート合わせるなんてする必要ないんだが。
0533デフォルトの名無しさん
2006/03/27(月) 07:37:170534デフォルトの名無しさん
2006/03/27(月) 08:24:53最後にピクセルとして出力する時にはそんな精度で制御できないのにfloat使う奴はバカ
0535デフォルトの名無しさん
2006/03/27(月) 08:29:480536デフォルトの名無しさん
2006/03/27(月) 08:56:30何の問題があるのかまるっきり理解できん。
釣りか?
0537デフォルトの名無しさん
2006/03/27(月) 09:37:24float m_ElapsedTime;
float m_FPS;
0538デフォルトの名無しさん
2006/03/27(月) 09:58:270539デフォルトの名無しさん
2006/03/27(月) 10:15:36CPUによっちゃintより演算速かったりするんだが。
0540デフォルトの名無しさん
2006/03/27(月) 10:23:380541デフォルトの名無しさん
2006/03/27(月) 10:30:22この場合。たかが1フレームごとに数回の演算に使うだけじゃないか。
0542デフォルトの名無しさん
2006/03/27(月) 10:32:270543デフォルトの名無しさん
2006/03/27(月) 10:34:39何のメリットもないからdoubleかfloat使うだろ。
そして、doubleだろうがfloatだろうがどっちでもいいだろ。
どっちが速いにせよ、描画に比べてめちゃくちゃ速く終わる計算で、
全く無視できるんだから。
0544デフォルトの名無しさん
2006/03/27(月) 10:35:38別に速いからとかそういう理由じゃなくて、ただ簡単だからだろうけど。
0545539
2006/03/27(月) 10:38:40floatがintより速い環境があるなら知りたいだけ。
0546デフォルトの名無しさん
2006/03/27(月) 10:39:190547デフォルトの名無しさん
2006/03/27(月) 10:53:460548デフォルトの名無しさん
2006/03/27(月) 10:54:530549デフォルトの名無しさん
2006/03/27(月) 10:57:340550デフォルトの名無しさん
2006/03/27(月) 10:58:040551デフォルトの名無しさん
2006/03/27(月) 11:01:02ここまでは誰も異論がないと思う
0552536=541=543
2006/03/27(月) 11:01:060553デフォルトの名無しさん
2006/03/27(月) 11:02:02HDR完全否定かよ
0554デフォルトの名無しさん
2006/03/27(月) 11:05:59世に出てるゲーム基板じゃ60fpsじゃない物なんざザラ、57.5fpsなんてのもある
所詮Windows/DirectXじゃ厳密なフレーム管理なんざ不可能なのに、いつまで
たっても「1Frameは16.666666msじゃなきゃ」とか言ってるヤシは枝葉末節に
拘って大事なところが見えてないただの阿呆
0555デフォルトの名無しさん
2006/03/27(月) 11:07:10doubleならどうしてわかるんだ?
0556デフォルトの名無しさん
2006/03/27(月) 11:08:06そんなこといってる奴は皆無。
問題がまるでわかってないな。
0557デフォルトの名無しさん
2006/03/27(月) 11:09:20ハードやOSの差を吸収するのが目的
それがわかってないなら議論に参加しても得るものはないと思うよ
0558デフォルトの名無しさん
2006/03/27(月) 11:10:14だから、精度なんか厳密じゃなくてもいいんだけど、
小数使った方が簡単でわかりやすいでしょ?
速度なんかどうでもいいしね。
0559デフォルトの名無しさん
2006/03/27(月) 11:11:04とりあえずお前が阿呆だということだけは分かった。
0560デフォルトの名無しさん
2006/03/27(月) 11:11:25ハードやOSなんてどうでもいいだろw
それに、ここはDirectXのスレですよw
0561デフォルトの名無しさん
2006/03/27(月) 11:17:51なら、int使った方がいい場面もなきにしもあらずかも知れん。
0562デフォルトの名無しさん
2006/03/27(月) 11:20:56doubleとfloatどっちが速いと思う?
0563デフォルトの名無しさん
2006/03/27(月) 11:21:04だったらベクトルもマトリックスも全部固定少数にして作れよ。
0564デフォルトの名無しさん
2006/03/27(月) 11:23:03多くの場合同じだろ。まあ、fpu設定によるけど。同一コードが
吐かれる場合が多いから。
0565デフォルトの名無しさん
2006/03/27(月) 11:27:54#pragma comment(lib,"winmm")
#include <windows.h>
#include <stdio.h>
#include <mmsystem.h>
int main()
{
float i,j,sum;
DWORD start_time, end_time;
start_time=timeGetTime();
for (i=0 ; i<SMAX ; i++)
for (j=0 ; j<SMAX ; j++)
sum=i+j;
end_time=timeGetTime();
printf("%d\n", sum);
printf("%d\n", end_time-start_time);
}
int
3229
3172
3185
float
9628
9532
9528
0566デフォルトの名無しさん
2006/03/27(月) 11:30:4723953
23865
23865
0567デフォルトの名無しさん
2006/03/27(月) 11:31:46お疲れ様でした
0568デフォルトの名無しさん
2006/03/27(月) 11:33:540569デフォルトの名無しさん
2006/03/27(月) 11:38:50それデバッグビルドでやってないか?
0570デフォルトの名無しさん
2006/03/27(月) 11:40:22どれだけ時間を節約できるの?
0571デフォルトの名無しさん
2006/03/27(月) 11:41:400572デフォルトの名無しさん
2006/03/27(月) 11:42:100573デフォルトの名無しさん
2006/03/27(月) 11:42:55572は何を喜んでるんだ?
0574デフォルトの名無しさん
2006/03/27(月) 11:43:561348
1318
1322
float
10518
10374
10152
double
4190
4194
4192
0575デフォルトの名無しさん
2006/03/27(月) 11:47:35100万円の買い物をするのに1円の差にこだわってるような議論だろ
0576デフォルトの名無しさん
2006/03/27(月) 11:47:47564
573
551
float
2045
2088
2083
double
2095
2069
2052
0577デフォルトの名無しさん
2006/03/27(月) 11:48:26言いえて妙だな。
0578デフォルトの名無しさん
2006/03/27(月) 11:48:55>>551
0579デフォルトの名無しさん
2006/03/27(月) 11:52:12なるほど。いい加減に読んでたから反対の意味に見えた。
まあおそらく>>551は浮動小数演算のほうが遅いと言おうとして間違えたんだろう。
0580デフォルトの名無しさん
2006/03/27(月) 11:56:55>518 フレーム時間調整にfloatを使うな
>527 誤差がでるのでは?
>529 桁を工夫して整数にしろ
>531 そんなことして意味あんの?
〜このあたりからぐだぐだに〜
>532 コンシューマプログラマですがなにか?
>533 Windowsのタイマーの精度はintがふさわしいよ(Windowsの精度に合わせようよ派)
>534 3Dはfloat精度で計算しても意味ないよ(3Dの話題はここで初出)
>535 学校で習ったからfloatだよ派
>536 floatで何も問題ないよ(楽観主義)
>537 M社の流儀にしたがうよ
>538 (名誉毀損のため削除)
>539 場合によってはfloatのほうが速いよ(場合によってはうんこしない派) ←←← 戦犯
0581デフォルトの名無しさん
2006/03/27(月) 11:59:270582デフォルトの名無しさん
2006/03/27(月) 12:01:39ていうか、ほとんど全ての人は
「100万円の買い物をするのに1円の差にこだわってるような議論だから意味はない」派
だろ
一部変なのが精度とか速度とかなんとか言ってるだけで。
0583デフォルトの名無しさん
2006/03/27(月) 12:01:560584デフォルトの名無しさん
2006/03/27(月) 12:04:140585デフォルトの名無しさん
2006/03/27(月) 12:05:27正確はfloat
俺はint派だけどな
0586デフォルトの名無しさん
2006/03/27(月) 12:06:17フレーム時間調整にfloat使うべきか否か?
■事の発端
>>517のソースに対してのレス(>>518)
■評価基準
速度
■現在の状況
・>>565のコードでintとfloatとdoubleのどれが最速か各自で確認
・何の話をしてたか思い出し中
■今後の展望
飽きてきた
■収穫
整数の計算はintが速かった
0587デフォルトの名無しさん
2006/03/27(月) 12:06:180588デフォルトの名無しさん
2006/03/27(月) 12:07:27そんだけ速くなたって全く意味ないだろ。
0589デフォルトの名無しさん
2006/03/27(月) 12:08:25天才現る
0590デフォルトの名無しさん
2006/03/27(月) 12:10:21微々たる差なことは間違いない。
例え話だけど。
0592デフォルトの名無しさん
2006/03/27(月) 12:10:48floatで計算すると16.666666666……となり当然ながら小さいながら誤差がでる
ところがintで計算する場合は16,16,17,16,16,17と加算する数を変更していくことで
1000ミリ秒でちょうど60回になるような計算になる
よってintのほうが正確である
0593デフォルトの名無しさん
2006/03/27(月) 12:11:38フレーム調整はそこそこ関係あるんじゃない?
intとfloatの速さになると関係は薄くなるけど。
0594デフォルトの名無しさん
2006/03/27(月) 12:12:19あ、そう。よかったな。
0595デフォルトの名無しさん
2006/03/27(月) 12:13:18あ、そう。よかったな。
0596デフォルトの名無しさん
2006/03/27(月) 12:16:13この部分だけ見ると3〜8倍の差があるとベンチマークの結果が物語ってますよ?
それにここはいわゆる「ビジーループ」にあたる箇所だ
Sleepで調整するとしても計算回数は秒間数十回、精度を求めるためにSleep時間の割合を減らすと
数千回以上はこの計算をすることになる
20:80理論の20の部分だ
0597デフォルトの名無しさん
2006/03/27(月) 12:16:51同じような速度だと思えばわかりやすいんじゃないかな。
一フレームごとに数十万ぐらいは点を打つけど、その時間に比べたら
fpsの計算してる部分なんてはるかに小さいよね。
0598デフォルトの名無しさん
2006/03/27(月) 12:18:28>>576
FX野郎か
0599デフォルトの名無しさん
2006/03/27(月) 12:18:53あきらかに20:80の80の部分だよwwww
お前、描画処理とfps制御計算とどれだけ時間に違いがあると思ってるんだ?ww
0600デフォルトの名無しさん
2006/03/27(月) 12:20:0524才位と見た。
0601デフォルトの名無しさん
2006/03/27(月) 12:22:42FPS制御中に描画処理を行うのは普通じゃないよね
だからその例えは失敗
>>599
100は何か考えてみよう
0602デフォルトの名無しさん
2006/03/27(月) 12:22:44本末転倒とはまさにこのこと。
0603デフォルトの名無しさん
2006/03/27(月) 12:22:45加齢臭漂ってるぞ。
0604デフォルトの名無しさん
2006/03/27(月) 12:28:07いや、わかってんねんで
0605デフォルトの名無しさん
2006/03/27(月) 12:28:08一フレーム内に両方の処理が入るでしょ。
それで、片方は片方に比べて極端に割合が少ないということ。
0606デフォルトの名無しさん
2006/03/27(月) 12:30:17だな、結局sleepで調節するのに。
0607デフォルトの名無しさん
2006/03/27(月) 12:31:500608デフォルトの名無しさん
2006/03/27(月) 12:37:11FPS制御のための計算・・・1ms
Sleep・・・15ms
とかじゃない?
0609デフォルトの名無しさん
2006/03/27(月) 12:39:450610デフォルトの名無しさん
2006/03/27(月) 12:40:221msもとらねーよ。
>>576とか見てみろよ。float一回の計算が0.1/30000msとかよりもさらに短い時間だろ。
0611デフォルトの名無しさん
2006/03/27(月) 12:40:43FPS制御は余剰時間に発生する
つまり割合は関係ない
この部分をいくら速くしてもゲームに寄与しない
という指摘は正しいが理屈が間違っている
(※正確にはスレッドがまわっているだろうが微々たる影響だ)
>>602,606
正解
この場合の20:80の100はCPU使用率だ
0612デフォルトの名無しさん
2006/03/27(月) 12:41:150.66666666666666666666666666666666666666666666666666666666666666
0613デフォルトの名無しさん
2006/03/27(月) 12:42:16最新CPUが基準かよw
0614デフォルトの名無しさん
2006/03/27(月) 12:42:19間違ってないよ。描画に時間が取られるから、CPUはその間Sleepしてるわけで。
0615デフォルトの名無しさん
2006/03/27(月) 12:43:020616デフォルトの名無しさん
2006/03/27(月) 12:43:06確かにintで計算した方が速いなぁ。
もっとも実際にボトルネックになるのは大抵ピクセルシェーダーやコリジョン・モーションとかだしfloatからintに出来るようなところじゃないけどな。
ついでにint化
{
// 現在の時間取得
m_NowTime = ::timeGetTime();
m_DifferenceTime = (m_NowTime - m_OldTime) << 16;
// FrameRateが0でない
Uint32 WaitTime = (1000 << 16) / m_FrameRate;
// 時間経過を待つ
if ( m_DifferenceTime < WaitTime )
{
Uint32 SleepTime = WaitTime + m_RestTime - m_DifferenceTime;
if ( SleepTime >> 16 > 1 )
{
::SleepEx( SleepTime >> 16, true );
}
m_RestTime = SleepTime & 0xFFFF;
}
else
{
m_RestTime = 0;
}
// 終了
m_OldTime = ::timeGetTime();
}
0617デフォルトの名無しさん
2006/03/27(月) 12:43:14その10倍遅いCPUだって、めちゃくちゃ短い時間には変わりないだろ。
0618デフォルトの名無しさん
2006/03/27(月) 12:47:32>もっとも実際にボトルネックになるのは大抵ピクセルシェーダーやコリジョン・モーションとかだし
>floatからintに出来るようなところじゃないけどな。
だから、みんなそう言ってる。floatが速いとかintが速いとかそんなのは無意味だって。
0619デフォルトの名無しさん
2006/03/27(月) 12:49:01fps制御やsleepはcpu
その間gpuが描画
0620デフォルトの名無しさん
2006/03/27(月) 12:52:360621デフォルトの名無しさん
2006/03/27(月) 12:55:55スレが伸びてるから何か面白いネタがあったのかと期待した俺に謝れ
0622デフォルトの名無しさん
2006/03/27(月) 12:56:50#pragma comment(lib,"winmm")
#include <windows.h>
#include <stdio.h>
#include <mmsystem.h>
int main()
{
int i,j;
float fwork=1.0f;
int iwork=1;
DWORD start_time, end_time;
start_time=timeGetTime();
for (i=0 ; i<SMAX ; i++)
for (j=0 ; j<SMAX ; j++)
iwork/=5;
end_time=timeGetTime();
printf("%d\n", iwork);
printf("%d\n", end_time-start_time);
start_time=timeGetTime();
for (i=0 ; i<SMAX ; i++)
for (j=0 ; j<SMAX ; j++)
fwork*=0.2f;
end_time=timeGetTime();
printf("%f\n", fwork);
printf("%d\n", end_time-start_time);
}
0623デフォルトの名無しさん
2006/03/27(月) 12:57:26VS2005の場合はコンパイルオプションでFast (/fp:fast)を設定すること。
int 3401
float 1700
0624デフォルトの名無しさん
2006/03/27(月) 12:59:13精度:こだわる意味ないよ
速度:変わらないよ
備考:なんでDirectXスレでやってんの?
0625デフォルトの名無しさん
2006/03/27(月) 13:00:520626デフォルトの名無しさん
2006/03/27(月) 13:01:29すんまそ〜ん
0627デフォルトの名無しさん
2006/03/27(月) 13:05:32これが正解だな
0628デフォルトの名無しさん
2006/03/27(月) 13:05:49FPS(フレームレート) VSYNC(垂直同期 リフレッシュレート)
http://bbs.gamdev.org/test/read.cgi/gamedev/1063274576/
■汎用スレはこちら
ゲームプログラミング相談室【Part7】
http://pc8.2ch.net/test/read.cgi/gamedev/1142096974/
0629デフォルトの名無しさん
2006/03/27(月) 13:08:50451から始まってたのか。
よく見たら455=463=518じゃねーか?w
0630デフォルトの名無しさん
2006/03/27(月) 13:13:38http://piza.2ch.net/tech/kako/972/972165437.html
2ちゃんねるにおけるFPSの原点
spitfire!
http://spitfire.client.jp/menu.html
各スレのまとめに独自の解説を追加
よくまとまっててわかりやすい
0631デフォルトの名無しさん
2006/03/27(月) 13:24:22馬鹿だなんだと突っかかる懐の浅さと視野の狭さに問題がある。
0632デフォルトの名無しさん
2006/03/27(月) 15:35:32青いくせにパラダイムシフトについて来れていない。
もう駄目かもわからんね。
0633デフォルトの名無しさん
2006/03/27(月) 15:42:530634デフォルトの名無しさん
2006/03/27(月) 16:31:16まあ純粋に命令セットの速度が実際どうなってるのか気になったので
Pen4のレイテンシとスループットについて調べてきたよ
命令/レイテンシ/スループット
add,sub/0.5/0.5
mul/14-18/5
div/56-70/23
fadd,fsub/5/1
fmul/7/2
fdiv(単精度)/23/23
fdiv(倍精度)/38/38
fsqrt(単精度)/23/23 (おまけ)
これ見ると速いのは乗除であって、流石に加減算は整数が上だな。
昔どこかで聞いたことあるんだけど、Pen4の乗算命令は浮動少数に最適化されてて
整数演算はその回路を使いまわしているから浮動少数のが早いってのは本当だったんだろうか。
しっかし除算と平方根が同じ速度とは思わなかったなあw
あとSSE並列計算命令のmulpsがfmulより速いのには笑った
0635デフォルトの名無しさん
2006/03/27(月) 17:07:40アセンブリコード見たら計算コードの部位は命令数変わって無いけど(命令は違うが)
ループのほうは偉い長くなってた
0636デフォルトの名無しさん
2006/03/27(月) 17:25:51まさかUINTをfloatにする事とか言ったら笑う
劣化じゃん
0637デフォルトの名無しさん
2006/03/27(月) 17:33:310638デフォルトの名無しさん
2006/03/27(月) 17:34:500639デフォルトの名無しさん
2006/03/27(月) 17:35:47考えてみたら昔は2バイト整数で4バイト実数だったけど、今や同じバイト数だもんなぁ。
そりゃぁ、floatの方がintより精度落ちる罠。
0640デフォルトの名無しさん
2006/03/27(月) 17:44:450641デフォルトの名無しさん
2006/03/27(月) 18:10:01レイテンシだのスループットだの持ち出してどうこう言ってるのは
アホの極みだろ。
0642デフォルトの名無しさん
2006/03/27(月) 18:20:53while(1)
{
if(NextTime<timeGettime())// 1/60秒たったら動き出す!
{
//計算
if(NexTime+1.6>timeGettime)// 次のフレームまでまだ時間があるなら!
{
//描写
}
NetTime+=1.6;
}
}
0643デフォルトの名無しさん
2006/03/27(月) 18:21:330644デフォルトの名無しさん
2006/03/27(月) 18:23:24同じと言ってしまって良いし、それよりはわかりやすい方が良い。
0645デフォルトの名無しさん
2006/03/27(月) 18:25:210646デフォルトの名無しさん
2006/03/27(月) 18:28:560647デフォルトの名無しさん
2006/03/27(月) 18:33:461/1000msとかかw
随分と意味のないわかりにくさだなw
0648デフォルトの名無しさん
2006/03/27(月) 18:35:41あるプログラムが0.0001/16だけ全体的に速くなったとして、
それに何か意味があるのかね?
0649デフォルトの名無しさん
2006/03/27(月) 18:48:27float使う意味も意図もわかんね
0650デフォルトの名無しさん
2006/03/27(月) 18:50:52, ': . : . : . : . : . : . : . : . : . : . :ヽ\: . : . }: . :.ヽ
/: . : . : . : . : . : . : . : . : . : . : . : . : :/´ ̄ヽ: . :ヽ
/: . : . : . : . : . : . : . : . : . : . : . : . __/: . : . : . : }: . : .゙,
__/: . : . : . : . : . : . : . : . : . : . : . : . : /: . : . : . : ./: . : . :',
/: .ィ/ヽヘ/レ'^'´`|: . |_: . : . : ./: . : . : . : . ハ: . : . : .!
/ /´l| |: . : . : :| ´レ、: ../: /: . : . : . /:.:.: . : . : |
/ /l| |ィ: . : .ハ| ゙/ /: . : . : . :/: . : . : . : :|
/: .:.;| |ハ: . :| ! ;゙./: . : . : . :/: . : . : . : . :l
/: :.:/∧ ! |: .| l:i: . : . : . :/: . : . : . : . : :l
/:.:./ ´ ゙, !:.l |:!: . : . : ./: . : . : . : . :.. ;'
::/ '、\ レ |!: . : . : /:.:.,. --、: . : ../ お願い!もうやめて・・!
'、_`¬ |l: . : . :.バ゙ ,r ';. : ./ floatは悪くないの!全部私が悪いの!
| ̄ヾ ゝニ ー_‐_'' ´ |: . : :.| 〈:.:. /:.:/
!::: `´ ̄ ̄`ぅ。|: . : :| ノ //
'、 ' :::::: |: . l | _/´ ̄`丶、
\ l: .l: | / ヽ
`ヾ、ー ´ ̄'^ヽ ,.ィ: l;.:', | ヽ
/` ー-‐彳l ´`ヽリ\ヾ、 `、
{ l || ` `lト`ー''´ f:. ヽ
0651デフォルトの名無しさん
2006/03/27(月) 18:53:55お前のせいか!
つか誰だおめー
0652デフォルトの名無しさん
2006/03/27(月) 19:03:520653デフォルトの名無しさん
2006/03/27(月) 19:04:40ライトがうまく反映されません><
法線だと容量が・・・
なしでできませんかね^^?
0654デフォルトの名無しさん
2006/03/27(月) 19:06:18, ': . : . : . : . : . : . : . : . : . : . :ヽ\: . : . }: . :.ヽ
/: . : . : . : . : . : . : . : . : . : . : . : . : :/´ ̄ヽ: . :ヽ
/: . : . : . : . : . : . : . : . : . : . : . : . __/: . : . : . : }: . : .゙,
__/: . : . : . : . : . : . : . : . : . : . : . : . : /: . : . : . : ./: . : . :',
/: .ィ/ヽヘ/レ'^'´`|: . |_: . : . : ./: . : . : . : . ハ: . : . : .!
/ /´l| |: . : . : :| ´レ、: ../: /: . : . : . /:.:.: . : . : |
/ /l| |ィ: . : .ハ| ゙/ /: . : . : . :/: . : . : . : :|
/: .:.;| |ハ: . :| ! ;゙./: . : . : . :/: . : . : . : . :l
/: :.:/∧ ! |: .| l:i: . : . : . :/: . : . : . : . : :l
/:.:./ ´ ゙, !:.l |:!: . : . : ./: . : . : . : . :.. ;'
::/ '、\ レ |!: . : . : /:.:.,. --、: . : ../ お願い!もうやめて・・!
'、_`¬ |l: . : . :.バ゙ ,r ';. : ./ 法線は悪くないの!全部私が悪いの!
| ̄ヾ ゝニ ー_‐_'' ´ |: . : :.| 〈:.:. /:.:/
!::: `´ ̄ ̄`ぅ。|: . : :| ノ //
'、 ' :::::: |: . l | _/´ ̄`丶、
\ l: .l: | / ヽ
`ヾ、ー ´ ̄'^ヽ ,.ィ: l;.:', | ヽ
/` ー-‐彳l ´`ヽリ\ヾ、 `、
{ l || ` `lト`ー''´ f:. ヽ
0655デフォルトの名無しさん
2006/03/27(月) 19:07:33またお前のせいか!
つか誰だおめー
0656デフォルトの名無しさん
2006/03/27(月) 19:12:09法線ぐらい計算しろよ
0657デフォルトの名無しさん
2006/03/27(月) 19:12:34D3DXに法線を生成してくれる関数がある。
0658デフォルトの名無しさん
2006/03/27(月) 19:16:31正四面体で1つの面だけがやたら細かく分割されてるような場合でも綺麗にグーローかかるん?
0659デフォルトの名無しさん
2006/03/27(月) 19:27:59THX
助かりました〜^^
0660デフォルトの名無しさん
2006/03/27(月) 19:35:30>>518,527
始めは速度云々の問題じゃなくて精度についていってたんだよ。
アホが入ってきて話がおかしくなった。
問題は>>518がミリ単位での計算しか頭に入ってなかったってだけ。
まあ、それは問題になるかならないかはおいておいて、
16.666666666msなんて数値を当てにしているとしたら、小数点部分の計算はでかい誤差になんじゃねーか?って話。
でも、実運用ではまったく違いはでないかもね。
Windowsのタイマーが糞いい加減だから。
でも、計算式はちゃんとしておきたいよね。
ってただそれだけの話。速度とかいってんのみてらんないさっさとプログラマ辞めちゃえよ。お前なんかいらないだろ。ぷw
0661デフォルトの名無しさん
2006/03/27(月) 19:38:08餌が腐ってる
0662デフォルトの名無しさん
2006/03/27(月) 19:39:42寧ろ精度を求めてfloat使う方がイカレてるんでわ?
以下ループ
0663デフォルトの名無しさん
2006/03/27(月) 19:41:06CPUによっちゃintより演算速かったりするんだが。
0664デフォルトの名無しさん
2006/03/27(月) 19:41:450665デフォルトの名無しさん
2006/03/27(月) 19:49:40計算速度も速くしたって全く意味がないから、
floatで十分だし、floatなら精度とか気にせず人間に
わかりやすいし、何の問題もない。
したがってintにする意味が全くない。
intはわかりやすさの観点からちょっと不自然。
0666デフォルトの名無しさん
2006/03/27(月) 19:53:35floatにする理由がさっぱりわからない
0667デフォルトの名無しさん
2006/03/27(月) 19:55:48精度を考えて数をかけたり、ぴったり60fpsにしたりするのの
どこがわかりやすいのかさっぱりわからん。
精度も速度も「全く一緒」といって差し支えないぐらいだし。
0668デフォルトの名無しさん
2006/03/27(月) 19:58:07始まったんじゃないのかよ。
だから、floatで良いって話なのに。
最初は「floatはダメ」だったのに今はfloatにする意味がないって主張が
変わってきてる。
間違いを認めたんだろう。
0669デフォルトの名無しさん
2006/03/27(月) 19:58:200670デフォルトの名無しさん
2006/03/27(月) 19:59:130671デフォルトの名無しさん
2006/03/27(月) 20:00:57相手にしない方が良かったかも知れん。
>>476で
>ゲームでもっともCPUを使う時間が長いのがFPS制御部分
>無駄なことは極力避けたい
と言ってる時点でヤバイと思ったが、まさか本気だったとは。
0672デフォルトの名無しさん
2006/03/27(月) 20:03:54つまり全体の96%がFPS制御の時間になりますよ
0673デフォルトの名無しさん
2006/03/27(月) 20:05:510674デフォルトの名無しさん
2006/03/27(月) 20:12:53例えば>>517のようなソースを書いた場合、1フレームにつき一回しか
ルーチンが回ってこない。一回のルーチンにつきたかだか
数回の演算をしてるだけ。
そして>>574や>>576をみると、floatの演算は1回につき0.00001msとかだから、
結局16.6ms中の0.0001ms以下じゃないかな。
0675デフォルトの名無しさん
2006/03/27(月) 20:13:27ビデオキャプチャーを4つほど開きたいんですが、3つは開くけど4つ目が開かない。
ところがメインプログラムのフォームを、CreateProcess()で開いたプログラムの上に持ってきて、マウスで移動したら4つ目が開いた。(しかも再現する)
こんな説明ではわからん・・でしょうが、いったい何事が?
(これから移動しますので、誰かヒントくれてもお礼は書けません。悪しからず)
0676デフォルトの名無しさん
2006/03/27(月) 20:16:23, ': . : . : . : . : . : . : . : . : . : . :ヽ\: . : . }: . :.ヽ
/: . : . : . : . : . : . : . : . : . : . : . : . : :/´ ̄ヽ: . :ヽ
/: . : . : . : . : . : . : . : . : . : . : . : . __/: . : . : . : }: . : .゙,
__/: . : . : . : . : . : . : . : . : . : . : . : . : /: . : . : . : ./: . : . :',
/: .ィ/ヽヘ/レ'^'´`|: . |_: . : . : ./: . : . : . : . ハ: . : . : .!
/ /´l| |: . : . : :| ´レ、: ../: /: . : . : . /:.:.: . : . : |
/ /l| |ィ: . : .ハ| ゙/ /: . : . : . :/: . : . : . : :|
/: .:.;| |ハ: . :| ! ;゙./: . : . : . :/: . : . : . : . :l
/: :.:/∧ ! |: .| l:i: . : . : . :/: . : . : . : . : :l
/:.:./ ´ ゙, !:.l |:!: . : . : ./: . : . : . : . :.. ;'
::/ '、\ レ |!: . : . : /:.:.,. --、: . : ../ お願い!もうやめて・・!
'、_`¬ |l: . : . :.バ゙ ,r ';. : ./ 悪しからずは悪くないの!全部私が悪いの!
| ̄ヾ ゝニ ー_‐_'' ´ |: . : :.| 〈:.:. /:.:/
!::: `´ ̄ ̄`ぅ。|: . : :| ノ //
'、 ' :::::: |: . l | _/´ ̄`丶、
\ l: .l: | / ヽ
`ヾ、ー ´ ̄'^ヽ ,.ィ: l;.:', | ヽ
/` ー-‐彳l ´`ヽリ\ヾ、 `、
{ l || ` `lト`ー''´ f:. ヽ
0677デフォルトの名無しさん
2006/03/27(月) 20:17:24それはメモリが足りてないとか。
0678デフォルトの名無しさん
2006/03/27(月) 20:56:46>>676のAAのちっこい版って結構需要あるんじゃね?
0679デフォルトの名無しさん
2006/03/27(月) 20:58:07リフレッシュレートが70Hzだったりする罠。
そもそもの目的は、いったい何だ?
0680デフォルトの名無しさん
2006/03/27(月) 20:58:29気が引けるわけだが、floatだと仮数部が23bitしかないから
そこもちゃんと考慮しないとすぐに精度がintより酷くならないか?
適当に電卓叩いてみたけど、2時間半で精度が逆転しない?
0681デフォルトの名無しさん
2006/03/27(月) 21:01:380682デフォルトの名無しさん
2006/03/27(月) 21:05:15こうですか?わかりません><
http://aa5.2ch.net/test/read.cgi/aasaloon/1141656008/646
0683デフォルトの名無しさん
2006/03/27(月) 21:30:22うむ。
普通に60Hzぴったりだ。(何故かw)
0684デフォルトの名無しさん
2006/03/27(月) 21:44:1760とは限らないような・・・
0685デフォルトの名無しさん
2006/03/27(月) 21:49:4712HZぐらい見える!
ゲーム死亡!
0686デフォルトの名無しさん
2006/03/27(月) 21:53:070687デフォルトの名無しさん
2006/03/27(月) 21:54:11例によってレアケースはどうでもいいw
0688デフォルトの名無しさん
2006/03/27(月) 21:54:33, ': . : . : . : . : . : . : . : . : . : . :ヽ\: . : . }: . :.ヽ
/: . : . : . : . : . : . : . : . : . : . : . : . : :/´ ̄ヽ: . :ヽ
/: . : . : . : . : . : . : . : . : . : . : . : . __/: . : . : . : }: . : .゙,
__/: . : . : . : . : . : . : . : . : . : . : . : . : /: . : . : . : ./: . : . :',
/: .ィ/ヽヘ/レ'^'´`|: . |_: . : . : ./: . : . : . : . ハ: . : . : .!
/ /´l| |: . : . : :| ´レ、: ../: /: . : . : . /:.:.: . : . : |
/ /l| |ィ: . : .ハ| ゙/ /: . : . : . :/: . : . : . : :|
/: .:.;| |ハ: . :| ! ;゙./: . : . : . :/: . : . : . : . :l
/: :.:/∧ ! |: .| l:i: . : . : . :/: . : . : . : . : :l
/:.:./ ´ ゙, !:.l |:!: . : . : ./: . : . : . : . :.. ;'
::/ '、\ レ |!: . : . : /:.:.,. --、: . : ../
'、_`¬ |l: . : . :.バ゙ ,r ';. : ./ 全部お前が悪い!
| ̄ヾ ゝニ ー_‐_'' ´ |: . : :.| 〈:.:. /:.:/
!::: `´ ̄ ̄`ぅ。|: . : :| ノ //
'、 ' :::::: |: . l | _/´ ̄`丶、
\ l: .l: | / ヽ
`ヾ、ー ´ ̄'^ヽ ,.ィ: l;.:', | ヽ
/` ー-‐彳l ´`ヽリ\ヾ、 `、
{ l || ` `lト`ー''´ f:. ヽ
0689デフォルトの名無しさん
2006/03/27(月) 21:54:530690デフォルトの名無しさん
2006/03/27(月) 21:57:06オマイのしょぼい液晶なんてどうでもいいw
0691デフォルトの名無しさん
2006/03/27(月) 21:58:04http://aa5.2ch.net/test/read.cgi/kao/1138460852/877
0692デフォルトの名無しさん
2006/03/27(月) 22:12:43/: . : . : . : . : . : . : .,>‐'.、 ヽ
__/: . : . : . : . : . : . : .7.: . : .}: . ゙,
/: ィハヘノレ^l: . ト 、/ . : . ハ: . : .',
//l. lハ イ ./: . : /.: : . : . | 職人さんありがとう
: /ヘ ' ,リ .li : . /., -、 . : l
゙,\__ '' .l! : .バ.〈;: } . ,'
. iー、' `ー=-'l!: .| ノ./: /
l:: , ゙ ̄`ぅ。: .| / ̄`ヽ、
ヽ、、__ - 、:::;;l.:.l l ヽ、
`7ー-, イ`l:ハ:ヾ、._ , f:. `、
0693デフォルトの名無しさん
2006/03/27(月) 22:41:02お前等に呪いをかけてやる!
呪いの言葉↓
クリエイトコンパチクビディーシィー
呪いの言葉↑
これでもうこの関数を使うたびにお前等はこの糞レベルのギャグを思い出さずにはいられない!
あまりのくだらなさに思い出すたびに心底腸が煮えくり返る衝動にかられちゃえよ!
ちなみに俺も長年解除は不可能だ・・・orz
0694デフォルトの名無しさん
2006/03/27(月) 22:46:10トライアングルストリップ劇場
0695デフォルトの名無しさん
2006/03/27(月) 22:56:47セックスファイル
0696デフォルトの名無しさん
2006/03/27(月) 23:01:32ダイレクトセックス
0697デフォルトの名無しさん
2006/03/27(月) 23:02:280698デフォルトの名無しさん
2006/03/27(月) 23:24:54DirectX総合スレ (Part4)
http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
0699デフォルトの名無しさん
2006/03/27(月) 23:26:160700デフォルトの名無しさん
2006/03/28(火) 00:05:26糞
こっちの方が楽しい!
0701247
2006/03/28(火) 05:51:050702デフォルトの名無しさん
2006/03/28(火) 05:51:460703デフォルトの名無しさん
2006/03/28(火) 06:23:38関係ない。
その場合はその前にDWORDの値が問題になるはず。
それに何日間だよ一体w(50日近くつけっぱか?w)
0704デフォルトの名無しさん
2006/03/28(火) 07:18:00将来CRTが無くなればVSYNCに縛られることもなくなる
0705デフォルトの名無しさん
2006/03/28(火) 07:24:080706デフォルトの名無しさん
2006/03/28(火) 07:25:19>その場合はその前にDWORDの値が問題になるはず。
お前はMSが披露してるtipsすら読まんのか…
DWORDのffffffff→0が問題になるのはアホが組んだ時だけ
問題にすらならんわ
0707デフォルトの名無しさん
2006/03/28(火) 07:38:41だからdoubleがいいっていう理由がわからない。
0708デフォルトの名無しさん
2006/03/28(火) 08:55:04左上と真ん中
どちらのポイントを保持して使うべきですか
0709デフォルトの名無しさん
2006/03/28(火) 09:08:130710デフォルトの名無しさん
2006/03/28(火) 09:49:06ちゃんと嫁
DWORDで問題ないと書いてある
0711デフォルトの名無しさん
2006/03/28(火) 09:56:45回転するなら真ん中
0712お父さん
2006/03/28(火) 11:44:120713デフォルトの名無しさん
2006/03/28(火) 12:51:160714デフォルトの名無しさん
2006/03/28(火) 14:57:03累積時間に対して精度を求めないならdouble使わなくていいよ
上のほうで出てるコードだと累積時間使ってないからfloat/intでええんとちゃう
0715デフォルトの名無しさん
2006/03/28(火) 16:57:370716デフォルトの名無しさん
2006/03/28(火) 21:20:080717デフォルトの名無しさん
2006/03/28(火) 21:22:250718デフォルトの名無しさん
2006/03/28(火) 21:55:51それより大変だ!DirectX7の日本語ヘルプ無くなってた。俺ヤバイ
0719デフォルトの名無しさん
2006/03/28(火) 22:22:39もう10がでるっつーのにそんなゴミ使ってるお前の頭が一番ヤバイ。
0720デフォルトの名無しさん
2006/03/28(火) 22:34:45春休み氏ね
0721デフォルトの名無しさん
2006/03/28(火) 22:51:56なんどでもいってやるよ!クズが!
どうせエロゲPGだろ?
死ねよこのゴキブリ野郎!
チンコおっ立てながらプ
0722デフォルトの名無しさん
2006/03/28(火) 22:55:470723デフォルトの名無しさん
2006/03/28(火) 22:56:25デバイスロストがないのが地味に最高
0724デフォルトの名無しさん
2006/03/28(火) 23:04:02ラデインj7500 64M だぜぇぇっぇ!!!!
dRECTX7世代 最強”
0725デフォルトの名無しさん
2006/03/28(火) 23:26:18http://homepage2.nifty.com/natupaji/DxLib/dxuse_bcc.html
を見て進めていったんですけど、[プロジェクト]→[メイク]の段階で
エラー F1009 c:\documents and settings\○○\my documents\c_programs\test2\drawpixel.cpp: 入力ファイル 'c:\documents and settings\○○\my documents\c_programs\test2\drawpixel.cpp' をオープンできない
*** 1 errors in Compile ***
** error 1 ** deleting Debug\DrawPixel.obj
ってエラーが出るんですけど、どうしたら良いんでしょうか?
ご教授お願いしますm(_ _)m
0726デフォルトの名無しさん
2006/03/28(火) 23:55:07前スレに上がってたよ
おまけにまだURL生きてたよ
http://gamdev.org/up/img/****.zip
*に数字を入れて当ててね
ヒント:4049
0727デフォルトの名無しさん
2006/03/28(火) 23:55:39日本語だぞ。
0729718
2006/03/29(水) 00:04:16ありがとうございました!(多謝
0730726
2006/03/29(水) 00:05:31代わりに上げといた
ってあぷろどしてる間に見つかりましたか
大変失礼しました
0732725
2006/03/29(水) 01:19:11って出てるんで、オブジェクトファイルを作ればいいんでしょうけど、やり方がどうにも分からなくて…。
0733デフォルトの名無しさん
2006/03/29(水) 04:09:13頭悪いくせにへんなやり方するからだよw
つ ヒント:打ち間違え
0734デフォルトの名無しさん
2006/03/29(水) 07:55:460735デフォルトの名無しさん
2006/03/29(水) 20:05:03一度レンダリングした画像をテクスチャとして使いたいのですが、
その画像の背景部(黒)を透明化する方法がわかりません。
今のところ
D3DXCreateTexture
を使ってテクスチャを作成していますが、
どのようにすればいいでしょうか?
0736デフォルトの名無しさん
2006/03/29(水) 20:09:28A1R5G5B5
上記のフォーマットに対応していないボードってあるのでしょうか?
(オンボードでは対応してないのを1つだけ確認しましたが、、、)
0737デフォルトの名無しさん
2006/03/29(水) 21:03:16なんかデジャヴを感じるが…
レンダーターゲットテクスチャをA8R8G8B8なりで作ればいいはず
0738デフォルトの名無しさん
2006/03/29(水) 21:10:57dxinfoでググレ
0739デフォルトの名無しさん
2006/03/29(水) 21:11:52返信ありがとうございます。
D3DXCreateTextureFromFileEx は使ったことあるので、
そういうノリでやればいいのはわかってるんですが、
ファイル入力段階ではなく、出来上がってしまってからのテクスチャに
どういう関数を使えばいいのかが見つけられないのです・・・
デジャヴということはこの擦れにあるのでしょうか、
時間なくて見れてませんでしたが、取りあえずスレを頭から読んでみます。
0740デフォルトの名無しさん
2006/03/29(水) 21:46:370741デフォルトの名無しさん
2006/03/29(水) 22:26:41その色指定をアルファに書き込む関数をさっきから探してるんですが、みつかりません。
もしかして微妙にずれて考えてますか?
0742デフォルトの名無しさん
2006/03/29(水) 22:29:03関数などない。
ロックして自分でテクセル弄れ。
0743デフォルトの名無しさん
2006/03/29(水) 22:29:330744デフォルトの名無しさん
2006/03/29(水) 22:31:15そういうことでしたか・・・、そりゃ見つからないですね
ありがとうございました、試行錯誤してみます。
0746デフォルトの名無しさん
2006/03/29(水) 22:59:07これで十分かもしれないし
0747デフォルトの名無しさん
2006/03/29(水) 23:23:23そうなの?
書き込むときにピクセルシェーダ使ってできると思ってたけどそうでもないんだ?
それか、貼るときにマルチテクスチャ→ピクセルシェーダで小細工。とか。
0748デフォルトの名無しさん
2006/03/29(水) 23:30:53PS使えば確かに出来るが、
環境依存しない関数はないって事だろう。
0749737
2006/03/29(水) 23:44:13>>739
ファイル入出力なんざ関係無い
D3DDevice9::CreateTexture()でレンダーターゲットかつA8R8G8B8の空テクスチャ作って
そこに描画すればいいんじゃねーのと言ってるんだが
D3DDevice9::Clear()でクリアするときは引数の4番目に0を渡せ
0750デフォルトの名無しさん
2006/03/29(水) 23:48:270751デフォルトの名無しさん
2006/03/29(水) 23:51:51「最近のDirectX SDKには主要なビデオカードのDeviceCapsのリストが載っている」
との事ですが、どこに載っているのでしょうか?
ご存知の方がいらっしゃいましたら、お願いします。
0752デフォルトの名無しさん
2006/03/30(木) 00:49:290753デフォルトの名無しさん
2006/03/30(木) 02:05:38ずっとMRTのことだと思っていて、何でそんなことで悩むのか分からなかった。
MRT使うにはPSが必須だし。
0754デフォルトの名無しさん
2006/03/30(木) 10:13:38DirectMusicを使って、MIDIの再生をしています。
MIDIの再生はDirectMusicに任せるのではなく
自前でMIDIメッセージを送っています。
音色には"Default GM Collection"か
自前で用意したDLS音色データを使ってます。
再生自体はうまくいっております。
そこで、このDirectMusicで演奏した結果を
WAV(PCM)としてファイル書き出したいのですが
1つのソフト内で完結できるよい方法はないでしょうか。
WINAMPのプラグインで実現できているようですが。
DirectSoundをいじって出来るのでしょうか。
現状では
IDirectMusic8::SetDirectSound() にはNULLを指定しています。
環境
WindowsXP SP2
Visual C++ .NET 2003 (MFC)
DirectX SDK 9.0
解決方法もしくは参考になるページ等ありましたら教えてください。
0755デフォルトの名無しさん
2006/03/30(木) 10:27:490756デフォルトの名無しさん
2006/03/31(金) 07:51:010757デフォルトの名無しさん
2006/03/31(金) 09:16:560758デフォルトの名無しさん
2006/03/32(土) 01:29:070759デフォルトの名無しさん
2006/03/32(土) 01:55:05mcode\motelar..pebla:mo/1240984421/ac/aza/ready
mcode\motelar..dsp:dsp:mo/fcp/nec43554n2mr_/ac/aza/ready
dplus[mcode_back/110011/]dsp:dsp/a/ac/aza/ready
これ何のプログラムで触るかわかりませんか?
0760デフォルトの名無しさん
2006/03/32(土) 07:41:1111箇所にマルチ乙
0761デフォルトの名無しさん
2006/03/32(土) 23:30:46らいとってハードで4個までしか対応してないのですか〜><?
0762デフォルトの名無しさん
2006/04/02(日) 16:14:31LPDIRECT3DSURFACE9 型のサーフェスが持つビットデータを、直接取得/設定するにはどうすればいいでしょうか。
D3DXLoadSurfaceFromFile を使えば、サーフェスに画像を読み込むことはできます。
が、例えば 座標 (100, 100) の色を調べたい、座標 (100, 100) を黒 (0, 0, 0, 0) にしたい、などの方法が分かりません。
ビットデータのアドレスを取得できればどうにかなるのですが・・・。
よろしくお願いします。
0763デフォルトの名無しさん
2006/04/02(日) 16:37:420765デフォルトの名無しさん
2006/04/02(日) 18:04:14Lockできるなら、Lockして直接アクセス。
Lockできないなら、システムメモリにサーフェス作ってそこに転送。
0766デフォルトの名無しさん
2006/04/02(日) 23:21:52テクスチャの一部を色抜きしたくてアルファテストを
試しているのですが、どうしても成功しません。
ttp://www.c3.club.kyutech.ac.jp/~sukiyaki/index.php?%A5%AB%A5%E9%A1%BC%C8%B4%A4%AD
http://platz.jp/~moal/colorkey.html
http://www.roy.hi-ho.ne.jp/pastel/home/DirectX/DX8_kouza/spr_ckey.html
ここらへんを参考にしているのですが、DirectX 8 と 9 で
仕様が違うのでしょうか。。
他に気になる点はマテリアルを設定しているのが問題なのかも・・・。
アルファテストで押さえるべきポイントはなんですか?
開発環境: DirectX 9.0c (December 2005) + VC++ 2003
0767766
2006/04/03(月) 00:00:07http://www.mvps.org/directx/scrapyard/
ここの Alpha Ball Demo を試したら成功したので、
ハードが対応していない、ということではなさそうです。
0768デフォルトの名無しさん
2006/04/03(月) 01:04:58アルファテストはレンダリング最終段階で適用されるので、
その時点でのα値が期待通りになっているようにする。
具体的には、使用する全てのテクスチャステージで
D3DTSS_ALPHAOP, D3DTSS_ALPHAARG1, D3DTSS_ALPHAARG2
を適切に設定する。
レンダリングステートも関係あるものは全てちゃんと設定しないと駄目。
0769766
2006/04/03(月) 01:07:39板汚しでスミマセン。
0771デフォルトの名無しさん
2006/04/03(月) 14:13:43ID3DXLineを使って3次元ポリラインを作っているつもりなんですが。
カメラをどのように修正しても、常に位置が変動しない
ワールド座標じゃなくてビューポート座標?に表示されてるようなのですが、
これを他のオブジェクト同様、カメラに合わせて変動させるようには出来ないでしょうか?
お願いします。
0772デフォルトの名無しさん
2006/04/03(月) 15:50:55D3DXの関数を使わなければならない理由が何かあるの?
0773771
2006/04/03(月) 16:26:40三次元で360度から描画する必要がある事
そんな時にラインを使う必要が出てきたのですが、
D3DX9からライン用のクラスがあると知ったので使ってみようと思いました。
D3DXMatrixIdentity(&mat);
D3DXMatrixIdentity(&world);
D3DXMatrixIdentity(&temp);
D3DXMatrixMultiply(&temp, &world, Cam->GetView());
D3DXMatrixMultiply(&mat, &temp, Cam->GetProj());
m_pd3dLine->DrawTransform(頂点配列, 頂点数, &mat, 頂点カラー);
いまこういう状態なのですが今度はまったく表示されません・・・
0774デフォルトの名無しさん
2006/04/03(月) 16:47:35あれほど簡単に2D/3Dのラインが引けるものもないだろうに。
0775771
2006/04/03(月) 16:53:36pD3DDevice->SetTransform(D3DTS_WORLD, &world);
が抜けてたんですね・・・
>>774
アドバイスありがとうございます、
とりあえず動いたのでこのまま続けてみようと思います
0776デフォルトの名無しさん
2006/04/03(月) 23:53:31みなさん、こんばんは
2D->3DにはD3DXVec3Unprojectを使えば楽勝です^^
0777デフォルトの名無しさん
2006/04/04(火) 22:04:07始点 0,0,0
終点 20,50,100
方向ベクトルの求めるときは
方向ベクトル=終点ー始点
でいいでしょうか><?
それと D3DXIntersect で
対象メッシュが拡大、回転、移動されていると正常に動かないですがどうしたらいいでしょうか><?
0778デフォルトの名無しさん
2006/04/04(火) 22:04:440779デフォルトの名無しさん
2006/04/04(火) 22:07:49>>
そんなこと言わないでください><
浮上します^^
0780デフォルトの名無しさん
2006/04/04(火) 22:15:54逆行列で光線ベクトルを変換してからD3DXIntersectに突っ込め。
それでも分からないなら素直にそこらへんのライブラリでやれ。
0781デフォルトの名無しさん
2006/04/04(火) 22:33:48帰れ
お前のせいでレスをどんだけ無駄にしたと思ってんだ
0782デフォルトの名無しさん
2006/04/04(火) 22:34:55D3DXMATRIX mat2,mat;//モデルの行列
mat=モデルの行列(回転 移動 拡大)
D3DXMatrixIdentity( mat2);;//単位行列いれます。
D3DXMatrixInverse( mat2, NULL, mat);//逆行列もとめる
D3DXVECTOR3 p1(0,0,0),p2(100,100,20);//始点と終点
p2=p2-p1;//やっぱりp2は方向ベクトルに変更です><
p2*=mat2;方向ベクトルに逆行列かけます。
//ついに当たり判定!
D3DXIntersect(
mesh // [in] テストするメッシュを表す。
&p1, // [in] [in] レイの始点座標を指定する
&p2, // [in] レイの方向を指定する
&hit, // [out] BOOL へのポインタ。
NULL, // [out] pHit が TRUE の場合、レイの始点に最も近い面のインデックス値へのポインタ。
NULL, // [out] 重心ヒット座標 U へのポインタ。
NULL, // [out] 重心ヒット座標 V へのポインタ。
NULL, // [out] レイの始点から交点までの距離へのポインタ。
NULL, // [out] D3DXINTERSECTINFO 構造体の配列を格納する ID3DXBuffer オブジェクトへのポインタ。
NULL);
でおkですかね^^;
0783デフォルトの名無しさん
2006/04/04(火) 22:36:46>>
みなさん意地悪ですね><;
僕、怒っちゃいますよ^0^/
0784デフォルトの名無しさん
2006/04/04(火) 22:44:550785デフォルトの名無しさん
2006/04/04(火) 22:49:07>>
>またこいつか
違います、前回はぼくの弟です><;
0786デフォルトの名無しさん
2006/04/04(火) 23:30:58>>
動きましたー^^
ありがとうございました
また、ピンチになったらきますねー^^
0787デフォルトの名無しさん
2006/04/06(木) 14:03:29送信側は50ms間隔で数バイトを送信、
受信側はひたすら受け取る(処理速度には余裕有り)
双方をローカルで動作させdp8simで試しています。
dp8simをOFFにすれば、当然問題なく通信できるのですが、
dp8simのlatencyを100ms等にすると、受信側のデータに遅れが蓄積されていきます。
latencyが100msあったとしても、受信側が受け取るのが100ms遅れるだけで、蓄積される要素は無い様に思えるのですが・・
DPNSEND_SYNCや、DPNSEND_GUARANTEEDも指定していないですし。
何故なのでしょうか?
0788787
2006/04/06(木) 19:00:30latency変えただけで、帯域は制限してないの・・・
もしかして、dp8simのlatencyシミュレート中は他の通信止めるとかいう糞仕様なのか?
0789デフォルトの名無しさん
2006/04/06(木) 20:19:12現時点のDirectXでは既に切り捨てられてるしな。
0790デフォルトの名無しさん
2006/04/06(木) 20:46:17いざ編集を終えて自サイトを見てみると文字化けしてしまいます。
他のサイト全般ではエンコードが「日本語(シフト JIS)」のところが、自サイトは「日本語(EUC)」で通常表示されます。
これを直す方法をどなたかご存知ないでしょうか
0791デフォルトの名無しさん
2006/04/06(木) 21:00:06死ね
0792デフォルトの名無しさん
2006/04/06(木) 21:00:520793790
2006/04/06(木) 21:37:03スルー御願いします。
0794デフォルトの名無しさん
2006/04/07(金) 21:23:32DirectShowとDirectGraphicsを使いプログラムを組もうと思っているのですが
どうしても文字を動画よりも上に重ねることができません。
似たようなことを解説しているサイト、または実際に作ったという方はいませんでしょうか?
0795787
2006/04/07(金) 22:03:35サンクス
保証通信とか、シーケンシャルとか署名とか既製で便利なので・・・
もう少し粘って駄目だったら、諦めてWinSockに移る事にします。
0796デフォルトの名無しさん
2006/04/07(金) 22:45:44D3DXSprite
DrawPrimitiveUP
ではDrawPrimitiveUPの方が速い。
0797デフォルトの名無しさん
2006/04/07(金) 22:47:18D3DXSprite
DrawPrimitiveUP
ではDrawPrimitiveUPの方が速い。
0798デフォルトの名無しさん
2006/04/07(金) 23:00:09DrawPrimitiveUP
ではDrawPrimitiveUPの方が速い。
0799デフォルトの名無しさん
2006/04/07(金) 23:03:10DrawPrimitiveUP
ではDrawPrimitiveUPの方が速い。
0800デフォルトの名無しさん
2006/04/07(金) 23:30:150801デフォルトの名無しさん
2006/04/08(土) 00:56:160802デフォルトの名無しさん
2006/04/08(土) 01:51:340803デフォルトの名無しさん
2006/04/08(土) 02:14:21三角形10000万個をDrawPrimitive1回で1三角形の計10000回呼び出しと
10000個の三角形を1つのバッファにまとめて1回の呼び出しとで速度比べてこい。
0804デフォルトの名無しさん
2006/04/08(土) 02:22:370805デフォルトの名無しさん
2006/04/08(土) 02:38:21ある程度まとめてから一括で描画してるっぽい。
0806デフォルトの名無しさん
2006/04/08(土) 05:54:390807デフォルトの名無しさん
2006/04/08(土) 08:49:20前に俺が測ったときはほとんど差がでなかったの覚えてる。
0808デフォルトの名無しさん
2006/04/08(土) 08:54:41ハードの進化や、ドライバの更新で現在はどうなってるか分かったもんじゃない。
何でもかんでも鵜呑みにするのはどうかと・・・
結局自分で測定するしかない。
0809デフォルトの名無しさん
2006/04/08(土) 08:55:11でもって、そういうの考えるのって意味なくない?
結局、シェーダがちがっちゃえば別のバッファにわけるしかないのに、
わざわざまとめることなんていまの時代絶対に無いっていいきれるじゃん。
テクスチャが違ってもわけるしかないし、アルファが入ってもいっしょにできないし、
必要なuvの数が違っても、アドレッシングモードが違っても、法線、従法線、接線の有無でも、
スペキュラが入っても分けるしかないし。
いっしょにまとめるようにする最適化なんて使われて無いだろ。
0810デフォルトの名無しさん
2006/04/08(土) 10:22:2112000頂点 x DP呼び出し1回 -> 約760FPS
6頂点 x DP呼び出し2000回 -> 約120FPS
昔試した時はこんな遅くはならなかった気がするんだけど、
ドライバ腐ってんのかなあ・・・。
3Dゲーじゃ考えるだけ無駄ってのは同意。
0811デフォルトの名無しさん
2006/04/08(土) 19:13:23今ピクチャーコントロールを使ってDirectXをレンダリングしています.
それでマウスのクリック座標からDirectX内部の座標を検出したいのです
そこで以下のように書いてみたのですが,どうも値がおかしい感じです
D3DXVECTOR3 MousePoint(pt.x, pt.y, 0);//マウス座標
D3DXVECTOR3 Re;
D3DVIEWPORT9 vp;//ビューポート
m_pD3DDevice->GetViewport(&vp);//ビューポートの取得
D3DXMATRIX mat;//マトリックスを生成し
D3DXMatrixIdentity(&mat);//それを初期化
D3DXMATRIX matProj = *m_cScene.GetCamProj();//カメラのプロジェクション行列を取得
D3DXMATRIX matView = *m_cScene.GetCamView();//カメラのビュー行列を取得
D3DXVec3Unproject(&Re, &MousePoint, &vp, &matProj, &matView, &mat);
return Re;
Z座標は基本的に使っていません.
何がおかしいのでしょうか・・・?
よろしくお願いします.
0812デフォルトの名無しさん
2006/04/08(土) 19:45:52何がおかしいって・・・・・頭がおかしいとしか言えない。
0813デフォルトの名無しさん
2006/04/08(土) 19:48:43地点を求めるなら直線と対象物の交点を出せ。
0814811
2006/04/08(土) 20:43:24カメラのxy座標と注視点のxy座業が常に同じであっても
交点を出さないといけないのでしょうか?
0815デフォルトの名無しさん
2006/04/08(土) 21:16:35話はそれからだ。
0816デフォルトの名無しさん
2006/04/08(土) 21:31:48D3DXVECTOR3 mpt2(pt.x, pt.y, -1);//マウス座標2
D3DXVECTOR3 Re;
/*
中略
*/
D3DXVec3Unproject(&mpt1, &mpt1, &vp, &matProj, &matView, &mat);
D3DXVec3Unproject(&mpt2, &mpt2, &vp, &matProj, &matView, &mat);
//Z座標0の時のx,y座標
Re.x = (0-mpt1.z)*(mpt2.x - mpt1.x)/(mpt2.z - mpt1.z)+mpt1.x;
Re.y = (0-mpt1.z)*(mpt2.y - mpt1.y)/(mpt2.z - mpt1.z)+mpt1.y;
Re.z = 0;
こういう風に買えてみましたが、解決してない模様・・・
根本的に間違ってますでしょうか・・・
0817デフォルトの名無しさん
2006/04/08(土) 21:34:210818811
2006/04/08(土) 22:20:28D3DXVec3Unproject(&mpt1, &mpt1, &vp, &matProj, &matView, &mat);
D3DXVec3Unproject(&mpt2, &mpt2, &vp, &matProj, &matView, &mat);
D3DXVECTOR3 v1(-10000,-10000,0);
D3DXVECTOR3 v2(10000, -10000, 0);
D3DXVECTOR3 v3(0, 50000, 0);
D3DXPLANE plane;
D3DXPlaneFromPoints( &plane, &v1, &v2, &v3 );
D3DXPlaneIntersectLine( &Re, &plane, &mpt1, &mpt2 );
どうにもこうにも・・・
もうすこしヒントいただけませんか
0819811
2006/04/08(土) 23:34:58>>
みなさん
教えてくださいよ〜^^
0820デフォルトの名無しさん
2006/04/08(土) 23:36:53スルー推奨。
0821デフォルトの名無しさん
2006/04/09(日) 00:01:57こっちに移動しろ
http://pc8.2ch.net/test/read.cgi/tech/1141400056/l50
0822デフォルトの名無しさん
2006/04/09(日) 12:55:262Dのスプライト表示にスペキュラとかシェーダーとか
法線、従法線、接線とか考えるってどんなすごいもん表示してるんだ?
3Dに関しても下手に節約するよりはある程度は使わない頂点突っ込んだまま
一括で処理する方が早い場合も多々あるし、そのためにセグメントバッファを
APIでサポートしたんだろ。
確かに最新とはいえないかもしれないがGPU gems2に普通に書かれてるネタだぞ。
例えばロボットをレンダリングするときでもそれぞれの稼動するパーツを別のメッシュで
持つよりも1ウェイトのワンスキンモデルにした方が高速にレンダリング出来る場合もある。
ATIか何かのやつで今のハードはテクスチャサイズが大きくても別に遅くならんと書かれてたし、
巨大なテクスチャにデータまとめてあとはシェーダーでなんとかするってのが主流になるんじゃないのか?
頂点データに属性のID入れるなりすれば其処までステートの切り替えが必要になるとも思えないが。
まぁ、結局は自分でゲームにあわせてボトルネック調べるしかないけど・・・。
0823デフォルトの名無しさん
2006/04/09(日) 20:25:27そこだけとっていわれてもねぇ。
アルファ物に関してはまったく同じものでもZが違えば別表示にするしかないじゃない。
俺がいいたいのは、もうそういう手間をかける意味がそもそも無いっていってるの。
考えるだけ無駄でしょ。
0824デフォルトの名無しさん
2006/04/09(日) 20:27:12そうやってまとめたとしてそれでちょびっと速度が上がったところで、
その場所のそのときのその一瞬のことでしかないわけじゃない?
それでそんな手間かけてそれでどうだっていうの?
もう、絶対にやってもしょうがないことなんでそんな意味ありそうにいうの?
頭悪いんじゃないの?お前w
0825デフォルトの名無しさん
2006/04/09(日) 20:41:44半透明だけ別にしても普通は不透明のモデルの方が圧倒的に多いと思うんだが・・・。
オープンエアー型のマップにしろBSP使うようなマップにしろ1単位を1メッシュ化できれば
それなりのパフォーマンスは見込めるし全体のパフォーマンスにかかわってくると思うんだが・・・。
まぁ重くなったらポリゴン減らせば
0826デフォルトの名無しさん
2006/04/09(日) 20:53:38はぁ?
その「ちょびっとでもない」ってそれモデルによるけどって話でしょ?
なんでそんな全体に影響しちゃう的ないい方してるわけ?この詐欺師。
0827デフォルトの名無しさん
2006/04/09(日) 21:08:530828デフォルトの名無しさん
2006/04/09(日) 21:39:42俺は>>826の事は釣り師だと思ってるから気にせんでくれ。
>>826
俺に言ってるのは全体のパフォーマンスにかかわるような場所に
適用してこそ効果が得られるって話をしてるんだ。
何もかもが全体に影響するわけはないのは当然。
効果的な場所を見つけて其処に適用するための労力まで惜しむのかって話。
まぁ趣味でやってる分には動けばそれでいいんだろうけど。
0829デフォルトの名無しさん
2006/04/09(日) 21:43:48そもそもどの最適化を優先するかは状況次第なんだから
そんな必死こいて否定しなくていいよ。
0830デフォルトの名無しさん
2006/04/09(日) 22:01:01明らかにその状況にあわせた最適化が必要な箇所なのに全体も糞もねぇだろ。この嘘吐きが。
0831デフォルトの名無しさん
2006/04/09(日) 22:02:14まったくの徒労だと思うけど。
おそけりゃ遅いでいいでしょ。間に合わなきゃフレーム落ちでもさせりゃ。
0832デフォルトの名無しさん
2006/04/09(日) 22:17:50じゃぁわかりやすく言ってみるか。
現状のDirectXとグラフィックスハードウェアで最も簡単と思われる処理の高速化
→DrawPrimitive()を減らす。
セグメントバッファも2Dのスプライトのバッファにまとめて一括描画も
全てここにつながる。
Direct3Dで1GHz程度のCPU上で動作させる場合、
1秒あたりDrawPrimitive()が10000~40000程度でCPU100%使い切るんだそうだ。
60フレームで動かすなら1フレームあたり670回も呼び出せばCPU100%使い切ることになる。
極端な話だが弾幕STGで弾1つを1DrawPrimitive()でやってたらどうなるだろうな。
アルゴリズム的な話はそもそも
0833デフォルトの名無しさん
2006/04/09(日) 22:18:22アルゴリズム的な話はそもそもGPUの最適化とは関係ないからスルー
0834デフォルトの名無しさん
2006/04/09(日) 22:42:38無駄の極地だな。
まったく売上に貢献しない会社のクズだな。
いや、クズならまだ害はないが、ホントこんな時代遅れのくそったれのもとで仕事しろなんて
言われた日には絶望で途方にくれる。
とだけ言っておく。
0835デフォルトの名無しさん
2006/04/09(日) 22:51:000837デフォルトの名無しさん
2006/04/09(日) 23:04:04結果として画面に表示できるオブジェクトの数が減ろうが、
沢山だして処理落ちしようが今はそういう時代だ・・・って事か。
0838デフォルトの名無しさん
2006/04/09(日) 23:08:550839デフォルトの名無しさん
2006/04/09(日) 23:17:29色々な事が理解できたよ。色々な事がね。
0840デフォルトの名無しさん
2006/04/09(日) 23:20:34それは今のシェーダが過渡期で、機能が限定されているからと注釈が必要。
効果ごとにシェーダを切り替えるという方式はいずれ無くなるだろうし
そうとは断言出来ないっしょ。
0841デフォルトの名無しさん
2006/04/09(日) 23:30:55シェーダ駆使したシーンじゃ意味ねえよって罵倒始めるのが
いつも出てくるよね。同じひと?
0842デフォルトの名無しさん
2006/04/09(日) 23:31:280843デフォルトの名無しさん
2006/04/09(日) 23:55:56「シェーダを使わない」ってのがDirectXの固定シェーダ機能を指してるのであれば最適化なんて語るだけ無駄。
なんで固定で済むのかって例によって汎用性重視の設計だから固定で済むわけだからその分やっぱり遅くなる。
そこでまとめるとどうとかそういう議論は全く意味がない。
0844デフォルトの名無しさん
2006/04/10(月) 00:11:07今だって条件分岐はサポートされてるんだから
それを理由にリクエストを減らすための最適化が
出来ないってのはちっとムリがないか?
ある程度ならテーブルをレジスタに入れておいて
インデックスは頂点のw要素にでも入れておくなり出来るんだし。
0845デフォルトの名無しさん
2006/04/10(月) 00:12:41それってホントに速くなんの?
0846デフォルトの名無しさん
2006/04/10(月) 00:29:42CPU負荷をGPUの頂点演算部分の負荷にまわす方法って感じ。
元々DrawPrimitiveの回数を減らすってのは
CPUがきつくてGPUが浮いてる時の回避方法だよ。
リクエストが多くてCPUがネックになるような状況では有効。
ピクセルシェーダーがネックな場合は意味なし。
頂点シェーダーがネックなら逆効果。
さっきの1GHzクラスで1フレーム670回のDrawPrimitive()ってのは
GPUへのコマンド送信にかかるCPU負荷の問題だから、
頂点数が多かろうが少なかろうが関係ない。
DrawPrimitive()は重いAPIだから極力callすんなって
M$も何かで言ってたっしょ。
0847デフォルトの名無しさん
2006/04/10(月) 00:32:24速度語るなら実測値持ってきてから言え。
引用は、あまり意味が無い。
0848デフォルトの名無しさん
2006/04/10(月) 00:48:450849デフォルトの名無しさん
2006/04/10(月) 00:49:54ちなみにDPの間にステート変更の中でもコストが高い
SetVertexShaderを挟むと100fps以下に落ち込む。
0850デフォルトの名無しさん
2006/04/10(月) 01:00:56計測も俺は微妙だと思うんだがな。
単純なサンプル用意して計測した結果と
実際のゲームに適用した結果だとあまりにも結果に差がありすぎる。
例えば、>>810みたいなことをゲームで実際にDrawPrimitiveをまとめてみても1FPSたりとも速度は上がらなかった。
それどころか、アルファの矛盾を無くすために2度描きまでしてるが1回しか描画しないときと比べて倍時間がかかってるわけではないようだし。(当然だけど)
こういうのって、計測結果がそうであってもそのシーンのその瞬間のことしか証明できてないと思うんだよね。
0851デフォルトの名無しさん
2006/04/10(月) 03:20:380852デフォルトの名無しさん
2006/04/10(月) 06:34:27俺は>>850みたいなことあると思うよ。
0853デフォルトの名無しさん
2006/04/10(月) 06:44:28公式で見つからない
0854デフォルトの名無しさん
2006/04/10(月) 06:57:19本人乙
0855デフォルトの名無しさん
2006/04/10(月) 07:00:460856デフォルトの名無しさん
2006/04/10(月) 07:07:09自分の目的に合わせた使いかたのサンプルで測定すれば良いじゃないか。
0857デフォルトの名無しさん
2006/04/10(月) 08:35:400858デフォルトの名無しさん
2006/04/10(月) 09:42:37ラインタイムならあるみたい。
http://www.microsoft.com/downloads/details.aspx?FamilyID=fb73d860-5af1-45e5-bac0-9bc7a5254203&DisplayLang=en
0859デフォルトの名無しさん
2006/04/10(月) 09:47:030860デフォルトの名無しさん
2006/04/10(月) 13:58:060861デフォルトの名無しさん
2006/04/10(月) 14:14:510862デフォルトの名無しさん
2006/04/10(月) 16:00:31DPを減らせってのはいまやDirecXじゃ基本中の基本だわな。
0863デフォルトの名無しさん
2006/04/10(月) 18:40:32DrawPrimitive減らすと言っても具体的にどうすりゃいいの?
0864デフォルトの名無しさん
2006/04/10(月) 18:50:380865デフォルトの名無しさん
2006/04/10(月) 19:53:59弾の数を減らせばいい
0866デフォルトの名無しさん
2006/04/10(月) 19:59:09天才現る
0867デフォルトの名無しさん
2006/04/10(月) 21:09:170868デフォルトの名無しさん
2006/04/10(月) 21:21:090869デフォルトの名無しさん
2006/04/10(月) 21:39:060870デフォルトの名無しさん
2006/04/10(月) 21:46:16レベル低っ!
0871デフォルトの名無しさん
2006/04/10(月) 22:07:21描画するなってのと同義だと思うよ。
0872デフォルトの名無しさん
2006/04/10(月) 22:33:05いや・・・・・マヂレスを避けてるだけなんだが
まとめてやればいいだけな話だろ
この程度もわからないならグラマやめろよ
0873デフォルトの名無しさん
2006/04/10(月) 22:34:500874デフォルトの名無しさん
2006/04/10(月) 22:37:56これがえらく不評でDrawPrimitiveに取って代わられたのよ
それでまた描画コールを減らしたいと?
ユーザー様は勝手だにゃー
0876デフォルトの名無しさん
2006/04/10(月) 22:46:10MSのヘルプにも載っているような事に、何延々ケチ付けてるんだ
このスレ、まともな質問回答レスが少ないよなw
ほとんどが不毛な議論だ
0877デフォルトの名無しさん
2006/04/10(月) 23:02:17std::vectorに頂点突っ込んでまとめてDP、ぐらいしか言うことねえし。
スプライト一個一個にステート変更が必要? それならバッチングは諦めろ。
0878デフォルトの名無しさん
2006/04/10(月) 23:06:0510.0とか、1000.0とか。
0879デフォルトの名無しさん
2006/04/10(月) 23:09:35弾はスプライト→△ポリゴンx2で描画→頂点4つでストリップor頂点6つでリストで描画
弾の数を減らさずにDrawPrimitive()を減らすって事は、
一回のDrawPrimitiveで書く頂点数を増やすって事に。
つまり600頂点とか入る頂点バッファを作って、
それを書き込みonlyでLockしてガリガリ頂点を書いていけばいい。
処理的には短なるコピーだし数が多ければ多いほどDrawPrimitiveを呼び出すよりはるかに速くなる。
STGの弾ならステートの変更が弾ごとに頻発するわけでもないからかなり効率よく纏められる。
自由にZでプライオリティ付けられるようなシステムにしておくとこの辺きつくなるから、
レイヤーみたいな構成で1レイヤーが1テクスチャandステートとかにしておくとかなり素敵。
あとは気合。
0880デフォルトの名無しさん
2006/04/10(月) 23:20:12まともな3Dモデルを出力する時は、DrawPrimitiveの数をプログラム的に減らすのはほとんど不可能。
モデリングの段階で最適化しておかなければならない。
結局見ている題材が違うんだよね。
0881デフォルトの名無しさん
2006/04/10(月) 23:24:32偉そうなこという前に流れ読め>>796
しっかし最初から下らない流れだなw
こんなので100レスかよ
0882デフォルトの名無しさん
2006/04/10(月) 23:33:180883デフォルトの名無しさん
2006/04/10(月) 23:40:08結論からいうと>>850が正しい。
他の奴は何言ってるのかわからない。
3Dの勉強いちからやりなおせ。
そもそもDrawPrimitiveをまとめていいことなんて1つもない。
ちょっとよく考えてみろ。
そもそも視錐台に入っていない物体の計算までやって速いわけがない。
シーンをまるごとつっこんだとしてカメラの視錐台にはいる=描画する必要のある物体はそのうちのどれだけだっていうんだよ。馬鹿。
DrawPrimitive1つにまとめるとかいってる奴は百回死ね。
描画処理の基本中の基本にして、速度アップにもっとも効果のあるクリッピングをやってねぇ時点で速いわけない。
はい、残念w
レベル上がったらまたおいでw
0884デフォルトの名無しさん
2006/04/10(月) 23:42:330885デフォルトの名無しさん
2006/04/10(月) 23:48:46せっかくアドバイスもらったんだから、
頑張って視錐台カリングを駆使した2DSTGを作ってね。
0886デフォルトの名無しさん
2006/04/10(月) 23:49:47D3DXCreateTextureFromFileExで、GIF画像は扱えないのでしょうか?
GIF画像を指定しているつもりですが、何も表示されなくなってしまいます。(PNGだと映る)
0887デフォルトの名無しさん
2006/04/10(月) 23:52:54まさか毎フレーム追加→削除を繰り返す動作なんて速いと思ってんじゃねーだろ?
やった時点でVertexBufferの恩恵はほぼないのはわかるよな?
2Dだろうと3Dだろうと1つのDrawPrimitiveにまとめるなんてまったくの無駄。
はい、ちんちんw
0888デフォルトの名無しさん
2006/04/10(月) 23:53:010889デフォルトの名無しさん
2006/04/10(月) 23:53:09m_pd3dDevice,
"sample.bmp", // ファイル名
0, 0, 0, 0,
D3DFMT_A1R5G5B5, // 色抜きを可能に
D3DPOOL_MANAGED,
D3DX_FILTER_LINEAR,
D3DX_FILTER_LINEAR,
D3DCOLOR_ARGB(255, 21, 141, 91), // 透過色を指定
NULL,
NULL,
&set.g_pTexture // テクスチャ名
);
D3DX_FILTER_LINEARが反映されない・・・・なんでやねん!
0890デフォルトの名無しさん
2006/04/11(火) 00:02:38「この関数がサポートしているファイル フォーマットは、
.bmp、.dds、.dib、.hdr、.jpg、.pfm、.png、.ppm、.tga」
無理みたい。
>>887
>まさか毎フレーム追加→削除を繰り返す動作なんて速いと思ってんじゃねーだろ?
それをやった結果が>>810。ちなみにVBじゃなくてstd::vector
0891デフォルトの名無しさん
2006/04/11(火) 00:04:22ヘルプを読むかぎり、bmp,png,jpeg,dib,tgaをサポートとあります。
ですが>>118であっさり「gifファイル〜」と話題にのぼっているので、GIFを扱えるテクニックがあるのかと思いまして。
0892デフォルトの名無しさん
2006/04/11(火) 00:09:00D3DXに無いだけの話。
0893デフォルトの名無しさん
2006/04/11(火) 01:04:25△ポリゴンx2も使うなヴォケ
0894デフォルトの名無しさん
2006/04/11(火) 02:17:07自演乙
0895デフォルトの名無しさん
2006/04/11(火) 02:41:35VertexBufferはDYNAMICで作成すればAGPメモリに配置されるし、
Lock時に書き込みONLYのフラグを指定すれば高速に書き換えられるんだが・・・
実際のそういう資料はいくつも存在するのになんで頭ごなしに否定してるんだ?
出来ないことは恥ずかしいことじゃないぞ。
これから出来るように勉強すればいいんだ。
0896デフォルトの名無しさん
2006/04/11(火) 02:42:31STRIPにしても縮退ポリゴンつっこもから結局スプライト1つに6頂点にならねぇ?
0897デフォルトの名無しさん
2006/04/11(火) 02:43:53クリッピングやってからインスタンス化できるようなシステムを
考えればいいだけだと思うんだけど。
0898デフォルトの名無しさん
2006/04/11(火) 02:47:50頂点キャッシュとデータ転送量の削減に期待して比較したことあるけど、
かなりヘビーな弾幕シューでもシーン毎に精々10000頂点程度、
しかもライティングは切るし、まず効果は出ない。
0899デフォルトの名無しさん
2006/04/11(火) 03:06:020900デフォルトの名無しさん
2006/04/11(火) 03:36:10ようは面積が0になるからレンダリングされないポリゴン。
シャドウボリュームなんかでも使わなかったっけ?
0901デフォルトの名無しさん
2006/04/11(火) 05:10:20弾の描画なんて三角ポリゴン一枚で十分じゃないのか?
どうせ透過するからポリゴンの形なんて関係ない
四角にする必要性がわからない
0902デフォルトの名無しさん
2006/04/11(火) 06:13:11それってVertexBufferを毎回確保しなおすから測るまでもなく遅いよw
0903デフォルトの名無しさん
2006/04/11(火) 06:25:21本当にPrawPrimitive一括描画って計測数値だけでみて速いって言えるんだろか?
不透明ポリゴンの前から描画とかもしないわけだし、なんか都市伝説のような気がしてきた。
0904デフォルトの名無しさん
2006/04/11(火) 10:38:00--------------------------------------------------------------------------------
ストリーム ソースの頻度値を設定します。このメソッドを使うと、複数インスタンスのジオメトリを描画できます。
構文
HRESULT SetStreamSourceFreq(
UINT StreamNumber,
UINT FrequencyParameter
);
パラメータ
StreamNumber
[in] ストリーム ソース番号。
FrequencyParameter
[in] このパラメータには 2 つの異なる値を設定できます。「複数インスタンスのジオメトリの効率的な描画」を参照してください。
戻り値
成功した場合は、D3D_OK を返します。
失敗した場合は、D3DERR_INVALIDCALL を返します。
1年以上前からハードウェアで実装されていて、
GPUGems2なんかでは丸々1章使って詳細に解説されているネタなんだが・・・。
半透明のモデルはそりゃ無理な話だが、極端なはなし草原で草を1本ずつDPで植えていくのか?っつー話だ。
0905デフォルトの名無しさん
2006/04/11(火) 10:53:38"Often reducing draw calls isn’t trivial"
"You can think of this as pretty much a fixed overhead per Draw call in DX9"
なんて言わないよ。"Most DX9 games are CPU bound"だってさ。
そ れ に 2 D ス プ ラ イ ト の 話 だ ろ ?
0906デフォルトの名無しさん
2006/04/11(火) 12:13:58小手先の手法であーだこーだいってる頭でっかちは生きてる価値無いから死んでね
0907デフォルトの名無しさん
2006/04/11(火) 12:23:280908デフォルトの名無しさん
2006/04/11(火) 12:32:55食いついてきたら落とす
それ知らないで暴れてるバカがTOKIWAにいたが
ここにも10人ぐらい落とされるのがいそうだな
0909デフォルトの名無しさん
2006/04/11(火) 12:54:190910デフォルトの名無しさん
2006/04/11(火) 12:55:260911デフォルトの名無しさん
2006/04/11(火) 13:06:36全てを一括で描画しようと考えるからいかんのだよ。
無理なくまとめられる範囲で、なるべくまとめて描画しろってこと。
なんでそんなことになっているのかというと、全てはDrawPrimitiveの
オーバーヘッドが常識外れにでかいせい。
Vistaでは改善されるらしいので、3年後には都市伝説になってそうだが。
0912デフォルトの名無しさん
2006/04/11(火) 13:09:45技術研究と仕事でのゲーム作りは別だと思ってたがそうじゃないんだなぁ・・・
仕事では60フレで回れば99%使ってようが動いてて締め切りに間に合えさえすればいいと思ってたよ。
まぁコンシューマーはマシンスペック固定だからPCみたいな最低スペックどうこうとか考えなくていいからか・・・。
0913デフォルトの名無しさん
2006/04/11(火) 13:11:310914デフォルトの名無しさん
2006/04/11(火) 13:12:343年程度じゃVista標準にはならない気がする。
Dx10はVistaでしか動作しないし全機能サポートしてないとDx10対応ビデオカードとはMSから認められないし、
ビデオカードとOS含めて変えざるを得ないほどの利点がなけりゃWin2kで十分だし・・・。
0915デフォルトの名無しさん
2006/04/11(火) 13:39:17おまいの読解力に乾杯
0916デフォルトの名無しさん
2006/04/11(火) 13:43:08�dクス。
0917デフォルトの名無しさん
2006/04/11(火) 14:07:060918デフォルトの名無しさん
2006/04/11(火) 14:09:47乾杯されるくらいの読解力だからな。
0919デフォルトの名無しさん
2006/04/11(火) 14:13:260920デフォルトの名無しさん
2006/04/11(火) 14:22:39煽りじゃなくマジで分からないんだが、クリッピングと、DrawPrimitiveをまとめるってのは、普通同時にやることじゃね?
>>883とか、俺が何か勘違いしてるのかな。
毎フレーム位置が変わる2Dなら、動的バッファを用意して、クリッピングやアルファ別を考慮しつつ、バッファに書き込み、
有る程度まとまったらDrawPrimitiveで描きだしていく、で良い気がするんだが。
なんかヘルプか何かに、頂点数別の最適サンプルあったよな?
それで思い出した。昔どこかでLockが遅いから、2DスプライトならUP系が良いってサイトがあったけど、
あれはDYNAMICで試してたのかな。
0921マイク ◆yrBrqfF1Ew
2006/04/11(火) 14:31:000922デフォルトの名無しさん
2006/04/11(火) 14:48:18http://www.microsoft.com/downloads/details.aspx?FamilyId=7AB978B5-5F1A-4F6A-88EB-FC646138BECA&displaylang=en
0923デフォルトの名無しさん
2006/04/11(火) 17:51:08SDKのチュートリアルから学んだ者としてはSetTransform()とDrawPrimitive()のセットを
弾数分繰り返して描画するワケだが、これをTriangleListに直して1回で描画しろってワケか?
これって現実的かぁ?
0924デフォルトの名無しさん
2006/04/11(火) 18:02:33スプライトの位置をSetTransform()で指定するんじゃなくて
自分で変換した頂点をバッファに突っ込むの。
0925デフォルトの名無しさん
2006/04/11(火) 18:30:340926デフォルトの名無しさん
2006/04/11(火) 18:33:46回転させようと思ったら普通にやるもんだと思ってたが
0927デフォルトの名無しさん
2006/04/11(火) 18:36:34も、もしかしてまだ小学生とか?
だとしたら凄いじゃねぇか小学生でDirectXか!
0928デフォルトの名無しさん
2006/04/11(火) 18:42:030929デフォルトの名無しさん
2006/04/11(火) 18:56:470930エログラマ
2006/04/11(火) 19:02:490931デフォルトの名無しさん
2006/04/11(火) 19:51:502Dなら移動も回転も拡大縮小も全部CPUでやって
それをバッファに突っ込んでDPでレンダリング汁。
0932デフォルトの名無しさん
2006/04/11(火) 20:12:49sin cosは遅いから三角関数テーブル使うんだと得意げになるスレはここですヵ?
0933デフォルトの名無しさん
2006/04/11(火) 20:18:15�@クリッピング処理を入れるために毎フレームVertexBufferを確保→解放するコスト(3Dでも2Dでも同じ)
�AZバッファを使った不透明ポリゴンの前→後描画処理ができない(3Dでも2Dでも同じ。2DだってZ値もたせればいいよね?)
よりDrawPrimitiveで一括して描画するほうが速いとかいってる?
�@はビデオメモリが虫食い状態になるんじゃねーの?
�AはDrawPrimitiveに一括で入れちゃってるから恩恵はないよね。
なんでこれよりDrawPrimitive一括のほうが速いとか思ってるわけ?
0934デフォルトの名無しさん
2006/04/11(火) 20:34:40念のため聞くけど(1)も(2)も釣りだよな?
情報斜め読みした聞きかじりの知識の「ふり」をした釣りだよな?
0935デフォルトの名無しさん
2006/04/11(火) 20:39:12> 2Dスプライトの回転も頂点シェーダでやらずに
何を言ってるんだ? シェーダ内でアフィン変換をやらせようとすると
スプライト毎にDPが必要(ジオメトリインスタンシングで解決できるが)
それなら自前で変換してDP減らした方が遥かに負荷が低い、というだけの話だぞ?
>>933
1 -> そんなの必要ないし。
2 -> フィルレート稼ぎ? DP一括でも普通にできるけど?
そもそもフィルが少なくしかもほとんど半透明(とゆーか抜き色)の
スプライトが前にくる2DゲーでZソートは微妙。
Zバッファが勿体無いから俺は切る。
0936デフォルトの名無しさん
2006/04/11(火) 20:44:51全角英数字ってことはもしかして883なのか
これにマジレスしてた俺とおまえら乙
0937デフォルトの名無しさん
2006/04/11(火) 20:48:212)ソートの不要なオブジェクトをインスタンス化すればいいだけじゃん。
おまえさんの作るゲームは画面上の全オブジェクトが半透明でソートが必要なのかい?
大抵は抜き色+アルファテストで片付くけど。
--------------------------------------------------------------------------
Octorber 2004のドキュメントから抜粋
複数インスタンスのジオメトリの効率的な描画
多くのオブジェクトが同じジオメトリを使うようなシーンがある場合に、そのジオメトリのインスタンスを異なる向き、サイズ、色などで数多く描画できます。
レンダラに提供する必要のあるデータ量を低減できるので、パフォーマンスを大幅に向上できます。
--------------------------------------------------------------------------
上の機能はちゃんとハードウェアで頂点バッファの連結なんかも実装されているし、
専用のAPIやサンプルのソースコードも掲載されている。
てかコレ以上釣られても不毛な気がしてきた。
0938デフォルトの名無しさん
2006/04/11(火) 20:48:53言ってることが無茶苦茶。本人も良く分かってないんじゃないか。
�@ものすごい勢いで確保と解放を繰り返すイメージで怖がってんだろうけど、
過去の遺物の時代を引きずったジジイプログラマの妄想だな。
Dynamicの頂点バッファをLockして返ってくるアドレスが次回も同じアドレスが来る保障がないだろ。
DirectXは当たり前のようにそういう設計なんだよ。
頂点バッファにいろいろ詰め込むとZバッファが効かないと思い込んでるのもアレ杉
0939デフォルトの名無しさん
2006/04/11(火) 20:51:43勘違いしてた。
まぁそんなところ気にするなら素直にオクリュージョンカリング実装すればいいと思うんだが。
ハードウェアで実装されてるしサンプルもソース付きで公開されてたし。
0940デフォルトの名無しさん
2006/04/11(火) 22:23:49二つの離れた三角形を一筆書きってできんの?
0941デフォルトの名無しさん
2006/04/11(火) 22:31:11TRIANGLE_LISTなら→A-B-C-D-E-F。
TRIANGLE_STRIPなら→A-B-C-C-D-D-E-F。
0942デフォルトの名無しさん
2006/04/11(火) 22:35:54TRIANGLE_STRIPの方は実際には
A,B,C
B,C,C
C,C,D
C,D,D
D,D,E
D,E,F
って感じで6個の三角形が描画されることになるけど、
同一頂点が含まれる(B,C,C)(C,C,D)(C,D,D)(D,D,E)は
面積が0だから実際には途中ではじかれてレンダリングされない。
D3DXConvertMeshSubsetToSingleStrip()もそんな感じでストリップとストリップを連結して1つにしてる。
0943デフォルトの名無しさん
2006/04/11(火) 22:44:480944デフォルトの名無しさん
2006/04/11(火) 22:47:510945デフォルトの名無しさん
2006/04/11(火) 22:49:50それってShader3.0必要って書いてあるよ
庶民には関係ない話だお
0946デフォルトの名無しさん
2006/04/11(火) 22:56:44>DP一括でも普通にできるけど?
どうやるの?
0947940
2006/04/11(火) 23:02:14説明サンクソ
くっつけてSTRIPって手法は納得なんだけど、なんか見えない三角を用意するってのが
かなり冗長な気が…この手法で高速化の恩恵って得られるもんなのだろうか…
0948デフォルトの名無しさん
2006/04/11(火) 23:04:31はぁ?
結局、頂点分のメモリをビデオメモリに確保→解放する処理は変わらないんだろ?
普通に遅いよ。
なんで一度ビデオメモリに用意したVertexBufferを解放しちゃうような設計で速度がでるんだよ。
なんのために確保させてるんだかまったく理解できない。
アホか。
0949デフォルトの名無しさん
2006/04/11(火) 23:06:49その場面場面で測って最適値を探すしかない。
結局つなげて描画なんてやるわけだから、ストリップが短けりゃ恩恵は無いし、
あんまりでかい物体なら今度はクリッピングの恩恵がうけられない。
グラボはうけとった頂点分の計算をしなけりゃならん。
0951デフォルトの名無しさん
2006/04/11(火) 23:19:23受け取った分の頂点を処理しなければならないのはまったくその通りなんだが、
昨今のビデオカードで頂点処理がネックになることはまず有り得ない。
大抵の場合でネックになるのはピクセルシェーダーかCPUだよ。
2Dのだけど毎フレーム頂点バッファをLock()してDPしてるサンプル。
1スプライトずつDPするのと全部まとめてからDPするやつの比較ね。
ttp://up.spawn.jp/file/up16784.zip
0952デフォルトの名無しさん
2006/04/11(火) 23:30:52404
0953951
2006/04/11(火) 23:32:15ありもののライブラリでやってるけど内部的にはVB作ってDISCARDでロックして描いてる。
こっちで・・・
ttp://up.spawn.jp/file/up16819.zip
0954デフォルトの名無しさん
2006/04/11(火) 23:50:38なんかちがくね?
DrawPrimitive毎回呼び出す方はシーンの始めに
VertexBufferで確保しないと比較になんなくね?
つーか、それで速かったとしてもクリッピングとフィルレートの問題にはカスリもしないじゃん。
何がいいたいの?
0955デフォルトの名無しさん
2006/04/11(火) 23:58:17マスターヘッダでインクルードファイルまとめ読みするの馬鹿っぽいからヤメロよ
0956デフォルトの名無しさん
2006/04/12(水) 00:16:31それにDxのドキュメントにも事前に十分なサイズのバッファを確保しておくと
書かれてるし毎フレームVB作り直しなんて実装問わず必要ないだろう。
0957デフォルトの名無しさん
2006/04/12(水) 00:17:59それ本来は.lib形式で配布されてるから.hはひとつになってるんじゃねーの?
0958デフォルトの名無しさん
2006/04/12(水) 00:26:21はぁ?なにいってるのか全くわからない。
DrawPrimitive一括描画の人はどうやってクリッピングしてるの?
クリッピングは毎フレームやらなきゃいけない処理でしょ?
DrawPrimitiveで一括で描画するにしても、クリッピング処理で絞り込んだ頂点だけを対象にするんでしょ?
フレーム毎になんのオブジェクトの頂点が描画対象になるかわからないじゃん。
つーことは、VertexBufferを毎フレーム確保し直すか。
すでに用意してあるVertexBufferをロックして描き変えるかしなきゃいけないってことだろ?
0959デフォルトの名無しさん
2006/04/12(水) 00:29:00うざ
ソース付けてるのにlib形式で配布する意味がわからん。
面倒なだけじゃん。
あと、俺の環境ではコンパイル通らなかったな。どうでもいいけど。
0960デフォルトの名無しさん
2006/04/12(水) 00:32:190961デフォルトの名無しさん
2006/04/12(水) 00:33:50だから最初に確保したバッファに必要なものだけ突っ込んでいくんだろ?
0962デフォルトの名無しさん
2006/04/12(水) 00:35:012フレーム目どうすんだよw
0963デフォルトの名無しさん
2006/04/12(水) 00:42:350964デフォルトの名無しさん
2006/04/12(水) 01:12:08みんな無視した方がいいと思う。
0965デフォルトの名無しさん
2006/04/12(水) 01:18:531フレーム毎にバッファ確保なんて、一回悟れば恥ずかしくて引き下がるかと思いきや…凄いなw
0966デフォルトの名無しさん
2006/04/12(水) 01:19:33できるだけまとめた方がそのまま速くなるけど
一定頂点数超えたらまとめるより分割したほうが速くなるという結果が出た
0967デフォルトの名無しさん
2006/04/12(水) 01:27:183000個より多い場合の記述が無いし、まぁ3000くらいにまとめるのがベストっぽいな。
0968デフォルトの名無しさん
2006/04/12(水) 04:59:350969デフォルトの名無しさん
2006/04/12(水) 06:08:52ちがうな。
ロックして一度クリアした後で、もう一度書かなければならないはずだろ。
しかも、ロックする動作ってのはビデオメモリからの読み込みが発生するからオーバーヘッドはでかい。
アホか。
0970デフォルトの名無しさん
2006/04/12(水) 06:25:44LPD3DXEFFECT effect;
effect->SetValue
でシェーダ使って直接座標を渡すってのはどうだ?
Lockしなくてもできるぞ。
0971デフォルトの名無しさん
2006/04/12(水) 06:44:52なにそれ?
座標何個渡せんの?
0972デフォルトの名無しさん
2006/04/12(水) 07:12:52だから馬鹿なんだ
WRITEONLYとかDISCARDのフラグの意味も使い方も分かってない
0973デフォルトの名無しさん
2006/04/12(水) 07:24:49そのフラグって「ちょっとましになる」程度でしょw
0974デフォルトの名無しさん
2006/04/12(水) 07:40:080975デフォルトの名無しさん
2006/04/12(水) 07:47:39「ちょっとましになる」が知識のすべてだとしたら、やはり馬鹿だな。
動的なリソースっていうのは、同じバッファを使ったDrawPrimitiveの動作の完了を待たずに
バッファをロックしてデータを埋めてこうっていう考え方なわけ。そのためのフラグ。
0976デフォルトの名無しさん
2006/04/12(水) 07:58:340977デフォルトの名無しさん
2006/04/12(水) 10:19:28基本的にプログラムの最初の方で多めにバッファ確保して終了時に解放する
バッファ内の物を描画する時はDrawPrimitive()の第3引数で
プリミティブの数を指定すれば必要な分しか描画されないだろ
毎フレーム確保解放なんてアホ
0978デフォルトの名無しさん
2006/04/12(水) 10:29:35WRITEONLYフラグは書き込みしかしないという指定。
つまり一切の読み込み「ビデオメモリからの読み出しはしない」という指定。
ロックはそのときのVBのメモリアドレスを取得するだけ。
DISCARDフラグを指定してる場合は描画が完了してなければ他のアドレスを返してくるために、
前のDPが完了しているかどうかは気にする必要なし。
つまり書き込み完了してなければ終わるまでブロックされるようなこともなし。
書き込み処理はシステム→ビデオメモリのためDMAで高速に処理される。
VBにまとめてから書けというのはM$のnVidiaもATiも口を揃えていっている事で、
各社それに対応したハードウェア仕様、APIがきちんと用意されている。
Dx8の頃からこのへんは常識になってると思ったんだが。
0979デフォルトの名無しさん
2006/04/12(水) 10:43:320980デフォルトの名無しさん
2006/04/12(水) 16:12:040981デフォルトの名無しさん
2006/04/12(水) 16:13:190982デフォルトの名無しさん
2006/04/12(水) 16:19:580983デフォルトの名無しさん
2006/04/12(水) 18:57:320984デフォルトの名無しさん
2006/04/12(水) 19:09:020985デフォルトの名無しさん
2006/04/12(水) 19:21:39指定できないんじゃないの?
0986デフォルトの名無しさん
2006/04/12(水) 19:30:21テクスチャサイズがでかいからといっていまや大してネックにはならないとATiだかがいっとったし。
0987デフォルトの名無しさん
2006/04/12(水) 19:33:10ボードによっては 4096 x 4096 とかあるけどね。
0988デフォルトの名無しさん
2006/04/12(水) 20:16:30何種類も詰め込むと、古いビデオカードできつくない?
0989デフォルトの名無しさん
2006/04/12(水) 20:58:30それにDirectXがそのへんの管理してくれるから不要なものを削除して
必要になったらVRAMにロードするようになってるんじゃなかった?
ミップマップ使ってる時に下のレベルから使うようにしてくれるかはワカンネ。
今はDXTで圧縮のテクスチャも3Dなら普通に使われてるし。
DirectX9のドライバが用意されててVRAM16MBないってのもレアケースだろうしなぁ・・・
0990デフォルトの名無しさん
2006/04/12(水) 21:29:38いまどきオブジェクト指向って……
ひどい時代遅れだ
0991デフォルトの名無しさん
2006/04/12(水) 21:44:530992デフォルトの名無しさん
2006/04/12(水) 22:11:160993デフォルトの名無しさん
2006/04/12(水) 23:28:01意味がわかんない。
>ロックはそのときのVBのメモリアドレスを取得するだけ。
>DISCARDフラグを指定してる場合は描画が完了してなければ他のアドレスを返してくるために
DISCARDフラグを指定している場合はロックして書き込みしているときにどこに書きこんでるって言ってる?
0994デフォルトの名無しさん
2006/04/12(水) 23:39:210995デフォルトの名無しさん
2006/04/12(水) 23:50:11プログラムの経験すら疑わしいな、これじゃ。
0996デフォルトの名無しさん
2006/04/12(水) 23:54:47>他のアドレスを返してくるために
っていってるんだから「他のアドレス」なんだろうけどどこなの?
0997デフォルトの名無しさん
2006/04/13(木) 01:29:40頂点バッファおよびインデックス バッファの場合、アプリケーションはバッファ全体を破棄します。
新しいメモリ領域へのポインタが返されるので、ダイレクト メモリ アクセス (DMA) と古い領域からのレンダリングが機能停止することはありません。
0998デフォルトの名無しさん
2006/04/13(木) 01:44:37結局新しく確保してんじゃんw
どのへんが高速なんだよw
0999デフォルトの名無しさん
2006/04/13(木) 01:49:02DrawPrimitiveのVertexBufferを一括確保してる奴等さ、
一括確保するVertexBufferを2つ用意してフレームごとに交互に使えば
もしかして速いんじゃねぇの?
1000デフォルトの名無しさん
2006/04/13(木) 01:51:41DrawPrimitiveごとか。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。