【C++】DirectX初心者質問スレ Part8 【D】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
※回答する人も、質問する人も必ず読んでください

これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ

【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
 「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。

【 質問する方 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。

前スレ
【C++】 DirectX初心者質問スレ Part7 【C++】
http://pc8.2ch.net/test/read.cgi/tech/1132216611/
2デフォルトの名無しさん:2006/02/22(水) 22:21:27
【関連スレ:1】

鬱だ氏のう 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/
3デフォルトの名無しさん:2006/02/22(水) 22:21:59
【関連スレ:2】

DirectShowと戦うスレ
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/
4デフォルトの名無しさん:2006/02/22(水) 22:22:31
【関連スレ:3】

Direct 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/
5デフォルトの名無しさん:2006/02/22(水) 22:23:04
【関連サイト】

MSDN 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
6デフォルトの名無しさん:2006/02/22(水) 22:28:38




     馬鹿に餌を与えないでください



7デフォルトの名無しさん:2006/02/22(水) 22:39:50
DirectX初心者に幸多からん事を。
8デフォルトの名無しさん:2006/02/22(水) 22:58:00
これ↓テンプレにいれとけ

つ 金が無い奴はゲーム作るな
9デフォルトの名無しさん:2006/02/22(水) 22:59:10
>>8
早く言え
10デフォルトの名無しさん:2006/02/23(木) 00:33:51
>>8
時間もだ
11デフォルトの名無しさん:2006/02/23(木) 01:38:35
>>10
いくらあっても駄目な奴は駄目。
しかし、必要条件ではある。
12デフォルトの名無しさん:2006/02/23(木) 03:57:17
前スレ934ですが、940とは別人です。
みなさん、参考になる意見ありがとうございました。
13デフォルトの名無しさん:2006/02/23(木) 08:26:40
>>1
なぜD言語w
14デフォルトの名無しさん:2006/02/23(木) 10:49:19
DirectXのプログラム立ち上げると
マウスカーソルが砂時計のままなんですが
対処法ありますか?

とりあえずSetCursor試しましたが
すぐに変わらず、クリックすると通常に戻る感じなのです。

15デフォルトの名無しさん:2006/02/23(木) 11:03:40
>>14
うちは砂時計になったことないぞ。
他のアプリでもその症状なのかい。
16デフォルトの名無しさん:2006/02/23(木) 11:15:25
>>15
DirectX Sample Browserの
Tutorial 1: CreateDevice
をコンパイルして
実行した時、
起動時にウィンドウの上にカーソルがあると同じ症状(砂時計)が起こりました。
起動時にウィンドウ外にカーソルがあるとノーマルカーソルになりました。
謎です
17デフォルトの名無しさん:2006/02/23(木) 11:17:51
あーあと、C# 版のCreateDeviceやると症状が起きませんでした。
1814:2006/02/23(木) 11:29:24
自己解決しました。
Lunaってライブラリでも同じ症状が出てたみたいなので
ソース見てみました。
CreateWindowに渡す構造体のカーソルがNULL指定の時起こるみたいでした。
どうみてもスレ違いです。
本当にありがとうございました。


ゴメーヌ
19デフォルトの名無しさん:2006/02/23(木) 13:27:13
ごめんねで済めば、6面はいらない。
20デフォルトの名無しさん:2006/02/23(木) 13:29:13
3面あれば立方体つくれるよ
21デフォルトの名無しさん:2006/02/23(木) 15:26:41
>>18
>CreateWindowに渡す構造体のカーソルがNULL指定の時起こるみたいでした。

CreateWindow?RegisterClassではなくて?
22デフォルトの名無しさん:2006/02/23(木) 15:26:47
DirectXの勉強をするのに参考になるソースはないでしょうか?
特にデバイスロストの勉強をしたいのでヨロシクおねがいします。
23デフォルトの名無しさん:2006/02/23(木) 15:37:29
( ゚ρ゚)ポカーン
24デフォルトの名無しさん:2006/02/23(木) 15:41:31
すいません教えて下さい。

d3d9.dllをc:\windows\system32以外に置きたいんですが、

なにか問題とかってあるんでしょうか?
25デフォルトの名無しさん:2006/02/23(木) 15:44:01
別に。
26デフォルトの名無しさん:2006/02/23(木) 16:42:07
そうですか。

簡潔かつ冷酷なレスありがとうございました。
27デフォルトの名無しさん:2006/02/23(木) 16:53:24
正しいので冷酷ではないと思うよ
28デフォルトの名無しさん:2006/02/23(木) 16:59:30
質問自体、何のためにそうする必要があるのか説明する努力をせず、
手を抜いているのに、他人にはそれを許さない。
29デフォルトの名無しさん:2006/02/23(木) 17:03:47
あ、すいません、だから25は冷たいんですね。

DirectX9が入ってないパソコンでもそのまま動くようにしたいんです。

つまりd3d9.dllとかをゲームといっしょにするわけです。
30デフォルトの名無しさん:2006/02/23(木) 17:12:00
駄目だこいつ…
31デフォルトの名無しさん:2006/02/23(木) 17:12:13
単体では再配布できないから無理じゃね?

つーか、DirectXってDLL等置いただけでどうさするんか?
32デフォルトの名無しさん:2006/02/23(木) 17:29:35
DirectXランタイムが入ってないPCで作動させるのは
無理なのであきらめなさい。
33デフォルトの名無しさん:2006/02/23(木) 18:24:47
ちゃんとDirectX9を入れないと駄目なんですか?

うーん25は問題ないと言ってるし。

今C:\Documents and Settings\Saotome\HyperAzumaにd3d9.dll入れてみましたが動きますよ。
34デフォルトの名無しさん:2006/02/23(木) 18:25:52
m9(^Д^)プギャー!!
35デフォルトの名無しさん:2006/02/23(木) 18:26:54
ランタイムのインストーラを一緒に渡せばいいだけ。
36デフォルトの名無しさん:2006/02/23(木) 18:27:22
>>33
>>25をそのように補完したお前のIntelliSenseは性能がいいなぁ。
37デフォルトの名無しさん:2006/02/23(木) 18:28:02
DirectX9がインストールされてるって落ちはないよな。もちろん。
38デフォルトの名無しさん:2006/02/23(木) 18:29:29
>>33
おまいさん何でそんなに頭悪いの?www
39デフォルトの名無しさん:2006/02/23(木) 18:30:18
早乙女君、ガンバ。
40デフォルトの名無しさん:2006/02/23(木) 18:38:17
うわ、あ、すいませんDirectX9入ってました。今ノートで試してみたら動かなかったです。

そうするとCD-ROM入れて遊んでもらうにはちゃんとDirectX9を入れないと駄目なんですね。

うーん遊びたいけどDirectX9入れたくない人はどうすれば。。。
41デフォルトの名無しさん:2006/02/23(木) 18:42:21
DirectX使わなければいい
42デフォルトの名無しさん:2006/02/23(木) 18:43:32
DirectX8なり7なりを使えばいい。
43デフォルトの名無しさん:2006/02/23(木) 18:44:42
早乙女君、古いバージョンで開発するというのはどうだ?
44デフォルトの名無しさん:2006/02/23(木) 18:47:02
諦める
45デフォルトの名無しさん:2006/02/23(木) 18:47:20
>>42
OSによっては、DirectX8か7を入れないといけないじゃないか。
結局ターゲットしだい。
46デフォルトの名無しさん:2006/02/23(木) 18:49:21
つ OpenGL
47デフォルトの名無しさん:2006/02/23(木) 18:50:56
>>46
つWin95無印
48デフォルトの名無しさん:2006/02/23(木) 18:53:47
つ 有無を言わさず突っこむ
49デフォルトの名無しさん:2006/02/23(木) 18:55:04
もうハイパーアズマは完成に近いのでDirectX9必須なんです。

でもまあDirectX9入れてでも遊びたくなるでしょうからこのままいきます。

ありがとうございました。
50デフォルトの名無しさん:2006/02/23(木) 18:55:14
>>48
それなんてみりす?
51デフォルトの名無しさん:2006/02/23(木) 19:04:53
つ50
みりすってなに?
5251:2006/02/23(木) 19:21:17
それはアンカーじゃねーorz
53デフォルトの名無しさん:2006/02/23(木) 19:47:11
まあ頑張れや早乙女。
54デフォルトの名無しさん:2006/02/23(木) 20:35:51
>>20
え、まじですか・
55デフォルトの名無しさん:2006/02/23(木) 20:36:03
早乙女テンプレに入れてくれw
56デフォルトの名無しさん:2006/02/23(木) 20:37:10
>>54
立方体の場合、任意の視点から見えるのは高々3面しかない。
57デフォルトの名無しさん:2006/02/23(木) 20:57:06
>>56
ビルボードみたいに視点に応じて回転させるってことですか?
58デフォルトの名無しさん:2006/02/23(木) 20:58:21
これ↓テンプレにいれとけ

つ 脳味噌が無い奴はゲーム作るな
59デフォルトの名無しさん:2006/02/23(木) 21:22:38
質問です。
ロボットのキャラアニメ部分を製作中です。
D3DXFRAME と ID3DXAnimationController
1対1のアニメは成功しました。
最終的には4対1になるのですが、ID3DXAnimationController.CloneAnimationControllerで4対4にする方法しか思いつきません。
パフォーマンス的にそれは避けねばならない場合、どうしたら良いでしょうか?
60デフォルトの名無しさん: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/
6159:2006/02/23(木) 23:11:27
すいません。
勝手ながら、ココでの質問は無しにさせてください。
62デフォルトの名無しさん:2006/02/23(木) 23:14:30
なんだ、マルチか
6359:2006/02/23(木) 23:18:02
ええ。
今から。
64デフォルトの名無しさん:2006/02/23(木) 23:37:56
達者でな
飯に困ったら土を食うんだぞ
6559:2006/02/24(金) 00:15:37
勝手に鬱に貼られちゃいました。
お陰さまで、有益な情報が得られました。
どなたか存じませんが、ありがとうございます。
66デフォルトの名無しさん:2006/02/24(金) 04:55:07
良かったな
最近馬鹿が沸くようになった
67デフォルトの名無しさん:2006/02/24(金) 10:49:40
早乙女君人気だ。
誰?
68デフォルトの名無しさん:2006/02/24(金) 11:04:53
早乙女愛だす
69デフォルトの名無しさん:2006/02/24(金) 13:00:12
まあ、質問する前にヘルプとサンプルを100回読めということだな。
それで大抵の問題は解決するだろう。
70デフォルトの名無しさん:2006/02/24(金) 15:10:09
ビデオチップ : NVIDIA GeForce FX 5700
SDK : 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 のものだと正常に動作します。
どなたか、お分かりになりましたらよろしくお願いいたします。
71続きです:2006/02/24(金) 15:10:44
INITDDSTRUCT(ddsd); // DD 構造体の初期化
ddsd.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);
72デフォルトの名無しさん:2006/02/24(金) 17:33:20
>「ググれ」「SDK見れ」以外の回答でおながいします。

これ、「SDK」の部分テンプレから外して良いと思うんだが。
最低SDKは見れ。
初心者スレだし、見て分からんのはしゃーないが、
見てもおらんヤツがいっぱいいるだろ。
73デフォルトの名無しさん:2006/02/24(金) 17:37:15
>>72
>3.SDKを見ても、Googleで検索しても、いまいち理解できない人
本当は、これがあるから、見ても無い奴はスルーするのが良いのだが、
ちょっとかじった奴でも教えられる質問ばかりで、
誰でも簡単に優越感に浸るから。
74デフォルトの名無しさん:2006/02/24(金) 17:41:10
今気付いたんだけど早乙女BBXにも投稿してねえか?
75デフォルトの名無しさん:2006/02/24(金) 18:15:59
初歩的な質問は初歩的な回答者のために残しておいてください。
そういう殺伐さが必要だと思うのです。
あなた一人で全部答えてしまったらスレの人材が育ちません><
76デフォルトの名無しさん:2006/02/24(金) 20:32:15
>>70最小値

StretchBltの場合、小さすぎると失敗する。
77デフォルトの名無しさん:2006/02/25(土) 00:04:14
>70
DirectDrawなんてすっかり忘れてるけど、勘で答えれば、
Blt()ってBlt元とBlt先のフォーマットが一致してないと駄目なんじゃないのか?

でかいサーフィスを確保した場合、何らかの理由によりシステムメモリに確保されて、
システムメモリ→ビデオメモリの転送時には、
異なるフォーマットでもソフトウェア変換が実行されるようになってるとか。

BltをBltFastに変えて試してみたらどうなる?
7870:2006/02/25(土) 01:44:52
>>76-77
お返事ありがとうございます。

BltをBltFastで試してみたところ、結果は同じでした。
512x512のサーフェスを確保すると動作します。
また、Bltをしている矩形は貼り付け元(0, 0)-(100. 100)、貼り付け先(150, 100)-(250, 200) です。

今のところドライバの列挙を行い、NVIDIAだったらテクスチャの最小の幅及び高さを 512 にすることでしのげればと思っていますが、
正直なところ、大変気持ちが悪いです・・・。
79デフォルトの名無しさん:2006/02/25(土) 01:47:15
>>78
貼り付け先のRECTをNULLにしたらどうなる?
8070:2006/02/25(土) 01:58:43
>>79
結果は同じでした。512x512にしたとたん動作しました。

それから、貼り付け元と貼り付け先のフォーマットについてですが、共にR5G6B5の16ビットでした。

また、貼り付け元のサーフェスのCapsの DDSCAPS_TEXTURE を DDSCAPS_OFFSCREENSURFACE にすると
動作することは確認しているのですが、そのようにすると D3DXDrawSpriteSimpleで描画できなくなってしまいます。
81デフォルトの名無しさん:2006/02/25(土) 04:11:23
Spriteって8と9で仕様変わってるの?
9で2Dゲーム作りたいんだけどよくわからない
82デフォルトの名無しさん:2006/02/25(土) 04:15:55
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
83デフォルトの名無しさん:2006/02/25(土) 04:21:42
SDKは英語ができない人なんで見てない
Googleの方は見てみたけどDirectX8のものしか出てこなかった
84デフォルトの名無しさん:2006/02/25(土) 04:31:45
ふざけてるのか?
85デフォルトの名無しさん:2006/02/25(土) 04:34:08
本気ですが。
86デフォルトの名無しさん:2006/02/25(土) 04:36:37
馬鹿にしてるだろ?
87デフォルトの名無しさん:2006/02/25(土) 04:40:21
してません。
88デフォルトの名無しさん:2006/02/25(土) 04:42:57
勃起してるだろ?
89デフォルトの名無しさん:2006/02/25(土) 04:44:11
してますが、何か?
90デフォルトの名無しさん:2006/02/25(土) 04:45:55
いいこと思いついた
お前俺のケツの中でションベンしろ
91デフォルトの名無しさん:2006/02/25(土) 04:46:03
もう、我慢できないんだろ?
92デフォルトの名無しさん:2006/02/25(土) 04:46:48
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    次のかたどうぞ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|
93デフォルトの名無しさん:2006/02/25(土) 05:03:29
ちょwww悪かった
Sprite::Drawの中心位置と配置位置についてだけ教えてくれ
94デフォルトの名無しさん:2006/02/25(土) 05:14:35
ふざけてるのか?
95デフォルトの名無しさん:2006/02/25(土) 05:26:55
本気ですが。
96デフォルトの名無しさん:2006/02/25(土) 05:29:21
馬鹿にしてるだろ?
97デフォルトの名無しさん:2006/02/25(土) 05:31:07
してません。
98デフォルトの名無しさん:2006/02/25(土) 05:36:28
自己解決しました( ´∀`)
99デフォルトの名無しさん:2006/02/25(土) 05:38:39
はい、お疲れさん。
100デフォルトの名無しさん:2006/02/25(土) 05:44:54
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    次のかたどうぞ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|
101デフォルトの名無しさん:2006/02/25(土) 06:30:45
DirectMusicでwaveを再生したんですが、
他のプレイヤー(MediaPlayer、Lilith)と聞き比べて音がこもっているように聞こえます。

DirectX9のドキュメント参考に作ったのですが、
ほかに設定があるのでしょうか?
102デフォルトの名無しさん:2006/02/25(土) 07:36:01
>>101
試しにクォリティを一番上にする。
レートとか落としてないか確認する。
103デフォルトの名無しさん:2006/02/25(土) 08:11:26
>>102
探してるんですが、それらをセットする関数が見当たらないんです
104デフォルトの名無しさん:2006/02/25(土) 09:19:38
DirectMusicでそんな機能あんのか…
105デフォルトの名無しさん:2006/02/25(土) 11:05:09
んと、DirectMusicのサンプルで聞いても音が悪いんで
おとなしくDirectSound使います。。。

>>102 >>104
回答サンクスです
106デフォルトの名無しさん:2006/02/25(土) 11:10:14
それが答えなのだが気がつかないのか。
107101:2006/02/25(土) 11:17:25

>>106 ○| ̄|_ ...
108デフォルトの名無しさん:2006/02/25(土) 11:37:16
それが音質を変更する方法。
109デフォルトの名無しさん:2006/02/25(土) 11:45:00
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    次のかたどうぞ
三.ヽ= (⌒ヽ;:;:;,.二)
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|
110デフォルトの名無しさん:2006/02/25(土) 12:56:28
  \\_
:三ニ=:::::::ヽ
:ヽ.ニ=::て.>廴_    さあ、質問をいえ
三.ヽ= (⌒ヽ;:;:;,.二)  どんな質問も話だけなら聞いてやろう
ニ=-ヽ:ヽ、,∠.^^ぅ
〃,べ= ̄ニ二 ̄
/;:ィリ ノノ ,.へヽ
;:ヘ/ ̄ ̄ ̄Vヽヽ
ソ        ├┤|
111デフォルトの名無しさん:2006/02/25(土) 16:23:54
DirectSoundを自前で作って接続すればプライマリバッファ変更できなかったっけ。
まあ確かにmidi鳴らすんじゃなければMusic使わない方がいいけど。
112101:2006/02/25(土) 16:34:44
>>111
プラマリバッファ作成→SetFormatですね。
サウンドフォーマットはweveとoggを考えてます。

とりあえず、今エラーで止まって    orz ...
113デフォルトの名無しさん:2006/02/25(土) 17:17:45
Weve?
114デフォルトの名無しさん:2006/02/25(土) 17:58:23
ウィーブ
115デフォルトの名無しさん:2006/02/25(土) 18:52:17
DirectMusicでogg再生とかやったなぁ。
116デフォルトの名無しさん:2006/02/25(土) 19:43:39
CreateTextureでD3DUSAGE_RENDERTARGETを設定したテクスチャを作り、
動的なテクスチャとして使っているのですが
このテクスチャにカラーキーを設定することはできないのでしょうか?
もしくは他の方法で抜けを実現する方法はありませんか?
117デフォルトの名無しさん:2006/02/25(土) 19:50:58
だからカラーキーは止めろといったのだ・・・
118デフォルトの名無しさん:2006/02/25(土) 21:03:31
フォトショとかGimpで透明度を指定したpngとかgifファイル出力
俺はいつもα値設定した画像使ってる
119デフォルトの名無しさん:2006/02/25(土) 22:25:18
DirectXはインストールしてもアイコンは出ないものなんですか?
120デフォルトの名無しさん:2006/02/25(土) 22:30:00
DirectXはインストールしてもアイコンは出ないものなんですよ。
121116:2006/02/25(土) 22:36:57
カラーキーを使わない方法でなにか実現する方法ないでしょうか?
>>121
DDSファイルを使えばOKです。
DXSDKに変換するソフトがついてきているはずです。
123デフォルトの名無しさん:2006/02/25(土) 22:58:39
>>121
テクスチャを動的に作っているのなら、
ターゲットのテクスチャフォーマットをα付きのにして
ソースの抜きの部分は(αテストで)描画しないようにすればいいんじゃないの。
ソースのテクスチャ自体はもちろんα付きテクスチャにした方がいいわね。
特定の色の時だけαをゼロにする、みたいなのは
シェーダでも使わないと無理じゃないかしら。
124116:2006/02/25(土) 22:59:24
あらかじめ用意したテクスチャを使いたいわけではなく
テクスチャ領域をフレームバッファに設定して動的に作ったテクスチャを使いたいのです

例えば、描画負荷の大きい木のモデルを作り一度テクスチャ領域に描画して
それをビルボードとして3D領域に複数配置するなどの使い方ってできないでしょうか?
125デフォルトの名無しさん:2006/02/25(土) 23:05:36
>>122
ファイル格納形式は関係無い
知ったかはすっこんでろ

>>124
そのやり方のメリットが見出せないのだが…
126デフォルトの名無しさん:2006/02/25(土) 23:06:52
>>125
メリットは関係無い
知ったかはすっこんでろ
127デフォルトの名無しさん:2006/02/25(土) 23:09:35
>>124
つーか、普通にできる。
128デフォルトの名無しさん:2006/02/25(土) 23:10:46
光学迷彩(屈折)とかそんな感じじゃなかったっけ?
129デフォルトの名無しさん:2006/02/25(土) 23:15:15
空のテクスチャ領域を作成でいないのであれば白い画像を用意しないと
130デフォルトの名無しさん:2006/02/25(土) 23:21:44
レンダーターゲットをD3DFMT_A8R8G8B8にして
ターゲットのClear色もD3DCOLOR_ARGB(0,0,0,0)
(×D3DCOLOR_XRGB(0,0,0))にすればできそうよね。
131116:2006/02/25(土) 23:32:33
>>123
レス遅くなってすみません
ターゲットのテクスチャフォーマットを調べてました、ウィンドウモードでもターゲットのフォーマットは変えられるのですね

>>125
木のモデルを1万ポリゴンで作ってビルボード化してそれを100本配置すれば100万ポリゴン
こういう使い方は駄目なのでしょうか?
これ以外でも動的に抜けがあるテクスチャを使い道は色々あるかと思います

>>130
ずばりできました
ありがとうございます
132デフォルトの名無しさん:2006/02/25(土) 23:37:10
>>131
>木のモデルを1万ポリゴンで作ってビルボード化してそれを100本配置すれば100万ポリゴン
それってあらかじめそういうテクスチャを作っておくのと何が違うの?
133116:2006/02/25(土) 23:37:18
色々教えていただきありがとうございました
拙い説明しか出来ず申し訳ないです
134デフォルトの名無しさん:2006/02/25(土) 23:38:47
>>131
>木のモデルを1万ポリゴンで作ってビルボード化してそれを100本配置すれば100万ポリゴン
パソコンの解像度で1万ポリゴンの恩恵は受けられないと思う

何かと使えるテクではあるが、
この木の画像はレンダリングソフトなんかで画像出力しておいたほうがいいz
135116:2006/02/25(土) 23:42:27
>>132
近くにきた場合はモデル化、遠くの場合はビルボードに切り替えたり
角度が変わった場合にもその場でテクスチャを作成しなおすこともできますし
アニメーションしているものだけをモデルで表示、アニメーションが止まったときはビルボード化など
色々使えるかと思います。
136デフォルトの名無しさん:2006/02/25(土) 23:49:32
全ての木が同じ向きなら、一つ"向きの整合性のとれた"ビルボードを作れば
一応全ての木で使いまわせるわね、ライティングもできるし。
同じ向きでないなら無難にプリレンダかしらね。
137デフォルトの名無しさん:2006/02/25(土) 23:59:28
>一つ"向きの整合性のとれた"ビルボードを作れば
>一応全ての木で使いまわせる
と思ったけど、多分違和感バリバリだからやめた方がいいわw
138デフォルトの名無しさん:2006/02/26(日) 01:10:51
苦労に見合うリターンは得られないね。
139デフォルトの名無しさん:2006/02/26(日) 02:13:51
3Dモデルをクライアント座標を指定して設置することはできないでしょうか?
140デフォルトの名無しさん:2006/02/26(日) 02:31:34
意味が分かりません。
DirectXのチュートリアルをやってから出直してきてください。
141デフォルトの名無しさん:2006/02/26(日) 02:57:54
ここ初心者スレなんだが
142デフォルトの名無しさん:2006/02/26(日) 02:58:15
じゃ、初心者以下はお帰りください
143デフォルトの名無しさん:2006/02/26(日) 03:00:14
>>142
ちょ、以下なら初心者も含まれるだろw

初心者未満はお帰りください。
144デフォルトの名無しさん:2006/02/26(日) 03:00:46
まあ、いまの段階だと、触って理解できることのほうが多いんじゃないかな?
俺もチュートリアルとかちゃんと進めてみることを薦める。
145デフォルトの名無しさん:2006/02/26(日) 08:48:19
ttp://wisdom.sakura.ne.jp/system/directx/dxg3.html
ここのページのプログラムなのですが
WinMain関数内の
pDirect3D = Direct3DCreate8(D3D_SDK_VERSION);の行とhWnd = CreateWindow(の行についてです。

もし先にhWnd = CreateWindow( .. )を処理してからpDirect3D = Direct3DCreate8(D3D_SDK_VERSION);を処理しますと
私の環境ではプログラムが強制終了してしまいます。
なぜでしょうか・・
146デフォルトの名無しさん:2006/02/26(日) 09:10:41
>>145
ウィンドウプロシージャのWM_CREATEの処理中に
pDirect3Dを使っているんだから当たり前。
147デフォルトの名無しさん:2006/02/26(日) 09:13:07
っていうか、この程度ならデバッガ使えば5秒で分かるんだから、
デバッガの使い方くらい覚えた方がいいぞ。
148デフォルトの名無しさん:2006/02/26(日) 09:14:21
>>146,147
あ!
すみませんそういうことですかorz
精進しますorz
149デフォルトの名無しさん:2006/02/26(日) 13:49:19
@
pDev->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の設定で上手くフォグがかからないのでしょうか?
分かる方、お願いします。
150デフォルトの名無しさん:2006/02/26(日) 14:02:05
>>149
フォグが一種類しか指定できないからだと思うが。。。
151デフォルトの名無しさん:2006/02/26(日) 14:50:26
>>149
物体1つ1つの描画毎にフォグを有効にするか無効にするか決める必要があんじゃねーの?
152デフォルトの名無しさん:2006/02/26(日) 14:50:29
>>149
頂点フォグは、ビュー空間での距離に依存するけど、
変換済み座標だと頂点処理が行われないから
スペキュラのアルファ値がそのままフォグ濃度(0.0:100% 1.0:0%)になるみたいね。
この値はデフォルトで0.0だから、フォグが100%になっちゃうわけね。
んでピクセルフォグも、普通は各ピクセルのビュー空間での距離(w)に依存するんだけど
変換済み座標なら多分rhw=1.0にしてると思うから、
フォグのnear距離が1.0以上なら、フォグがかかっていないようにみえるわけね。
それより、Aの"近くのキャラにフォグかかかる"というのは、正しい結果じゃないかしら。
153デフォルトの名無しさん:2006/02/26(日) 14:55:06
>>149
(2)のほうでちゃんとフォグの設定してないだろ?
154149:2006/02/26(日) 15:38:44
返答、ありがとうございます。

スペキュラのアルファですか。。。
確かに言われた通り、@でrhw=0.0にすると2Dプリミティブにフォグが100%かかりました。

とりあえず@のままで行こうと考えています。
(ボードの対応は考えなくても良いかな。。。!?)

ありがとうございました。
155デフォルトの名無しさん:2006/02/26(日) 18:39:47
すいません教えて下さい。

CD-Rにゲームを焼いてからプレイするとロードが遅すぎます。(HDで4秒程度なのがCD-Rだと50秒前後)

これはDirectX9の限界として諦めるしかないのでしょうか。
156デフォルトの名無しさん:2006/02/26(日) 18:42:21
それはパソコンの性能じゃないのか
157デフォルトの名無しさん:2006/02/26(日) 18:42:23
>>155
いいえ。
CD-Rの限界です。
158デフォルトの名無しさん:2006/02/26(日) 18:48:09
最低限ハード環境と読み込むデータ量ぐらい書けよ。
159デフォルトの名無しさん:2006/02/26(日) 18:54:01
PENTIUM43GHz/メモリ512MB/ハードディスク40GB/WINDOWSXP/DIRECTX9です。

標準CD-ROMドライブです。

データは全部で430MBぐらいです。
160デフォルトの名無しさん:2006/02/26(日) 18:55:14
CD読み込みデバイスの限界だな。
コンシューマよろしく、読み込みを細かく制御した上で、
どうしても時間が掛かるところは「now loading...」とか表示しとけ。
161デフォルトの名無しさん:2006/02/26(日) 19:00:00
ドライブのせいじゃない。
プログラマがアホなのが原因。
162デフォルトの名無しさん:2006/02/26(日) 19:16:13
CD-ROM?早乙女か?
163デフォルトの名無しさん:2006/02/26(日) 19:17:03
>>157
いいえ。
>>155の限界です。
164デフォルトの名無しさん:2006/02/26(日) 19:17:16
ちょwwwおまwww全然スレ違いのネタだろ。
大人ならスルー汁
165デフォルトの名無しさん:2006/02/26(日) 19:18:21
DMA、シーク位置。
166デフォルトの名無しさん:2006/02/26(日) 19:21:53
内側にダミー書き込んで読み込み速度稼ぐとか。
167デフォルトの名無しさん:2006/02/26(日) 19:25:28
>>155
そう、DirectX9の限界。
DirectX8にしたら、多分改善される。
168デフォルトの名無しさん:2006/02/26(日) 19:33:49
dllをCD-ROMに同梱して起動するといいよ。
169デフォルトの名無しさん:2006/02/26(日) 19:41:40
起動からずっとHDDの中にデータを落とし込めばいいんじゃ?
170デフォルトの名無しさん:2006/02/26(日) 19:53:24
インストールさせてから、プレイさせれば?
171デフォルトの名無しさん:2006/02/26(日) 19:54:57
太陽誘電のメディア使えば速いよ
172デフォルトの名無しさん:2006/02/26(日) 19:55:27
なるほどCD-ROMドライブの限界ですか。

>読み込みを細かく制御した上で、
そうすると最後がFromFileとなってる関数だと丸ごとロードしてしまうので、

べつな方法で一度ロードしておいてから、

最後がFromFileInMemoryとなってる関数を使えばいいんでしょうかね。

ありがとうございました。
173デフォルトの名無しさん:2006/02/27(月) 12:22:39
>>172
CDとHDDは読み込み速度違うからCDだと遅くなるのは当然
そもそもCDから起動して遅いのであれば、ユーザー側がHDDにコピーすればいいし
CDから起動させるのを前提にしている意味がわからん
174デフォルトの名無しさん:2006/02/27(月) 18:00:07
早乙女の限界。
175デフォルトの名無しさん:2006/02/27(月) 18:54:17
172はドリキャスで開発している
176デフォルトの名無しさん:2006/02/27(月) 20:31:52
ビデオメモリに確保したオフスクリーンサーフェス同士でブロック転送をするときに
DirectX7 のlpdds->Bltに相当する DirectX9の関数はありますか?
177デフォルトの名無しさん:2006/02/27(月) 20:36:56
ない
178デフォルトの名無しさん:2006/02/27(月) 20:38:16
なる
179デフォルトの名無しさん:2006/02/27(月) 20:40:48
たる
180デフォルトの名無しさん:2006/02/27(月) 20:42:25
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
181デフォルトの名無しさん:2006/02/27(月) 21:17:28
>>1の3廃止しね?
同一人物だと思うが質問を一行で跳ね飛ばされるのはおかしい
182デフォルトの名無しさん:2006/02/27(月) 21:24:50
>>181
検索は廃止してもいいと思うが、SDKはやっぱり必要だ。
SDKを見ても分からないということは、まだ手を出すレベルではないということだ。
183デフォルトの名無しさん:2006/02/27(月) 21:24:57
教えてクン乙
184デフォルトの名無しさん:2006/02/27(月) 21:35:01
悪い、逆だ。
というか、分かりにくいな。
【質問する方】に加えるべき。
・SDKは全て読んでください。SDKを理解できないがための疑問は諦めてください。
・Googleで検索をしてください。検索に使ったワードも書いてください。
185デフォルトの名無しさん:2006/02/27(月) 21:41:17
教えてクンが、ここは初心者スレだ!とかファビョってくるヨカソ・・・
186デフォルトの名無しさん:2006/02/27(月) 21:42:49
>>185
SDKを理解できないのは初心者以前だろ
187デフォルトの名無しさん:2006/02/27(月) 21:45:46
XNAって業界的にはどうなんです?
採用されつつあるんですか?
188デフォルトの名無しさん:2006/02/27(月) 21:49:23
こことは別に超初心者スレ立てるか
189デフォルトの名無しさん:2006/02/27(月) 21:51:15
( ゚д゚)ポカーン
190デフォルトの名無しさん:2006/02/27(月) 21:52:48
( ゚д゚)ポンカーン
191デフォルトの名無しさん:2006/02/27(月) 21:54:38
タダで資料があるのに、それすら読まない奴は切捨てでいいだろ。
読んでも分からないのは、このスレの範疇なんだし。
192デフォルトの名無しさん :2006/02/27(月) 22:11:59
すいません、コードの質問ではないのですがよろしくお願いします。

GeForce2〜4などのDirectX7、8世代のグラボ(ドライバは最新のDirectX9c対応のもの)に対して、
シェーダー2(3?)などのDirectX9の機能を使ったプログラムを動かした場合、
ソフトウェア的にエミュレートされるものなのでしょうか?
それとも動作不定になるのでしょうか?

これからDirectXを本腰いれて勉強しようと思っているのですが、
ビデオカードにあわせてDtx8にしようか、最新の9にしようか、考えたいので
よろしくお願いします。
193デフォルトの名無しさん:2006/02/27(月) 22:17:35
下調べも、勉強のうち
194デフォルトの名無しさん:2006/02/27(月) 22:18:24
>192
>ソフトウェア的にエミュレートされるものなのでしょうか?
どうなるかはプログラムの実装次第。
PS2のソフトウェア処理なんてつかいものにならんよ。
195デフォルトの名無しさん:2006/02/27(月) 22:23:06
.NETでDirectXは可能あるか?
196デフォルトの名無しさん:2006/02/27(月) 22:23:40
化膿
197デフォルトの名無しさん:2006/02/27(月) 22:23:50
不可能
198デフォルトの名無しさん:2006/02/27(月) 22:24:46
はっきりしろよwww
199デフォルトの名無しさん:2006/02/27(月) 22:26:09
それじゃ>195が無能って事で決定の方向で
200デフォルトの名無しさん:2006/02/27(月) 22:40:18
.NETでDirectXは無能あるか...あたわず、とよむのか?
201デフォルトの名無しさん:2006/02/28(火) 01:01:50
ttp://wisdom.sakura.ne.jp/system/directx/dxg7.html
ここの下のプログラムをコンパイルしようと思うのですが、
<D3dx8math.h>を開けません。と怒られてしまいます。
そこでDirectXSDKをインスコしたフォルダのincludeフォルダを覗いてみるとD3dx8math.hが存在しませんでした。
(D3dx9math.hはあるのですが・・)それとライブラリ D3dx8.libも存在しませんでした。

インスコしたSDKは2006(feb)なのですが、これはどうすればいいんでしょうかorz
202デフォルトの名無しさん:2006/02/28(火) 01:09:18
>>201
ライブラリインクルードしてないから
203デフォルトの名無しさん:2006/02/28(火) 01:14:54
_,._?

ライブラリとヘッダは別物ですよね
言葉足らずでしたらすみませんが、2006febにはD3dx8math.hもD3dx8.libも存在しないのでお手上げ状態なのです
検索しても圧倒的に引っかからないですし
204デフォルトの名無しさん:2006/02/28(火) 01:16:54
古いSDKを入れる
205デフォルトの名無しさん:2006/02/28(火) 01:18:55
>>203だったらソースを D3D9.h D3dx9math.h と書き換えればいいジャマイカ
206デフォルトの名無しさん:2006/02/28(火) 02:23:33
2D表示の質問です。バージョン:feb2006

ID3DXSprite::Draw(引数5個のやつ)でスプライト表示すると、
拡大、縮小され色が変になったりするんです。
引数7個時代の産物ではそのようなことは起こらないのですが、
feb2006では同等の処理はできないのですか?
207デフォルトの名無しさん:2006/02/28(火) 04:02:27
>>206

ID3DXSprite::SetTransform
208デフォルトの名無しさん:2006/02/28(火) 04:12:19
>176
IDirect3DDevice9::StretchRect
209206:2006/02/28(火) 04:13:30
dクス
調べてみます。
210デフォルトの名無しさん:2006/02/28(火) 06:08:36
>>192
たしか頂点シェーダーはエミュされるけど
ピクセルシェーダーはされなかったハズ 
…と見た記憶がある
211デフォルトの名無しさん:2006/02/28(火) 12:01:24
シェーダーのデバッガって無いんでしょうか?
せめて値だけでも表示できれば良いんですが。
212デフォルトの名無しさん:2006/02/28(火) 14:44:05
DirectX9 の ID3DXSprite::Draw で、テクスチャの一部を描画したときに、となりのピクセルが描画されてしまうことを防ぐ方法はありますか?
213デフォルトの名無しさん:2006/02/28(火) 15:06:17
話し合い
214デフォルトの名無しさん:2006/02/28(火) 15:38:31
>>212
一部をメモリに読み込んで新たなテクスチャを作っとくとか?
素人が適当に言ってみた。
215デフォルトの名無しさん:2006/02/28(火) 17:27:01
216デフォルトの名無しさん:2006/02/28(火) 17:35:04
帰れよ
217デフォルトの名無しさん:2006/02/28(火) 17:50:49
>>212
SDK見れ
218デフォルトの名無しさん:2006/02/28(火) 17:53:40
これから俺も全てのレスにSDKとレスすることにするか
219デフォルトの名無しさん:2006/02/28(火) 18:01:32
SDKだと分かりにくいから、"ヘルプ、サンプル"に変えないか?テンプレも。
英語しか無いならまだしも、日本語ヘルプすら読まないのは怠慢としか言えないだろ・・・
220デフォルトの名無しさん:2006/02/28(火) 18:20:29
>>219
失礼ですが、ヘルプ、サンプルはどこにあるのですか?
221デフォルトの名無しさん:2006/02/28(火) 18:22:43
>>220
MSのサイト
SDK付属って書くと、日本語ヘルプが入って無いからなぁ・・・
222デフォルトの名無しさん:2006/02/28(火) 19:13:19
ここは大変悪いコミニュティーですね。
223デフォルトの名無しさん:2006/02/28(火) 19:20:38
SDK嫁で全て解決
そんなの初心者スレじゃない
224デフォルトの名無しさん:2006/02/28(火) 19:22:14
>>223
読んで分からない所を聞くなら、みんな親切に教えてくれると思うけど。
説明書を読まずに分かりませんって。
そんなの初心者でもなんでもないだろ
225デフォルトの名無しさん:2006/02/28(火) 19:25:31
教えてクンが必死にがんばってるなw
その労力を別の方向に使ったほうがいいぞw
226211:2006/02/28(火) 20:35:04
出来るみたいね、DX SDK入れるか。
227デフォルトの名無しさん:2006/03/01(水) 00:03:56
>>211
VC6使いなら、RenderMonkeyか、FX何たら辺りを使うのもいいぞ。バグ多いけど。

>>212
ID3DXSpriteは使ったことないけど、0.5ずらせば解決すると思う
「テクセルとピクセル間の直接マッピング」、「最近点サンプリング」の項辺りに詳しい
228212:2006/03/01(水) 02:21:23
テクスチャフィルタリングは
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_NONE)
で無しにしているのですが、自分が使っている Millennium G450上では右端に指定した矩形の隣のピクセルが少し描かれてしまいます。
同じプログラムで nVIDIA や VIA のもので動かしてみたらそういったことがありませんでした。
Millennium のほうのドライバは最新にしています。
こういった同じプログラムで表示が違うというのは起こり得るのでしょうか?
もしあるのでしたら、そのときの対処などありましたら教えていただければと思います。
229デフォルトの名無しさん:2006/03/01(水) 02:24:49
起こりえる。

対処法は、
1、動作対象から外す。
2、ビデオカードを判別して微調整する。
230212:2006/03/01(水) 03:00:47
>>229
ありがとうございます。
どうしてもわからなかったので、答えを頂いて少し安心しました。
今日はもう寝ます。おやすみなさい。
231デフォルトの名無しさん:2006/03/01(水) 19:05:46
>>228
ビデオカード3D設定で、「アプリケーション依存」にする。
232192:2006/03/01(水) 19:06:10
>>194
>>210
遅くなりましたが
どうもありがとうございます
頂点シェーダはともかく
ピクセルシェーダーは叩いても期待できないと
233212:2006/03/01(水) 19:40:31
>>231
ビデオカード3D設定というはビデオカード別にあるユーティリティー内にあるのでしょうか?
こちらにある Matrox QuickDesk内にはありませんでした。
234デフォルトの名無しさん:2006/03/01(水) 20:38:23
>>233
通常は
画面のプロパティ>設定>詳細ボタン
を押した先のタブにある。
235デフォルトの名無しさん:2006/03/01(水) 21:38:50
知ったかの悪寒
236デフォルトの名無しさん:2006/03/01(水) 23:23:49
無敵戦士シッタカリオン
237デフォルトの名無しさん:2006/03/02(木) 06:00:40
ウィンドウサイズが変更された時にWM_SIZEを処理して
カメラの位置の修正
バッファサイズのリサイズ
などをすると思います

しかし私の環境では最小化時に(WPARAMがSIZE_MINIMIZEの時)以下の関数
IDirect3DDevice8::SetTransform();
IDirect3DDevice8::SetTransform();
IDirect3DDevice8::SetRenderState();
IDirect3DDevice8::SetRenderState();
を処理しますと。ご不便をおかけしてすみません略が出てプログラムが終了してしまいます。
なぜでしょうか?

参考にしているサイトは次なのですが・・・(氏もwParam == SIZE_MINIMIZEの時は弾いている)
http://wisdom.sakura.ne.jp/system/directx/dxg8.html
238デフォルトの名無しさん:2006/03/02(木) 12:43:51
ttp://www7a.biglobe.ne.jp/~GPGA/html/program.html
↑ここのサンプルを参考にスキンメッシュの実装を試みているのですが、
tiny.x を読ませようとすると LoadXFile.cpp の SetupBoneMatrixPointersOnMesh の中で
D3DXFrameFind が NULL を返して失敗しているようです。

SDK の Multianimation や SkinnedMesh サンプルを見ても読み込み部は同様なな処理を行っているようです。
どうすればちゃんと読み込めるのでしょうか?
239デフォルトの名無しさん:2006/03/02(木) 13:32:45
>>237
最小化のときはロストしてるんだから
240デフォルトの名無しさん:2006/03/02(木) 15:51:21
次スレは
【C++】 DirectX初心者質問スレ Part9 【C++】

241デフォルトの名無しさん:2006/03/02(木) 16:09:25
で、Delphiなんて知らないんだからねっ!
Dよりメジャーだからなんだっていうのよ!!
242デフォルトの名無しさん:2006/03/03(金) 12:41:53
D3DRS_ALPHATESTENABLE
これってなんでTESTって付いてるんでしょう?
TRUEにしたままリリースしたらまずい?
243デフォルトの名無しさん:2006/03/03(金) 13:20:07
  /'           !   ━━┓┃┃
-‐'―ニ二二二二ニ>ヽ、    ┃   ━━━━━━━━
ァ   /,,ィ=-;;,,, , ,,_ ト-、 )    ┃               ┃┃┃
'   Y  ー==j 〈,,二,゙ !  )    。                  ┛
ゝ.  {、  - ,. ヾ "^ }  } ゚ 。
   )  ,. ‘-,,'   ≦ 三
ゞ, ∧ヾ  ゝ'゚       ≦ 三 ゚。 ゚  
'=-/ ヽ゚ 。≧         三 ==-
/ |ヽ  \-ァ,          ≧=- 。
  ! \  イレ,、         >三  。゚ ・ ゚
  |   >≦`Vヾ        ヾ ≧
  〉 ,く 。゚ /。・イハ 、、     `ミ 。 ゚ 。 ・
244デフォルトの名無しさん:2006/03/03(金) 13:20:58
>>242
アルファテストでググれ

…と思ったがβテストと同じような意味のαテストばかりヒットするか。
物凄く古い記事だが、↓が参考になるかと。
ttp://platz.jp/~moal/colorkey.html

ちなみに今はカラーキーなんて物は絶滅していて、αブレンドかαテストを
使うようになっているから、そのサイトの説明とは状況が変わっている。
(D3DXのテクスチャ関係のカラーキーはα値を設定しているだけ)
245242:2006/03/03(金) 13:38:58
  /'           !
-‐'―ニ二二二二ニ>ヽ、
ァ   /,,ィ=-;;,,, , ,,_ ト-、 )
'   Y  ー==j 〈,,二,゙ !  )    。
ゝ.  {、  - ,. ヾ "^ }  } ゚ 。
   )  ,. ‘-,,'   ≦ 三
ゞ, ∧ヾ  ゝ'゚       ≦ 三 ゚。 ゚  
'=-/ ヽ゚ 。≧ なるほど。 三 ==-
/ |ヽ  \-ァ,  ありがとう ≧=- 。
  ! \  イレ,、   ござい  >三  。゚ ・ ゚
  |   >≦`Vヾ   ました。 ヾ ≧
  〉 ,く 。゚ /。・イハ 、、      `ミ 。 ゚ 。 ・
246デフォルトの名無しさん:2006/03/03(金) 13:54:00
掃除していってくださいよ
247デフォルトの名無しさん:2006/03/03(金) 21:16:10
質問です。
固定パイプラインで、
α = ((テクスチャのα) - 固定値1) x 固定値2
とやりたいんですが、
TFACTORって1つのパイプラインで1つの値しか使えないもんでしたっけ?
2つ使えると固定値1,2の両方に使えていいなぁって思ったんですが。

あと x固定値2 のところで、元のテクスチャのαよりも振れ幅を大きくしたい場合は
D3DTOP_MODULATE4X などを使うのが良いでしょうか?
これだとせいぜい4倍の振れ幅にしかならないので、もう少し大きい拡大率を
実現する方法があれば良いのですが。

よろしくたのんます。
248247:2006/03/03(金) 23:32:48
前者については固定値2のところにスペキュラ値を使うことを思いついた
249デフォルトの名無しさん:2006/03/04(土) 01:57:12
>>247-248
シェーダー使え。
250247:2006/03/04(土) 02:28:14
>>249
固定パイプラインで ってわざわざ書いたやんかぁ。
あんまりビデオカードを限定したくないんで。
そこをなんとか。
251デフォルトの名無しさん:2006/03/04(土) 02:37:01
プログラマブルシェーダー使わずになんでもかんでもできるなら、
プログラマブルシェーダーなんて必要ないわな・・・
252デフォルトの名無しさん:2006/03/04(土) 09:28:21
プログラマブルシェーダーって早口で3回言えたら>>247のちんこうp
253デフォルトの名無しさん:2006/03/04(土) 11:19:10
>>252=ゲイ
254デフォルトの名無しさん:2006/03/04(土) 13:39:57
64x64を拡大するんですが図の右のやつは本当に重ねてやるんでしょうか?

http://www.geocities.jp/weekend_freegame/saotome/sub7.html

DirectX9の何かをセットするとこんなふうに拡大できるのかと思ったんですが。
255デフォルトの名無しさん:2006/03/04(土) 13:57:11
質問です。
「DirectX」という言葉の意味に「DirectSound」は含まれますか?
256255:2006/03/04(土) 13:57:43
age忘れ。
257デフォルトの名無しさん:2006/03/04(土) 14:37:29
>254
http://www.geocities.jp/weekend_freegame/saotome/sub1.html
すみません当方DirectX初心者なのですが、これブラクラですか?
258デフォルトの名無しさん:2006/03/04(土) 14:53:25
あーすいません図だけにすればよかった。

http://www.geocities.jp/weekend_freegame/saotome/helpme.jpg
259デフォルトの名無しさん:2006/03/04(土) 15:17:08
早乙女キタ━━━━(゚∀゚)━━━━ッ!!
260デフォルトの名無しさん:2006/03/04(土) 15:26:36
>>254
ビットマップをそんな風にリアルタイムで拡大できるフィルタあったら、
誰も大きいサイズのテクスチャなんてつかわねぇよ。

リアルタイムでなければ、かなり綺麗に拡大できる方法もある。
261デフォルトの名無しさん:2006/03/04(土) 18:28:08
D3DXLoadMeshHierarchyFromXInMemory
が重くて困ってます。
軽くするテクニックを教えてもらいたいのですが、、、
262デフォルトの名無しさん:2006/03/04(土) 18:42:26
自前で組めば解決。
263デフォルトの名無しさん:2006/03/04(土) 19:28:11
>>262
やっぱすか。。。
フレームは作った事がありますが、アニメーションが。。。

とか思ってたら、クローニングする方法を思いつきました。
クローニングが軽いか重いか知りませんが、一応解決したように思います。
ありがとうございました。
264デフォルトの名無しさん:2006/03/04(土) 22:52:58
DirectX SDK - (February 2006)が付録になっている書籍を教えてください
265デフォルトの名無しさん:2006/03/04(土) 23:04:58
266デフォルトの名無しさん:2006/03/04(土) 23:18:09
ネット環境がないとかじゃね?
>>264も携帯からとか。
267デフォルトの名無しさん:2006/03/04(土) 23:23:39
携帯でダウンロード。
今は男を見せるとき。
268デフォルトの名無しさん:2006/03/04(土) 23:32:41
ネットカフェ
269デフォルトの名無しさん:2006/03/04(土) 23:50:37
最近の携帯はそんなに大容量ファイルを扱えるのか?
270デフォルトの名無しさん:2006/03/04(土) 23:52:02
ネット環境が無い初心者が、SDK手に入れた所でまともに扱えるとは思えない。
271デフォルトの名無しさん:2006/03/04(土) 23:54:47
ネット環境が無い≠初心者
272デフォルトの名無しさん:2006/03/04(土) 23:59:26
( ゚д゚)ポカーン
273デフォルトの名無しさん:2006/03/05(日) 00:00:00
開発中に手軽に情報を集められないハンデはでかい。
274デフォルトの名無しさん:2006/03/05(日) 00:00:10
逆に考えるんだ
もしISDNユーザーならかなりのベテラン
275デフォルトの名無しさん:2006/03/05(日) 00:09:03
OSが割れものだから、ダウンロード前の正規品確認が出来ない

雑誌でゲト


だったりして。
276デフォルトの名無しさん:2006/03/05(日) 00:11:55
windows2000を使っている人がすべて割れユーザーみたいな誤解を与えることを言わないでくれ
277デフォルトの名無しさん:2006/03/05(日) 00:20:00
だれも誤解なんてして無いと思うが・・・
278デフォルトの名無しさん:2006/03/05(日) 00:25:25
windows2003を使っている人がすべて割れユーザーみたいな誤解を与えることを言わないでくれ
279デフォルトの名無しさん:2006/03/05(日) 00:30:12
根本的な質問いいですか・・・?
DirectXとは何ですか?
あって何の意味があるんですか?
もうこの質問ってでましたかね・・・
280デフォルトの名無しさん:2006/03/05(日) 00:31:04
根本的な質問いいですか・・・?
人間とは何ですか?
あって何の意味があるんですか?
もうこの質問ってでましたかね・・・
281デフォルトの名無しさん:2006/03/05(日) 00:31:53
根本的な質問いいですか・・・?
若さとは何ですか?
あって何の意味があるんですか?
もうこの質問ってでましたかね・・・
282デフォルトの名無しさん:2006/03/05(日) 00:32:22
根本的な質問いいですか・・・?
マッサーカーとは何ですか?
あって何の意味があるんですか?
もうこの質問ってでましたかね・・・
283279:2006/03/05(日) 00:34:31
>>280-282
そんな馬鹿にしなくてもいいじゃないですか・・・
この質問はスルーですか・・・
284デフォルトの名無しさん:2006/03/05(日) 00:37:57
↓ここで早乙女がズバリ回答
285デフォルトの名無しさん:2006/03/05(日) 00:42:21
>>279
DirectXとはマイクロソフトが提供するマルチメディア向けソリューションのことなんだ。
アプリケーション開発者向けにはDirectX APIをラッピングしたDirect3DXライブラリを
中心にドキュメントやツール、デバッガを包括したDirectX SDKが用意されていて、
このスレで扱っているのはこれだ。
このDirectX APIに対応したドライバを用意して、なおかつハードウェアで高速化できるものが
DirectX対応ハードウェアだ。nVidiaやATiの製品が有名だがサウンドボードでも
ハードウェア処理が出来ればCPUへの負担が大幅に減るなどのメリットもある。
商用向けだと課金システムまで含めたネットワークソリューションが登場したり、
DirectX向けに最適化されたゲーム機が発売されるなど広がりを見せている。

要するにググれ
嫌なら工学社の刑
286デフォルトの名無しさん:2006/03/05(日) 00:43:18
>>285
ググルのを薦めるなら答えるな
嫌なら工学社の刑
287279:2006/03/05(日) 00:46:57
>>285
おお!!!ありがとうございます!!!
エロゲだけのものじゃないんですね・・・w
なるほど、勉強になりました。
DirectXでも色々なことが出来るわけですね!
本当にありがとうございました!!!
288デフォルトの名無しさん:2006/03/05(日) 00:50:03
>エロゲだけのものじゃないんですね・・・w
HSPじゃあるまいし。
289デフォルトの名無しさん:2006/03/05(日) 00:50:46
>>287
>エロゲだけのものじゃないんですね・・・w

お前がエロゲ厨って事は分かった
290デフォルトの名無しさん:2006/03/05(日) 00:55:37
>>280
BC800ぐらいでがいしゅつ
ソクラテスでググれ

>>281
Oldメンバが大きくなるとBokkiメソッドが使えなくなる
これはFactoryパターンになっていてChildオブジェクトが生成できなくなるので注意
Vinnyでリーク発生などが主な原因

>>282
オプソ野郎だよ
「真っ赤さ」と揶揄されるほどのコミュニスト

>>286
工学社はプログラムの解説がはじまるまでは良書だぞ

>>287
エロゲもフォース・フィードバックに対応するべきです
そしてふたなり普及のためにもジョイスティックを想定して開発するべきだと
(FF対応上位機種だとソフトウェア制御で棒をうねらせながらプルプル震えることが可能なんです。
これはマイクロソフトがふたなり業界を強力にプッシュしてる証拠ともいえます)
アンケートハガキに書いて送りつけてください
あなたの一票がふたなりを救います
291デフォルトの名無しさん:2006/03/05(日) 01:27:38
>>290





ツマンネ
292デフォルトの名無しさん:2006/03/05(日) 01:31:52
>>291
ふたなり+つまんね = ……快便?
293デフォルトの名無しさん:2006/03/05(日) 01:45:23
スカトロふたなり
294デフォルトの名無しさん:2006/03/05(日) 01:52:08
D3DXFRAME コピーしたいんだけど、再帰関数作んなくちゃだめ?
なんか便利なのない?
295294:2006/03/05(日) 01:59:26
物凄くアホな事を聞いたかも知れない。
ヘルプを良く見てませんでした。
すいません。
296294:2006/03/05(日) 02:33:29
いや、やっぱ良いんだ。
あーもう分かんなくなってきたw

改めて質問。
D3DXFRAME コピーしたいんだけど、再帰関数作んなくちゃだめ?
なんか便利なのない?
297名無しさん@お腹いっぱい。:2006/03/05(日) 04:38:15
既存のものに不便を感じたら
 「自分でつくれ」の思し召し
298デフォルトの名無しさん:2006/03/05(日) 09:19:04
>>296
無いんじゃね?
全体でいくつあるかわからん上に階層構造になってるから
力技でもっていくと余計複雑になったりするし、
その階層ごとに用がある場合の処理ってコールバック関数みたいなの
作らなきゃいけなくなるけど、使う側からすればそんなの複雑で使いたくないしで
そういう関数ってないんじゃないの?
299294:2006/03/05(日) 12:50:08
CAllocateHierarchy なるものを見つけてきた。
ただ、全ツリーの複製はできないみたいです。
やっぱり再帰作ります。

ありがとうございました。
300デフォルトの名無しさん:2006/03/07(火) 23:32:11
あれなんであんな面倒な作りなんだろうな
301デフォルトの名無しさん:2006/03/09(木) 17:54:28
VC++でのDirecctX を勉強したいんだが、オススメの書籍かWebサイトってある?
C、C++は最低限のことは覚えた。(柴田望洋氏の書籍で学びました)
302デフォルトの名無しさん:2006/03/09(木) 18:01:18
DirecctX?
303デフォルトの名無しさん:2006/03/09(木) 18:08:25
だって春休みだもん
304デフォルトの名無しさん:2006/03/09(木) 18:21:22
305デフォルトの名無しさん:2006/03/09(木) 18:30:38
ダイレックトエックス!
306デフォルトの名無しさん:2006/03/09(木) 20:06:04
307デフォルトの名無しさん:2006/03/09(木) 22:22:38
xファイル(某ドラマの方じゃなくて)を、
テキスト、バイナリ、圧縮それぞれ相互変換させる上手い方法ってありますか?

ユーザーから受けた数値をもとに様々な大きさ形の、テキスト、バイナリ、圧縮xファイルを出力するようなプログラムを作ろうと思ってるのですが…
とりあえず頑張って手書きでテキストを出力させていますが、実はこの出力に関しても上手い方法があるとかありますか?
308デフォルトの名無しさん:2006/03/09(木) 22:30:21
>>307
DirectX APIで出力したらいいんじゃない?
309デフォルトの名無しさん:2006/03/09(木) 22:37:00
上手い方法も何も標準でパーサが付いているんだが。
形式を変えるだけなら内容に関知する必用もない。
310デフォルトの名無しさん:2006/03/09(木) 23:25:31
>>308
>>309
ごめんなさい、もうちょっと根本的なところが分かってないです…
そのパーサとやらがいまいちわからんです…
ググってももいまいちヒットしなくて…
具体的にどんな手順でどういう風にするんですか?
311デフォルトの名無しさん:2006/03/09(木) 23:54:00
>そのパーサとやらがいまいちわからんです…
>ググってももいまいちヒットしなくて…

ガンガンヒットするんだが。
312デフォルトの名無しさん:2006/03/09(木) 23:58:42
>>311
ググるのが下手な私に是非とも検索キーワードを。
313デフォルトの名無しさん:2006/03/10(金) 00:08:43
つ「パーサ」
314デフォルトの名無しさん:2006/03/10(金) 00:08:58
ググるもなにもDirectXのヘルプ見りゃわかるな…
315デフォルトの名無しさん:2006/03/10(金) 00:15:27
>>313
そこまで根本的じゃなくて… パーサ位辞書にも載ってるしそもそもその意味じゃなくて。
316デフォルトの名無しさん:2006/03/10(金) 00:20:30
だめだコイツw
次のかたドゾー
317デフォルトの名無しさん:2006/03/10(金) 00:33:41
ヘルプから見つけました…
ご迷惑をおかけしました……i|liorz
318デフォルトの名無しさん:2006/03/10(金) 00:57:22
>>307
この手順をソース踏まえてやり方を書いているような所ってありませんか?
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/programmingguide/advancedtopics/xfiles/loadingxfile.asp
ヘルプ見てもよく分からないです;
319デフォルトの名無しさん:2006/03/10(金) 03:17:48
プログラマがプログラムを放棄する件
320デフォルトの名無しさん:2006/03/10(金) 03:33:49
手順が書いてある以上、その通りにやれば、*大抵* は上手くいく。
また、この程度書けないと、DirectXを使うこと自体が難しいとおもわれる。

ついでに、そのページに書いてあるキーとなる単語をWebで検索すれば、ある程度出てくる。
日本じゃまだ情報量が少ないみたいだけれど。

=まぁ、頑張れ。
321デフォルトの名無しさん:2006/03/10(金) 05:11:36
要するに誰もわからないのですね
322デフォルトの名無しさん:2006/03/10(金) 05:14:42
いいえ、それはトムです
323デフォルトの名無しさん:2006/03/10(金) 08:56:58
テンプレートを設定してファイルを読み込み、
出力オプションで好きな形式を選んで吐き出すだけ。
迷うところや難しい所などどこにもない。
324318:2006/03/10(金) 14:15:40
ちょっと背伸びしすぎたみたいです(^^;
ご教授どうもありがとうございました。
325デフォルトの名無しさん:2006/03/10(金) 19:47:21
点光源が上手くいきません。
何が悪いのでしょうか?
ttp://goods.is-a-geek.com/fup_35b/src/harinoana1710.zip
326デフォルトの名無しさん:2006/03/10(金) 20:06:18
書いたコードが悪いんだろう。
327デフォルトの名無しさん:2006/03/10(金) 20:35:48
>>325
328デフォルトの名無しさん:2006/03/10(金) 20:44:48
何がどう上手くいかないのか
自分はどうしたかったのか
何も説明しないでzip貼り付けて終わりかよ

ここはBBXじゃねぇよ?
329デフォルトの名無しさん:2006/03/10(金) 21:04:25
BBXってそれでこたえてくれるの?

親切・・・
330325 ◆cMkVYZAp6k :2006/03/10(金) 21:13:12
>>328
>何がどう上手くいかないのか
点光源が実現されません。
真っ暗になります。

>自分はどうしたかったのか
点光源を実現したかった。
331デフォルトの名無しさん:2006/03/10(金) 21:22:23
光の減退が早いとか
他の光源ではどうなのか
332325 ◆cMkVYZAp6k :2006/03/10(金) 21:28:14
>>331
減衰とかそういうレベルじゃありません。
板を一枚表示してみたのですが、その板が真っ暗になります。
平行光線は期待通りに実現されます。
上記と同じ位置にある板もちゃんとライティングされます。
その他の光源では試していません。
333デフォルトの名無しさん:2006/03/10(金) 21:44:11
何も見ずに言うが、
RenderStateでライト使用設定&ライト有効化
マテリアルの設定と適応
334デフォルトの名無しさん:2006/03/10(金) 21:49:25
>>325のファイルを落とせないのは私だけかしら
335デフォルトの名無しさん:2006/03/10(金) 22:14:52
>>332
てめえで試しもせずにソース貼り付けて直し方教えろってか?
336325 ◆cMkVYZAp6k :2006/03/10(金) 22:18:53
>>333
してます!

>>334
失礼しました。
あのロダはリファラを見てるようです。
うpしなおしました。
ttp://www.borujoa.org/upload/source/upload5202.zip
337325 ◆cMkVYZAp6k :2006/03/10(金) 22:22:30
>>335
問題は点光源です。
使用頻度も重く、使う機会の少ないスポットライト等は試していません。
338デフォルトの名無しさん:2006/03/10(金) 22:57:15
>使用頻度も重く、使う機会の少ない
日本語でどうぞ。
339325 ◆cMkVYZAp6k :2006/03/10(金) 23:17:48
>>338
すいません。
「使用すると重いため、使う機会も少ない」です
340デフォルトの名無しさん:2006/03/10(金) 23:21:38
真上から薄い板を照らしてないか?
341デフォルトの名無しさん:2006/03/10(金) 23:22:55
>>325
…なぁ、俺には、DirectXが適切に教えてくれてるように見えるんだ。

0x77e7bc3f で初回の例外が発生しました : Microsoft C++ exception: long @ 0x0012f9fc。
Direct3D9: (ERROR) :SetLight failed.
Direct3D9: (ERROR) :All attenuation factors are 0 for non-directional light

なんだこれは?
342デフォルトの名無しさん:2006/03/10(金) 23:24:42
答え合わせしとくわね。
x light.Range = 60.0f;
o light.Range = 1000.0f;

ライト位置が平面にだいぶ近いから、前者で大丈夫に感じるけど、
ライティングは頂点単位で計算されてて、
ライト位置から四角形の4隅までは 60.0f以上あるから、
そのせいでライティングされていないわけね。

あとは減衰係数の設定が抜けてるから、設定して終わり。
light.Attenuation0 = 1.0f;
light.Attenuation1 = 0.0f;
light.Attenuation2 = 0.0f;
343325 ◆cMkVYZAp6k :2006/03/10(金) 23:53:01
ありがとうございます。

>>340
はい。

>>341
すいません、わかんないです><

>>342
>ライティングは頂点単位で計算されてて、
>ライト位置から四角形の4隅までは 60.0f以上あるから、
これでやっと分かりました!
SDKで頂点頂点って書いてあるやつの意味も分かりました!
>>340さんの突っ込みの意味も分かりました!
何か目から鱗が落ちた感じです。

1年越しの謎が解けたので安心して眠れます。
本当にありがとうございました。
344デフォルトの名無しさん:2006/03/11(土) 00:43:50
345デフォルトの名無しさん:2006/03/11(土) 01:41:00
ピクセルシェーダが自動でかかると思ってたのか・・・
まあ、最近の・・・って感じか・・・
346デフォルトの名無しさん:2006/03/11(土) 07:52:12
>減衰とかそういうレベルじゃありません。
流石DQNは違うぜ!
347デフォルトの名無しさん:2006/03/11(土) 07:59:40
すいません、BBXでも質問させてもらったのですがなかなかレスをいただけないようなので
こちらでご助言いただければと思い、書き込ませて頂きます。
内容は、DirectPlayを使った簡単なP2Pチャットアプリでのホストの引継ぎについてです。

DirectPlayは、ホストがセッションから抜けた場合に
自動的に残りのピアのいずれかにホストを引き継がせてくれるそうなのですが、
なぜかその新たにホストになったピアに対して
新しく接続を試みると接続を確立できない、という状況になっています。

一応、ホストの引継ぎ自体は行われているようで、
ホストが抜けた時に発行される「DPN_MSGID_HOST_MIGRATE」を捕まえて
メッセージに付いてきたデータを比較する事で
誰か一人が新たなホストを依頼されたところまでは検出できていますし、
いままで繋がっていたピア同士では、引き続き通信はできています。
しかし、そのセッションに新たなピアが参加するということができません。

ソースは↓に全て上げてありますので見ていただければと思います。
よろしくお願いします。

ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=49&vew=81
348デフォルトの名無しさん:2006/03/11(土) 08:11:54
>一応、ホストの引継ぎ自体は行われているようで、
>ホストが抜けた時に発行される「DPN_MSGID_HOST_MIGRATE」を捕まえて
>メッセージに付いてきたデータを比較する事で
>誰か一人が新たなホストを依頼されたところまでは検出できていますし、

ですが、このことで新しくホストを任命されたピアがホストとして
きちんと機能しているかということまではわかっていません。
ただ自分の所にホスト任命のメッセージが来たということが確認できているだけです。

なのでいまのところ「新しいホスト」に問題があるのか「そこへ接続を試みているピア」に問題があるのか
というのははっきりしませんが、
接続する方としては指定されたIPとポートをめがけて接続要求するだけであり、
それまでのセッションはちゃんと同じプログラムで接続を確立できていたわけですから、
やはり待ち受け側の「新しいホスト」に問題があるような気がします。
349デフォルトの名無しさん:2006/03/11(土) 11:49:52
age
350デフォルトの名無しさん:2006/03/11(土) 17:03:32
質問です。

画像からのテクスチャー作成プロセスを探っています。
・D3DXCreateTextureFromFile
・D3DXCreateTextureFromFileInMemory
・D3DXCreateTextureFromResource
・D3DXCreateTextureで作ってRtlCopyMemoryで流し込む
上記以外ではどんな方法が存在するのでしょうか?
351デフォルトの名無しさん:2006/03/11(土) 18:37:48
>350
・テクスチャのサーフィスがロックできるなら
ロックして書き込む。

・ロックできないなら
テクスチャと同じフォーマットのオフスクリーンサーフィスを作って、
それをロックして書き込んで、テクスチャのサーフィスにコピーする。
352デフォルトの名無しさん:2006/03/11(土) 19:36:24
>>351
下は初耳でした。
早速試してみます。
ありがとうございました。
353デフォルトの名無しさん:2006/03/12(日) 13:18:45
テクスチャをレンダーターゲットに設定する方法を教えて下さい ○<\_

CreateTexture()でD3DUSAGE_RENDERTARGETを指定してテクスチャオブジェクトを
生成するまではいいのですが、実際にこれに対して描画させる方法が見つけられません
SetRenderTarget()の引数に渡すのはTxtureじゃなくてSurfaceオブジェクトだし…
354デフォルトの名無しさん:2006/03/12(日) 13:24:58
ん?テクスチャのサーフェイスにレンダリングだと問題あるの?
もしかしてDXが標準で対応してないテクスチャフォーマットに
対応したいって事かぇ?
355デフォルトの名無しさん:2006/03/12(日) 13:26:50
どうせ、ヘルプすら読んで無いんだろ。
356デフォルトの名無しさん:2006/03/12(日) 13:36:40
>テクスチャのサーフェイスにレンダリングだと問題あるの?

この意味がわからんのです。TextureとSurfaceは別物ですよね?
CreateOffscreenPlainSurfaceやCreateRenderTargetで作った「サーフェスへ描画」なら
判りますが、Textureへの描画ってどう指定したらよいものか…
357デフォルトの名無しさん:2006/03/12(日) 13:47:14
>356
ヘルプでテクスチャインターフェイスのメソッドを100回見返せ。
358デフォルトの名無しさん:2006/03/12(日) 14:07:39
GetSurfaceLevel()
これか…
この名前から動作が想像できんかったよ、正直スマンカッタ
359デフォルトの名無しさん:2006/03/12(日) 15:45:32
    D3DXVECTOR3 vecDir;
    D3DLIGHT9 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);

アンビエント光しか反映されません。
助けてください。
360デフォルトの名無しさん:2006/03/12(日) 15:52:10
>>359
頂点データに法線がないんだろう
361359:2006/03/12(日) 16:32:59
>>360
法線はあります。
SDkについている色々なXファイルで調べてみたのですが、
私の作成したXファイルと"tiger.x"を表示した場合にのみ、アンビエント光しか反映されないようです。
その他SDKについているドワーフやビッグシップ1、飛行機にはちゃんとライトが反映されます。
362デフォルトの名無しさん:2006/03/12(日) 16:43:55
>>361
tiger.xに法線データないよ。
363デフォルトの名無しさん:2006/03/12(日) 16:48:08
法線フイタw
364デフォルトの名無しさん:2006/03/12(日) 17:02:14
ワロタ、厨の典型だな
365デフォルトの名無しさん:2006/03/12(日) 17:49:14
warning LNK4089: 'ole32.dll' へのすべての参照は /OPT:REF によって廃棄されます。
って警告がでました。どういったときに起こりますか?
366デフォルトの名無しさん:2006/03/12(日) 17:51:01
367359:2006/03/12(日) 18:27:30
>>362
すいません、自己解決しました。

DirectX Viewerで「Normals」にチェックを入れると何か出てきたので
それで法線データがあるものと勘違いしていました。
私が作成したXファイルも保存時に法線データを含めずに保存していたようです。

お騒がせ致しました。
368デフォルトの名無しさん:2006/03/12(日) 18:36:38
DirectInputで、LPDIRECTINPUT8を同一アプリケーションで複数作成できますが、
一つのデバイス毎にLPDIRECTINPUT8一つで対応させても問題はないものでしょうか?
この辺りの事はチュートリアルに書いてなかったので、よろしければ教えてください。
369デフォルトの名無しさん:2006/03/12(日) 20:25:59
D3DPOOL_MANAGEDについて質問です。ヘルプを見ると、
「必要に応じて、デバイスからアクセスできるメモリに自動的にコピーされます。」
と書いてありました。

つまり、テクスチャをD3DPOOL_MANAGEDで8MB分つくったとしても、
VRAMが8MB消費されるとは限らない、ということでしょうか?
370デフォルトの名無しさん:2006/03/12(日) 20:36:37
>>368
問題無し。
371デフォルトの名無しさん:2006/03/12(日) 20:46:28
>>369
そりゃそうだろ。
俺、ゲーム作るときにビデオメモリの量なんかほとんど気にしたことないぞ。
多分、30MB分テクスチャをつくっても、場合によっては動作環境はVRAM16MB以下になるんじゃないか?
372デフォルトの名無しさん:2006/03/12(日) 21:00:35
マルチパスレンダリングのテクニックについて教えてください。
例えば、2パス目以降はZバッファ書き込みを切るなど
他にこうした方が効率が良いなどありますでしょうか?
373デフォルトの名無しさん:2006/03/12(日) 23:22:58
dev->StretchRect(pclSrcSfc, &stRect, pclDstSfc, NULL, D3DTEXF_POINT);
の使い方で気を付けるべき点を教えてください。
D3DERR_INVALIDCALLエラーが返ってきて困ってます。

@転送元サーフェイスと転送先サーフェイスが同一である。
A拡大と縮小のどちらかが行われるか、またはどちらかのサーフェイスが圧縮フォーマットである (「圧縮テクスチャの使い方」を参照)。
B転送先サーフェイスが単純なオフスクリーンでありながら、転送元サーフェイスがそうでない。
C転送先サーフェイスが単純なオフスクリーンであり、拡大が行われている。
上記のいずれかの時、失敗するらしいのですが、BCの意味が馬鹿なので分かりません(><)

BCにはどんな条件が入るのでしょうか?
374373:2006/03/13(月) 01:37:21
解決してませんが、UpdateSurfaceでやりたい処理を行いました。
ありがとうございました。
375デフォルトの名無しさん:2006/03/14(火) 19:58:42
>>371
やっぱり、動作環境っていろいろなマシンで試してみないとわからないんだね。
376デフォルトの名無しさん:2006/03/15(水) 08:29:34
DirectPlayで作ったP2Pアプリを
一つのPCで複数クライアントを立ち上げてローカルでテストした場合
ホストとピアのポート番号を同じにすると接続失敗するのはなぜですか?
377376:2006/03/15(水) 10:12:38
もう少し具体的に書きますと、

IDirectPlay8Peer->Hostの第二引数に渡す
IDirectPlay8AddressオブジェクトにAddComponentしたポート番号と、
IDirectPlay8Peer->connectの第三引数に渡す
IDirectPlay8AddressオブジェクトにAddComponentしたポート番号を
同じにして一台のPCで二重起動してテストしようとすると接続を確立できない
というか、connectする方がホストを発見できなくなるようなのですが。
なぜでしょうか?
378デフォルトの名無しさん:2006/03/15(水) 21:31:29
スキンメッシュについての質問

スキンメッシュについて、SkinnedMesh サンプルソースを読んでるんですが
このソースの中に出てくる、オフセット行列(メッシュコンテナクラスのメンバ)
というのがいまいちよくわかりません。
SDKのヘルプでは、「図 2. キャラクタの前腕に対するボーンのオフセット変換の効果」
の所で、回転させるためにボーンの根本を原点に移動する行列のようなことが書いてありますが
この「ボーンの根本を原点に移動する行列」という解釈でよろしいのでしょうか?

また、このオフセット行列でボーンを原点に戻して回転させた後には、当然、また元の位置に
戻してやらないといけないと思うんですが、これはどこでやってるのでしょうか?

自分は、親子関係の行列の変換について、↓のホームページの内容のように
directXも行列の変換が行われているのだろうと考えているのですが
これは正しいのでしょうか?

ttp://monsho.hp.infoseek.co.jp/dx/dx29.html
「もんしょの部屋」
DirectXの話 第29回「ボボンボンボン」

379デフォルトの名無しさん:2006/03/15(水) 23:33:54
>>当然、また元の位置に戻してやらないといけないと思うんですが
実際に移動してるわけでなくてローカル座標だからボーンの場所が原点だと思ってくれって言ってるんだよ
380デフォルトの名無しさん:2006/03/16(木) 01:51:20
てゆか逆にオフセット指定せずにアニメーションさせてみれば
よく分かると思われ
381378:2006/03/16(木) 18:44:08
>>379
>>380
レスありがとうございます。

>実際に移動してるわけでなくてローカル座標だからボーンの場所が原点だと思ってくれって言ってるんだよ
描画する時↓にオフセット行列を掛けているので、やっぱり実際に座標変換されていると思うのですが・・
ちょっと、よくわかりません。

DrawMeshContainer()より

// set up bone transforms
for (iBone = 0; iBone < cBones; ++iBone)
{
D3DXMatrixMultiply
(
&m_pBoneMatrices[iBone],// output
&pMeshContainer->pBoneOffsetMatrices[iBone],//オフセット
pMeshContainer->ppBoneMatrixPtrs[iBone]
          //↑フレームクラスのメンバ(CombinedTransformationMatrix)合成済み変換行列を参照している
);
}
382デフォルトの名無しさん:2006/03/16(木) 19:13:30
オフセットって自分の親までの変換行列を累積した奴じゃねーの。
だから親が回転したりすればその累積の行列は変化するけど、
自分自身のローカルな回転の行列は変化しない。
383デフォルトの名無しさん:2006/03/16(木) 19:15:04
そして、つまりそれがFK。
384デフォルトの名無しさん:2006/03/16(木) 19:22:21
つうかよくSDKのサンプル読む気になるな。
あんな分かり難いサンプルとしてのソースはなかなか無いと思う。
戦意喪失させる力を持っている。
385デフォルトの名無しさん:2006/03/16(木) 19:44:48
>SDKのヘルプでは、「図 2. キャラクタの前腕に対するボーンのオフセット変換の効果」
>の所で、回転させるためにボーンの根本を原点に移動する行列のようなことが書いてありますが

そもそもこの記述が見つからないんだけど、
ヘルプの何処?階層教えてプリーズ。
386デフォルトの名無しさん:2006/03/16(木) 20:52:47
>>385
これで検索→「SkinnedMesh サンプル」
387デフォルトの名無しさん:2006/03/16(木) 21:10:07
あぁあった。古いやつ見てたわ。
388デフォルトの名無しさん:2006/03/17(金) 07:51:09
なんかマニュアルの記述って変じゃない?
親の累積の行列を、対象のボーンのローカルな回転行列にかけることで
「あるべき場所」で回転させる、
って意味で相対的にそこが原点とみなせるってだけで、
なんか原点に「戻してる」ってのは誤解を生むような気がするんだけど、
俺って解釈間違えてる?
389デフォルトの名無しさん:2006/03/17(金) 09:08:43
あのヘルプの翻訳が、「正しいはず」と思っているところが間違っている
英語のヘルプ読めば解決

ただ388に関しては、388が理解できてない気がするな。
ヘルプのどこか分からないから何とも言えないけど。
390デフォルトの名無しさん:2006/03/17(金) 09:17:32
話しの流れすら分からないアホが
したり顔で出てくるのはこのスレですか?
391デフォルトの名無しさん:2006/03/17(金) 11:50:32
英語のヘルプも怪しいもんだけどな
392デフォルトの名無しさん:2006/03/17(金) 11:56:05
日本語のヘルプよかマシ
393デフォルトの名無しさん:2006/03/17(金) 11:59:38
お前ら俺が英語読めないのを知ってか知らずか・・・
394デフォルトの名無しさん:2006/03/17(金) 12:09:36
少なくとも今の話しの部分については中身は同じなわけだが。
395デフォルトの名無しさん:2006/03/17(金) 12:48:25
>>393
多分大丈夫だよ。
新聞の記事や説明書に比べて、ほとんど簡単な文法しか使ってない。
高校卒業してたら、辞書片手に読めるはず。
396378:2006/03/17(金) 12:55:38
>>382
>オフセットって自分の親までの変換行列を累積した奴じゃねーの。

それは、オフセットじゃなくて、下記の
pMeshContainer->ppBoneMatrixPtrs[iBone]
が「変換行列を累積した奴」じゃないんでしょうか?
これは、UpdateFrameMatrices()関数で再帰的に自分の親の変換行列を
掛けて、累積されています。
>>382さんがおっしゃる、「変換行列」とはD3DXFRAME構造体のメンバーの
TransformationMatrix のことですよね?

pMeshContainer->ppBoneMatrixPtrs[iBone]
//↑フレームクラスのメンバ(CombinedTransformationMatrix)合成済み変換行列を参照している

397デフォルトの名無しさん:2006/03/17(金) 13:17:17
>>396
そっか。だったらわかんないや。
間違った事言ってしまったようでごめん。
俺も調べてみるから分かったら報告する。
君も分かったら教えてくれ。
398デフォルトの名無しさん:2006/03/18(土) 01:17:09
さあ、準備体操はここまでだ。

ここからは、メインディッシュのSkinWeightsのMatrix4x4 matrixOffset;について
俺がわかるまで(最低でも6スレ分)続く予定だ。
悪いが他の質問は諦めてくれ。
399デフォルトの名無しさん:2006/03/18(土) 08:54:39
│  ↑
└─┘
おらっしゃあぁぁ!!!
 ∩∧ ∧
 ヽ( ゚Д゚)
   \⊂\
    O-、 )〜
      ∪
400デフォルトの名無しさん:2006/03/18(土) 16:47:07
>> 398
6スレどころではすまないから却下
401http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 19:18:54
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
402デフォルトの名無しさん:2006/03/18(土) 19:23:55
>>401
スレ違い。マルチ乙。
あと氏ね。
403デフォルトの名無しさん:2006/03/19(日) 13:12:13
早乙女って何?
404デフォルトの名無しさん:2006/03/19(日) 23:22:22
不良少年がガキの頃にスキー場でその女の命を助けて
そんときに額にキズができたっていう話だったと思う
405デフォルトの名無しさん:2006/03/19(日) 23:24:50
それって、昔の漫画かw
愛と誠だっけ?
406デフォルトの名無しさん:2006/03/19(日) 23:34:43
 
407デフォルトの名無しさん: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
408デフォルトの名無しさん:2006/03/20(月) 17:12:56
>>401
htmlのレンダリングは初期にCPU容量を必要とするから64ビット化は期待できる
409デフォルトの名無しさん:2006/03/20(月) 23:51:33
>>407
ヘルプ内の「基礎知識」読んだか?
410デフォルトの名無しさん: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
411デフォルトの名無しさん:2006/03/21(火) 17:25:19
>>407
http://www.c3.club.kyutech.ac.jp/~sukiyaki/index.php?%A5%C6%A5%AF%A5%B9%A5%C1%A5%E3%BA%C2%C9%B8
共有頂点云々よりやりたいことってこうじゃないの?
412デフォルトの名無しさん:2006/03/21(火) 17:26:10
あ、アドレッシングモードのところな。
413デフォルトの名無しさん:2006/03/21(火) 22:27:06
これって1ポリゴンで複数のテクスチャを繰り返し表示では。

407はポリゴンを複数麻衣並べたいのでは。
ポリゴン1とか2とかいってるとこが気になる。

>>407どっちかね?
414デフォルトの名無しさん:2006/03/21(火) 23:12:21
Xファイルの描画と頂点シェーダで作成した地形を同時に
描画したいのですが、Xファイルのモデルに地形に貼り付けたテクスチャの
色が混ざってしまいます。

地形に貼るテクスチャの設定を以下のようにしています。
pD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP , D3DTOP_MODULATE);
pD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);

D3DTOP_MODULATE を D3DTOP_SELECTARG1 にすると、Xファイルのモデルまで同じ
テクスチャが貼られてしまうので、おそらく描画対象がちゃんと区別できていない
と思います。

この描画対象の設定の方法をご教授ください。
415デフォルトの名無しさん:2006/03/21(火) 23:30:21
>>414
とりあえず、DirectXの描画は●と○を描画するとしたときに
(まあ、例としてこんな画面になるとしよう)

        ●   ○

(白と黒の2つの玉が画面に表示されている状態だな)

@●の描画に使うテクスチャAをセット
A●を描画(DrawPrimitive)
B○の描画に使うテクスチャBをセット
C○を描画(DrawPrimitive)

という順番があるわけだ。
ここでAとBの間でなにか他の物体を描画(DrawPrimitive)した場合は
貼られるテクスチャは●のものとなる。OK?
416デフォルトの名無しさん:2006/03/21(火) 23:54:15
惚れた
417デフォルトの名無しさん:2006/03/22(水) 00:00:11
NULL
418414:2006/03/22(水) 00:30:26
>>415
レスありがとうございます。

地形をDrawPrimitiveで描画したあとに、
XファイルをDrawSubsetで描画しています。

Xファイルにはテクスチャを貼らないとしたら、最初のDrawPrimitiveの後にSetTextureの取り消し
が必要っていうことですかね?

419414:2006/03/22(水) 00:36:03
DrawPrimitiveのあとに
pD3DDevice->SetTexture( 0, NULL )
をしたら解決しました。ありがとうございました。

>>417
やっと意味が分かりました。
420デフォルトの名無しさん:2006/03/22(水) 01:15:28
>>419
多分、その経験から得られる物は他にもあるぞ。
ステート設定は、殆どその作り。
覚えといた方が良い。
421デフォルトの名無しさん:2006/03/22(水) 02:18:35
ウィンドウまわりの質問なんですが

ウィンドウモードでデバイスを初期化したウィンドウが
WM_SYSCOMMANDのSC_MAXIMIZEを受け取った時に
IDirect3DDevice9::Resetでフルスクリーンにした場合
もう一度IDirect3DDevice9::Resetでウィンドウモードに戻すと
タイトルバーとかが消えてしまい困っています

ただしその状態から最小化>元に戻すとやると
何故かタイトルバーまわりが復活し、ウィンドウの位置も元通りになります

ウィンドウモードにResetした時点でウィンドウの状態を元に戻すには
どうしたらいいんでしょうか?

WM_SIZEのSIZE_RESTOREDでMoveWindowしても反映されませんし
そもそもGetWindorRectしたらフルスクリーン化する前のままでしたし
しかも何故かウィンドウスタイルがTOPMOSTな挙動になってるし…
422デフォルトの名無しさん:2006/03/22(水) 02:25:15
な。
物体(シェーダ)ごとにステートを設定しなきゃならないなら、
クラスか構造体にでもまとめてくれりゃいいのにな。

って、マイクロソフトのプログラマが考えたかどうかは知らんけど、
シェーダごとステートの設定とプログラム側のステートの設定とどっちが反映されるのか
ドッキドッキの状態が今だなw

まあ、シェーダで自分が設定してるならシェーダの方が設定されるっぽいけどw
プログラム側からシェーダの設定をいじりたいときはやっぱり渡してやらなきゃならないしね。
設定忘れのときはプログラム側の設定が使われるしでなにやら悪臭が漂ってるw
423デフォルトの名無しさん:2006/03/22(水) 02:25:47
あ、>>422>>420へのレスな。
424デフォルトの名無しさん:2006/03/22(水) 02:55:34
>421
俺も正しいやり方は知らないけどこうやってる

//::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
425デフォルトの名無しさん:2006/03/22(水) 02:57:42
私はずっと15年くらいMS-DOSアプリを書いていたのですが,ここにきてVC++を使おうと思っています.
というのは,ちょっとした仕事で,DirectX を使ったプログラムを書かなければならないからです.
VC++で,コマンドラインの32bitコンソールアプリを開発できますよね?
コンソールアプリにすると,DirectXの機能はどの程度,制限を受けるのでしょうか?
開発しようとしているのは,Direct3Dの画像をフルスクリーンで提示し,時間が来たら修了する,というものです.
VC++もDirectXも初めてなので,教えて君になってしまって申し訳ないですが,どなたかご助言下さい.
426デフォルトの名無しさん:2006/03/22(水) 03:22:03
初めてなのでと、教えて君なのは関係ないと思われ
427デフォルトの名無しさん:2006/03/22(水) 04:12:58
>>424
キタワー.*:.。.:*・゚(n‘∀‘)η゚・*:.。.:*!!
ありがとうございますっ!

…でも最前面に固定されてるのが直らない(ノД`)
428デフォルトの名無しさん:2006/03/22(水) 04:14:50
>>427
SetWindowPosでTOPMOSTも変更できるよ。
429デフォルトの名無しさん:2006/03/22(水) 04:39:38
>>428
えぇと…いちお試してはみてたんですが、
教えていただいたSetWindowPosのパラメータのhWndInsertAfterの所に
HWND_NOTOPMOSTを追加してNOZORDER外してもダメでしたし
直後にHWND_NOTOPMOSTだけ指定したSetWindowPosしてもダメでした…
430デフォルトの名無しさん:2006/03/22(水) 04:49:17
>>425
君に必要なのは普通のウィドウにHello, World!と表示するプログラムだ。
431デフォルトの名無しさん:2006/03/22(水) 06:58:51
>>425
ようわからんがやめとけ、コンソールアプリはあくまでエミュ扱いだったはず。
ちゃんとWinMainのあるアプリでも大してかわらんからちゃんと本を読んで作ることをオススメする。
432407:2006/03/22(水) 10:22:21
>>411
ありがとう><知りたかったのはそれです。

その他いろいろ考えてくださった方サンクス!
433デフォルトの名無しさん:2006/03/22(水) 10:48:07
>>421
Windowいじる時には一旦隠すもんだがそれはやってるんだよな?

俺はこんな感じ↓

最初にGetWindowLongでスタイルを保持しておく
ShowWindowで隠す
D3Dリセット
SetWindowLongでスタイル変更
MoveWindowで位置とか補正
ShowWindowで表示

取り合えずこれで事足りてる
434デフォルトの名無しさん:2006/03/22(水) 12:58:56
>>425
DirectXはメッセージを横取りしたりするからコンソールアプリじゃ厳しいはず。
435デフォルトの名無しさん:2006/03/22(水) 13:14:51
コンソールアプリからでもウインドウは作れるし、DirectXを使う上での問題点は何もない。
ただ一つ、無駄だという点を除いては。
436デフォルトの名無しさん:2006/03/22(水) 20:12:14
ちょっとお伺いしたいのですが

Jpgファイルを表示させるコードを書くことになったのですが、
Jpgファイルの画像サイズ(解像度サイズ)を取得する関数って存在するのでしょうか?
ヘルプを検索かけてみたのですが、見つかりませんでした。

矩形のポリゴンにテクスチャとして貼り付け、表示するつもりなのですが、
ちゃんとした比率にする方法がしりたいんです。

もうしわけありませんがどなたかお願いします。
437デフォルトの名無しさん:2006/03/22(水) 20:39:39
>429
あれ、こっちはこれでちゃんと最前面解除されたんだが、
::SetWindowPos(hwnd,HWND_NOTOPMOST,0,0,0,0,
SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOREDRAW | SWP_NOSIZE | SWP_DRAWFRAME);
438デフォルトの名無しさん:2006/03/22(水) 20:44:18
>>436
D3DXCreateTextureFromFileExのpSrcInfo
439デフォルトの名無しさん:2006/03/22(水) 20:54:53
D3DXGetImageInfoFromFile

の事もたまには思い出してあげてください…
440デフォルトの名無しさん:2006/03/22(水) 21:21:53
>438
>439

ありがとうございます、それらをヒントにがんばってみます
441デフォルトの名無しさん:2006/03/22(水) 21:23:30
>429
SetWindowPosなんて面倒草くないか?

D3DPRESENT_PARAMETERSのWindowedを変更したらReset
442デフォルトの名無しさん:2006/03/22(水) 23:41:46
jpgフォーマットのデータ構造が載ってるHP知りませんか
とか便乗して言ってみるテスト
443デフォルトの名無しさん:2006/03/23(木) 02:36:09
256色bmpのテクスチャーをポリゴンに貼り付けて描画したい場合、
最終的には16bit以上に拡張しなくてはならないのでしょうか?

VRAMに書き込む量を減らしたいのですが。。。
444デフォルトの名無しさん:2006/03/23(木) 03:24:13
テクスチャフォーマットとして

D3DFMT_R3G3B2

をサポートしているビデオカードであれば
8bit で格納できるので 16bit 以上である必要はない



が、そんなビデオカードは存在しない気がする。
445443:2006/03/23(木) 03:43:25
>>444
B2 ってあっても無くても良い気がしますw

大人しく24bitにします。
(16bitは対応して無いオンボードがあるっぽい)
ありがとうございました。
446デフォルトの名無しさん:2006/03/23(木) 11:28:19
>445
いや24bitに対応している方が無いだろ。
447443:2006/03/23(木) 12:54:36
>>446
なる。
では32bitで。

やっぱりキツイのでトリプルからダブルバッファに変更しました。
448デフォルトの名無しさん:2006/03/25(土) 01:20:32
struct VERTEX2D
{
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?
449デフォルトの名無しさん:2006/03/25(土) 01:26:22
問題はないが、今後のことも考えてDIFFUSEは対応しておく方がいい。
450デフォルトの名無しさん:2006/03/25(土) 12:06:13
んだ。ディフューズいじれると半透明にしたり点滅させたりするのが簡単。
451デフォルトの名無しさん:2006/03/25(土) 21:38:35





FPSの計算そすえてー
452デフォルトの名無しさん:2006/03/25(土) 21:48:01
スレ違い
453デフォルトの名無しさん:2006/03/25(土) 21:51:08
>452
ありがとうございます

double NextTickCount = timeGetTime(); + 16.666666;
while (1) { //無限ループ
//描画処理をここに記載

//ウェイト
while ((timeGetTime() - NextTickCount) < 16.666666);

NextTickCount += 16.666666;
}
でいいんんですね^^
454デフォルトの名無しさん:2006/03/25(土) 21:59:36
455デフォルトの名無しさん:2006/03/25(土) 22:06:55
>>453
全然駄目。
まず、ちゃんと型をみろ。
誰もdoubleなんて使ってない。
timeGetTime関数の返す型をしっかり確認しろ。
いい加減にやっていい部分じゃない。
そしたら16.66666なんてアホな数使わなくて済む。
お前のプログラムは汚い。かつ、意味がわかってないのまるわかりでみててムカツク。
就活してたら絶対に落としてやるからそのつもりで。

それと何をやるべきかわかってるの?
わかってないでしょ?
FPSってなによ?
そっからしっかり調べろ。

>>454
こだわるなよ。
板とかスレとかあくまできっかけ程度のこだわりにしとけ。
456デフォルトの名無しさん:2006/03/25(土) 22:12:49
自演乙
457デフォルトの名無しさん:2006/03/25(土) 22:15:38
このスレは全て俺の自演でできてるわけだが
458デフォルトの名無しさん:2006/03/25(土) 22:17:40
http://sapporo.cool.ne.jp/tanomi/qanda/a057.html
どうやら参考にしたサイトが糞だったようです^^

>>
PGに就職しないので平気です
日曜PGです^^

>FPSってなによ?
そのくらい、自分で調べましょう
http://d.hatena.ne.jp/keyword/FPS


459デフォルトの名無しさん:2006/03/25(土) 22:19:13
そのくらい、自分で調べましょう
460デフォルトの名無しさん:2006/03/25(土) 22:19:41
もう春か・・
461デフォルトの名無しさん:2006/03/25(土) 22:20:52
改良版です。

double 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();
}


最強です。
462デフォルトの名無しさん:2006/03/25(土) 22:25:00
First Person Shooter(ファースト パーソン シューター)の略。
文字通り一人称視点のシューティングゲームの総称。
463デフォルトの名無しさん:2006/03/25(土) 22:28:45
>>461
はぁ?死ねよ。
464デフォルトの名無しさん:2006/03/25(土) 22:29:12
時間の精度に浮動少数しか思い浮かばない段階でザコなんだよ
intをつかって解決する方法を考えてみろ
465デフォルトの名無しさん:2006/03/25(土) 22:29:34

Wolfenstein: Enemy Territoryを目指して開発しています。
もちろん、作った僕には
・ステルス
・ライフ自動回復
・武器フルチャージ
・高速移動など
特典もりだくさんにしようと思います^^

>>
お前もなー^^


466デフォルトの名無しさん:2006/03/25(土) 22:29:49
そのくらい、自分で調べましょう
467デフォルトの名無しさん:2006/03/25(土) 22:32:43
Wolfensteinってソースコード公開してなかったか?
どのバージョンか忘れたけど
468デフォルトの名無しさん:2006/03/25(土) 22:33:25
>>467
窓の杜 - 【Release NEWS】フリーのFPSゲーム「Wolfenstein: Enemy Territory」のソースコードが公開
http://www.forest.impress.co.jp/article/2004/01/29/etpublicsourcecode.html
469デフォルトの名無しさん:2006/03/25(土) 22:33:35
そのくらい、自分で調べましょう
470デフォルトの名無しさん:2006/03/25(土) 22:34:11

>>
intのサンプル発見。どうぞ^^
http://www1.obi.ne.jp/~fenrir24/vc/vc_text06.html
471デフォルトの名無しさん:2006/03/25(土) 22:35:38

>>
ありがとうございます^^
そのままコンパイルすればWETできるのかな、わくわくしてきました^^
472デフォルトの名無しさん:2006/03/25(土) 22:37:18
QueryPerformanceFrequencey()とQueryPerformanceCounter()を使え
473デフォルトの名無しさん:2006/03/25(土) 22:38:36
>>
できました^^
ありがとうございました^^
474デフォルトの名無しさん:2006/03/25(土) 22:44:58
>>
あれ僕が二人いる(@_@;)
驚きです^^

こんにちは。もう一人の僕さん^^
475デフォルトの名無しさん:2006/03/25(土) 22:46:45
>>470は固定少数点を使えって言ってるけど
そういう問題だったのか?
476デフォルトの名無しさん:2006/03/25(土) 22:52:24
FPS制御の基本は1フレームの最短時間を決めることだ
そして次にゲームの流れがスムーズに見えるようにごまかすテクニックを学ぶ
スキップや早送りだな
ハードスペックにより極端に長くなってしまう場合は例外として扱ったほうがいいぞ

大抵の初学者が間違っているが、ループ中に差を求めて16.6秒なのかどうか調べるのはNG
ターゲット時間を求めてあとはそれと比べるだけでいいのだ

なぜそんなことをするのか?
処理用を減らしたいからだ
ゲームでもっともCPUを使う時間が長いのがFPS制御部分
無駄なことは極力避けたい

現在の時刻 + 約16.6秒 を先に求めておく
そしてこの時刻と現在の時刻を比べるのだ
そうすることで引き算1回分節約できる
477デフォルトの名無しさん:2006/03/25(土) 22:54:12
>>468のソースではFPS制御どうやってるの?
478デフォルトの名無しさん:2006/03/25(土) 22:54:30


>>
つまり

while(1)
{

if(NextTime<::timeGetTime())
{
描写
NextTime+=1.6;
}

}

でいいのですか^^?
479デフォルトの名無しさん:2006/03/25(土) 22:58:09
今宵はまた格別に馬鹿っぽいのが来た
480デフォルトの名無しさん:2006/03/25(土) 23:00:06
>>
馬鹿はおまえらだろ
481デフォルトの名無しさん:2006/03/25(土) 23:16:28
>>
でも上のループは処理落ちした場合のこと考えてないよね。
60FPS以内で1ループ終わらすことしか考えてない、
2Dシューティングか2D格闘専用ならいいけどさ。
482デフォルトの名無しさん:2006/03/25(土) 23:19:03



>>
つまり、フレームスキップ対策すればいいのですね(^_-)ネッ
がんばってみます^^
う〜〜ん複雑だな〜。
483デフォルトの名無しさん:2006/03/25(土) 23:28:10
てゆうか問題は仕様が決まってないことだな。
いったいどうしたいのかわからないな。
1時間ぐらい過ぎた後に突然起動してもこの動作でいいのか?
484デフォルトの名無しさん:2006/03/25(土) 23:28:24


>>
うは〜〜^^
485デフォルトの名無しさん:2006/03/25(土) 23:30:06



>>
うへへへへへへぇぇぇぇぇぇ〜〜〜(・∀・)
486デフォルトの名無しさん:2006/03/25(土) 23:38:36
1.ある一定間隔で描画をしたい
2.処理落ちのときの動作を〜にしたい
3.かなり時間が過ぎてしまったときの動作は〜にしたい
4.???
5.




とまずやることを書き出してからやらないとごっちゃになってなにやってるかわからなくなるに一票w
487デフォルトの名無しさん:2006/03/25(土) 23:41:11



>>
突然起動〜、、、、、意味が分かりません^^
計算が崩れなければなんでもいいのです^^
488デフォルトの名無しさん:2006/03/25(土) 23:58:19
>>478
正解だ!おめでとう
流れはそれで合ってる
1.6という数字が1フレームの最短の場合の時間だね
おそらく16msを希望する場合は桁が違うと思うから各自で確認しておいてくれ

これでフレーム当たりの最短時間を制限することができた
ゲーム内容に対してPCスペックが十分に高ければ安定した速度でゲームが進行する

では、PCスペックが十分でない時はどうだろう
たとえば16.6msで済ます予定が50msかかったとしよう
1秒間で約60回の処理をするはずが20回しか出来なくなる

これは困った
主人公が1回当たり1ドット進むようプログラムしていた場合
60ドット進むところが20ドットしか進まない

これには大きくわけて二通りの解決方法がある
かかった時間に比例してゲーム内容を進める方法と
省略しても問題がない部分を省略してしまう方法だ
489デフォルトの名無しさん:2006/03/25(土) 23:58:24


>>
最近の3Dゲームは
1〜5全部やっているんですかねFPSとかラグナロクオンラインとか^^;
490デフォルトの名無しさん:2006/03/26(日) 00:04:00


>>
わーい正解しました〜^^

なるほど、遅いPCだとズレが生じるんですね。
・比例してゲーム進める方法⇒難しそうだ^^;、しかしコレが一番アールマイティな感じだな。
・省略⇒つまりフレームスキップってことですか^^?

491デフォルトの名無しさん:2006/03/26(日) 00:06:25
MMORPGはキーフレームが多いね
ある時間にこの場所にいるはずだ!という情報をサーバーから受け取り
それをもとに再構成する

これはデータ転送量が少なくてすむ
だからネットゲームは移動先を指定するタイプのゲームが多い
移動方向を指定するタイプはこの方法は使えない
たとえばFPSには使えない
492デフォルトの名無しさん:2006/03/26(日) 00:09:40
>>
なにこのくだすれ
493デフォルトの名無しさん:2006/03/26(日) 00:31:25




>>
改良版。


while(1)
{
       
   if(NextTime<timeGettime())// 1/60秒たったら動き出す!
   {
   //計算
       if(NexTime+1.6>timeGettime)// 次のフレームまでまだ時間があるなら!
       {
           //描写
       }
   
   NetTime+=1.6;
   }

}

ってかんじですかね^^;
しかし計算が1.6超えるとアウトなんですが・・・><
494デフォルトの名無しさん:2006/03/26(日) 02:26:08

timeBeginPeriod(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();
}

とか即興で作ってみたけど、どうだろうか?
俺は本当はこうやって落ちたら落ちたときだけフレームを進めるとかじゃなくて、平均をとってフレーム落ちを計算してるけど。
495デフォルトの名無しさん:2006/03/26(日) 04:02:28
何だこのトンデモ議論は。
FPS制御に一番時間がかかる?ハァ?wwww
496デフォルトの名無しさん:2006/03/26(日) 04:15:28
>>495
そんなことは誰もいってねぇぞw
お前、スレを眺めてすらいないだろw
497デフォルトの名無しさん:2006/03/26(日) 08:48:39
>>496
いや、476が言ってるがw

476は痛い人っぽいから、あえてみんなスルーしてたのに。
498デフォルトの名無しさん:2006/03/26(日) 09:22:14
どうみても冗談で書いているようにしか見えないが。
499デフォルトの名無しさん:2006/03/26(日) 09:25:10
メインループで1回回す相田に一度やるような処理で
doubleは遅いからintだとか、引き算1回減らすだとか
なんで得意顔になってんだ
500デフォルトの名無しさん:2006/03/26(日) 11:16:36
えーと、DirectX 関係無くね?
501デフォルトの名無しさん:2006/03/26(日) 11:19:40
ttp://dream.my-sv.net/upload/src/up0152.lzh
自分はこれで足りてる
502デフォルトの名無しさん:2006/03/26(日) 12:56:46
>>501
Sleepに何を期待しているのかわからない。
503デフォルトの名無しさん:2006/03/26(日) 13:02:45
だって7、8年くらい前にぷよーんさんがそうしろって言ってた
504デフォルトの名無しさん:2006/03/26(日) 13:17:36
スペックの超低いPC用なんではあるまいか?
505デフォルトの名無しさん:2006/03/26(日) 13:18:58
繋がらないから何とも言えないが、8年も前の話か。
506デフォルトの名無しさん:2006/03/26(日) 13:21:00
>>503
あいつのアプリ、動作することもままならないって感じだったじゃんw
507デフォルトの名無しさん:2006/03/26(日) 13:30:06
Sleep()使わずに何使うんだ?
まさかビジーループ回しっ放しの糞アプリ作るわけじゃないだろう。

Sleepである程度待ってからビジーループで正確に待つというなら分かるが。
508デフォルトの名無しさん:2006/03/26(日) 13:33:24
おまいら、いまさらなにくらだない話してんだ?
暇だなw
509デフォルトの名無しさん:2006/03/26(日) 13:41:44
>>502
普通に処理が早すぎた分待ってるだけだけど
510デフォルトの名無しさん:2006/03/26(日) 13:52:33
つまり10年前から、同じ議論を繰り返しているということか。
進歩無いな。
511デフォルトの名無しさん:2006/03/26(日) 14:18:53
>>507
あのSleepだと「正確」にはまっていない。
1フレの計算と描画にかかる時間は考慮できてないじゃん。
だから何を期待してるのかわからない。
512デフォルトの名無しさん:2006/03/26(日) 14:30:53
今のCPU/GPUなら2D描画や計算にかかる時間なんて考えなくても大丈夫じゃない?
3D描画は別として
513デフォルトの名無しさん:2006/03/26(日) 14:37:22
なんかDirectXのUpdateにまかせるとすべてがうまくいってる気がするんだけどw
514デフォルトの名無しさん:2006/03/26(日) 15:05:07
>>501
Sleepの段階で時間のぶれがおこるので、
カウントはきちんと累積をとるようにしないと、
全体の時間がどんどん狂っていくぞ。
あとはm_ptimeとかメンバ変数にする必用のないものが
メンバに混ざっているのが気になる。
515デフォルトの名無しさん:2006/03/26(日) 15:11:03
Sleepなんぞもうタイムスライスにしか使わんね。
516デフォルトの名無しさん:2006/03/26(日) 15:15:52


>>
サンプルありがとうございます^^

>>
サンプルありがとうございます^^

>>
なるほど
SLEEPは精度が悪いのですね。気をつけま^^;

>>
いまどきと言うとpen4 .16Gでも平気かな^^;

>>
UPDATA!!??自動fPS制御ですか〜^^?



最後に、

おはようございます^^
みなさんの暖かい協力よりFSP制御がうまくいきました^^
では、さようなら〜^^
またピンチになったら着ます。


517デフォルトの名無しさん: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();
}
518デフォルトの名無しさん:2006/03/26(日) 23:08:21
正直、フレーム時間調整にfloat使う奴の腕は全く信用できない
プログラムは出来てもハードウェアの実際を知らない頭でっかちの典型
519デフォルトの名無しさん:2006/03/26(日) 23:19:17
質問です。
DirectXのサンプルで、returnでS_OKとかE_FAILとか返してますけど
これらの詳細を教えてください
あと、ifのところによく使われるFAILEDとかSUCCEEDEDは!のマクロみたいなやつですよね?
520デフォルトの名無しさん:2006/03/26(日) 23:27:06
!のマクロじゃない。
521デフォルトの名無しさん:2006/03/26(日) 23:30:33
>>520
どこかに詳しく載ってませんか?
SDKとかに書いてないみたいなんですが、DirectXで定義されているものではないのですか?
522132:2006/03/26(日) 23:34:15
>S_OK、E_FAIL

見ての通り成功か失敗かを返してる。型はHRESULTな。
これに限って言えば取り敢えずBOOLの親戚だと思っとけ。

FAILEDとSUCCEEDEDはマクロだけど'!'は論理演算子(論理否定)、マクロじゃねーよ。
523522:2006/03/26(日) 23:35:13
名前消し忘れた
ここの132じゃないので念の為
524デフォルトの名無しさん:2006/03/26(日) 23:36:35
FAILEDはE_FAILでTRUE
SUCCEEDEDはS_OKでTRUE

if(FAILED(処理))
 MessageBox(NULL,"シパーイ","",MB_OK);
とかよくやる
525デフォルトの名無しさん:2006/03/26(日) 23:40:31
>>522
レスありがとうございます。
ただ、!がマクロかどうか聞いているんじゃなくて、FAILEDやSUCCEEDEDが何のマクロか知りたかったんです。
!っぽい感じの意味で使われていたから、それのマクロなのかな?と思っただけです。すみません。
526デフォルトの名無しさん:2006/03/26(日) 23:41:21
>>524
なるほど、解決しました。
527デフォルトの名無しさん:2006/03/26(日) 23:44:23
>>518
え?関係あるんじゃね?
例えばおなじみの値16.66666666666666666を小数点以下を切ると、
16じゃん。
2フレーム過ぎたこと知るには小数点以下を切り捨てると32だけど、本当は33以上になるはずだよね?
って計算があることを考えると1000/60とかやったときに小数点以下を切り捨てるのはどうかと・・・
まあ、どんな計算するかによるけどさw
528デフォルトの名無しさん:2006/03/26(日) 23:53:12
SUCCEEDEDは hr>=0
FAILDはhr<0
だっけか
529デフォルトの名無しさん:2006/03/26(日) 23:58:01
>>527
マイクロセカンドで扱えば?
530デフォルトの名無しさん:2006/03/26(日) 23:59:44
小数点以下の大体の桁数が分っていながら浮動小数使う奴はアフォ。
531デフォルトの名無しさん:2006/03/27(月) 00:01:08
>>529
timeGetTimeが普通にms単位なんだからそんなわざわざバグりそうなことしなくてもいいでしょ。
小数点4〜5桁考慮してくれりゃいい程度なんだからfloat使っちゃったほうが楽でしょ。
532デフォルトの名無しさん:2006/03/27(月) 00:41:56
>>518
Windows専用のプログラム書くときにもおまいさんは
ハードウェアの事考えながらソース書くのか?

コンシューマーならそもそもタイマーで
フレームレート合わせるなんてする必要ないんだが。
533デフォルトの名無しさん:2006/03/27(月) 07:37:17
そもそもWindows自体そんな精度で制御できないのにfloat使う奴はバカ
534デフォルトの名無しさん:2006/03/27(月) 08:24:53
3Dでfloatの計算をしても、
最後にピクセルとして出力する時にはそんな精度で制御できないのにfloat使う奴はバカ
535デフォルトの名無しさん:2006/03/27(月) 08:29:48
うちの学校はfloatでやってるんですが人生オワタ\(^o^)/ですかね?
536デフォルトの名無しさん:2006/03/27(月) 08:56:30
floatで何の問題もないと思うが。
何の問題があるのかまるっきり理解できん。
釣りか?
537デフォルトの名無しさん:2006/03/27(月) 09:37:24
DirectXを作っている某有名M社が公開しているソースに含まれる変数名

float m_ElapsedTime;
float m_FPS;
538デフォルトの名無しさん:2006/03/27(月) 09:58:27
Microsoftはバカだったのか。
539デフォルトの名無しさん:2006/03/27(月) 10:15:36
そもそもfloatの何がきにいらんのか分からん。
CPUによっちゃintより演算速かったりするんだが。
540デフォルトの名無しさん:2006/03/27(月) 10:23:38
doubleならワカランでもないが、floatでintより速いってソースキボンヌ
541デフォルトの名無しさん:2006/03/27(月) 10:30:22
floatが速かろうが遅かろうが、どうでもいいでしょ。
この場合。たかが1フレームごとに数回の演算に使うだけじゃないか。
542デフォルトの名無しさん:2006/03/27(月) 10:32:27
ゲ製作でfloatが最速って言ってたよ
543デフォルトの名無しさん:2006/03/27(月) 10:34:39
何で議論になるのかわからん。intなんて使っても、複雑になるだけで
何のメリットもないからdoubleかfloat使うだろ。
そして、doubleだろうがfloatだろうがどっちでもいいだろ。
どっちが速いにせよ、描画に比べてめちゃくちゃ速く終わる計算で、
全く無視できるんだから。
544デフォルトの名無しさん:2006/03/27(月) 10:35:38
Microsoftがサンプルに使ってるのはfloatだな。
別に速いからとかそういう理由じゃなくて、ただ簡単だからだろうけど。
545539:2006/03/27(月) 10:38:40
別にフレーム時間調整なんかどうでもいいよ、
floatがintより速い環境があるなら知りたいだけ。
546デフォルトの名無しさん:2006/03/27(月) 10:39:19
539じゃなかった540だった、スマソ
547デフォルトの名無しさん:2006/03/27(月) 10:53:46
floatがintより早いとかワロス
548デフォルトの名無しさん:2006/03/27(月) 10:54:53
ワロスワロス
549デフォルトの名無しさん:2006/03/27(月) 10:57:34
チュンチュン
550デフォルトの名無しさん:2006/03/27(月) 10:58:04
ここはDirectXの質問すれだどおおおおおおおおおお
551デフォルトの名無しさん:2006/03/27(月) 11:01:02
Pentium2以降は浮動小数演算のほうが速い
ここまでは誰も異論がないと思う
552536=541=543:2006/03/27(月) 11:01:06
ちなみに、539や542は俺とは別人だから間違えないでね。
553デフォルトの名無しさん:2006/03/27(月) 11:02:02
>>534
HDR完全否定かよ
554デフォルトの名無しさん:2006/03/27(月) 11:05:59
そもそも厳密な60fpsに拘りすぎてる所が頭でっかちと言われる所以
世に出てるゲーム基板じゃ60fpsじゃない物なんざザラ、57.5fpsなんてのもある

所詮Windows/DirectXじゃ厳密なフレーム管理なんざ不可能なのに、いつまで
たっても「1Frameは16.666666msじゃなきゃ」とか言ってるヤシは枝葉末節に
拘って大事なところが見えてないただの阿呆
555デフォルトの名無しさん:2006/03/27(月) 11:07:10
>>545
doubleならどうしてわかるんだ?
556デフォルトの名無しさん:2006/03/27(月) 11:08:06
>>554
そんなこといってる奴は皆無。
問題がまるでわかってないな。
557デフォルトの名無しさん:2006/03/27(月) 11:09:20
60という数字自体に意味はない
ハードやOSの差を吸収するのが目的

それがわかってないなら議論に参加しても得るものはないと思うよ
558デフォルトの名無しさん:2006/03/27(月) 11:10:14
>>554
だから、精度なんか厳密じゃなくてもいいんだけど、
小数使った方が簡単でわかりやすいでしょ?
速度なんかどうでもいいしね。
559デフォルトの名無しさん:2006/03/27(月) 11:11:04
>>554
とりあえずお前が阿呆だということだけは分かった。
560デフォルトの名無しさん:2006/03/27(月) 11:11:25
>>557
ハードやOSなんてどうでもいいだろw
それに、ここはDirectXのスレですよw
561デフォルトの名無しさん:2006/03/27(月) 11:17:51
めちゃくちゃ遅いインタプリタで浮動小数演算を独自にソフトウェア処理してる言語
なら、int使った方がいい場面もなきにしもあらずかも知れん。
562デフォルトの名無しさん:2006/03/27(月) 11:20:56
>>555
doubleとfloatどっちが速いと思う?
563デフォルトの名無しさん:2006/03/27(月) 11:21:04
そもそもDirectX使ってる時点でfloatを否定する意味がわからん。
だったらベクトルもマトリックスも全部固定少数にして作れよ。
564デフォルトの名無しさん:2006/03/27(月) 11:23:03
>>562
多くの場合同じだろ。まあ、fpu設定によるけど。同一コードが
吐かれる場合が多いから。
565デフォルトの名無しさん:2006/03/27(月) 11:27:54
#define SMAX 30000
#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
566デフォルトの名無しさん:2006/03/27(月) 11:30:47
double
23953
23865
23865
567デフォルトの名無しさん:2006/03/27(月) 11:31:46
int最速でした
お疲れ様でした
568デフォルトの名無しさん:2006/03/27(月) 11:33:54
だからどうしたんだよ。くだらん。
569デフォルトの名無しさん:2006/03/27(月) 11:38:50
>>565
それデバッグビルドでやってないか?
570デフォルトの名無しさん:2006/03/27(月) 11:40:22
で、int で計算した場合、
どれだけ時間を節約できるの?
571デフォルトの名無しさん:2006/03/27(月) 11:41:40
それを知ってどうするの?fpsから話をそらしたいの?
572デフォルトの名無しさん:2006/03/27(月) 11:42:10
誰だよ整数型より浮動小数点型の方が速いとか無知なこと言ってるのはwwww
573デフォルトの名無しさん:2006/03/27(月) 11:42:55
誰も言ってないな。まあ、あえて言えば539か。
572は何を喜んでるんだ?
574デフォルトの名無しさん:2006/03/27(月) 11:43:56
int
1348
1318
1322

float
10518
10374
10152

double
4190
4194
4192
575デフォルトの名無しさん:2006/03/27(月) 11:47:35
いい加減にもうやめたら
100万円の買い物をするのに1円の差にこだわってるような議論だろ
576デフォルトの名無しさん:2006/03/27(月) 11:47:47
int
564
573
551

float
2045
2088
2083

double
2095
2069
2052
577デフォルトの名無しさん:2006/03/27(月) 11:48:26
>>575
言いえて妙だな。
578デフォルトの名無しさん:2006/03/27(月) 11:48:55
579デフォルトの名無しさん:2006/03/27(月) 11:52:12
>>578
なるほど。いい加減に読んでたから反対の意味に見えた。
まあおそらく>>551は浮動小数演算のほうが遅いと言おうとして間違えたんだろう。
580デフォルトの名無しさん: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のほうが速いよ(場合によってはうんこしない派)  ←←← 戦犯

581デフォルトの名無しさん:2006/03/27(月) 11:59:27
おまいまとめ上手いなww
582デフォルトの名無しさん:2006/03/27(月) 12:01:39
>>580
ていうか、ほとんど全ての人は
「100万円の買い物をするのに1円の差にこだわってるような議論だから意味はない」派
だろ
一部変なのが精度とか速度とかなんとか言ってるだけで。
583デフォルトの名無しさん:2006/03/27(月) 12:01:56
泣いた
584デフォルトの名無しさん:2006/03/27(月) 12:04:14
ようするに、float使っても何も問題ないってのが結論だろ。
585デフォルトの名無しさん:2006/03/27(月) 12:05:27
速度はint
正確はfloat

俺はint派だけどな
586デフォルトの名無しさん:2006/03/27(月) 12:06:17
■議題
フレーム時間調整にfloat使うべきか否か?
■事の発端
>>517のソースに対してのレス(>>518)
■評価基準
速度
■現在の状況
>>565のコードでintとfloatとdoubleのどれが最速か各自で確認
・何の話をしてたか思い出し中
■今後の展望
飽きてきた
■収穫
整数の計算はintが速かった
587デフォルトの名無しさん:2006/03/27(月) 12:06:18
そんな事より、フレーム調整なんてDirectXと関係ないのに、なんでこのスレでやってるの?
588デフォルトの名無しさん:2006/03/27(月) 12:07:27
だから、「速度はint」たって、時間が0.99999倍くらいになるだけで
そんだけ速くなたって全く意味ないだろ。
589デフォルトの名無しさん:2006/03/27(月) 12:08:25
>時間が0.99999倍くらいになるだけで
天才現る
590デフォルトの名無しさん:2006/03/27(月) 12:10:21
>>589
微々たる差なことは間違いない。
例え話だけど。
591574:2006/03/27(月) 12:10:40
>>574はAthlonXPにVS2005なんだが、
>>576は何使ってる?
592デフォルトの名無しさん:2006/03/27(月) 12:10:48
【floatのほうが正確だという主張に異議あり!】
floatで計算すると16.666666666……となり当然ながら小さいながら誤差がでる
ところがintで計算する場合は16,16,17,16,16,17と加算する数を変更していくことで
1000ミリ秒でちょうど60回になるような計算になる

よってintのほうが正確である
593デフォルトの名無しさん:2006/03/27(月) 12:11:38
>>587
フレーム調整はそこそこ関係あるんじゃない?
intとfloatの速さになると関係は薄くなるけど。
594デフォルトの名無しさん:2006/03/27(月) 12:12:19
>>592
あ、そう。よかったな。
595デフォルトの名無しさん:2006/03/27(月) 12:13:18
>>592
あ、そう。よかったな。
596デフォルトの名無しさん:2006/03/27(月) 12:16:13
>>588
この部分だけ見ると3〜8倍の差があるとベンチマークの結果が物語ってますよ?
それにここはいわゆる「ビジーループ」にあたる箇所だ
Sleepで調整するとしても計算回数は秒間数十回、精度を求めるためにSleep時間の割合を減らすと
数千回以上はこの計算をすることになる

20:80理論の20の部分だ
597デフォルトの名無しさん:2006/03/27(月) 12:16:51
画面に数ドットから数十ドット分点を打つのと、floatで一回演算するのが
同じような速度だと思えばわかりやすいんじゃないかな。
一フレームごとに数十万ぐらいは点を打つけど、その時間に比べたら
fpsの計算してる部分なんてはるかに小さいよね。
598デフォルトの名無しさん:2006/03/27(月) 12:18:28
Athlon64 4000+でさえin計算800止まり

>>576
FX野郎か
599デフォルトの名無しさん:2006/03/27(月) 12:18:53
>>596
あきらかに20:80の80の部分だよwwww
お前、描画処理とfps制御計算とどれだけ時間に違いがあると思ってるんだ?ww
600デフォルトの名無しさん:2006/03/27(月) 12:20:05
青いな。
24才位と見た。
601デフォルトの名無しさん:2006/03/27(月) 12:22:42
>>597
FPS制御中に描画処理を行うのは普通じゃないよね
だからその例えは失敗

>>599
100は何か考えてみよう
602デフォルトの名無しさん:2006/03/27(月) 12:22:44
Sleepで留まるような部分を苦心してひねくり回して何の価値がある。
本末転倒とはまさにこのこと。
603デフォルトの名無しさん:2006/03/27(月) 12:22:45
臭せーな。
加齢臭漂ってるぞ。
604デフォルトの名無しさん:2006/03/27(月) 12:28:07
>>597の理屈でいくとドット打つのを速くしても意味がないことになるんだが

いや、わかってんねんで
605デフォルトの名無しさん:2006/03/27(月) 12:28:08
>>601
一フレーム内に両方の処理が入るでしょ。
それで、片方は片方に比べて極端に割合が少ないということ。
606デフォルトの名無しさん:2006/03/27(月) 12:30:17
>>602
だな、結局sleepで調節するのに。
607デフォルトの名無しさん:2006/03/27(月) 12:31:50
つまりunsigned long intが最強ということですね
608デフォルトの名無しさん:2006/03/27(月) 12:37:11
一フレームは16msとして

FPS制御のための計算・・・1ms
Sleep・・・15ms

とかじゃない?
609デフォルトの名無しさん:2006/03/27(月) 12:39:45
フレームの描画にかかる時間は0msですか
610デフォルトの名無しさん:2006/03/27(月) 12:40:22
>>608
1msもとらねーよ。
>>576とか見てみろよ。float一回の計算が0.1/30000msとかよりもさらに短い時間だろ。
611デフォルトの名無しさん:2006/03/27(月) 12:40:43
>>605
FPS制御は余剰時間に発生する
つまり割合は関係ない
この部分をいくら速くしてもゲームに寄与しない
という指摘は正しいが理屈が間違っている
(※正確にはスレッドがまわっているだろうが微々たる影響だ)

>>602,606
正解
この場合の20:80の100はCPU使用率だ
612デフォルトの名無しさん:2006/03/27(月) 12:41:15
>>609
0.66666666666666666666666666666666666666666666666666666666666666
613デフォルトの名無しさん:2006/03/27(月) 12:42:16
>>610
最新CPUが基準かよw
614デフォルトの名無しさん:2006/03/27(月) 12:42:19
>>611
間違ってないよ。描画に時間が取られるから、CPUはその間Sleepしてるわけで。
615デフォルトの名無しさん:2006/03/27(月) 12:43:02
二重ループだから1/(30000*30000)だな。
616デフォルトの名無しさん:2006/03/27(月) 12:43:06
int 559 / float 3131 / double 3131
確かに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();
}
617デフォルトの名無しさん:2006/03/27(月) 12:43:14
>>613
その10倍遅いCPUだって、めちゃくちゃ短い時間には変わりないだろ。
618デフォルトの名無しさん:2006/03/27(月) 12:47:32
>>616
>もっとも実際にボトルネックになるのは大抵ピクセルシェーダーやコリジョン・モーションとかだし
>floatからintに出来るようなところじゃないけどな。

だから、みんなそう言ってる。floatが速いとかintが速いとかそんなのは無意味だって。
619デフォルトの名無しさん:2006/03/27(月) 12:49:01
>>609
fps制御やsleepはcpu
その間gpuが描画
620デフォルトの名無しさん:2006/03/27(月) 12:52:36
floatでやってもintでやっても大して変わりないけどな
621デフォルトの名無しさん:2006/03/27(月) 12:55:55
>>533-620
スレが伸びてるから何か面白いネタがあったのかと期待した俺に謝れ
622デフォルトの名無しさん:2006/03/27(月) 12:56:50
#define SMAX 30000
#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);
}
623デフォルトの名無しさん:2006/03/27(月) 12:57:26
浮動小数点の方が有利なケース。
VS2005の場合はコンパイルオプションでFast (/fp:fast)を設定すること。

int 3401
float 1700
624デフォルトの名無しさん:2006/03/27(月) 12:59:13
結論
精度:こだわる意味ないよ
速度:変わらないよ

備考:なんでDirectXスレでやってんの?
625デフォルトの名無しさん:2006/03/27(月) 13:00:52
全部>>451のせいだ
626デフォルトの名無しさん:2006/03/27(月) 13:01:29
>>621
すんまそ〜ん
627デフォルトの名無しさん:2006/03/27(月) 13:05:32
>プログラムは出来てもハードウェアの実際を知らない頭でっかちの典型

これが正解だな
628デフォルトの名無しさん:2006/03/27(月) 13:05:49
■専用スレはこちら
FPS(フレームレート) VSYNC(垂直同期 リフレッシュレート)
http://bbs.gamdev.org/test/read.cgi/gamedev/1063274576/
■汎用スレはこちら
ゲームプログラミング相談室【Part7】
http://pc8.2ch.net/test/read.cgi/gamedev/1142096974/
629デフォルトの名無しさん:2006/03/27(月) 13:08:50
>>625
451から始まってたのか。
よく見たら455=463=518じゃねーか?w
630デフォルトの名無しさん:2006/03/27(月) 13:13:38
リフレッシュレートに関する論争
http://piza.2ch.net/tech/kako/972/972165437.html
2ちゃんねるにおけるFPSの原点

spitfire!
http://spitfire.client.jp/menu.html
各スレのまとめに独自の解説を追加
よくまとまっててわかりやすい
631デフォルトの名無しさん:2006/03/27(月) 13:24:22
そもそも自分で使っている方法以外を見かけると、
馬鹿だなんだと突っかかる懐の浅さと視野の狭さに問題がある。
632デフォルトの名無しさん:2006/03/27(月) 15:35:32
青いな。
青いくせにパラダイムシフトについて来れていない。
もう駄目かもわからんね。
633デフォルトの名無しさん:2006/03/27(月) 15:42:53
パ、パラダイス銀河ぐらい知ってるんだからねっ!
634デフォルトの名無しさん:2006/03/27(月) 16:31:16
伸びてたから期待したのにこの話かよw

まあ純粋に命令セットの速度が実際どうなってるのか気になったので
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より速いのには笑った
635デフォルトの名無しさん:2006/03/27(月) 17:07:40
んでアップされてたプログラムを乗算に変更してみたけど浮動少数が遅かった。
アセンブリコード見たら計算コードの部位は命令数変わって無いけど(命令は違うが)
ループのほうは偉い長くなってた
636デフォルトの名無しさん:2006/03/27(月) 17:25:51
>>632の言うパライソなんとかとは何か聞いてみたいな
まさかUINTをfloatにする事とか言ったら笑う

劣化じゃん
637デフォルトの名無しさん:2006/03/27(月) 17:33:31
パラダイムシフトも知らないのか・・・
638デフォルトの名無しさん:2006/03/27(月) 17:34:50
yanesdkを使ってC#2.0で開発することがパラダイス銀河だよ!
639デフォルトの名無しさん:2006/03/27(月) 17:35:47
浮動小数点数は正規化されているから掛け算は位取りを考慮しなくていい分有利なのかな。
考えてみたら昔は2バイト整数で4バイト実数だったけど、今や同じバイト数だもんなぁ。
そりゃぁ、floatの方がintより精度落ちる罠。
640デフォルトの名無しさん:2006/03/27(月) 17:44:45
>637は皮肉を理解できないご様子
641デフォルトの名無しさん:2006/03/27(月) 18:10:01
16msの中の0.0001msの部分を速くするために、
レイテンシだのスループットだの持ち出してどうこう言ってるのは
アホの極みだろ。
642デフォルトの名無しさん:2006/03/27(月) 18:20:53


while(1)
{
       
   if(NextTime<timeGettime())// 1/60秒たったら動き出す!
   {
   //計算
       if(NexTime+1.6>timeGettime)// 次のフレームまでまだ時間があるなら!
       {
           //描写
       }
   
   NetTime+=1.6;
   }

}
643デフォルトの名無しさん:2006/03/27(月) 18:21:33
遅いよりは速いほうがいいよ
644デフォルトの名無しさん:2006/03/27(月) 18:23:24
>>643
同じと言ってしまって良いし、それよりはわかりやすい方が良い。
645デフォルトの名無しさん:2006/03/27(月) 18:25:21
少なくとも件のソースのわかりやすさに差はない
646デフォルトの名無しさん:2006/03/27(月) 18:28:56
差はあるだろ。
647デフォルトの名無しさん:2006/03/27(月) 18:33:46
大体int使うとかって単位はなんだよ。
1/1000msとかかw
随分と意味のないわかりにくさだなw
648デフォルトの名無しさん:2006/03/27(月) 18:35:41
>>643
あるプログラムが0.0001/16だけ全体的に速くなったとして、
それに何か意味があるのかね?
649デフォルトの名無しさん:2006/03/27(月) 18:48:27
>644
float使う意味も意図もわかんね
650デフォルトの名無しさん:2006/03/27(月) 18:50:52
          /: . : . : . : . : . : . : . : . : . : . : . : . : . \
           , ': . : . : . : . : . : . : . : . : . : . :ヽ\: . : . }: . :.ヽ
          /: . : . : . : . : . : . : . : . : . : . : . : . : :/´ ̄ヽ: . :ヽ
         /: . : . : . : . : . : . : . : . : . : . : . : . __/: . : . : . : }: . : .゙,
       __/: . : . : . : . : . : . : . : . : . : . : . : . : /: . : . : . : ./: . : . :',
     /: .ィ/ヽヘ/レ'^'´`|: .    |_: . : . : ./: . : . : . : . ハ: . : . : .!            
    / /´l|            |: . : . : :| ´レ、: ../: /: . : . : . /:.:.: . : . : |   
    / /l|            |ィ: . : .ハ|   ゙/ /: . : . : . :/: . : . : . : :|
     /: .:.;|         |ハ: . :| !   ;゙./: . : . : . :/: . : . : . : . :l
    /: :.:/∧        ! |: .|     l:i: . : . : . :/: . : . : . : . : :l
   /:.:./ ´  ゙,            !:.l     |:!: . : . : ./: . : . : . : . :.. ;'  
   ::/     '、\       レ       |!: . : . : /:.:.,. --、: . : ../      お願い!もうやめて・・!
           '、_`¬           |l: . : . :.バ゙ ,r  ';. : ./  floatは悪くないの!全部私が悪いの!
              | ̄ヾ    ゝニ ー_‐_'' ´ |: . : :.|   〈:.:. /:.:/
            !:::      `´ ̄ ̄`ぅ。|: . : :|  ノ  //
           '、 '          ::::::  |: . l |  _/´ ̄`丶、
            \            l: .l: | /         ヽ
                `ヾ、ー ´ ̄'^ヽ  ,.ィ: l;.:', |         ヽ
                 /` ー-‐彳l ´`ヽリ\ヾ、           `、
                   {      l ||  `   `lト`ー''´     f:.  ヽ
651デフォルトの名無しさん:2006/03/27(月) 18:53:55
>650
お前のせいか!
つか誰だおめー
652デフォルトの名無しさん:2006/03/27(月) 19:03:52
DWORDと比較すんのになんでfloatなの?
653デフォルトの名無しさん:2006/03/27(月) 19:04:40
Xふぁいるに法線が含まれてないと
ライトがうまく反映されません><

法線だと容量が・・・
なしでできませんかね^^?
654デフォルトの名無しさん:2006/03/27(月) 19:06:18
          /: . : . : . : . : . : . : . : . : . : . : . : . : . \
           , ': . : . : . : . : . : . : . : . : . : . :ヽ\: . : . }: . :.ヽ
          /: . : . : . : . : . : . : . : . : . : . : . : . : :/´ ̄ヽ: . :ヽ
         /: . : . : . : . : . : . : . : . : . : . : . : . __/: . : . : . : }: . : .゙,
       __/: . : . : . : . : . : . : . : . : . : . : . : . : /: . : . : . : ./: . : . :',
     /: .ィ/ヽヘ/レ'^'´`|: .    |_: . : . : ./: . : . : . : . ハ: . : . : .!            
    / /´l|            |: . : . : :| ´レ、: ../: /: . : . : . /:.:.: . : . : |   
    / /l|            |ィ: . : .ハ|   ゙/ /: . : . : . :/: . : . : . : :|
     /: .:.;|         |ハ: . :| !   ;゙./: . : . : . :/: . : . : . : . :l
    /: :.:/∧        ! |: .|     l:i: . : . : . :/: . : . : . : . : :l
   /:.:./ ´  ゙,            !:.l     |:!: . : . : ./: . : . : . : . :.. ;'  
   ::/     '、\       レ       |!: . : . : /:.:.,. --、: . : ../      お願い!もうやめて・・!
           '、_`¬           |l: . : . :.バ゙ ,r  ';. : ./  法線は悪くないの!全部私が悪いの!
              | ̄ヾ    ゝニ ー_‐_'' ´ |: . : :.|   〈:.:. /:.:/
            !:::      `´ ̄ ̄`ぅ。|: . : :|  ノ  //
           '、 '          ::::::  |: . l |  _/´ ̄`丶、
            \            l: .l: | /         ヽ
                `ヾ、ー ´ ̄'^ヽ  ,.ィ: l;.:', |         ヽ
                 /` ー-‐彳l ´`ヽリ\ヾ、           `、
                   {      l ||  `   `lト`ー''´     f:.  ヽ
655デフォルトの名無しさん:2006/03/27(月) 19:07:33
>>654
またお前のせいか!
つか誰だおめー
656デフォルトの名無しさん:2006/03/27(月) 19:12:09
>>653
法線ぐらい計算しろよ
657デフォルトの名無しさん:2006/03/27(月) 19:12:34
>>653
D3DXに法線を生成してくれる関数がある。
658デフォルトの名無しさん:2006/03/27(月) 19:16:31
D3DXのやつってちゃんと計算してくれんのか調べてないんだけど、
正四面体で1つの面だけがやたら細かく分割されてるような場合でも綺麗にグーローかかるん?
659デフォルトの名無しさん:2006/03/27(月) 19:27:59
>>657
THX


助かりました〜^^
660デフォルトの名無しさん:2006/03/27(月) 19:35:30
何?この糞スレ?
>>518,527
始めは速度云々の問題じゃなくて精度についていってたんだよ。
アホが入ってきて話がおかしくなった。
問題は>>518がミリ単位での計算しか頭に入ってなかったってだけ。
まあ、それは問題になるかならないかはおいておいて、
16.666666666msなんて数値を当てにしているとしたら、小数点部分の計算はでかい誤差になんじゃねーか?って話。
でも、実運用ではまったく違いはでないかもね。
Windowsのタイマーが糞いい加減だから。
でも、計算式はちゃんとしておきたいよね。
ってただそれだけの話。速度とかいってんのみてらんないさっさとプログラマ辞めちゃえよ。お前なんかいらないだろ。ぷw
661デフォルトの名無しさん:2006/03/27(月) 19:38:08
こりゃまた酷い釣りだな
餌が腐ってる
662デフォルトの名無しさん:2006/03/27(月) 19:39:42
>>660
寧ろ精度を求めてfloat使う方がイカレてるんでわ?

以下ループ
663デフォルトの名無しさん:2006/03/27(月) 19:41:06
そもそもfloatの何がきにいらんのか分からん。
CPUによっちゃintより演算速かったりするんだが。
664デフォルトの名無しさん:2006/03/27(月) 19:41:45
だからintのほうが精度上だっていってるじゃん
665デフォルトの名無しさん:2006/03/27(月) 19:49:40
だから、この場合精度なんかfloatで十分だし、
計算速度も速くしたって全く意味がないから、
floatで十分だし、floatなら精度とか気にせず人間に
わかりやすいし、何の問題もない。
したがってintにする意味が全くない。
intはわかりやすさの観点からちょっと不自然。
666デフォルトの名無しさん:2006/03/27(月) 19:53:35
intのほうがわかりやすいし精度もいいし速度も速い
floatにする理由がさっぱりわからない
667デフォルトの名無しさん:2006/03/27(月) 19:55:48
intのほうがわかりにくい。これにつきる。
精度を考えて数をかけたり、ぴったり60fpsにしたりするのの
どこがわかりやすいのかさっぱりわからん。
精度も速度も「全く一緒」といって差し支えないぐらいだし。
668デフォルトの名無しさん:2006/03/27(月) 19:58:07
そもそも、最初はint側がfloatにケチつけてるところから
始まったんじゃないのかよ。
だから、floatで良いって話なのに。
最初は「floatはダメ」だったのに今はfloatにする意味がないって主張が
変わってきてる。
間違いを認めたんだろう。
669デフォルトの名無しさん:2006/03/27(月) 19:58:20
さー、頭が弱いもの同士の水掛け論が始まりまつよ!!!
670デフォルトの名無しさん:2006/03/27(月) 19:59:13
ちんこたってきた
671デフォルトの名無しさん:2006/03/27(月) 20:00:57
>>669
相手にしない方が良かったかも知れん。

>>476
>ゲームでもっともCPUを使う時間が長いのがFPS制御部分
>無駄なことは極力避けたい

と言ってる時点でヤバイと思ったが、まさか本気だったとは。
672デフォルトの名無しさん:2006/03/27(月) 20:03:54
過去レスから言葉を借りるならFPS制御に16.6ミリ秒中16ミリ秒つかってるそうだ
つまり全体の96%がFPS制御の時間になりますよ
673デフォルトの名無しさん:2006/03/27(月) 20:05:51
なにその無駄な計算w
674デフォルトの名無しさん:2006/03/27(月) 20:12:53
>>672
例えば>>517のようなソースを書いた場合、1フレームにつき一回しか
ルーチンが回ってこない。一回のルーチンにつきたかだか
数回の演算をしてるだけ。
そして>>574>>576をみると、floatの演算は1回につき0.00001msとかだから、
結局16.6ms中の0.0001ms以下じゃないかな。
675デフォルトの名無しさん:2006/03/27(月) 20:13:27
教えてください・・orz
ビデオキャプチャーを4つほど開きたいんですが、3つは開くけど4つ目が開かない。
ところがメインプログラムのフォームを、CreateProcess()で開いたプログラムの上に持ってきて、マウスで移動したら4つ目が開いた。(しかも再現する)
こんな説明ではわからん・・でしょうが、いったい何事が?
(これから移動しますので、誰かヒントくれてもお礼は書けません。悪しからず)
676デフォルトの名無しさん:2006/03/27(月) 20:16:23
          /: . : . : . : . : . : . : . : . : . : . : . : . : . \
           , ': . : . : . : . : . : . : . : . : . : . :ヽ\: . : . }: . :.ヽ
          /: . : . : . : . : . : . : . : . : . : . : . : . : :/´ ̄ヽ: . :ヽ
         /: . : . : . : . : . : . : . : . : . : . : . : . __/: . : . : . : }: . : .゙,
       __/: . : . : . : . : . : . : . : . : . : . : . : . : /: . : . : . : ./: . : . :',
     /: .ィ/ヽヘ/レ'^'´`|: .    |_: . : . : ./: . : . : . : . ハ: . : . : .!            
    / /´l|            |: . : . : :| ´レ、: ../: /: . : . : . /:.:.: . : . : |   
    / /l|            |ィ: . : .ハ|   ゙/ /: . : . : . :/: . : . : . : :|
     /: .:.;|         |ハ: . :| !   ;゙./: . : . : . :/: . : . : . : . :l
    /: :.:/∧        ! |: .|     l:i: . : . : . :/: . : . : . : . : :l
   /:.:./ ´  ゙,            !:.l     |:!: . : . : ./: . : . : . : . :.. ;'  
   ::/     '、\       レ       |!: . : . : /:.:.,. --、: . : ../      お願い!もうやめて・・!
           '、_`¬           |l: . : . :.バ゙ ,r  ';. : ./  悪しからずは悪くないの!全部私が悪いの!
              | ̄ヾ    ゝニ ー_‐_'' ´ |: . : :.|   〈:.:. /:.:/
            !:::      `´ ̄ ̄`ぅ。|: . : :|  ノ  //
           '、 '          ::::::  |: . l |  _/´ ̄`丶、
            \            l: .l: | /         ヽ
                `ヾ、ー ´ ̄'^ヽ  ,.ィ: l;.:', |         ヽ
                 /` ー-‐彳l ´`ヽリ\ヾ、           `、
                   {      l ||  `   `lト`ー''´     f:.  ヽ
677デフォルトの名無しさん:2006/03/27(月) 20:17:24
>>675
それはメモリが足りてないとか。
678デフォルトの名無しさん:2006/03/27(月) 20:56:46
今思ったんだが、シェンロンと同じで
>>676のAAのちっこい版って結構需要あるんじゃね?
679デフォルトの名無しさん:2006/03/27(月) 20:58:07
頑張ってきっちり60FPSにしても、モニターの
リフレッシュレートが70Hzだったりする罠。

そもそもの目的は、いったい何だ?
680デフォルトの名無しさん:2006/03/27(月) 20:58:29
ところで俺は>>621だから、いまさらintやfloatの話に加わるのは
気が引けるわけだが、floatだと仮数部が23bitしかないから
そこもちゃんと考慮しないとすぐに精度がintより酷くならないか?

適当に電卓叩いてみたけど、2時間半で精度が逆転しない?
681デフォルトの名無しさん:2006/03/27(月) 21:01:38
いまどきはみんなLCDだから、60Hz(w
682デフォルトの名無しさん:2006/03/27(月) 21:05:15
>>678
こうですか?わかりません><
http://aa5.2ch.net/test/read.cgi/aasaloon/1141656008/646
683デフォルトの名無しさん:2006/03/27(月) 21:30:22
>>681
うむ。
普通に60Hzぴったりだ。(何故かw)
684デフォルトの名無しさん:2006/03/27(月) 21:44:17
LCDでも70Hzや75Hz対応のものもあるが、アレは70回/秒や75回/秒更新してるんじゃないの?
60とは限らないような・・・
685デフォルトの名無しさん:2006/03/27(月) 21:49:47
俺の液まじやばい!

12HZぐらい見える!
ゲーム死亡!
686デフォルトの名無しさん:2006/03/27(月) 21:53:07
アナログ入力のLCDは60Hz以上の余分なHzを捨ててるんじゃなかった?
687デフォルトの名無しさん:2006/03/27(月) 21:54:11
>>684
例によってレアケースはどうでもいいw
688デフォルトの名無しさん:2006/03/27(月) 21:54:33
          /: . : . : . : . : . : . : . : . : . : . : . : . : . \
           , ': . : . : . : . : . : . : . : . : . : . :ヽ\: . : . }: . :.ヽ
          /: . : . : . : . : . : . : . : . : . : . : . : . : :/´ ̄ヽ: . :ヽ
         /: . : . : . : . : . : . : . : . : . : . : . : . __/: . : . : . : }: . : .゙,
       __/: . : . : . : . : . : . : . : . : . : . : . : . : /: . : . : . : ./: . : . :',
     /: .ィ/ヽヘ/レ'^'´`|: .    |_: . : . : ./: . : . : . : . ハ: . : . : .!            
    / /´l|            |: . : . : :| ´レ、: ../: /: . : . : . /:.:.: . : . : |   
    / /l|            |ィ: . : .ハ|   ゙/ /: . : . : . :/: . : . : . : :|
     /: .:.;|         |ハ: . :| !   ;゙./: . : . : . :/: . : . : . : . :l
    /: :.:/∧        ! |: .|     l:i: . : . : . :/: . : . : . : . : :l
   /:.:./ ´  ゙,            !:.l     |:!: . : . : ./: . : . : . : . :.. ;'  
   ::/     '、\       レ       |!: . : . : /:.:.,. --、: . : ../
           '、_`¬           |l: . : . :.バ゙ ,r  ';. : ./     全部お前が悪い!
              | ̄ヾ    ゝニ ー_‐_'' ´ |: . : :.|   〈:.:. /:.:/
            !:::      `´ ̄ ̄`ぅ。|: . : :|  ノ  //
           '、 '          ::::::  |: . l |  _/´ ̄`丶、
            \            l: .l: | /         ヽ
                `ヾ、ー ´ ̄'^ヽ  ,.ィ: l;.:', |         ヽ
                 /` ー-‐彳l ´`ヽリ\ヾ、           `、
                   {      l ||  `   `lト`ー''´     f:.  ヽ
689デフォルトの名無しさん:2006/03/27(月) 21:54:53
レアケースって・・・
690デフォルトの名無しさん:2006/03/27(月) 21:57:06
>>687
オマイのしょぼい液晶なんてどうでもいいw
691デフォルトの名無しさん:2006/03/27(月) 21:58:04
692デフォルトの名無しさん:2006/03/27(月) 22:12:43
    ./: . : . : . : . : . : . : . :ヽ、
   /: . : . : . : . : . : . : .,>‐'.、 ヽ
  __/: . : . : . : . : . : . : .7.: . : .}: . ゙,
/: ィハヘノレ^l: . ト 、/ . : . ハ: . : .',
//l.      lハ イ ./: . : /.: : . : . |  職人さんありがとう
: /ヘ     ' ,リ .li : . /., -、 . : l
    ゙,\__   ''  .l! : .バ.〈;: } . ,'
.    iー、'  `ー=-'l!: .|  ノ./: /
     l:: ,  ゙ ̄`ぅ。: .| / ̄`ヽ、
     ヽ、、__ - 、:::;;l.:.l l     ヽ、
      `7ー-, イ`l:ハ:ヾ、._ ,  f:. `、
693デフォルトの名無しさん:2006/03/27(月) 22:41:02
もう怒った!
お前等に呪いをかけてやる!
呪いの言葉↓

クリエイトコンパチクビディーシィー

呪いの言葉↑
これでもうこの関数を使うたびにお前等はこの糞レベルのギャグを思い出さずにはいられない!
あまりのくだらなさに思い出すたびに心底腸が煮えくり返る衝動にかられちゃえよ!
ちなみに俺も長年解除は不可能だ・・・orz
694デフォルトの名無しさん:2006/03/27(月) 22:46:10
援護射撃

トライアングルストリップ劇場
695デフォルトの名無しさん:2006/03/27(月) 22:56:47
援護射撃

セックスファイル
696デフォルトの名無しさん:2006/03/27(月) 23:01:32
援護射撃

ダイレクトセックス
697デフォルトの名無しさん:2006/03/27(月) 23:02:28
FPS論争のせいで糞スレ化してしまったじゃないか!
698デフォルトの名無しさん:2006/03/27(月) 23:24:54
もともとマジメな質問はこっちだ

DirectX総合スレ (Part4)
http://pc8.2ch.net/test/read.cgi/gamedev/1132937938/
699デフォルトの名無しさん:2006/03/27(月) 23:26:16
板違いを無視してスレ立てするような奴らにまともな書き込みを期待するほうがおかしい
700デフォルトの名無しさん:2006/03/28(火) 00:05:26
>>698

こっちの方が楽しい!
701247:2006/03/28(火) 05:51:05
ゲームを数日間起動しっぱなしにする奴がたまにいるからdoubleにしとけ
702デフォルトの名無しさん:2006/03/28(火) 05:51:46
古い名前残ってた・・・orz
703デフォルトの名無しさん:2006/03/28(火) 06:23:38
>>701
関係ない。
その場合はその前にDWORDの値が問題になるはず。
それに何日間だよ一体w(50日近くつけっぱか?w)
704デフォルトの名無しさん:2006/03/28(火) 07:18:00
CRT,VSYNCも古い仕様だな
将来CRTが無くなればVSYNCに縛られることもなくなる
705デフォルトの名無しさん:2006/03/28(火) 07:24:08
(゚Д゚)ハァ?
706デフォルトの名無しさん:2006/03/28(火) 07:25:19
>>703
>その場合はその前にDWORDの値が問題になるはず。

お前はMSが披露してるtipsすら読まんのか…
DWORDのffffffff→0が問題になるのはアホが組んだ時だけ
問題にすらならんわ
707デフォルトの名無しさん:2006/03/28(火) 07:38:41
>>706
だからdoubleがいいっていう理由がわからない。
708デフォルトの名無しさん:2006/03/28(火) 08:55:04
キャラの座標は
左上と真ん中
どちらのポイントを保持して使うべきですか
709デフォルトの名無しさん:2006/03/28(火) 09:08:13
マルチ乙
710デフォルトの名無しさん:2006/03/28(火) 09:49:06
>707
ちゃんと嫁
DWORDで問題ないと書いてある
711デフォルトの名無しさん:2006/03/28(火) 09:56:45
>>708
回転するなら真ん中
712お父さん:2006/03/28(火) 11:44:12
お前達もうちょっと仲良くできないのか
713デフォルトの名無しさん:2006/03/28(火) 12:51:16
MSの何かのTIPSで __int64 を使え見たいな事書いてなかったか?
714デフォルトの名無しさん:2006/03/28(火) 14:57:03
>>707
累積時間に対して精度を求めないならdouble使わなくていいよ
上のほうで出てるコードだと累積時間使ってないからfloat/intでええんとちゃう
715デフォルトの名無しさん:2006/03/28(火) 16:57:37
チャーでいいよチャーで
716デフォルトの名無しさん:2006/03/28(火) 21:20:08
じゃあ、俺はキムかチョでいく
717デフォルトの名無しさん:2006/03/28(火) 21:22:25
じゃあGNU MPで
718デフォルトの名無しさん:2006/03/28(火) 21:55:51
おまえら何やってるんだよ(;´Д`)
それより大変だ!DirectX7の日本語ヘルプ無くなってた。俺ヤバイ
719デフォルトの名無しさん:2006/03/28(火) 22:22:39
>>718
もう10がでるっつーのにそんなゴミ使ってるお前の頭が一番ヤバイ。
720デフォルトの名無しさん:2006/03/28(火) 22:34:45
>>719
春休み氏ね
721デフォルトの名無しさん:2006/03/28(火) 22:51:56
>>720
なんどでもいってやるよ!クズが!
どうせエロゲPGだろ?
死ねよこのゴキブリ野郎!
チンコおっ立てながらプ
722デフォルトの名無しさん:2006/03/28(火) 22:55:47
openglが頭を過ぎりました。
723デフォルトの名無しさん:2006/03/28(火) 22:56:25
さっさと10に移行したいな
デバイスロストがないのが地味に最高
724デフォルトの名無しさん:2006/03/28(火) 23:04:02
俺様は未だに



ラデインj7500 64M  だぜぇぇっぇ!!!!

dRECTX7世代  最強”

725デフォルトの名無しさん:2006/03/28(火) 23:26:18
こちらのページ

http://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
726デフォルトの名無しさん:2006/03/28(火) 23:55:07
>>718
前スレに上がってたよ
おまけにまだURL生きてたよ
http://gamdev.org/up/img/****.zip
*に数字を入れて当ててね

ヒント:4049
727デフォルトの名無しさん:2006/03/28(火) 23:55:39
エラー、読めよ
日本語だぞ。
728718:2006/03/29(水) 00:02:05
>>726
せっかく教えてもらったのですが、DirectX7のヘルプじゃない気が・・・
729718:2006/03/29(水) 00:04:16
見つかりました!
ありがとうございました!(多謝
730726:2006/03/29(水) 00:05:31
あああああ、すまん他人様のソースファイルだった
代わりに上げといた

ってあぷろどしてる間に見つかりましたか
大変失礼しました
731718:2006/03/29(水) 00:07:48
>>730
お手数おかけしました
732725:2006/03/29(水) 01:19:11
** error 1 ** deleting Debug\DrawPixel.obj

って出てるんで、オブジェクトファイルを作ればいいんでしょうけど、やり方がどうにも分からなくて…。
733デフォルトの名無しさん:2006/03/29(水) 04:09:13
>>732
頭悪いくせにへんなやり方するからだよw

つ ヒント:打ち間違え
734デフォルトの名無しさん:2006/03/29(水) 07:55:46
typo typo tytyp otyutoppudsaptdjsakld;]sv,lv,l:/a@:[qあsrふぇdtgyふじこl;p@:「」
735デフォルトの名無しさん:2006/03/29(水) 20:05:03
マルチターゲットレンダリングをつかって、
一度レンダリングした画像をテクスチャとして使いたいのですが、
その画像の背景部(黒)を透明化する方法がわかりません。

今のところ
D3DXCreateTexture
を使ってテクスチャを作成していますが、
どのようにすればいいでしょうか?
736デフォルトの名無しさん:2006/03/29(水) 20:09:28
X1R5G5B5
A1R5G5B5
上記のフォーマットに対応していないボードってあるのでしょうか?
(オンボードでは対応してないのを1つだけ確認しましたが、、、)
737デフォルトの名無しさん:2006/03/29(水) 21:03:16
>>735
なんかデジャヴを感じるが…
レンダーターゲットテクスチャをA8R8G8B8なりで作ればいいはず
738デフォルトの名無しさん:2006/03/29(水) 21:10:57
>>736
dxinfoでググレ
739デフォルトの名無しさん:2006/03/29(水) 21:11:52
>737
返信ありがとうございます。

D3DXCreateTextureFromFileEx は使ったことあるので、
そういうノリでやればいいのはわかってるんですが、
ファイル入力段階ではなく、出来上がってしまってからのテクスチャに
どういう関数を使えばいいのかが見つけられないのです・・・

デジャヴということはこの擦れにあるのでしょうか、
時間なくて見れてませんでしたが、取りあえずスレを頭から読んでみます。
740デフォルトの名無しさん:2006/03/29(水) 21:46:37
特定の色を透過するのなら、単純に色を判別してαに書き込めばいいだけ。
741デフォルトの名無しさん:2006/03/29(水) 22:26:41
>740
その色指定をアルファに書き込む関数をさっきから探してるんですが、みつかりません。
もしかして微妙にずれて考えてますか?
742デフォルトの名無しさん:2006/03/29(水) 22:29:03
>>741
関数などない。
ロックして自分でテクセル弄れ。
743デフォルトの名無しさん:2006/03/29(水) 22:29:33
自分でコンバートするわな。ふつー。
744デフォルトの名無しさん:2006/03/29(水) 22:31:15
>741
そういうことでしたか・・・、そりゃ見つからないですね

ありがとうございました、試行錯誤してみます。
745736:2006/03/29(水) 22:35:48
>>738
解決しました。
ありがとうございました。
746デフォルトの名無しさん:2006/03/29(水) 22:59:07
なんたらDevice9::Clear() も一応挙げておこう
これで十分かもしれないし
747デフォルトの名無しさん:2006/03/29(水) 23:23:23
>>742
そうなの?
書き込むときにピクセルシェーダ使ってできると思ってたけどそうでもないんだ?
それか、貼るときにマルチテクスチャ→ピクセルシェーダで小細工。とか。
748デフォルトの名無しさん:2006/03/29(水) 23:30:53
>>747
PS使えば確かに出来るが、
環境依存しない関数はないって事だろう。
749737:2006/03/29(水) 23:44:13
なんか色々勘違いされてんな…

>>739
ファイル入出力なんざ関係無い
D3DDevice9::CreateTexture()でレンダーターゲットかつA8R8G8B8の空テクスチャ作って
そこに描画すればいいんじゃねーのと言ってるんだが
D3DDevice9::Clear()でクリアするときは引数の4番目に0を渡せ
750デフォルトの名無しさん:2006/03/29(水) 23:48:27
IDirect3DDevice9::SetRenderTarget メソッド
751デフォルトの名無しさん:2006/03/29(水) 23:51:51
とあるサイトの引用です。
「最近のDirectX SDKには主要なビデオカードのDeviceCapsのリストが載っている」
との事ですが、どこに載っているのでしょうか?

ご存知の方がいらっしゃいましたら、お願いします。
752デフォルトの名無しさん:2006/03/30(木) 00:49:29
ご存知です。
753デフォルトの名無しさん:2006/03/30(木) 02:05:38
ひょっとして>>735の言っているのはMRTではないのか?
ずっとMRTのことだと思っていて、何でそんなことで悩むのか分からなかった。
MRT使うにはPSが必須だし。
754デフォルトの名無しさん:2006/03/30(木) 10:13:38
Direct3Dな流れなところすみません。

DirectMusicを使って、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

解決方法もしくは参考になるページ等ありましたら教えてください。
755デフォルトの名無しさん:2006/03/30(木) 10:27:49
DirectSoundのCapture使ってWaveに出力すりゃいけると思われ。
756デフォルトの名無しさん:2006/03/31(金) 07:51:01
静かになった
757デフォルトの名無しさん:2006/03/31(金) 09:16:56
こういうときは動かない方がいい
758デフォルトの名無しさん:2006/03/32(土) 01:29:07
もしかして、日付が 3/32 ?
759デフォルトの名無しさん:2006/03/32(土) 01:55:05
mcode\motelar..nis:per:mo/a/ac/aza/ready
mcode\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

これ何のプログラムで触るかわかりませんか?
760デフォルトの名無しさん:2006/03/32(土) 07:41:11
>>759
11箇所にマルチ乙
761デフォルトの名無しさん:2006/03/32(土) 23:30:46




らいとってハードで4個までしか対応してないのですか〜><?
762デフォルトの名無しさん:2006/04/02(日) 16:14:31
質問です。XP、.NET 2005 です。

LPDIRECT3DSURFACE9 型のサーフェスが持つビットデータを、直接取得/設定するにはどうすればいいでしょうか。
D3DXLoadSurfaceFromFile を使えば、サーフェスに画像を読み込むことはできます。
が、例えば 座標 (100, 100) の色を調べたい、座標 (100, 100) を黒 (0, 0, 0, 0) にしたい、などの方法が分かりません。
ビットデータのアドレスを取得できればどうにかなるのですが・・・。
よろしくお願いします。
763デフォルトの名無しさん:2006/04/02(日) 16:37:42
GetDC して GDI 関数使う。
764762:2006/04/02(日) 17:12:33
>>763
見落としてた・・・ありがとうございます。
765デフォルトの名無しさん:2006/04/02(日) 18:04:14
普通はその程度でGDIは使わないけどなw
Lockできるなら、Lockして直接アクセス。
Lockできないなら、システムメモリにサーフェス作ってそこに転送。
766デフォルトの名無しさん:2006/04/02(日) 23:21:52
DirectX 初心者です。
テクスチャの一部を色抜きしたくてアルファテストを
試しているのですが、どうしても成功しません。

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
767766:2006/04/03(月) 00:00:07
ちなみに
http://www.mvps.org/directx/scrapyard/
ここの Alpha Ball Demo を試したら成功したので、
ハードが対応していない、ということではなさそうです。
768デフォルトの名無しさん:2006/04/03(月) 01:04:58
>>766
アルファテストはレンダリング最終段階で適用されるので、
その時点でのα値が期待通りになっているようにする。

具体的には、使用する全てのテクスチャステージで
D3DTSS_ALPHAOP, D3DTSS_ALPHAARG1, D3DTSS_ALPHAARG2
を適切に設定する。

レンダリングステートも関係あるものは全てちゃんと設定しないと駄目。
769766:2006/04/03(月) 01:07:39
どういうわけだかわかりませんが、自己解決しました。
板汚しでスミマセン。
770766:2006/04/03(月) 01:09:21
>>768
レスくださってたんですね。ありがとう。
レンダリングステート、767のサンプルを
参考に設定したらうまく行きました。
771デフォルトの名無しさん:2006/04/03(月) 14:13:43
すみません、少々お伺いします

ID3DXLineを使って3次元ポリラインを作っているつもりなんですが。

カメラをどのように修正しても、常に位置が変動しない
ワールド座標じゃなくてビューポート座標?に表示されてるようなのですが、
これを他のオブジェクト同様、カメラに合わせて変動させるようには出来ないでしょうか?

お願いします。
772デフォルトの名無しさん:2006/04/03(月) 15:50:55
ラインを引く程度なら、直接頂点座標を指定すればいいだけなのに、
D3DXの関数を使わなければならない理由が何かあるの?
773771:2006/04/03(月) 16:26:40
他にもD3DXをつかったオブジェクトがある事と、
三次元で360度から描画する必要がある事

そんな時にラインを使う必要が出てきたのですが、
D3DX9からライン用のクラスがあると知ったので使ってみようと思いました。

D3DXMatrixIdentity(&mat);
D3DXMatrixIdentity(&world);
D3DXMatrixIdentity(&temp);

D3DXMatrixMultiply(&temp, &world, Cam->GetView());
D3DXMatrixMultiply(&mat, &temp, Cam->GetProj());

m_pd3dLine->DrawTransform(頂点配列, 頂点数, &mat, 頂点カラー);

いまこういう状態なのですが今度はまったく表示されません・・・
774デフォルトの名無しさん:2006/04/03(月) 16:47:35
そんな面倒なことしてないで、素直にDrawPrimitive()使おうや。
あれほど簡単に2D/3Dのラインが引けるものもないだろうに。
775771:2006/04/03(月) 16:53:36
すみません、自己解決しましあ

pD3DDevice->SetTransform(D3DTS_WORLD, &world);
が抜けてたんですね・・・

>>774
アドバイスありがとうございます、
とりあえず動いたのでこのまま続けてみようと思います
776デフォルトの名無しさん:2006/04/03(月) 23:53:31



みなさん、こんばんは
2D->3DにはD3DXVec3Unprojectを使えば楽勝です^^
777デフォルトの名無しさん:2006/04/04(火) 22:04:07

始点 0,0,0
終点 20,50,100

方向ベクトルの求めるときは

方向ベクトル=終点ー始点

でいいでしょうか><?



それと D3DXIntersect で
対象メッシュが拡大、回転、移動されていると正常に動かないですがどうしたらいいでしょうか><?

778デフォルトの名無しさん:2006/04/04(火) 22:04:44
初心者以下はお帰りください。
779デフォルトの名無しさん:2006/04/04(火) 22:07:49



>>
そんなこと言わないでください><
浮上します^^
780デフォルトの名無しさん:2006/04/04(火) 22:15:54
メッシュに適用しているマトリックスの
逆行列で光線ベクトルを変換してからD3DXIntersectに突っ込め。

それでも分からないなら素直にそこらへんのライブラリでやれ。
781デフォルトの名無しさん:2006/04/04(火) 22:33:48
>>779
帰れ
お前のせいでレスをどんだけ無駄にしたと思ってんだ
782デフォルトの名無しさん:2006/04/04(火) 22:34:55

D3DXMATRIX 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ですかね^^;
783デフォルトの名無しさん:2006/04/04(火) 22:36:46


>>
みなさん意地悪ですね><;
僕、怒っちゃいますよ^0^/
784デフォルトの名無しさん:2006/04/04(火) 22:44:55
またこいつか、スルー推奨。というか強制。
785デフォルトの名無しさん:2006/04/04(火) 22:49:07


>>

>またこいつか
違います、前回はぼくの弟です><;
786デフォルトの名無しさん:2006/04/04(火) 23:30:58



>>
動きましたー^^
ありがとうございました
また、ピンチになったらきますねー^^
787デフォルトの名無しさん:2006/04/06(木) 14:03:29
DirectPlayのIDirectPlay8Peerなのですが、
送信側は50ms間隔で数バイトを送信、
受信側はひたすら受け取る(処理速度には余裕有り)
双方をローカルで動作させdp8simで試しています。

dp8simをOFFにすれば、当然問題なく通信できるのですが、
dp8simのlatencyを100ms等にすると、受信側のデータに遅れが蓄積されていきます。

latencyが100msあったとしても、受信側が受け取るのが100ms遅れるだけで、蓄積される要素は無い様に思えるのですが・・
DPNSEND_SYNCや、DPNSEND_GUARANTEEDも指定していないですし。

何故なのでしょうか?
788787:2006/04/06(木) 19:00:30
なんか、帯域が絞られて、送信側のバッファに溜まってるみたいだ。
latency変えただけで、帯域は制限してないの・・・

もしかして、dp8simのlatencyシミュレート中は他の通信止めるとかいう糞仕様なのか?
789デフォルトの名無しさん:2006/04/06(木) 20:19:12
通信はWinSockを使う方がいい。
現時点のDirectXでは既に切り捨てられてるしな。
790デフォルトの名無しさん:2006/04/06(木) 20:46:17
お尋ねしたいのですが、Yahoo!ジオシティーズのアドバンストHTMLエディタで今HPを作っているのですが、
いざ編集を終えて自サイトを見てみると文字化けしてしまいます。
他のサイト全般ではエンコードが「日本語(シフト JIS)」のところが、自サイトは「日本語(EUC)」で通常表示されます。
これを直す方法をどなたかご存知ないでしょうか
791デフォルトの名無しさん:2006/04/06(木) 21:00:06
>>790
死ね
792デフォルトの名無しさん:2006/04/06(木) 21:00:52
で、どこらへんがDirectXの話なんだ?
793790:2006/04/06(木) 21:37:03
あー、すいません、ちょっと急いでたんで血迷ったことしてしまいました。
スルー御願いします。
794デフォルトの名無しさん:2006/04/07(金) 21:23:32
USBカメラから取得した動画にリアルタイムで字幕や画像を重ねようと
DirectShowとDirectGraphicsを使いプログラムを組もうと思っているのですが
どうしても文字を動画よりも上に重ねることができません。
似たようなことを解説しているサイト、または実際に作ったという方はいませんでしょうか?
795787:2006/04/07(金) 22:03:35
>>789
サンクス
保証通信とか、シーケンシャルとか署名とか既製で便利なので・・・
もう少し粘って駄目だったら、諦めてWinSockに移る事にします。
796デフォルトの名無しさん:2006/04/07(金) 22:45:44

D3DXSprite
DrawPrimitiveUP

ではDrawPrimitiveUPの方が速い。
797デフォルトの名無しさん:2006/04/07(金) 22:47:18

D3DXSprite
DrawPrimitiveUP

ではDrawPrimitiveUPの方が速い。
798デフォルトの名無しさん:2006/04/07(金) 23:00:09
D3DXSprite
DrawPrimitiveUP

ではDrawPrimitiveUPの方が速い。
799デフォルトの名無しさん:2006/04/07(金) 23:03:10
D3DXSprite
DrawPrimitiveUP

ではDrawPrimitiveUPの方が速い。
800デフォルトの名無しさん:2006/04/07(金) 23:30:15
組み方次第。
801デフォルトの名無しさん:2006/04/08(土) 00:56:16
組み方は関係ない。
802デフォルトの名無しさん:2006/04/08(土) 01:51:34
組み方次第。
803デフォルトの名無しさん:2006/04/08(土) 02:14:21
組み方に関係なく速度が出るDrawPrimitiveがどこの世界にあるというのか。

三角形10000万個をDrawPrimitive1回で1三角形の計10000回呼び出しと
10000個の三角形を1つのバッファにまとめて1回の呼び出しとで速度比べてこい。
804デフォルトの名無しさん:2006/04/08(土) 02:22:37
てゆーか今のID3DXSpriteって意外と速くね?
805デフォルトの名無しさん:2006/04/08(土) 02:38:21
最近のID3DXSpriteは内部でバッファもって
ある程度まとめてから一括で描画してるっぽい。
806デフォルトの名無しさん:2006/04/08(土) 05:54:39
ていうか Begin/End/Flush はそのためのメソッドじゃないのか
807デフォルトの名無しさん:2006/04/08(土) 08:49:20
>>803
前に俺が測ったときはほとんど差がでなかったの覚えてる。
808デフォルトの名無しさん:2006/04/08(土) 08:54:41
そういう情報が出た当時はそうだったかもしれないが、
ハードの進化や、ドライバの更新で現在はどうなってるか分かったもんじゃない。
何でもかんでも鵜呑みにするのはどうかと・・・
結局自分で測定するしかない。
809デフォルトの名無しさん:2006/04/08(土) 08:55:11
>>803
でもって、そういうの考えるのって意味なくない?
結局、シェーダがちがっちゃえば別のバッファにわけるしかないのに、
わざわざまとめることなんていまの時代絶対に無いっていいきれるじゃん。

テクスチャが違ってもわけるしかないし、アルファが入ってもいっしょにできないし、
必要なuvの数が違っても、アドレッシングモードが違っても、法線、従法線、接線の有無でも、
スペキュラが入っても分けるしかないし。
いっしょにまとめるようにする最適化なんて使われて無いだろ。
810デフォルトの名無しさん:2006/04/08(土) 10:22:21
サイズ20x20pixelのスプライトで今測ったら、

12000頂点 x DP呼び出し1回 -> 約760FPS
6頂点 x DP呼び出し2000回 -> 約120FPS

昔試した時はこんな遅くはならなかった気がするんだけど、
ドライバ腐ってんのかなあ・・・。
3Dゲーじゃ考えるだけ無駄ってのは同意。
811デフォルトの名無しさん: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座標は基本的に使っていません.

何がおかしいのでしょうか・・・?
よろしくお願いします.
812デフォルトの名無しさん:2006/04/08(土) 19:45:52
>>811
何がおかしいって・・・・・頭がおかしいとしか言えない。
813デフォルトの名無しさん:2006/04/08(土) 19:48:43
奥行きがある限り、方向は算出できても座標は出せない。
地点を求めるなら直線と対象物の交点を出せ。
814811:2006/04/08(土) 20:43:24
返答ありがとうございます

カメラのxy座標と注視点のxy座業が常に同じであっても
交点を出さないといけないのでしょうか?
815デフォルトの名無しさん:2006/04/08(土) 21:16:35
まずは自分で計算してみろ。
話はそれからだ。
816デフォルトの名無しさん:2006/04/08(土) 21:31:48
D3DXVECTOR3 mpt1(pt.x, pt.y, 1);//マウス座標1
D3DXVECTOR3 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;

こういう風に買えてみましたが、解決してない模様・・・
根本的に間違ってますでしょうか・・・
817デフォルトの名無しさん:2006/04/08(土) 21:34:21
>>811は間違いなくIQテストの三次元分野がIQ一桁だと思われる
818811:2006/04/08(土) 22:20:28
何度もすみません

D3DXVec3Unproject(&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 );

どうにもこうにも・・・
もうすこしヒントいただけませんか
819811:2006/04/08(土) 23:34:58

>>
みなさん
教えてくださいよ〜^^
820デフォルトの名無しさん:2006/04/08(土) 23:36:53
お前かよ
スルー推奨。
821デフォルトの名無しさん:2006/04/09(日) 00:01:57
822デフォルトの名無しさん:2006/04/09(日) 12:55:26
>>809
2Dのスプライト表示にスペキュラとかシェーダーとか
法線、従法線、接線とか考えるってどんなすごいもん表示してるんだ?


3Dに関しても下手に節約するよりはある程度は使わない頂点突っ込んだまま
一括で処理する方が早い場合も多々あるし、そのためにセグメントバッファを
APIでサポートしたんだろ。

確かに最新とはいえないかもしれないがGPU gems2に普通に書かれてるネタだぞ。


例えばロボットをレンダリングするときでもそれぞれの稼動するパーツを別のメッシュで
持つよりも1ウェイトのワンスキンモデルにした方が高速にレンダリング出来る場合もある。

ATIか何かのやつで今のハードはテクスチャサイズが大きくても別に遅くならんと書かれてたし、
巨大なテクスチャにデータまとめてあとはシェーダーでなんとかするってのが主流になるんじゃないのか?
頂点データに属性のID入れるなりすれば其処までステートの切り替えが必要になるとも思えないが。

まぁ、結局は自分でゲームにあわせてボトルネック調べるしかないけど・・・。
823デフォルトの名無しさん:2006/04/09(日) 20:25:27
>>822
そこだけとっていわれてもねぇ。
アルファ物に関してはまったく同じものでもZが違えば別表示にするしかないじゃない。
俺がいいたいのは、もうそういう手間をかける意味がそもそも無いっていってるの。
考えるだけ無駄でしょ。
824デフォルトの名無しさん:2006/04/09(日) 20:27:12
で、さぁ。
そうやってまとめたとしてそれでちょびっと速度が上がったところで、
その場所のそのときのその一瞬のことでしかないわけじゃない?
それでそんな手間かけてそれでどうだっていうの?
もう、絶対にやってもしょうがないことなんでそんな意味ありそうにいうの?
頭悪いんじゃないの?お前w
825デフォルトの名無しさん:2006/04/09(日) 20:41:44
速度のうp自体は全然ちょびっとでもないし、
半透明だけ別にしても普通は不透明のモデルの方が圧倒的に多いと思うんだが・・・。

オープンエアー型のマップにしろBSP使うようなマップにしろ1単位を1メッシュ化できれば
それなりのパフォーマンスは見込めるし全体のパフォーマンスにかかわってくると思うんだが・・・。

まぁ重くなったらポリゴン減らせば
826デフォルトの名無しさん:2006/04/09(日) 20:53:38
>>825
はぁ?
その「ちょびっとでもない」ってそれモデルによるけどって話でしょ?
なんでそんな全体に影響しちゃう的ないい方してるわけ?この詐欺師。
827デフォルトの名無しさん:2006/04/09(日) 21:08:53
仲良くしなさい
828デフォルトの名無しさん:2006/04/09(日) 21:39:42
>>827
俺は>>826の事は釣り師だと思ってるから気にせんでくれ。

>>826
俺に言ってるのは全体のパフォーマンスにかかわるような場所に
適用してこそ効果が得られるって話をしてるんだ。

何もかもが全体に影響するわけはないのは当然。
効果的な場所を見つけて其処に適用するための労力まで惜しむのかって話。

まぁ趣味でやってる分には動けばそれでいいんだろうけど。
829デフォルトの名無しさん:2006/04/09(日) 21:43:48
GPU能力だけが上昇する現状では確実に影響出ててるよ。
そもそもどの最適化を優先するかは状況次第なんだから
そんな必死こいて否定しなくていいよ。
830デフォルトの名無しさん:2006/04/09(日) 22:01:01
>>828
明らかにその状況にあわせた最適化が必要な箇所なのに全体も糞もねぇだろ。この嘘吐きが。
831デフォルトの名無しさん:2006/04/09(日) 22:02:14
「やるとしたら」の話ね。
まったくの徒労だと思うけど。
おそけりゃ遅いでいいでしょ。間に合わなきゃフレーム落ちでもさせりゃ。
832デフォルトの名無しさん:2006/04/09(日) 22:17:50
>>830
じゃぁわかりやすく言ってみるか。
現状のDirectXとグラフィックスハードウェアで最も簡単と思われる処理の高速化
→DrawPrimitive()を減らす。
セグメントバッファも2Dのスプライトのバッファにまとめて一括描画も
全てここにつながる。

Direct3Dで1GHz程度のCPU上で動作させる場合、
1秒あたりDrawPrimitive()が10000~40000程度でCPU100%使い切るんだそうだ。
60フレームで動かすなら1フレームあたり670回も呼び出せばCPU100%使い切ることになる。


極端な話だが弾幕STGで弾1つを1DrawPrimitive()でやってたらどうなるだろうな。

アルゴリズム的な話はそもそも
833デフォルトの名無しさん:2006/04/09(日) 22:18:22
送っちゃった・・・・

アルゴリズム的な話はそもそもGPUの最適化とは関係ないからスルー
834デフォルトの名無しさん:2006/04/09(日) 22:42:38
>>832
無駄の極地だな。
まったく売上に貢献しない会社のクズだな。
いや、クズならまだ害はないが、ホントこんな時代遅れのくそったれのもとで仕事しろなんて
言われた日には絶望で途方にくれる。

とだけ言っておく。
835デフォルトの名無しさん:2006/04/09(日) 22:51:00
時代遅れじゃない最新のやり方ってどんなん?
836デフォルトの名無しさん:2006/04/09(日) 22:58:19
>>835
普通にシェーダ使えば>>832みたいな最適化をすることの手間がどれほどのものかわかる。
837デフォルトの名無しさん:2006/04/09(日) 23:04:04
つまりシェーダーを使うからあんな前時代的な最適化は出来ない。

結果として画面に表示できるオブジェクトの数が減ろうが、
沢山だして処理落ちしようが今はそういう時代だ・・・って事か。
838デフォルトの名無しさん:2006/04/09(日) 23:08:55
ようやく理解できたか。
839デフォルトの名無しさん:2006/04/09(日) 23:17:29
あぁなかなか為になる話だった。

色々な事が理解できたよ。色々な事がね。
840デフォルトの名無しさん:2006/04/09(日) 23:20:34
>>つまりシェーダーを使うからあんな前時代的な最適化は出来ない。
それは今のシェーダが過渡期で、機能が限定されているからと注釈が必要。
効果ごとにシェーダを切り替えるという方式はいずれ無くなるだろうし
そうとは断言出来ないっしょ。

841デフォルトの名無しさん:2006/04/09(日) 23:30:55
つーかこの手の話って2Dスプライトの話から始まってるのに
シェーダ駆使したシーンじゃ意味ねえよって罵倒始めるのが
いつも出てくるよね。同じひと?
842デフォルトの名無しさん:2006/04/09(日) 23:31:28
だったら何か?
843デフォルトの名無しさん:2006/04/09(日) 23:55:56
>>841
「シェーダを使わない」ってのがDirectXの固定シェーダ機能を指してるのであれば最適化なんて語るだけ無駄。
なんで固定で済むのかって例によって汎用性重視の設計だから固定で済むわけだからその分やっぱり遅くなる。
そこでまとめるとどうとかそういう議論は全く意味がない。
844デフォルトの名無しさん:2006/04/10(月) 00:11:07
>>840
今だって条件分岐はサポートされてるんだから
それを理由にリクエストを減らすための最適化が
出来ないってのはちっとムリがないか?

ある程度ならテーブルをレジスタに入れておいて
インデックスは頂点のw要素にでも入れておくなり出来るんだし。
845デフォルトの名無しさん:2006/04/10(月) 00:12:41
>>844
それってホントに速くなんの?
846デフォルトの名無しさん:2006/04/10(月) 00:29:42
>>845
CPU負荷をGPUの頂点演算部分の負荷にまわす方法って感じ。

元々DrawPrimitiveの回数を減らすってのは
CPUがきつくてGPUが浮いてる時の回避方法だよ。

リクエストが多くてCPUがネックになるような状況では有効。
ピクセルシェーダーがネックな場合は意味なし。
頂点シェーダーがネックなら逆効果。

さっきの1GHzクラスで1フレーム670回のDrawPrimitive()ってのは
GPUへのコマンド送信にかかるCPU負荷の問題だから、
頂点数が多かろうが少なかろうが関係ない。

DrawPrimitive()は重いAPIだから極力callすんなって
M$も何かで言ってたっしょ。

847デフォルトの名無しさん:2006/04/10(月) 00:32:24
また速度厨か・・・
速度語るなら実測値持ってきてから言え。
引用は、あまり意味が無い。
848デフォルトの名無しさん:2006/04/10(月) 00:48:45
(゚Д゚)ハァ?
849デフォルトの名無しさん:2006/04/10(月) 00:49:54
>>810は実測なんだけど。Athlon3GHz+GeForce6600GT
ちなみにDPの間にステート変更の中でもコストが高い
SetVertexShaderを挟むと100fps以下に落ち込む。
850デフォルトの名無しさん:2006/04/10(月) 01:00:56
>>847
計測も俺は微妙だと思うんだがな。
単純なサンプル用意して計測した結果と
実際のゲームに適用した結果だとあまりにも結果に差がありすぎる。
例えば、>>810みたいなことをゲームで実際にDrawPrimitiveをまとめてみても1FPSたりとも速度は上がらなかった。
それどころか、アルファの矛盾を無くすために2度描きまでしてるが1回しか描画しないときと比べて倍時間がかかってるわけではないようだし。(当然だけど)
こういうのって、計測結果がそうであってもそのシーンのその瞬間のことしか証明できてないと思うんだよね。
851デフォルトの名無しさん:2006/04/10(月) 03:20:38
いくらなんでも850は非道すぎるw
852デフォルトの名無しさん:2006/04/10(月) 06:34:27
>>851
俺は>>850みたいなことあると思うよ。
853デフォルトの名無しさん:2006/04/10(月) 06:44:28
なんかApril2006が出てるって情報流してるサイトあるんだけど
公式で見つからない
854デフォルトの名無しさん:2006/04/10(月) 06:57:19
>>852
本人乙
855デフォルトの名無しさん:2006/04/10(月) 07:00:46
いや、本人じゃないけど、>>850は正しいと思うよ
856デフォルトの名無しさん:2006/04/10(月) 07:07:09
なんで>>850は、計測=簡単なサンプルで計測なの?
自分の目的に合わせた使いかたのサンプルで測定すれば良いじゃないか。
857デフォルトの名無しさん:2006/04/10(月) 08:35:40
結果に差が有りすぎるって、計測と実際の違いは、てめぇの実装の差じゃねぇかw
858デフォルトの名無しさん:2006/04/10(月) 09:42:37
859デフォルトの名無しさん:2006/04/10(月) 09:47:03
ラインタイムキタ*・゜゚・*:.。..。.:*・゜(゚∀゚)゚・*:.。. .。.:*・゜゚・*!!!!!
860デフォルトの名無しさん:2006/04/10(月) 13:58:06
ランタイムだけは、9.0cから上がってな
861デフォルトの名無しさん:2006/04/10(月) 14:14:51
なにが変わったの?
862デフォルトの名無しさん:2006/04/10(月) 16:00:31
ま、やり方は何でもいいが可能な限り
DPを減らせってのはいまやDirecXじゃ基本中の基本だわな。
863デフォルトの名無しさん:2006/04/10(月) 18:40:32
俺、まさに2DSTG作ろうとして玉1発毎にDrawPrimitiveしてるワケだが、
DrawPrimitive減らすと言っても具体的にどうすりゃいいの?
864デフォルトの名無しさん:2006/04/10(月) 18:50:38
わかんないならやらなくて良い
865デフォルトの名無しさん:2006/04/10(月) 19:53:59
>>863
弾の数を減らせばいい
866デフォルトの名無しさん:2006/04/10(月) 19:59:09
>>865
天才現る
867デフォルトの名無しさん:2006/04/10(月) 21:09:17
むしろ弾を出さなきゃいい
868デフォルトの名無しさん:2006/04/10(月) 21:21:09
BitBlt でいいよもう…
869デフォルトの名無しさん:2006/04/10(月) 21:39:06
三人でかけそば一杯なのですがよろしいでしょうか。
870デフォルトの名無しさん:2006/04/10(月) 21:46:16
つまりDrawPrimitive減らせって言ってるヤシの程度はそんなもんって事だな
レベル低っ!
871デフォルトの名無しさん:2006/04/10(月) 22:07:21
仕組み的に減らせないよなぁ・・・
描画するなってのと同義だと思うよ。
872デフォルトの名無しさん:2006/04/10(月) 22:33:05
>>870-871
いや・・・・・マヂレスを避けてるだけなんだが
まとめてやればいいだけな話だろ
この程度もわからないならグラマやめろよ
873デフォルトの名無しさん:2006/04/10(月) 22:34:50
俺のおっぱい揉んどけ
874デフォルトの名無しさん:2006/04/10(月) 22:37:56
っていうかExecuteBufferってのが昔あったのよ
これがえらく不評でDrawPrimitiveに取って代わられたのよ
それでまた描画コールを減らしたいと?
ユーザー様は勝手だにゃー
875863:2006/04/10(月) 22:42:20
>>872
一つ一つ個別に描画しなけりゃならんのだが?バカ?
そんな事も判らんのなら人間やめればぁ?www
876デフォルトの名無しさん:2006/04/10(月) 22:46:10
伸びていると思ったら、DrawPrimitive減らすなんて
MSのヘルプにも載っているような事に、何延々ケチ付けてるんだ

このスレ、まともな質問回答レスが少ないよなw
ほとんどが不毛な議論だ
877デフォルトの名無しさん:2006/04/10(月) 23:02:17
弾幕シュー作りたいんですけどー、だけじゃ描画コマンド毎に
std::vectorに頂点突っ込んでまとめてDP、ぐらいしか言うことねえし。
スプライト一個一個にステート変更が必要? それならバッチングは諦めろ。
878デフォルトの名無しさん:2006/04/10(月) 23:06:05
テクスチャの座標変えてやればいいんじゃないの?
10.0とか、1000.0とか。
879デフォルトの名無しさん:2006/04/10(月) 23:09:35
ここらでマジレス。

弾はスプライト→△ポリゴンx2で描画→頂点4つでストリップor頂点6つでリストで描画
弾の数を減らさずにDrawPrimitive()を減らすって事は、
一回のDrawPrimitiveで書く頂点数を増やすって事に。

つまり600頂点とか入る頂点バッファを作って、
それを書き込みonlyでLockしてガリガリ頂点を書いていけばいい。

処理的には短なるコピーだし数が多ければ多いほどDrawPrimitiveを呼び出すよりはるかに速くなる。

STGの弾ならステートの変更が弾ごとに頻発するわけでもないからかなり効率よく纏められる。

自由にZでプライオリティ付けられるようなシステムにしておくとこの辺きつくなるから、
レイヤーみたいな構成で1レイヤーが1テクスチャandステートとかにしておくとかなり素敵。

あとは気合。
880デフォルトの名無しさん:2006/04/10(月) 23:20:12
テクスチャを描画するためだけの板ポリ前提ならその方がいいのだろうが、
まともな3Dモデルを出力する時は、DrawPrimitiveの数をプログラム的に減らすのはほとんど不可能。
モデリングの段階で最適化しておかなければならない。
結局見ている題材が違うんだよね。
881デフォルトの名無しさん:2006/04/10(月) 23:24:32
>>880
偉そうなこという前に流れ読め>>796

しっかし最初から下らない流れだなw
こんなので100レスかよ
882デフォルトの名無しさん:2006/04/10(月) 23:33:18
そもそもD3DXでSpriteとかXFile系の描画機能とか余計なものを用意するのがいけない。
883デフォルトの名無しさん:2006/04/10(月) 23:40:08
しばらくこないうちにレベル低くなったなここは。
結論からいうと>>850が正しい。
他の奴は何言ってるのかわからない。
3Dの勉強いちからやりなおせ。
そもそもDrawPrimitiveをまとめていいことなんて1つもない。

ちょっとよく考えてみろ。
そもそも視錐台に入っていない物体の計算までやって速いわけがない。

シーンをまるごとつっこんだとしてカメラの視錐台にはいる=描画する必要のある物体はそのうちのどれだけだっていうんだよ。馬鹿。
DrawPrimitive1つにまとめるとかいってる奴は百回死ね。
描画処理の基本中の基本にして、速度アップにもっとも効果のあるクリッピングをやってねぇ時点で速いわけない。
はい、残念w
レベル上がったらまたおいでw
884デフォルトの名無しさん:2006/04/10(月) 23:42:33
101回目の死ねポ〜ズ
885デフォルトの名無しさん:2006/04/10(月) 23:48:46
だってさ>>863
せっかくアドバイスもらったんだから、
頑張って視錐台カリングを駆使した2DSTGを作ってね。
886デフォルトの名無しさん:2006/04/10(月) 23:49:47
すいません。超初心者な内容で恥ずかしいのですが、
D3DXCreateTextureFromFileExで、GIF画像は扱えないのでしょうか?
GIF画像を指定しているつもりですが、何も表示されなくなってしまいます。(PNGだと映る)
887デフォルトの名無しさん:2006/04/10(月) 23:52:54
2Dだって3Dだって同じだろ。
まさか毎フレーム追加→削除を繰り返す動作なんて速いと思ってんじゃねーだろ?
やった時点でVertexBufferの恩恵はほぼないのはわかるよな?
2Dだろうと3Dだろうと1つのDrawPrimitiveにまとめるなんてまったくの無駄。
はい、ちんちんw
888デフォルトの名無しさん:2006/04/10(月) 23:53:01
初心者だとヘルプは読まなくてもプログラムが組めるの?
889デフォルトの名無しさん:2006/04/10(月) 23:53:09
hr = D3DXCreateTextureFromFileEx(
m_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が反映されない・・・・なんでやねん!
890デフォルトの名無しさん:2006/04/11(火) 00:02:38
>>886
「この関数がサポートしているファイル フォーマットは、
.bmp、.dds、.dib、.hdr、.jpg、.pfm、.png、.ppm、.tga」

無理みたい。

>>887
>まさか毎フレーム追加→削除を繰り返す動作なんて速いと思ってんじゃねーだろ?
それをやった結果が>>810。ちなみにVBじゃなくてstd::vector
891デフォルトの名無しさん:2006/04/11(火) 00:04:22
>>888
ヘルプを読むかぎり、bmp,png,jpeg,dib,tgaをサポートとあります。
ですが>>118であっさり「gifファイル〜」と話題にのぼっているので、GIFを扱えるテクニックがあるのかと思いまして。
892デフォルトの名無しさん:2006/04/11(火) 00:09:00
自分で読み込めばいくらでも使える。
D3DXに無いだけの話。
893デフォルトの名無しさん:2006/04/11(火) 01:04:25
>>879
△ポリゴンx2も使うなヴォケ
894デフォルトの名無しさん:2006/04/11(火) 02:17:07
>>883
自演乙
895デフォルトの名無しさん:2006/04/11(火) 02:41:35
>>887
VertexBufferはDYNAMICで作成すればAGPメモリに配置されるし、
Lock時に書き込みONLYのフラグを指定すれば高速に書き換えられるんだが・・・

実際のそういう資料はいくつも存在するのになんで頭ごなしに否定してるんだ?
出来ないことは恥ずかしいことじゃないぞ。
これから出来るように勉強すればいいんだ。
896デフォルトの名無しさん:2006/04/11(火) 02:42:31
>>893
STRIPにしても縮退ポリゴンつっこもから結局スプライト1つに6頂点にならねぇ?
897デフォルトの名無しさん:2006/04/11(火) 02:43:53
>>883
クリッピングやってからインスタンス化できるようなシステムを
考えればいいだけだと思うんだけど。
898デフォルトの名無しさん:2006/04/11(火) 02:47:50
Indexed頂点使えってことじゃない?
頂点キャッシュとデータ転送量の削減に期待して比較したことあるけど、
かなりヘビーな弾幕シューでもシーン毎に精々10000頂点程度、
しかもライティングは切るし、まず効果は出ない。
899デフォルトの名無しさん:2006/04/11(火) 03:06:02
縮退ポリゴンってなんだ?英語で頼む
900デフォルトの名無しさん:2006/04/11(火) 03:36:10
同一座標に2頂点があるポリゴン、、だっけ?
ようは面積が0になるからレンダリングされないポリゴン。

シャドウボリュームなんかでも使わなかったっけ?
901デフォルトの名無しさん:2006/04/11(火) 05:10:20
ちょっと話についていけてないんだが……

弾の描画なんて三角ポリゴン一枚で十分じゃないのか?
どうせ透過するからポリゴンの形なんて関係ない
四角にする必要性がわからない
902デフォルトの名無しさん:2006/04/11(火) 06:13:11
>>897
それってVertexBufferを毎回確保しなおすから測るまでもなく遅いよw
903デフォルトの名無しさん:2006/04/11(火) 06:25:21
>>883読んで考えた。
本当にPrawPrimitive一括描画って計測数値だけでみて速いって言えるんだろか?
不透明ポリゴンの前から描画とかもしないわけだし、なんか都市伝説のような気がしてきた。
904デフォルトの名無しさん:2006/04/11(火) 10:38:00
IDirect3DDevice9::SetStreamSourceFreq メソッド

--------------------------------------------------------------------------------

ストリーム ソースの頻度値を設定します。このメソッドを使うと、複数インスタンスのジオメトリを描画できます。

構文

HRESULT SetStreamSourceFreq(
UINT StreamNumber,
UINT FrequencyParameter
);
パラメータ

StreamNumber
[in] ストリーム ソース番号。
FrequencyParameter
[in] このパラメータには 2 つの異なる値を設定できます。「複数インスタンスのジオメトリの効率的な描画」を参照してください。
戻り値

成功した場合は、D3D_OK を返します。

失敗した場合は、D3DERR_INVALIDCALL を返します。

1年以上前からハードウェアで実装されていて、
GPUGems2なんかでは丸々1章使って詳細に解説されているネタなんだが・・・。

半透明のモデルはそりゃ無理な話だが、極端なはなし草原で草を1本ずつDPで植えていくのか?っつー話だ。
905デフォルトの名無しさん:2006/04/11(火) 10:53:38
都市伝説でnvやatiがgdc2006まで来て
"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 ス プ ラ イ ト の 話 だ ろ ?
906デフォルトの名無しさん:2006/04/11(火) 12:13:58
どっちでもいいから実装して完成品作った奴だけが勝ち
小手先の手法であーだこーだいってる頭でっかちは生きてる価値無いから死んでね
907デフォルトの名無しさん:2006/04/11(火) 12:23:28
何もゲームを作るだけが全てでもないと思うのだが。
908デフォルトの名無しさん:2006/04/11(火) 12:32:55
某ゲーム会社の面接では上で騒いでるようなことをわざとふる
食いついてきたら落とす
それ知らないで暴れてるバカがTOKIWAにいたが
ここにも10人ぐらい落とされるのがいそうだな
909デフォルトの名無しさん:2006/04/11(火) 12:54:19
なんでそれが落とす基準になるんだ?
910デフォルトの名無しさん:2006/04/11(火) 12:55:26
それが判らないうちは青いってこったな
911デフォルトの名無しさん:2006/04/11(火) 13:06:36
>>903
全てを一括で描画しようと考えるからいかんのだよ。
無理なくまとめられる範囲で、なるべくまとめて描画しろってこと。

なんでそんなことになっているのかというと、全てはDrawPrimitiveの
オーバーヘッドが常識外れにでかいせい。
Vistaでは改善されるらしいので、3年後には都市伝説になってそうだが。
912デフォルトの名無しさん:2006/04/11(火) 13:09:45
>>910
技術研究と仕事でのゲーム作りは別だと思ってたがそうじゃないんだなぁ・・・

仕事では60フレで回れば99%使ってようが動いてて締め切りに間に合えさえすればいいと思ってたよ。
まぁコンシューマーはマシンスペック固定だからPCみたいな最低スペックどうこうとか考えなくていいからか・・・。
913デフォルトの名無しさん:2006/04/11(火) 13:11:31
( ゚д゚)ポカーン
914デフォルトの名無しさん:2006/04/11(火) 13:12:34
>>911
3年程度じゃVista標準にはならない気がする。
Dx10はVistaでしか動作しないし全機能サポートしてないとDx10対応ビデオカードとはMSから認められないし、
ビデオカードとOS含めて変えざるを得ないほどの利点がなけりゃWin2kで十分だし・・・。
915デフォルトの名無しさん:2006/04/11(火) 13:39:17
>912
おまいの読解力に乾杯
916デフォルトの名無しさん:2006/04/11(火) 13:43:08
>>915
dクス。
917デフォルトの名無しさん:2006/04/11(火) 14:07:06
皮肉が通じないようだぞ
918デフォルトの名無しさん:2006/04/11(火) 14:09:47
>>917
乾杯されるくらいの読解力だからな。
919デフォルトの名無しさん:2006/04/11(火) 14:13:26
そんなん言われると照れるじゃないか。
920デフォルトの名無しさん:2006/04/11(火) 14:22:39
ようやく読み終わったわ。いずれにしても、スプライト一つに一回DrawPrimitiveしてる奴は論外だろう…。
煽りじゃなくマジで分からないんだが、クリッピングと、DrawPrimitiveをまとめるってのは、普通同時にやることじゃね?
>>883とか、俺が何か勘違いしてるのかな。

毎フレーム位置が変わる2Dなら、動的バッファを用意して、クリッピングやアルファ別を考慮しつつ、バッファに書き込み、
有る程度まとまったらDrawPrimitiveで描きだしていく、で良い気がするんだが。
なんかヘルプか何かに、頂点数別の最適サンプルあったよな?

それで思い出した。昔どこかでLockが遅いから、2DスプライトならUP系が良いってサイトがあったけど、
あれはDYNAMICで試してたのかな。
921マイク ◆yrBrqfF1Ew :2006/04/11(火) 14:31:00
このスレはずいぶんハイレベルだな
922デフォルトの名無しさん:2006/04/11(火) 14:48:18
923デフォルトの名無しさん:2006/04/11(火) 17:51:08
2DSTGの弾を位置と角度を変えて2000発(確か蟲姫がこれぐらい)描画しようと思ったとき、
SDKのチュートリアルから学んだ者としてはSetTransform()とDrawPrimitive()のセットを
弾数分繰り返して描画するワケだが、これをTriangleListに直して1回で描画しろってワケか?
これって現実的かぁ?
924デフォルトの名無しさん:2006/04/11(火) 18:02:33
そりゃアホの子の実装だ。
スプライトの位置をSetTransform()で指定するんじゃなくて
自分で変換した頂点をバッファに突っ込むの。
925デフォルトの名無しさん:2006/04/11(火) 18:30:34
SetTransform()で2Dの変換をやってることに感動した。
926デフォルトの名無しさん:2006/04/11(火) 18:33:46
>SetTransform()で2Dの変換をやってることに感動した。

回転させようと思ったら普通にやるもんだと思ってたが
927デフォルトの名無しさん:2006/04/11(火) 18:36:34
>>926
も、もしかしてまだ小学生とか?
だとしたら凄いじゃねぇか小学生でDirectXか!
928デフォルトの名無しさん:2006/04/11(火) 18:42:03
俺なんてカーチャンの腹の中でSpriteによる描画速度について考えてたぞ
929デフォルトの名無しさん:2006/04/11(火) 18:56:47
>>863=923なワケか。参考になったかい?
930エログラマ:2006/04/11(火) 19:02:49
ならん
931デフォルトの名無しさん:2006/04/11(火) 19:51:50
>>926
2Dなら移動も回転も拡大縮小も全部CPUでやって
それをバッファに突っ込んでDPでレンダリング汁。
932デフォルトの名無しさん:2006/04/11(火) 20:12:49
2Dスプライトの回転も頂点シェーダでやらずに、
sin cosは遅いから三角関数テーブル使うんだと得意げになるスレはここですヵ?
933デフォルトの名無しさん:2006/04/11(火) 20:18:15
DrawPrimitiveで一括で描画するとかいってる奴は

@クリッピング処理を入れるために毎フレームVertexBufferを確保→解放するコスト(3Dでも2Dでも同じ)
AZバッファを使った不透明ポリゴンの前→後描画処理ができない(3Dでも2Dでも同じ。2DだってZ値もたせればいいよね?)

よりDrawPrimitiveで一括して描画するほうが速いとかいってる?
@はビデオメモリが虫食い状態になるんじゃねーの?
AはDrawPrimitiveに一括で入れちゃってるから恩恵はないよね。
なんでこれよりDrawPrimitive一括のほうが速いとか思ってるわけ?
934デフォルトの名無しさん:2006/04/11(火) 20:34:40
>>933
念のため聞くけど(1)も(2)も釣りだよな?
情報斜め読みした聞きかじりの知識の「ふり」をした釣りだよな?
935デフォルトの名無しさん:2006/04/11(火) 20:39:12
>>932
> 2Dスプライトの回転も頂点シェーダでやらずに
何を言ってるんだ? シェーダ内でアフィン変換をやらせようとすると
スプライト毎にDPが必要(ジオメトリインスタンシングで解決できるが)
それなら自前で変換してDP減らした方が遥かに負荷が低い、というだけの話だぞ?

>>933
1 -> そんなの必要ないし。

2 -> フィルレート稼ぎ? DP一括でも普通にできるけど? 
そもそもフィルが少なくしかもほとんど半透明(とゆーか抜き色)の
スプライトが前にくる2DゲーでZソートは微妙。
Zバッファが勿体無いから俺は切る。
936デフォルトの名無しさん:2006/04/11(火) 20:44:51
だめだ、面白すぎるw
全角英数字ってことはもしかして883なのか
これにマジレスしてた俺とおまえら乙
937デフォルトの名無しさん:2006/04/11(火) 20:48:21
1)D3DLOCK_DISCARDが何のためにあると思ってるんだ?

2)ソートの不要なオブジェクトをインスタンス化すればいいだけじゃん。
おまえさんの作るゲームは画面上の全オブジェクトが半透明でソートが必要なのかい?
大抵は抜き色+アルファテストで片付くけど。

--------------------------------------------------------------------------
Octorber 2004のドキュメントから抜粋

複数インスタンスのジオメトリの効率的な描画

多くのオブジェクトが同じジオメトリを使うようなシーンがある場合に、そのジオメトリのインスタンスを異なる向き、サイズ、色などで数多く描画できます。
レンダラに提供する必要のあるデータ量を低減できるので、パフォーマンスを大幅に向上できます。
--------------------------------------------------------------------------

上の機能はちゃんとハードウェアで頂点バッファの連結なんかも実装されているし、
専用のAPIやサンプルのソースコードも掲載されている。

てかコレ以上釣られても不毛な気がしてきた。
938デフォルトの名無しさん:2006/04/11(火) 20:48:53
>>933については、他人に難癖つけるレベルじゃないと思うので無視した方が良いだろう。
言ってることが無茶苦茶。本人も良く分かってないんじゃないか。

@ものすごい勢いで確保と解放を繰り返すイメージで怖がってんだろうけど、
過去の遺物の時代を引きずったジジイプログラマの妄想だな。
Dynamicの頂点バッファをLockして返ってくるアドレスが次回も同じアドレスが来る保障がないだろ。
DirectXは当たり前のようにそういう設計なんだよ。

頂点バッファにいろいろ詰め込むとZバッファが効かないと思い込んでるのもアレ杉
939デフォルトの名無しさん:2006/04/11(火) 20:51:43
2)は不透明のフィルレートの話か。
勘違いしてた。

まぁそんなところ気にするなら素直にオクリュージョンカリング実装すればいいと思うんだが。
ハードウェアで実装されてるしサンプルもソース付きで公開されてたし。
940デフォルトの名無しさん:2006/04/11(火) 22:23:49
真面目に教えて欲しいんだけど
二つの離れた三角形を一筆書きってできんの?
941デフォルトの名無しさん:2006/04/11(火) 22:31:11
三角形(A,B,C)と三角形(D,E,F)があったときに、

TRIANGLE_LISTなら→A-B-C-D-E-F。
TRIANGLE_STRIPなら→A-B-C-C-D-D-E-F。
942デフォルトの名無しさん:2006/04/11(火) 22:35:54
ちと説明足りんかったか。

TRIANGLE_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つにしてる。
943デフォルトの名無しさん:2006/04/11(火) 22:44:48
最近流れが速いね
944デフォルトの名無しさん:2006/04/11(火) 22:47:51
アフォがくだらない事を必死に語ってるからな
945デフォルトの名無しさん:2006/04/11(火) 22:49:50
>>937
それってShader3.0必要って書いてあるよ
庶民には関係ない話だお
946デフォルトの名無しさん:2006/04/11(火) 22:56:44
>>935
>DP一括でも普通にできるけど? 
どうやるの?
947940:2006/04/11(火) 23:02:14
>941-942
説明サンクソ
くっつけてSTRIPって手法は納得なんだけど、なんか見えない三角を用意するってのが
かなり冗長な気が…この手法で高速化の恩恵って得られるもんなのだろうか…
948デフォルトの名無しさん:2006/04/11(火) 23:04:31
>>938
はぁ?
結局、頂点分のメモリをビデオメモリに確保→解放する処理は変わらないんだろ?
普通に遅いよ。
なんで一度ビデオメモリに用意したVertexBufferを解放しちゃうような設計で速度がでるんだよ。
なんのために確保させてるんだかまったく理解できない。
アホか。
949デフォルトの名無しさん:2006/04/11(火) 23:06:49
>>947
その場面場面で測って最適値を探すしかない。
結局つなげて描画なんてやるわけだから、ストリップが短けりゃ恩恵は無いし、
あんまりでかい物体なら今度はクリッピングの恩恵がうけられない。
グラボはうけとった頂点分の計算をしなけりゃならん。
950940:2006/04/11(火) 23:09:43
>>949
だよねぇ…なんか面倒なだけっぽい
素直にLISTのほうでやりまする
ノシ
951デフォルトの名無しさん:2006/04/11(火) 23:19:23
>>949
受け取った分の頂点を処理しなければならないのはまったくその通りなんだが、
昨今のビデオカードで頂点処理がネックになることはまず有り得ない。

大抵の場合でネックになるのはピクセルシェーダーかCPUだよ。

2Dのだけど毎フレーム頂点バッファをLock()してDPしてるサンプル。
1スプライトずつDPするのと全部まとめてからDPするやつの比較ね。
ttp://up.spawn.jp/file/up16784.zip
952デフォルトの名無しさん:2006/04/11(火) 23:30:52
>>951
404
953951:2006/04/11(火) 23:32:15
すまない。ミスってた・・・。
ありもののライブラリでやってるけど内部的にはVB作ってDISCARDでロックして描いてる。

こっちで・・・
ttp://up.spawn.jp/file/up16819.zip
954デフォルトの名無しさん:2006/04/11(火) 23:50:38
>>953
なんかちがくね?
DrawPrimitive毎回呼び出す方はシーンの始めに
VertexBufferで確保しないと比較になんなくね?

つーか、それで速かったとしてもクリッピングとフィルレートの問題にはカスリもしないじゃん。
何がいいたいの?
955デフォルトの名無しさん:2006/04/11(火) 23:58:17
Lunaの製作者、いい加減にオブジェクト指向理解しろよ
マスターヘッダでインクルードファイルまとめ読みするの馬鹿っぽいからヤメロよ
956デフォルトの名無しさん:2006/04/12(水) 00:16:31
単にDP呼び出しの負荷を考えたサンプルじゃね?

それにDxのドキュメントにも事前に十分なサイズのバッファを確保しておくと
書かれてるし毎フレームVB作り直しなんて実装問わず必要ないだろう。
957デフォルトの名無しさん:2006/04/12(水) 00:17:59
>>955
それ本来は.lib形式で配布されてるから.hはひとつになってるんじゃねーの?
958デフォルトの名無しさん:2006/04/12(水) 00:26:21
>>956
はぁ?なにいってるのか全くわからない。
DrawPrimitive一括描画の人はどうやってクリッピングしてるの?

クリッピングは毎フレームやらなきゃいけない処理でしょ?
DrawPrimitiveで一括で描画するにしても、クリッピング処理で絞り込んだ頂点だけを対象にするんでしょ?
フレーム毎になんのオブジェクトの頂点が描画対象になるかわからないじゃん。
つーことは、VertexBufferを毎フレーム確保し直すか。
すでに用意してあるVertexBufferをロックして描き変えるかしなきゃいけないってことだろ?
959デフォルトの名無しさん:2006/04/12(水) 00:29:00
>>957
うざ
ソース付けてるのにlib形式で配布する意味がわからん。
面倒なだけじゃん。
あと、俺の環境ではコンパイル通らなかったな。どうでもいいけど。
960デフォルトの名無しさん:2006/04/12(水) 00:32:19
んなこた本人に聞け。スレ違いだ。
961デフォルトの名無しさん:2006/04/12(水) 00:33:50
>>958
だから最初に確保したバッファに必要なものだけ突っ込んでいくんだろ?
962デフォルトの名無しさん:2006/04/12(水) 00:35:01
>>961
2フレーム目どうすんだよw
963デフォルトの名無しさん:2006/04/12(水) 00:42:35
ロックして最初からまた書けばいいんじゃ?
964デフォルトの名無しさん:2006/04/12(水) 01:12:08
確保し直しとか騒いでるアホはVertexBufferの使い方を理解してないから、
みんな無視した方がいいと思う。
965デフォルトの名無しさん:2006/04/12(水) 01:18:53
全くだ、しかし笑いがとまんね
1フレーム毎にバッファ確保なんて、一回悟れば恥ずかしくて引き下がるかと思いきや…凄いなw
966デフォルトの名無しさん :2006/04/12(水) 01:19:33
うちの環境で以前計測したときはDPは一定頂点数以下は
できるだけまとめた方がそのまま速くなるけど
一定頂点数超えたらまとめるより分割したほうが速くなるという結果が出た
967デフォルトの名無しさん:2006/04/12(水) 01:27:18
http://www.microsoft.com/japan/developer/library/jpdx8_vb/graphics_tips_3aur.htm
3000個より多い場合の記述が無いし、まぁ3000くらいにまとめるのがベストっぽいな。
968デフォルトの名無しさん:2006/04/12(水) 04:59:35
ふりだしにもどる
969デフォルトの名無しさん:2006/04/12(水) 06:08:52
>>963
ちがうな。
ロックして一度クリアした後で、もう一度書かなければならないはずだろ。
しかも、ロックする動作ってのはビデオメモリからの読み込みが発生するからオーバーヘッドはでかい。
アホか。
970デフォルトの名無しさん:2006/04/12(水) 06:25:44
よし、わかった。
LPD3DXEFFECT effect;
effect->SetValue
でシェーダ使って直接座標を渡すってのはどうだ?
Lockしなくてもできるぞ。
971デフォルトの名無しさん:2006/04/12(水) 06:44:52
>>970
なにそれ?
座標何個渡せんの?
972デフォルトの名無しさん:2006/04/12(水) 07:12:52
>>969
だから馬鹿なんだ
WRITEONLYとかDISCARDのフラグの意味も使い方も分かってない
973デフォルトの名無しさん:2006/04/12(水) 07:24:49
>>972
そのフラグって「ちょっとましになる」程度でしょw
974デフォルトの名無しさん:2006/04/12(水) 07:40:08
2DSTG限定ならクリッピング必要ないし、フィルレートも全部アルファ物だからたしかに無意味だなw
975デフォルトの名無しさん:2006/04/12(水) 07:47:39
>>973
「ちょっとましになる」が知識のすべてだとしたら、やはり馬鹿だな。

動的なリソースっていうのは、同じバッファを使ったDrawPrimitiveの動作の完了を待たずに
バッファをロックしてデータを埋めてこうっていう考え方なわけ。そのためのフラグ。
976デフォルトの名無しさん:2006/04/12(水) 07:58:34
ここは知ったかが無知を曝け出しながら無駄な討論をするスレだからしょうがない。
977デフォルトの名無しさん:2006/04/12(水) 10:19:28
>>962
基本的にプログラムの最初の方で多めにバッファ確保して終了時に解放する
バッファ内の物を描画する時はDrawPrimitive()の第3引数で
プリミティブの数を指定すれば必要な分しか描画されないだろ
毎フレーム確保解放なんてアホ
978デフォルトの名無しさん:2006/04/12(水) 10:29:35
>>973がかわいそう過ぎる・・・・

WRITEONLYフラグは書き込みしかしないという指定。
つまり一切の読み込み「ビデオメモリからの読み出しはしない」という指定。

ロックはそのときのVBのメモリアドレスを取得するだけ。
DISCARDフラグを指定してる場合は描画が完了してなければ他のアドレスを返してくるために、
前のDPが完了しているかどうかは気にする必要なし。
つまり書き込み完了してなければ終わるまでブロックされるようなこともなし。

書き込み処理はシステム→ビデオメモリのためDMAで高速に処理される。

VBにまとめてから書けというのはM$のnVidiaもATiも口を揃えていっている事で、
各社それに対応したハードウェア仕様、APIがきちんと用意されている。

Dx8の頃からこのへんは常識になってると思ったんだが。
979デフォルトの名無しさん:2006/04/12(水) 10:43:32
なんだかんだで勉強になるな
980デフォルトの名無しさん:2006/04/12(水) 16:12:04
良い具合のバカが暴れてくれると今更聞けない常識が聞けて勉強になるな
981デフォルトの名無しさん:2006/04/12(水) 16:13:19
馬鹿なのか、常識なのか、それを見極める頭を持ってないと何の意味もない訳だが。
982デフォルトの名無しさん:2006/04/12(水) 16:19:58
それもそうだ
983デフォルトの名無しさん:2006/04/12(水) 18:57:32
ベクトル v0 v1 v2 のスカラ3重積 float を求めたいのですが、どうやったら良いでしょうか?
984デフォルトの名無しさん:2006/04/12(水) 19:09:02
D3DXで行列式でも求めろ
985デフォルトの名無しさん:2006/04/12(水) 19:21:39
VERTEX全部一気書きの場合は、テクスチャを個別に
指定できないんじゃないの?
986デフォルトの名無しさん:2006/04/12(水) 19:30:21
だからでかいテクスチャにパーツ詰め込むでしょ。
テクスチャサイズがでかいからといっていまや大してネックにはならないとATiだかがいっとったし。
987デフォルトの名無しさん:2006/04/12(水) 19:33:10
今は大体 1024 x 1024 位?
ボードによっては 4096 x 4096 とかあるけどね。
988デフォルトの名無しさん:2006/04/12(水) 20:16:30
1024×1024だと32bitで4Mでしょ。
何種類も詰め込むと、古いビデオカードできつくない?
989デフォルトの名無しさん:2006/04/12(水) 20:58:30
テクスチャばらしても総量一緒じゃないか?

それにDirectXがそのへんの管理してくれるから不要なものを削除して
必要になったらVRAMにロードするようになってるんじゃなかった?

ミップマップ使ってる時に下のレベルから使うようにしてくれるかはワカンネ。

今はDXTで圧縮のテクスチャも3Dなら普通に使われてるし。

DirectX9のドライバが用意されててVRAM16MBないってのもレアケースだろうしなぁ・・・
990デフォルトの名無しさん:2006/04/12(水) 21:29:38
>>955
いまどきオブジェクト指向って……
ひどい時代遅れだ
991デフォルトの名無しさん:2006/04/12(水) 21:44:53
これからの時代は構造化プログラミングだよな
992デフォルトの名無しさん:2006/04/12(水) 22:11:16
うちの会社はいまだにC言語ONLYだったりする
993デフォルトの名無しさん:2006/04/12(水) 23:28:01
>>978
意味がわかんない。

>ロックはそのときのVBのメモリアドレスを取得するだけ。
>DISCARDフラグを指定してる場合は描画が完了してなければ他のアドレスを返してくるために
DISCARDフラグを指定している場合はロックして書き込みしているときにどこに書きこんでるって言ってる?
994デフォルトの名無しさん:2006/04/12(水) 23:39:21
ダイクストラ先生にGOTOは使っちゃ駄目って怒られたお
995デフォルトの名無しさん:2006/04/12(水) 23:50:11
こいつ2Dゲー組んだことねえな、とは思ってたが
プログラムの経験すら疑わしいな、これじゃ。
996デフォルトの名無しさん:2006/04/12(水) 23:54:47
>>995
>他のアドレスを返してくるために
っていってるんだから「他のアドレス」なんだろうけどどこなの?
997デフォルトの名無しさん:2006/04/13(木) 01:29:40
>>993
頂点バッファおよびインデックス バッファの場合、アプリケーションはバッファ全体を破棄します。
新しいメモリ領域へのポインタが返されるので、ダイレクト メモリ アクセス (DMA) と古い領域からのレンダリングが機能停止することはありません。
998デフォルトの名無しさん:2006/04/13(木) 01:44:37
>>997
結局新しく確保してんじゃんw
どのへんが高速なんだよw
999デフォルトの名無しさん:2006/04/13(木) 01:49:02
お、なんかいいこと思いついたぞ。
DrawPrimitiveのVertexBufferを一括確保してる奴等さ、
一括確保するVertexBufferを2つ用意してフレームごとに交互に使えば
もしかして速いんじゃねぇの?
1000デフォルトの名無しさん:2006/04/13(木) 01:51:41
フレームごとじゃないか。
DrawPrimitiveごとか。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。