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

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

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

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

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

前スレ
【C++】 DirectX初心者質問スレ Part9 【C】
http://pc8.2ch.net/test/read.cgi/tech/1144878498/
2デフォルトの名無しさん:2006/07/25(火) 21:38:56
【関連サイト】

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
3デフォルトの名無しさん:2006/07/25(火) 21:58:16
頂点バッファのLockについて質問です。
ポリゴン1つ分の領域(頂点3つ分)をLockして、DrawPrimitiveで描画するとうまくいくのですが、
メッシュ全部のポリゴンを一度にLockして描画すると、うまくいきません。
IDirect3DVertexBuffer9::Lock()はD3D_OKを返しているのですが、
確保した領域に書き込もうとするとなぜか落ちてしまいます。
VRAMもメインメモリも十分にあると思うんですが、
何か原因に心当たりのある方いましたらレスください。
4デフォルトの名無しさん:2006/07/25(火) 22:08:19
・頂点バッファのバイト数が合ってない
・変なフラグを指定している
・ポインタを渡すところで、変な値をキャストして無理やり渡してる
5デフォルトの名無しさん:2006/07/25(火) 23:32:19
DXGetErrorDescription9のお返事が英語なの、
日本語でお話出来るようにならないかな?かな?
6デフォルトの名無しさん:2006/07/25(火) 23:38:05
アドベンチャー作りたいならDirectXいじる必要ないんじゃね
7デフォルトの名無しさん:2006/07/25(火) 23:39:15
サウンドのミキシングやフェードはDirectSoundじゃないと面倒だけどなぁ
8デフォルトの名無しさん:2006/07/26(水) 00:23:32
>>5
翻訳エンジン組み込む
9デフォルトの名無しさん:2006/07/26(水) 00:47:38
CreateGame〜陸海空オンライン〜
日本NO1、MMO製作プロジェクト始まる!
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
10デフォルトの名無しさん:2006/07/28(金) 01:48:05
かなり困ってます、読み込んだwaveファイルを同時にならしたいんだけど、どうしても毎回ずれます
↓今は以下のようにしてます、なんかほかに方法ないですかね?

for( int i = 0; i < m_iIndexMax; i++ )
{
m_pSecSndBuf[ i ]->Play( NULL, NULL, NULL );
}
11デフォルトの名無しさん:2006/07/28(金) 01:50:09
元々合成したwavファイルを作っとく。
12デフォルトの名無しさん:2006/07/28(金) 02:06:00
>>10
ダブルバッファリング
13デフォルトの名無しさん:2006/07/28(金) 02:08:06
14デフォルトの名無しさん:2006/07/28(金) 02:21:54
el.hと>>2のDXライブラリ置き場のライブラリを両方使おうとすると、やはり複数宣言で怒られます。
両方を組み合わせて作りたいのですが、なんとか回避できないでしょうか

エラー E2238 C:\borland\test\DxDirectX.h 2822: 'LPDIENVELOPE' の宣言が複数見つかった
エラー E2344 C:\Program Files\Microsoft DirectX SDK (June 2006)\Include\dinput.h 219: 一つ前の 'LPDIENVELOPE' の定義位置
15デフォルトの名無しさん:2006/07/28(金) 02:36:42
ソースを二つに分ける
16デフォルトの名無しさん:2006/07/28(金) 03:00:03
別のcppで#include "DxLib.h"以下を記述して、
本体のcppの方でincludeしてみましたが、同じエラーでした。

やってること違うのかな・・
17デフォルトの名無しさん:2006/07/28(金) 05:03:47
あほか
18デフォルトの名無しさん:2006/07/28(金) 06:53:18
それ二つ併用するのはいかれてる。作者も想定してないだろ。
19デフォルトの名無しさん:2006/07/28(金) 10:35:24
同時に使う意味がわからなさすぐる
20デフォルトの名無しさん:2006/07/28(金) 10:48:03
同時にっていうか両方を使いたいんです。
21デフォルトの名無しさん:2006/07/28(金) 10:58:49
だから何で?
22デフォルトの名無しさん:2006/07/28(金) 11:11:44
うるせーな、両方使いたいって言ってんだろーが。
23デフォルトの名無しさん:2006/07/28(金) 11:21:04
おおかたDxの2DにELの3Dを合わせたいってところなんだろうな
24デフォルトの名無しさん:2006/07/28(金) 12:13:52
昨夜の併用の人です。16以降は偽者です。
elをメインに今まで進めてたんですが、最近になってDxを知って、Dxの関数も使えたら楽だなぁ・・と。
とりあえず詰まってたところはなんとか解消出来たので、Dxに移行する事も視野に入れてまた考え直してみます。
25デフォルトの名無しさん:2006/07/28(金) 12:36:00
つーかELなんて終わってるだろw
とっくにwww
作者死んじまったんじゃねぇのwwwww
つーわけで俺はLUNAを薦めるね
26デフォルトの名無しさん:2006/07/28(金) 12:39:24
Dxも開発は現在進行形で進んでるんじゃないの?
27デフォルトの名無しさん:2006/07/29(土) 02:39:31
空気を読まずに質問。

時々見かけるラッパーライブラリに、
SetRendeState()に与える値を自前で控えておいて、
直前に与えた値と違いがなければ実際のSetRenderState()の呼び出しを
行わないとか、DrawPrimitive()の手前でまとめて実行するようにしてたりするのだけど、
こんなんを自前で実装する意味ってあるのかな?

たとえばこう。

DWORD m_RSLighting = TRUE;
...

HRESULT
SetLight(ID3DDevice& device, DWORD state)
{
if(m_RSLighting == state)
return S_OK;

m_RSLighting == state;
return device.SetRenderState(D3DRS_LIGHT, state);
}


GetRenderState()等がある以上、D3DDevice()内部でもステートは管理してるのだろうし
SetRenderState()のカラ呼び自体はパフォーマンスに影響するとは思えないのだけど…。
いや、確かめてないからわからないんだけどね。
28デフォルトの名無しさん:2006/07/29(土) 07:05:56
GetRenderState()ってそもそもピュアデバイスだと使えないんじゃ?
29デフォルトの名無しさん:2006/07/29(土) 08:15:33
自分でキャッシュする場合はPUREDEVICE前提じゃないの?
まあ計測結果を知りたいなあ



30デフォルトの名無しさん:2006/07/29(土) 10:03:21
>>27
デバッグ出力レベルを最大に上げてみ
「同じステートをまた設定してるYO」というwarningが出まくるから

warning出すくらいだから、多少はパフォーマンス落ちるんじゃね
31デフォルトの名無しさん:2006/07/29(土) 10:29:05
つーか、>27は最早「へたなコードスレ」行きだと思うんだ。
まぁ、>30もくだらない間違いを書いてないで素直に指摘するべきだったな。
そんな警告は絶対に出ないからね。
32デフォルトの名無しさん:2006/07/29(土) 10:46:03
どんだけドライバがうんこでも
そもそもSetRenderStateの呼び出し自体はランタイムの領域なんだから
無駄にDrawPrimitive時にステート変更命令なんて送らないと思うけど。
33デフォルトの名無しさん:2006/07/29(土) 10:51:25
>>31
お前も試してから書けよ
Ignoring redundant SetRenderState
34デフォルトの名無しさん:2006/07/29(土) 10:56:15
31は、コンパイラ側の警告レベルを上げて試し、得意げになっていたに一票
35デフォルトの名無しさん:2006/07/29(土) 11:07:46
いや、>31は>>27が間違っていると指摘したついでに余計なことまで書いたって落ちか。
そもそも、>>27のコードと>>30の指摘とは直接関係がないしな。
36デフォルトの名無しさん:2006/07/29(土) 11:26:19
>>31 >>35が何を言っているのかわからん。
3735:2006/07/29(土) 11:51:54
>>36
>>27のコードが間違っているってのは理解できる?
38デフォルトの名無しさん:2006/07/29(土) 11:59:09
36じゃないけど、==のことだったらそれこそ明らかに誤植で
くだらない指摘だと思うんだが
39デフォルトの名無しさん:2006/07/29(土) 12:03:17
>>38
31は本質じゃない指摘を上から見下ろしてする、何の役にも
立たないレスってわけか。
40デフォルトの名無しさん:2006/07/29(土) 12:22:00
凄い自作自演臭
4127:2006/07/29(土) 13:16:21
>36じゃないけど、==のことだったらそれこそ明らかに誤植で
>くだらない指摘だと思うんだが

誤植マジごめん。
m_RSLighting = state;
こうね。


いや、自分で書いてるわけじゃないんだけど、行く先々でこんなコードを見かけるんだ。
あまりにもあちこちで遭遇するので、なんかそういう宗教でも流行ってんのかと思ったくらい。
俺の世間の狭さについては、この際置いといてもらって、

えーと、いらないでFAだよね?
「これがDirectXの常識です」くらいの指摘があったりすると、それはそれで助かるのだけれど。
42デフォルトの名無しさん:2006/07/29(土) 13:21:13
うちはチェックするまでも無く明らかに変わらないステートが
ほとんどだからそういうコードは書いてない。

ラッパーの実装が気になってきた時点でそんなもん卒業だと
思うんだけどな
43デフォルトの名無しさん:2006/07/29(土) 13:26:10
>>41
いやだから同じステートを指定すると警告が出ると言う指摘は無視なのか
自分に都合の良い結論出てるなら聞かなきゃいいのに
44デフォルトの名無しさん:2006/07/29(土) 13:28:17
>>41
つまり>>30>>33なわけ
45デフォルトの名無しさん:2006/07/29(土) 13:44:08
例え無視できるようなのでも、デフォでwarningでるようなライブラリを公開する奴はアフォだし、
warning出さないための処理を宗教だなんて言う奴はもっとアフォだな
46デフォルトの名無しさん:2006/07/29(土) 14:26:43
>>41
どれくらい意味があるか知りたいなら自分でベンチするしかない。
「なぜそのように書く人が多いのか」なら結論は出てる
47デフォルトの名無しさん:2006/07/29(土) 14:27:56
また、アフォがわいてきたぞ。
4827:2006/07/29(土) 14:32:59
ごめん、自分で書いてみてた。
Direct3D9: (WARN) :Ignoring redundant SetRenderState
(余分なSetRenderStateを無視しました)
が出るんだね。

疑問に思ったのは、DirectX内部でも同等の処理をやっているのは確実だろうに、
これをその外側でもチェックするようにするのは定石なのかってこと。
もちろん同じステートの設定を繰り返し呼び出すことに意味なんかないに決まってるが、
誰もがご丁寧にSetRenderStateのラッパーを書くような事態は、正直少し異常に感じる。
この警告は減らすように努めるべきではあるけど、根絶を目指すほどのものでは無い様にも
思えるんだけど、どうなんだろうか。
49デフォルトの名無しさん:2006/07/29(土) 14:38:09
ttp://www.gamedev.net/community/forums/topic.asp?topic_id=397317

ここだと

>However, it would be advisable to keep track of these yourself,
>so that you can avoid the overhead of making a useless D3D call.
>The memory and processing footprint of doing this should be really low, anyways.

いらんD3Dの呼び出しを回避するために、自分で追っかけたほうがいいよ。
そのためのコストなんて小さなもんなんだし、

という人もいれば、

SetRenderState( A, valueA ) // set on device
SetRenderState( A, valueB ) // set on device
SetRenderState( A, valueA ) // set on device
SetRenderState( A, valueB ) // set on device - only value that gets used
DrawSomething()

こうなるので、PureDeviceでないなら単純に描画の手前でまとめて処理するように
心がければそれで終了と言ってる人もいる様に思える。

単純にSetRenderStateだけを自前でラップしたところで
SetRenderState( A, valueA ) // set on device
SetRenderState( A, valueB ) // set on device
SetRenderState( A, valueA ) // set on device
は防げないし。
ステートの変更を自前で控えておいて、Draw〜系の呼び出し時に
まとめて迎撃するのは意味がある様にも思えるけど、
これはD3Dの内部で同じことをやってくれてないのかなあ。
50デフォルトの名無しさん:2006/07/29(土) 14:46:43
警告が出ると言うことは内部でもチェックを行って回避している。
つまり自前でやれば二重にチェックが出来る。
これで安全確実。
無駄だけどな。
5127:2006/07/29(土) 14:49:39
>>49は漏れが書きますた。

言葉が足りなかったけど、要は疑問に思ってるのは、
階層持ったモデルの描画とかを自分で処理してて、必要ないステート類の変更を
しちゃったりしないよう心がけるのはまあ当然としても、DirectXの関数を1対1で
直接ラップするような仕掛けは必要なのかということ。

Drawの発行すべてで迎撃しようとおもったら、DirectXの描画関連を全部自前で
ラップしなおして、状態を自前で控えなきゃって話になっちゃうと思うんだけど、
こんなの処理する居場所として相応しいのはDirectXのDrawXXX系の内側であって、
ユーザー側が責任持つのは不自然な気がするんだが、どうなんだと。
ラッパーの動作を崩さないためには、ラッパー外でのD3D系の関数の呼び出しは
一切禁止しなければならないだろうし、そこまで徹底したラッパーが求められるとすると、
DirectXのAPIの存在意義に関わるような。

いや、DirectXはそういうものですってんなら、それはそれで構わないんだ。
定石としてはどうなんだってところが知りたいと。

性能考えたら「自前の管理はするべき」がFA?
好きにしろで終了?
52デフォルトの名無しさん:2006/07/29(土) 15:07:28
>>49
つステートブロック

最後のやつもステートブロックなら最適化される
53デフォルトの名無しさん:2006/07/29(土) 15:11:14
って52だけだと誤解されるか。
同じステートブロック内なら最適化されるけど、異なるステートブロックを
連続で適用した場合には、同じステートの変更はたぶん最適化されない。
54デフォルトの名無しさん:2006/07/29(土) 15:13:53
フィルターを掛けるものと、フィルターを掛けずインライン関数で素通しさせるもの
自分のエンジンでどっちがパフォーマンスが良いのか、
それは計測してみないと分からないから、そういうフィルターを実装してる人がいるんだろう。

しかし27は楽をしたがり、「いいから結論を教えろ」と威張っているのだ。
5527:2006/07/29(土) 15:50:28
>>53
理解しますた。ありがとう。
どっちかっていうとステートを塊で管理するためのものだよね。


>>54
ずばりその通りだ!
で、どうなの?
どうなのよ。

いや、本当のところ言うと、とっくに計測されつくされて
答えは出てるものかとばっかり思ってたんだ。
けど、実際にこの種の仕組みを組み込んでる人に聞いても、
潔癖症的な理由の方が先行してて(つまり自分で書いたコード以外は信用できないという)、
あまり実測に基づいてるってわけじゃないケースが多かったのさ。

自分で試した限りでは、関数呼び出しのオーバーヘッド回避くらいにはなるけど、
回避コードが増える分、長い目で見たらトントンかマイナス収支な感じっぽいし。
GPUの足を引っ張るので無いなら、少々の(少々なら)CPU上の負担は無視する選択があるだろうし。

この種のフィルターを実装したくなる人の気持ちはわかるのだけれど、
それが本当に意義のあることなのかどうか、先達の皆様の声を拝聴したいだけなんです。
56デフォルトの名無しさん:2006/07/29(土) 15:53:36
だから自分で調べろっつってるだろうがこのド低脳がぁーー!
57デフォルトの名無しさん:2006/07/29(土) 15:59:22
>>55
デバッグのときズラズラーっと警告がでると邪魔だから対処してるだけなんだが
今時関数呼び出しだのifだので処理速度気にするバカはいないだろ
58デフォルトの名無しさん:2006/07/29(土) 16:00:43
はいはい定石定石
5927:2006/07/29(土) 16:20:10
>>56
初心者質問スレで質問して何が悪いんだー!
そう申し上げたい。

>>57みたいな理由でやるのはわかるけど、そのためにデバイスのステート変更を
全部自前で控えといて対処ってのは、明らかに話が大きすぎると思う。
自前SetRenderStateの中でGetRenderStateして、値が同じだったらセットしないで
警告を回避するとかでもいい気がするし。

>>55で書いたみたいな、自前SetRenderStateで処理してる人が何を主眼としてるのか、
それが知りたいわけですよ。
>今時関数呼び出しだのifだので処理速度気にするバカはいないだろ
は俺もそう思うけど、変に増えると読みづらくてかなわないじゃん。
もちろん、もし仮に自前チェックが意味無いならの話なんだけどさ。
60デフォルトの名無しさん:2006/07/29(土) 16:35:21
SetRenderStateで同じものをセットしてもパフォーマンスに差は無いよ。
これでいい?
61デフォルトの名無しさん:2006/07/29(土) 16:41:30
ソースは?
62デフォルトの名無しさん:2006/07/29(土) 16:48:06
63デフォルトの名無しさん:2006/07/29(土) 16:48:48
8月はヘルシー豆腐ハンバーグかー。


誰か作ってくれ。
64デフォルトの名無しさん:2006/07/29(土) 16:53:26
自分で作れよ。
65デフォルトの名無しさん:2006/07/29(土) 16:57:43
嫁さん欲しいな。
66デフォルトの名無しさん:2006/07/29(土) 16:58:33
関東モンはこれだからなぁ。
ttp://www.otafuku.co.jp/
67デフォルトの名無しさん:2006/07/29(土) 17:06:25
大阪だとDirectXのことダクトって呼ぶってほんと?
68デフォルトの名無しさん:2006/07/29(土) 23:44:02
通天閣9
Windows阪神
69デフォルトの名無しさん:2006/07/30(日) 00:15:48
↑この笑いのセンスはどこ地方?
70デフォルトの名無しさん:2006/07/30(日) 00:54:02
よく吉本のお笑いが全然笑えないって言う人いるじゃんか。
俺住之江に済んでるけどそいつらにすごく共感できるんだよ。
「にいちゃんこれなんぼ?」「百万円」
これだけでぎゃはぎゃは笑える吉本ファンの脳みそはホント理解不能。
そんな俺があえて言おう!>>68はシベリア。
71デフォルトの名無しさん:2006/07/30(日) 01:46:31
えーと、>70の笑いどころはどの辺?
72デフォルトの名無しさん:2006/07/30(日) 02:02:41
吉本新喜劇の笑いどころは、笑点や水戸黄門に通じるところがあると思う。
いつも同じ単純なギャグや行動をすることで、見ている人が安心できるんじゃないかな。
73デフォルトの名無しさん:2006/07/30(日) 02:30:27
あー、条件反射?
つーか、頭使うことを放棄してパターンに浸る安心感か?
74デフォルトの名無しさん:2006/07/30(日) 03:36:59
専門的には条件反射でなく予定調和と言います
75デフォルトの名無しさん:2006/07/30(日) 14:39:59
DirectX風にギャグ言ってくれよ
76デフォルトの名無しさん:2006/07/30(日) 14:44:38
突発的なのもあるけど
導入部分が大事なものも多い
77デフォルトの名無しさん:2006/08/01(火) 00:43:24
win2kでSDKを導入しようしてるんですけど公式サイトの
どのバージョンも未サポートみたいでインストールさえうまくいきません。

どのバージョンならインストールできたんでしょうか?お願いします
78デフォルトの名無しさん:2006/08/01(火) 11:19:34
Update Octorber 2004がVC6サポートのラスト
Update December 2004がWin2000サポートのラスト
79デフォルトの名無しさん:2006/08/01(火) 13:34:12
8077:2006/08/01(火) 14:21:41
ありがとうございます。インストールすることができました
81デフォルトの名無しさん:2006/08/01(火) 14:36:30
>>78
簡潔にして最良のコメント
これはテンプレに入れるべきだな
過去スレでも何度か質問されてたし・・・
82デフォルトの名無しさん:2006/08/05(土) 01:00:27
ワールドトランスフォームで拡大縮小する方法は分かったんだけど、ちょっと違う気がして質問。
Xファイルからメッシュを拡大縮小して呼ぶ方法ってない?もしくはそれに類似する方法教えてください。
83デフォルトの名無しさん:2006/08/05(土) 01:06:02
いや、それでいいだろ。
普通にスケーリングしたマトリクス乗算して描画しようよ。

変更後のサイズが固定で、法線正規化のコストを避けたいってんなら
読み込みの時に頂点加工するのも手だけど、ボーンとかまで書き換えなきゃならんし
面倒で意味ねーずらよ。
84デフォルトの名無しさん:2006/08/05(土) 01:56:27
苦労して吐かせたxファイルがやたらと大きくて、他のxファイルとサイズが果てしなく違う・・・
それで個別に拡大縮小したかったわけです。
85デフォルトの名無しさん:2006/08/05(土) 02:09:01
あー、わかった。
1モデル描画する都度、使うマトリクスは切り替えなさいな。
86デフォルトの名無しさん:2006/08/05(土) 02:37:18
Xファイル中のトップの行列を縮小して保存し直せば?
87デフォルトの名無しさん:2006/08/05(土) 09:48:07
ゲームなんですけど
DirectInputでキーボードのAcquire()に失敗した場合
ループまわして成功するまでAcquire()してみるですか?
それともスキップして次のフレームに委ねるですか?
88デフォルトの名無しさん:2006/08/05(土) 11:04:23
DXTraceはリリースビルドでも有効?
89デフォルトの名無しさん:2006/08/05(土) 23:06:14
fScaleをThingのメンバにしたらいけました。
90デフォルトの名無しさん:2006/08/06(日) 00:04:31
>>88
有効。
消したい場合は

#define DXTRACE_MSG(str) DXTrace( __FILE__, (DWORD)__LINE__, 0, str, FALSE )
#define DXTRACE_ERR(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, FALSE )
#define DXTRACE_ERR_MSGBOX(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, TRUE )

を使う。
_DEBUGがdefineされてない場合消えてくれる。
91デフォルトの名無しさん:2006/08/06(日) 13:49:26
ほー
92デフォルトの名無しさん:2006/08/06(日) 16:30:24
覚えたての初心者です
今やっと色々ポリゴンを表示させてテクスチャを貼ることが出来たのですが
今の所は手順を
頂点バッファに頂点データを送る
SetStreamSourceする
SetTextureする
DrawPrimitiveで描く
という風にやってます。

これは毎回そうしないといけないんですか?
それとテクスチャは必ず描画の前にやらないといけないんでしょうか
もしかしたら何か効率的に出来るのか色々悩んでいます
93デフォルトの名無しさん:2006/08/06(日) 17:50:22
>>92
VRAMに送るのは一回でえぇょ。。。
94デフォルトの名無しさん:2006/08/06(日) 19:36:59
頂点バッファに〜は一回でいい場合がほとんど。
SetTextureはサンプルみたいな極小なプログラムならともかく
実際ゲームを作る段階になればガンガン切り替えることになるだろ
95デフォルトの名無しさん:2006/08/06(日) 21:13:45
>>92
ステートマシン、という言葉を覚えておくんだ。
DirectXの描画器は、常に最新の設定状態を覚えてる。
設定を変えないで描画を続けられるなら、それが一番低コストだけれど、
変えなきゃいけないところは変えるしかない。

効率よく変更を最小限にとどめるようにする努力は怠らない方がいいけど、
そうは言っても変えるしかない状況なんていくらでもある。
まずは気にしないでガンガン書くのがいいと思うよ。
96デフォルトの名無しさん:2006/08/06(日) 21:22:27
>>93-95
なるほど確かに頂点バッファに転送するのは最初にやればいいみたいですね
と言う事は、今はまだ3個くらいしか表示させてないサンプルなので
そのまま表示させてますが
実際は
変更があれば、頂点バッファの変更内容の変更
表示したいテクスチャのオブジェクトのポインタを渡して
SetStreamSource
SetTexture
DrawPrimitive
をループさせてたくさん表示させるってことでしょうか

少しわかってきました
これから複数の画像ともっとたくさん表示させて色々やってみます
ありがとうございました
97デフォルトの名無しさん:2006/08/07(月) 00:34:27
SDKをインストールしようとしているものなのですが
英語なので不安があり、おわかりになる方に相談したいのですが
dxdsk_jun2006.exeを
アメリカのサイトからダウンロードして
ダブルクリックすると
こんどは解凍の画面になって
Unzip
を選択して任意のフォルダに解凍して
インストーラーが起動すると思うのですが
解凍後のファイルは削除しても大丈夫なのでしょうか?
それとも何か意味あるんでしょうか?
教えていただけると幸いです。
98デフォルトの名無しさん:2006/08/07(月) 00:46:49
大丈夫ない
99デフォルトの名無しさん:2006/08/08(火) 03:21:12
D3DXVec3Project関数を使用して三次元空間の座標からスクリーン座標への変換を試みたのですが、
スクリーンの中心から離れれば離れるほど変換後の座標がズレていってしまいます。
なぜなんでしょうか?

ちなみにシューティングゲームを作っていて、自機や敵を3Dオブジェクトにして、弾をスプライトという風にやっています。
弾を発射するとき、弾の初期位置を決めるときに…アレ?…と言う感じです。
100デフォルトの名無しさん:2006/08/08(火) 03:33:39
つ[ 電卓 ]
101デフォルトの名無しさん:2006/08/08(火) 18:32:36
デスクトップの画像を拡大縮小表示するようなプログラムで、
CPU負荷を軽減するためにDirectDrawを使用しているのですが、
マルチモニタ環境下でデスクトップからサーフェイスにBitBlt
しようとすると激しく重いのです。
シングルモニタ時は秒間30回転送してもCPU使用率は0%で、
マルチモニタ時は秒間30回でCPU使用率100%に達しました。
マルチモニタ時には、DirectDrawサーフェイスはBitBltの
アクセラレーションが効かないようなところに確保されるのでしょうか?
それともまた別の原因があるのでしょうか?

試した事
・ビデオカードはG550とGeforceFX5600で試したが何れも同じ結果
・2つのモニタには同じ解像度と色数を設定した
・デスクトップ→(BitBlt)→DDBではモニタを跨いでもアクセラレーションは効いていた
・全てプライマリモニタに置いても状況変わらず

デスクトップ
↓(BitBltでコピー:ハードウェアアクセラレーション効いてない)
DirectDrawサーフェイス
↓(Bltで拡大縮小:ハードウェアアクセラレーション効いてる)
DirectDrawサーフェイス
↓(BitBltでコピー:ハードウェアアクセラレーション効いてない)
DDB
102デフォルトの名無しさん:2006/08/08(火) 18:46:09
最近DirectXに興味をもったものです。
まずはDirectXを初期化(?)して、
ウィンドウを黒で塗りつぶすところからはじめようと思い、
単なるウィンドウを表示するだけのプログラムをいじり始めました。

ソース2つ、ヘッダを1つの構成で、
1つ目のソースは、WinMain関数とウィンドウプロシージャ、
それからLPDIRECT3DDEVICE9のClearとBegin〜EndSceneをしている関数。
もうひとつは、DirectXを初期化する関数です。
これはメッセージループに入る前に呼び出しています。

ヘッダはLPDIRECT3D9 pDevice、LPDIRECT3DDEVICE9 pD3d、D3DPRESENT_PARAMETERS d3dppを
定義して、二つのソースでインクルードしているのですが、
コンパイル時はエラーを吐かないのですが、
リンク時に既に定義されているというエラーが出てしまいます。

具体的には、
Main.obj : error LNK2005: "struct IDirect3DDevice9 * pDevice" (?pDevice@@3PAUIDirect3DDevice9@@A) は既に InitD3D.obj で定義されています。
Main.obj : error LNK2005: "struct _D3DPRESENT_PARAMETERS_ d3dpp" (?d3dpp@@3U_D3DPRESENT_PARAMETERS_@@A) は既に InitD3D.obj で定義されています。
Main.obj : error LNK2005: "struct IDirect3D9 * pD3d" (?pD3d@@3PAUIDirect3D9@@A) は既に InitD3D.obj で定義されています。
Debug/007_Direct3D最小コード.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
と出ます。

Main.cppでもInitD3D.cppでもこれらを定義した覚えはないのですが、
ヘッダファイルをインクルードしただけで定義されてしまうのでしょうか?
ご教授いただけるとうれしいです。
103デフォルトの名無しさん:2006/08/08(火) 19:39:38
外部リンケージの変数を2重定義してんだからそりゃエラーになるだろ。
104102:2006/08/08(火) 20:57:55
103さんありがとうございます。

ヘッダの中身をexternにして、別のソースファイルに実体を書いたところ、
リンクまできちんと通りました。
しかし、「アクセスが拒否されました。」と出て、プログラムは起動されませんでした。
フォルダの中を見てみるとexeファイルが出来ていたので、試しにクリックすると実行することができました。
Visual C++ 2005 Express Editionを使っていますが、何が原因なのでしょう?
105デフォルトの名無しさん:2006/08/08(火) 21:17:34
うあ・・・
微妙質問するなぁ・・・
そんなのわかったところでDirectX云々違うかもしれんそうかもしれんし、特定しにくいってばよ。
はじめはサンプルとか、チュートリアルとか確実に動くモンを改造しながらやってくれ。
当然動くべきサンプルが動かないとかいうならそりゃエラーをのっけりゃある程度原因はわかるけど
独自コードで「変なんです」言われてもソース眺めてみなきゃわかんねーよ。
過去に同じ問題に直面しました。って人ならわかるかもしれんけど。
106102:2006/08/09(水) 01:54:32
103さん、105さんありがとうございました。
PCを再起動してもう一度ビルドしたところ普通に動作しました。
最近PCの調子がおかしかったのでそのせいかと思います。
107デフォルトの名無しさん:2006/08/09(水) 05:03:50
恐らくPCを再起動しなくても
開発環境を開きなおすだけでよかった予感
108デフォルトの名無しさん:2006/08/09(水) 08:02:35
再起動しました=お祓いをして貰いました
109デフォルトの名無しさん:2006/08/09(水) 18:44:56
質問です
マウスの座標(つまり2次元のプロジェクション座標?みたいな)に応じた
画面上のZ値(Zバッファなどの)を取得する関数などはありませんか?
110デフォルトの名無しさん:2006/08/09(水) 20:24:55
>>109
カーソル位置のZバッファを参照すればいい
111デフォルトの名無しさん:2006/08/09(水) 21:04:11
質問です。DirectX9 SDKのaugust2006が出たようですが、
誰の役に立ってるんでしょうか
112デフォルトの名無しさん:2006/08/09(水) 21:22:58
>>111
あれだ。
最新の環境で開発してる会社がどうしても治らない不具合をMSにわざわざ報告するんだ。
んで、DirectXの不具合が治ってそれに対応したら出荷する。
どっかMSと蜜にやりとりできるところがあんじゃねぇのかな?
113デフォルトの名無しさん:2006/08/09(水) 21:50:55
いまだに2003Summerですがなにか?
114デフォルトの名無しさん:2006/08/09(水) 23:29:41
>>111
実質DX10のベータだよ
DX9の更新はない
色々新しいもん入ってたけどXbox360の開発環境に興味がある奴が触るぐらいじゃね

>>113
DX9SDKもかなり頻繁に出たけど、スプライトぐらいしか目ぼしい更新なかったよな
使わないけど
115デフォルトの名無しさん:2006/08/09(水) 23:41:58
>>114
コアは更新されないから目ぼしい更新がないのは当然。
基本的に機能に変更があるのはD3DXだけ。
116デフォルトの名無しさん:2006/08/09(水) 23:50:54
変更で一番いたいのは引数の変更だな
順番と数が変わるとかライブラリとしては基地外に近い
つか、残せよ。。。
117デフォルトの名無しさん:2006/08/10(木) 00:55:34
>>116
禿同。
ほんのマイナーチェンジでまったくビルドが通らなくなっててビビるのはもうやだ。
あまつさえ同名の関数仕様が滅茶苦茶に変わってて、単に引数あわせるだけじゃ
どうにもならなかったりすることすらあるし…。
D3DXはほんまやりたい放題やでーフフフハーハーハー
118デフォルトの名無しさん:2006/08/10(木) 03:49:37
ブヒヒヒヒすいません
119デフォルトの名無しさん:2006/08/10(木) 07:18:56
さりげなくサポート対象OSにWindows2000が復活してる気がする。
120デフォルトの名無しさん:2006/08/10(木) 07:35:08
( ゚,_・・゚)ブブブッ
121デフォルトの名無しさん:2006/08/10(木) 10:50:04
少し趣が違うかもしれませんが、初心者がゲームプログラミングをdirectxではじめる時、
これを読めばいいぞっていう本がありませんか?
アマゾンなどを覗いてもなかなか賛否両論でして…(ここでも賛否両論でしょうが、人数が多いのでこちらの方が良いかと)
よろしくお願いいたします。
122デフォルトの名無しさん:2006/08/10(木) 11:42:09
賛否両論です。
123デフォルトの名無しさん:2006/08/10(木) 13:49:54
>>121
ここでも向こうでも賛否両論だとわかっているのなら
聞かずに自分で判断しろ。
124デフォルトの名無しさん:2006/08/10(木) 18:40:14
フルスクリーンのゲームで
スプライト使ってテクスチャを直接描画してるとき、
ウィンドウをAlt+Tabとかで非アクティブにしたら
スプライトのEnd()でアクセス違反が起こるんだが
対処法知らない?

DEVICELOSTとかは処理してるつもり。
スプライトなしの場合はうまく動く。
125デフォルトの名無しさん:2006/08/10(木) 19:07:54
DEVICELOST時の処理で
スプライトの OnLostDevice
デバイスの Reset
スプライトの OnResetDevice
の順に処理してる?
126デフォルトの名無しさん:2006/08/10(木) 19:20:33
>>125
してる。

TestCooperativeLevelって
エラー起こらなくても毎回呼ぶもの?
127124:2006/08/10(木) 19:39:40
TestCooperativeLevel毎回最初に呼んで調べたら
うまくいったっぽい。

でもバグが出にくくなっただけかもorz
128デフォルトの名無しさん:2006/08/10(木) 20:43:51


質問!
モデルのツブツブ頂点FVF?が書いてるデータを取得したいのだがどうすればいい?
判定用に。

XFILEの読み込みはそこらへんに落ちてたアニメクラス使っている。
129デフォルトの名無しさん:2006/08/10(木) 20:49:36
GetVertexBuffer
事故解決

俺って天才うおぉぉぉおおー!
130デフォルトの名無しさん:2006/08/10(木) 21:24:56
うおぉぉぉおおー!
131デフォルトの名無しさん:2006/08/10(木) 23:58:58
>>119
マジだ!
早速インスコしてみる
132デフォルトの名無しさん:2006/08/11(金) 00:26:32
---------------------------
Setup - Microsoft DirectX SDK
---------------------------
This version of the Microsoft DirectX SDK is not supported on this Operating System.
---------------------------
OK
---------------------------
ダメだぁあああああああああああ!!!!!!!
133デフォルトの名無しさん:2006/08/11(金) 02:18:43
ただの記入ミスかよ。
MSめ、ぬか喜びさせやがって。
134デフォルトの名無しさん:2006/08/11(金) 06:01:12
うおぉぉぉおおー!うおぉぉぉおおー!
135デフォルトの名無しさん:2006/08/11(金) 06:05:55
>>131
なんだ?

インスコ

って?下手糞な自分用語使うなクズ野郎。
よしんば、インストールの略にしてもインストじゃねぇのか?
136デフォルトの名無しさん:2006/08/11(金) 06:42:27
おー、すれてない人発見。

>>135
そういう言い回しが少なからず流布しているのだよ。
まぁ、間違って覚えている香具師も多いけどな。
#インストロールとかインストゥールとかインストオールってのもあったな。
137デフォルトの名無しさん:2006/08/11(金) 06:43:13
ポリゴンが大量にある2D図面を表示するプログラムを作ってるのですが,
凹多角形があるので凸多角形分割したんです.
すべて凸多角形なのでTRIANGLEFANで描画したのですが,
同じ関数を通っているのに,描画されない図形がいくつか出てしまいました.

たとえば
多角形A
x = -1437.273804, y = 15712.901367
x = -1444.715088, y = 15713.530273
x = -1437.696411, y = 15711.789063
多角形B
x = -1437.273804, y = 15712.901367
x = -1437.696411, y = 15711.789063
x = -1433.636719, y = 15713.075195
x = -1434.369751, y = 15713.475586

が描画されません.
裏表を間違えているのかと思い描画順を逆にしたりしてみたのですが
意味がありませんでした.
頂点はカラーと座標しか持っていないものです.
どういったことが考えられるでしょうか...どなたかお願いします.
138デフォルトの名無しさん:2006/08/11(金) 06:50:14
「インスコ」なんて言葉を使う奴は十中八九初心者。
139デフォルトの名無しさん:2006/08/11(金) 07:28:24
>>136
ちがうじゃん。
ずっと昔の誤表記からそう言ってるアホがいるだけじゃん。
http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%B3

池沼みたいなノリか?
会社で使ったらキチガイ確定物だな。
140デフォルトの名無しさん:2006/08/11(金) 07:39:17
>>139
「ちがう」とまでは言えないべさ。
>136は語源に言及していないのだし。
実際、(余り知らずに)2ch語を使いたがる高校生辺りがよく使っているよ。
Googleでも434千件も引っかかるしね。
141デフォルトの名無しさん:2006/08/11(金) 07:45:29
>>140
なにそれ?
池沼もGoogleでのヒット件数が多いからよく使うとか言っていいわけ?w
142デフォルトの名無しさん:2006/08/11(金) 08:02:46
>>141
池沼はそれ単体でヒットしても本来の意味の可能性もあるから一概には言えないんでない?
音で聞いても本来の文字の積もりかもしれないわけだし。

で、それはさておき何粘着しているの? 正直どうでもいいじゃん。
>136や>138が間違っているってことでもないんだし。
#そもそもDirectXに全く関係ないことは言うに及ばず。
143デフォルトの名無しさん:2006/08/11(金) 08:05:00
関係ないことをわざわざ長文で・・・
144デフォルトの名無しさん:2006/08/11(金) 10:00:53
お前らそろそろどこが縦読みか教えてくれませんかよ?
145デフォルトの名無しさん:2006/08/11(金) 10:09:53
インスコは普通に言うし、通じるしな。
146デフォルトの名無しさん:2006/08/11(金) 10:16:12
リアルならともかく2chでインスコに突っ込む奴が居るとは思わなかった
壮大な釣りか
147デフォルトの名無しさん:2006/08/11(金) 12:18:40
DIRECTINPUTの GetDeviceData したら DIERR_NOTBUFFERED がかえって来たんだけど、なんか順番抜かしてた?
その対処法というかやるべきことみたいのとかググっても全然出て来ないし、教えてエロい人。
148デフォルトの名無しさん:2006/08/11(金) 12:20:34
「間違えた奴がそう思わせたいだけ」ってどっかに元ネタあったっけ
149デフォルトの名無しさん:2006/08/11(金) 13:48:00
インスコに突っ込まれるとはおもわなんだ。
誰もが突っ込みたくなる釣り。プロだな。
150デフォルトの名無しさん:2006/08/11(金) 14:06:38
インスコって2ch用語でおkだよね?
俺釣られてる?
151デフォルトの名無しさん:2006/08/11(金) 14:09:53
>>150
おk。釣られてる。
152デフォルトの名無しさん:2006/08/11(金) 14:11:35
っていうか
infファイル書き換えれば (たった数文字書き加えれば)

2000だろうが95だろうが
インストールできるようになるでホンマに



WMP9をWindows98SEにインストールする手順とまったく同じ。
153デフォルトの名無しさん:2006/08/11(金) 14:13:32
まあこういうアホもいるよ

「インストールとは、ソフトウェアをOSで使用できるように格納することである」


これは明確な無知。
インストールというのは据え置くと言う意味で、
ハードウェアの取り付けにさえインストールと呼ぶ。


無知バカはソフトだけだと思ってる。
154デフォルトの名無しさん:2006/08/11(金) 14:32:54
>>153
そか。よかったな。
155たまには、釣られてみるか。:2006/08/11(金) 16:00:19
>>153
ソフトだけだろ。

ここは日本で、インストールと install は違うということは、
覚えておいたほうがいい。
156デフォルトの名無しさん:2006/08/11(金) 16:12:19
>>155
「インストール」は日本語で
`install'は英語

とでも言いたいのか?
157デフォルトの名無しさん:2006/08/11(金) 16:41:59
漏れの目の前には「演算プロセッサボードインストールマニュアル」なるものがあるのだが。
いつから演算プロセッサボードをソフトウェアと言うようになったんだ?
158デフォルトの名無しさん:2006/08/11(金) 16:43:19
きっと >>153 みたいなアフォが書いたんだよ。(w
159デフォルトの名無しさん:2006/08/11(金) 16:44:18


Xファイル表示どうするんですか?
160デフォルトの名無しさん:2006/08/11(金) 17:48:23
金曜夜9時にチャンネルを10に回せば表示されるよ
161デフォルトの名無しさん:2006/08/11(金) 17:51:15
ソフトだけだと思ってたバカが図星突かれるとこうなるということだよw

無知すぎ
162釣られすぎですかぁ? (w:2006/08/11(金) 18:25:45
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB

> なお、英語の install は「設置する」「取り付ける」といった意味であり、
> コンピュータやモニタを設置すること、周辺機器を接続すること、拡張カー
> ドを取り付けることなど、ハードウェア全般についても用いるが、日本語で
> はもっぱらソフトウェアを導入する意味にのみ用いる。
163デフォルトの名無しさん:2006/08/11(金) 18:36:43
Wikipediaがどうかしたの?
164デフォルトの名無しさん:2006/08/11(金) 19:13:18
結局ハードも対象なんじゃん(プ
165デフォルトの名無しさん:2006/08/11(金) 19:17:11
ま、これに懲りたらサル未満のバカが人間様に口応えするなんていうバカをやめてもらいたいもんですなw

サル未満の出来損ないはとっとと消えろ(プ
166デフォルトの名無しさん:2006/08/11(金) 19:40:19
>>152
それで問題は出てない?
本当は動くのに単にバージョンチェックで弾いているだけってことでOK?
167デフォルトの名無しさん:2006/08/11(金) 20:48:26
>>163
いや別に、>>153 以外の一般的な意見だなぁと思ってね。

>>164-165 は、「日本語では」と言う意味が理解できていないみたいだけど。(w
168デフォルトの名無しさん:2006/08/11(金) 20:59:15
アパートに住んでいると言ったら、金持ちなんだとわざとらしく驚くような人種なんだろう。
169デフォルトの名無しさん:2006/08/11(金) 21:00:22
アパートに住んでいると言ったら、金持ちなんだとわざとらしく驚くような人種なんだろう。
170デフォルトの名無しさん:2006/08/11(金) 21:12:52
>なお、英語のinstallは「設置する」「取り付ける」といった意味であり、コンピュータやモニタを設置すること、周辺機器を接続すること、拡張カードを取り付けることなど、ハードウェア全般についても用いるが、日本語ではソフトウェアを導入する意味に用いる事が多い。

???
171デフォルトの名無しさん:2006/08/11(金) 21:27:56
>>152
infファイルなんて添付されて無いぞぉおおおおおおおおおお!!!!
172デフォルトの名無しさん:2006/08/11(金) 21:59:27
>>170
インストールの履歴
(最新版) (前の版) 2006年8月11日 (金) 12:12 125.100.229.66 (ノート) (→概要)

これすれ見て慌てて書き換えたんだろ。(w
173デフォルトの名無しさん:2006/08/11(金) 22:53:10
infでなくてなんだっけ

何かあるんだよ
メモ帳で開くといんすころーのれバージョンが書いてあるやつ

174デフォルトの名無しさん:2006/08/11(金) 23:13:27
そう言われてみればいんすころーのれバージョンが書いてあるやつあったな。
なんだっけ?
175デフォルトの名無しさん:2006/08/11(金) 23:29:25
添付されてるサンプルがかなり変わってるな
176デフォルトの名無しさん:2006/08/11(金) 23:46:43
俺の腹のバージョンがボストロールです。
177デフォルトの名無しさん:2006/08/11(金) 23:50:18
>>153より可哀相な子が何人もDirectXに関わってる事に衝撃を受けた
178デフォルトの名無しさん:2006/08/12(土) 00:00:44
>>177
はぁ?何いってんの?可哀想なのはお前だろプゲラwwwwww
179デフォルトの名無しさん:2006/08/12(土) 00:15:36
バージョン書いてるファイルなんてどこにも無かったぜ
dx_setenv.cmdかと思ったら違うっぽいしな
180デフォルトの名無しさん:2006/08/12(土) 00:24:48
>>179
何?君?ワレようと必死なの?
ソフトなんてワレてもどうせ覚えるの面倒で使わないぞw
会社でmax xsi lw maya のライセンスを買ってもらっておきながら
ついに起動するのすら面倒で(ライセンスキー打ってユーザ登録する画面から滅入るw)退職した
俺がいうんだ。間違いないw
181デフォルトの名無しさん:2006/08/12(土) 00:33:59
クビか
182デフォルトの名無しさん:2006/08/12(土) 00:38:14
>>181
いや、普通に激務で嫌になったw
183デフォルトの名無しさん:2006/08/12(土) 07:35:07
LWはハードウェアのドングルじゃないのか?
ほかは知らんがせいぜい一度登録したら終わりだと思うんだが……
毎回入力するなら自動化すればいいのに
184デフォルトの名無しさん:2006/08/12(土) 11:29:27
ニートの不安から精神を病むことは多い。
空想上の激務と空想上の退職を本当の記憶と思いこんでいるのだろう。
185デフォルトの名無しさん:2006/08/12(土) 13:12:13
デスマーチで精神おかしくなった結果
起動するのすら面倒に感じるようになってしまった
と考えればつじつまが合う
186デフォルトの名無しさん:2006/08/12(土) 13:48:27
そういやこの手のツールって全然.NETみないな
187デフォルトの名無しさん:2006/08/12(土) 23:24:52
ドングルころころ
ドングルこー
oh yeah(c'mon baby) にハマってさあ大変
188デフォルトの名無しさん:2006/08/12(土) 23:34:23
>>187に対する爆笑レス
189デフォルトの名無しさん:2006/08/12(土) 23:55:53
ドジョウが出てきて、はいどうじょ↓
190デフォルトの名無しさん:2006/08/12(土) 23:57:03
|     ∧_∧
|.     (・ω・` )スルー
|スス… /J   J
↓   ,,, し―-J
191デフォルトの名無しさん:2006/08/13(日) 01:57:27
ティーポットは表示できたんだけど、これをアニメ調(トゥーン)表示にするにはどうすれば良い?
192デフォルトの名無しさん:2006/08/13(日) 02:14:21
シェーダ使いなさいな。
固定機能だけでも、スペキュラを極端な値に設定してやるとかで
ある程度までなら対処できる。
環境マップでも可。
インキング(縁取り)は拡大&反転でイナフだ。
193デフォルトの名無しさん:2006/08/13(日) 03:56:53
Zバッファ有効にしてるから拡大してもう一つ表示しても大差ないってことですか
light.Diffuse.r = 2.5f;
light.Diffuse.g = 2.5f;
light.Diffuse.b = 2.5f;
でちょうど良くなった
194デフォルトの名無しさん:2006/08/13(日) 04:37:29
ウィンドウサイズが1:1のときは普通にxファイルは表示されるのですが、2:1などの1:1じゃないときは拡大縮小されて表示されます。
ウィンドウサイズに関係なくそのまま表示するにはどうしたら良いでしょうか?
195デフォルトの名無しさん:2006/08/13(日) 04:55:22
>>191
固定機能でトゥーンシェーディングやりたいなら、D3DTSS_TEXCOORDINDEXと
D3DTSS_TEXTURETRANSFORMFLAGSを設定してトゥーン用のテクスチャを
セットすれば簡単にできるが、シェーダを使った方が簡単だと思う。
196デフォルトの名無しさん:2006/08/13(日) 05:44:13
xファイルの中に入ってるアニメーションを再生する方法がワケワカメorz
197デフォルトの名無しさん:2006/08/13(日) 06:19:03
>>194
D3DXMatrixPerspectiveFovLH の Aspect を
(float)width / height ね。
198デフォルトの名無しさん:2006/08/13(日) 09:31:15
>>196
TWIN TAIL LOVERS か
ウマイハナシ でググればソースがあるぞ。

SDKよりは判り易いかと
自分は野村XX(ウマイハナシ)さんの奴を、改造しまくって使ってるでよ。
199デフォルトの名無しさん:2006/08/13(日) 13:49:36
DirectSoundBufferのRestoreっていままで気にも留めなかったけど、
使ったことないのに気づいた。これが必要になるようなバッファのロストって本当に起こるの?
200デフォルトの名無しさん:2006/08/13(日) 15:57:31
>199
ハード上に専用メモリを持っているサウンドカードを使っている奴って本当にいるの?
201デフォルトの名無しさん:2006/08/13(日) 21:04:00
DirectShow is no longer recommended for game developmentということらしいですが、
それなら何にすればいいんでしょうか?
202デフォルトの名無しさん:2006/08/13(日) 21:05:31
まんどいから全部メインメモリに置いてる。
どうせストリームがほとんどだから大して使わないし。
203デフォルトの名無しさん:2006/08/14(月) 01:15:11

いうかよお------------------------------------------------------------------------------------------


なんでよお-----------------------------------------------------------------------------------------
DXやってる奴というのはよお--------------------------------------------------------------------------

「ファイル」というと「データファイル」
としか思い浮かべられねえんだ?あ?コラ。オウ。

「ファイル」といえば「キーボード」も含むよな?あ?コラ。オウ。
理由は言わんでもわかりますね。
204デフォルトの名無しさん:2006/08/14(月) 01:23:48
>>203
file:///C|/con/con
205デフォルトの名無しさん:2006/08/14(月) 03:24:58
>203
DXってDirectX?で「キーボード」といえば「DirectInputDevice」でウッドボール。
206デフォルトの名無しさん:2006/08/14(月) 22:34:18
>>203
本当に頭のいい人間は誰にでもわかりやすい表現を使う。
君みたいにトリビアに頼らなくても普通のすごいの俺等はw
207デフォルトの名無しさん:2006/08/14(月) 22:44:55
本当に頭のいい人間はとっくに自殺している。
208デフォルトの名無しさん:2006/08/14(月) 23:01:10
>>207
そのネタはやめれw
209デフォルトの名無しさん:2006/08/14(月) 23:32:18
詳しく
210デフォルトの名無しさん:2006/08/15(火) 03:31:54
kwsk
211デフォルトの名無しさん:2006/08/15(火) 07:56:30
なんのお?
212デフォルトの名無しさん:2006/08/15(火) 08:10:26
本当に頭のいい人はとっくに自殺している件。
213デフォルトの名無しさん:2006/08/15(火) 11:50:40
XNAハジマタ\(^o^)/~
214デフォルトの名無しさん:2006/08/15(火) 19:24:36
DirectXをダウンロードしようと思っているのですが
http://www.microsoft.com/japan/msdn/directx/downloads.aspxのどれ
をダウンロードすればいいですか?DirectX 9.0 SDK Update (June 2006)を
ダウンロードしましたが正しく起動しませんでした
ちなみに私のPCはWindows98です
215デフォルトの名無しさん:2006/08/15(火) 19:28:32
216デフォルトの名無しさん:2006/08/15(火) 19:28:41
まずはOSをXPに入れ替えるところから始めろ。
217デフォルトの名無しさん:2006/08/15(火) 19:51:27
>>215
ありがとうございました
>>216
それがベストなんですが諸事情がありますて
218デフォルトの名無しさん:2006/08/15(火) 20:03:21
金がない学生とか、よく古い環境でなんとかしようと四苦八苦してるけど、
その時間をバイトして金を貯めた方が早くないの?
219デフォルトの名無しさん:2006/08/15(火) 20:05:52
どうでもいい
220デフォルトの名無しさん:2006/08/15(火) 20:12:55
どうせ新しい環境で四苦八苦することになる。
221デフォルトの名無しさん:2006/08/15(火) 23:46:21
//--------------------------------------------------------------------------------------
// File: DXUT.h
//
// DirectX SDK Direct3D sample framework
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//--------------------------------------------------------------------------------------
#pragma once
#ifndef DXUT_H
#define DXUT_H

#ifndef UNICODE
#error "The sample framework requires a Unicode build. If you are using Microsoft Visual C++ .NET, under the General tab of the project properties change the Character Set to 'Use Unicode Character Set'."
#endif


DXUT.hをインクルードしてコンパイルすると、13行目の「#error "The 〜Set'."」でerror C1189が出るんだが、どうにかならない?
正直なんでここでエラーが出るか分からないorz
222デフォルトの名無しさん:2006/08/15(火) 23:51:37
ヒント:エキサイト翻訳
223デフォルトの名無しさん:2006/08/15(火) 23:52:13
ユニコードが必要って書いてあるままじゃん
224デフォルトの名無しさん:2006/08/15(火) 23:52:22
ちなみに、
The sample framework requires a Unicode build. If you are using Microsoft Visual C++ .NET, under the General tab of the project properties change the Character Set to 'Use Unicode Character Set
この通りにUnicodeセットでプロジェクトを変更すると、鬼のごとく参照エラーが・・・鬱だしのう
225デフォルトの名無しさん:2006/08/15(火) 23:53:39
そっちのエアーを晒せ。
226デフォルトの名無しさん:2006/08/15(火) 23:54:09
エラーだorz
227デフォルトの名無しさん:2006/08/15(火) 23:56:22
解決したいものを解決したい粒度で情報開示せよ
228デフォルトの名無しさん:2006/08/15(火) 23:56:51
もう解決したから
229デフォルトの名無しさん:2006/08/15(火) 23:57:23
>>228
そう。
230デフォルトの名無しさん:2006/08/16(水) 00:00:52
main.cpp
error C2440: '初期化中' : 'const char [13]' から 'LPCWSTR' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2664: 'CreateWindowExW' : 2 番目の引数を 'const char [13]' から 'LPCWSTR' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2664: 'UnregisterClassW' : 1 番目の引数を 'const char [13]' から 'LPCWSTR' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
231デフォルトの名無しさん:2006/08/16(水) 00:01:41
CDirectX9.cpp
CD3DXObject.cpp
error C2259: 'CAllocateHierarchy' : 抽象クラスをインスタンス化できません。
次のメンバが原因です :
'HRESULT ID3DXAllocateHierarchy::CreateFrame(LPCSTR,LPD3DXFRAME * )' : 純粋仮想関数は定義されていません。
d:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\d3dx9anim.h(134) : 'ID3DXAllocateHierarchy::CreateFrame' の宣言を確認してください。
'HRESULT ID3DXAllocateHierarchy::CreateMeshContainer(LPCSTR,const D3DXMESHDATA *,const D3DXMATERIAL *,const D3DXEFFECTINSTANCE *,DWORD,const DWORD *,LPD3DXSKININFO,LPD3DXMESHCONTAINER * )' : 純粋仮想関数は定義されていません。
d:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\d3dx9anim.h(168) : 'ID3DXAllocateHierarchy::CreateMeshContainer' の宣言を確認してください。
error C2664: 'D3DXLoadMeshHierarchyFromXW' : 1 番目の引数を 'char *' から 'LPCWSTR' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
error C2039: 'GetMaxNumMatrices' : 'ID3DXAnimationController' のメンバではありません。
d:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\d3dx9anim.h(687) : 'ID3DXAnimationController' の宣言を確認してください。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
232デフォルトの名無しさん:2006/08/16(水) 00:02:13
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C2440: '初期化中' : 'int' から 'D3DXPRIORITY_TYPE' に変換できません。
列挙型への変換には static_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
error C2259: 'CAllocateHierarchy' : 抽象クラスをインスタンス化できません。
次のメンバが原因です :
'HRESULT ID3DXAllocateHierarchy::CreateFrame(LPCSTR,LPD3DXFRAME * )' : 純粋仮想関数は定義されていません。
d:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\d3dx9anim.h(134) : 'ID3DXAllocateHierarchy::CreateFrame' の宣言を確認してください。
'HRESULT ID3DXAllocateHierarchy::CreateMeshContainer(LPCSTR,const D3DXMESHDATA *,const D3DXMATERIAL *,const D3DXEFFECTINSTANCE *,DWORD,const DWORD *,LPD3DXSKININFO,LPD3DXMESHCONTAINER * )' : 純粋仮想関数は定義されていません。
d:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\d3dx9anim.h(168) : 'ID3DXAllocateHierarchy::CreateMeshContainer' の宣言を確認してください。
error C3861: 'SAFE_DELETE_ARRAY': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C2039: 'SetTime' : 'ID3DXAnimationController' のメンバではありません。
d:\Program Files\Microsoft DirectX 9.0 SDK (October 2004)\Include\d3dx9anim.h(687) : 'ID3DXAnimationController' の宣言を確認してください。
233デフォルトの名無しさん:2006/08/16(水) 00:02:47
CD3DXMesh.cpp
error C3861: 'SAFE_DELETE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE_ARRAY': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE_ARRAY': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE_ARRAY': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE_ARRAY': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE_ARRAY': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE_ARRAY': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE': 識別子は、引数依存の照合を使用しても見つかりません。
error C2440: '=' : 'TCHAR *' から 'LPSTR' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
234デフォルトの名無しさん:2006/08/16(水) 00:03:21
CD3DXFrame.cpp
error C3861: 'SAFE_DELETE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE': 識別子は、引数依存の照合を使用しても見つかりません。
error C2440: '=' : 'TCHAR *' から 'LPSTR' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
CAllocateHierarchy.cpp
error C2664: 'D3DXCreateTextureFromFileW' : 2 番目の引数を 'LPSTR' から 'LPCWSTR' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
error C3861: 'SAFE_RELEASE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE': 識別子は、引数依存の照合を使用しても見つかりません。
error C3861: 'SAFE_DELETE': 識別子は、引数依存の照合を使用しても見つかりません。
235デフォルトの名無しさん:2006/08/16(水) 00:09:46
逆切れと受け取ってもよさそうな長さです
236デフォルトの名無しさん:2006/08/16(水) 00:13:12
ゴメス
http://www.nomuraz.com/denpa/prog004.htm#IDPROG0021
ここのサンプルを試したらこうなった・・・
車輪の再発明してくるorz
237デフォルトの名無しさん:2006/08/16(水) 02:35:10
>>197
ありがとうございました!!
238デフォルトの名無しさん:2006/08/16(水) 14:49:06
[June 2005]から[August 2006:に変えてから
>error C2660: 'ID3DXFont::DrawTextA' : 関数に 5 個の引数を指定できません。
のエラーが出るようになりました。

LPD3DXFONT pFont;
RECT rect={iX,iY,iX+1000,iY+100};
pFont->DrawText(szStr,-1,&rect,DT_LEFT | DT_BOTTOM | DT_SINGLELINE | DT_NOCLIP,0xffffffff);

この3行目でエラーが出ます。
検索してもDrawText(A/W)の引数は5個書かれているものしかありません。
この引数をはどう変えれば良いのでしょうか?
239デフォルトの名無しさん:2006/08/16(水) 15:19:08
仕様がころころかわす糞APIなので、使わないのがベストな解決方法。
自分で簡単に作れる部分なので、使うメリットは微塵もない。
240デフォルトの名無しさん:2006/08/16(水) 16:10:59
m_pFont->DrawText( NULL, szStr, -1, &rect, DT_LEFT | (略), 0xffffffff );
241デフォルトの名無しさん:2006/08/16(水) 16:34:47
ドキュメント出てないの?
242238:2006/08/16(水) 17:14:55
レスありがとうございます。
>>240のやり方で問題は解決されました。

ヘルプやMSDNを検索してみたのですがこの関数だけ古いものしか出てきませんでした。
243デフォルトの名無しさん:2006/08/16(水) 18:29:35
DIERR_INPUTLOSTsDIERR_NOTACQUIREDfuit@at@4k?
244デフォルトの名無しさん:2006/08/16(水) 22:37:50
質問です。

class Graphics {
public:
Graphics(); {}
Graphics(HWND hWnd) {
Initialize(hWnd);
}
void Initialize(HWND hWnd) {
this->hWnd = hWnd;
後はttp://rina.jpn.ph/~rance/directx8/02/05.htmlの
『2.IDirect3D8インターフェイスの取得』と、
『3.IDirect3DDevice8インターフェイスの作成』の
『ウィンドウモード・アプリケーションのデバイス作成例』と似たり寄ったり
(pD3Dなどがメンバである点と、CreateDeviceの返り値を調べ、
失敗ならメッセージボックスを出すようにしてある点で異なる)
}
(省略)
private:
HWND hWnd;
LPDIRECT3D9 pD3D;
D3DPRESENT_PARAMETERS d3dpp;
LPDIRECT3DDEVICE9 pD3DDevice;
(省略)
};

>>245に続く…
245デフォルトの名無しさん:2006/08/16(水) 22:38:52
>>244のようなクラスを作って
Graphics graphics;
graphics.Initialize(hWnd);
とするとメッセージボックスは表示されず、描画も問題なく行うことができるのですが、
Graphics* graphics;
graphics = new Graphics(hWnd);
とするとメッセージボックスが出てきてしまい、
無視して描画を行おうとするとメモリ参照エラーが出てしまいます。
両者の違いは何なのでしょうか?
246デフォルトの名無しさん:2006/08/16(水) 23:26:18
回答じゃなくてすまんが、クラスのhWndと引数のhWndみたいに同じ変数名で共存できるのか
247デフォルトの名無しさん:2006/08/16(水) 23:51:48
this->hWnd = hWnd;
こうなってりゃ平気。
248デフォルトの名無しさん:2006/08/17(木) 00:06:14
DIERR_INPUTLOSTとDIERR_NOTACQUIREDはどこがちがうですか?
249デフォルトの名無しさん:2006/08/17(木) 00:22:38
D3DERR_DEVICELOSTとD3DERR_DEVICENOTRESETと同じ
250デフォルトの名無しさん:2006/08/17(木) 04:46:08
> とするとメッセージボックスが出てきてしまい、

なんで、どんなメッセージかぐらい書かないんだろうか…
251244:2006/08/17(木) 04:57:34
>>250
メッセージボックスはエラーが起こったことを知らせるために
自分で呼び出しているものなので、メッセージに意味はありません。
if(FAILED(pD3D->CreateDevice(〜))) {
MessageBox(〜);
}
みたいな感じです。
252デフォルトの名無しさん:2006/08/17(木) 06:07:26
自己解決しました。

HRESULTが単なるbool値モドキではなく、
失敗の原因毎に返す値が違うということを>>248-249のおかげで思い出す。

メッセージボックスにHRESULTの値を表示させて
原因を特定するべきだと>>250のおかげで気づく。

D3DERR_INVALIDCALLが返されていることが判明。
メソッドのパラメータに無効な値が設定されているかもしれない。
引数のウィンドウハンドルかD3DPRESENT_PARAMETERS構造体が怪しい。

D3DPRESENT_PARAMETERS構造体を
ZeroMemoryでクリアするのを忘れていたことに気づくorz

単純ミスですみません。皆さんに感謝します。
これは、単にインスタンスを宣言するのとnewによる動的生成を行うのでは
メンバ変数の初期化のされ方が異なるということですかね?
この辺りに詳しい方は是非教えてください。
253244:2006/08/17(木) 06:08:17
一応。>>252は私です。
254デフォルトの名無しさん:2006/08/17(木) 13:22:31
>>248

途中か元々か
255デフォルトの名無しさん:2006/08/17(木) 15:36:10
Xファイルから読み込んだ3Dのオブジェクトが全て表示されず
腹や腕の一部がすっぽり抜け落ちたり、体が半分無くなってしまう事があります。
輪切りにしたソフビ人形みたいな状態です。

小刻みにオブジェクトの座標を変えながら試行錯誤してたのですが
もしかしてDirectXの3Dの座標の空間には「負の領域」は無いのでしょうか?
256デフォルトの名無しさん:2006/08/17(木) 16:01:06
>>255
ポリゴンが裏返ってない?
257デフォルトの名無しさん:2006/08/17(木) 16:09:29
カビゴンが寝返りうってない?
258デフォルトの名無しさん:2006/08/17(木) 16:33:16
DirectXのデバック版と製品版を両方インストールしてしまって、
製品版が使えません。誰か助けてください。
259デフォルトの名無しさん:2006/08/17(木) 16:46:57
デバッグ版と製品版で速度差があるとか寝言こいてるバカは何なの。
全然ないのを見せても理解できる頭がない
260デフォルトの名無しさん:2006/08/17(木) 17:00:07
Control Planel でDebug用ランタイムにしてデバッグレベル上げると流石に速度は落ちるけどな。
261デフォルトの名無しさん:2006/08/17(木) 17:11:46
長い初期化が終わって、ようやくゲームできるぜいと思ったら
Debugランタイムのままになっていて重ス!みたいなのってあるよな。開発機が一緒だと。
262デフォルトの名無しさん:2006/08/17(木) 18:38:36
>>252
> これは、単にインスタンスを宣言するのとnewによる動的生成を行うのでは
> メンバ変数の初期化のされ方が異なるということですかね?

(暗黙の) 初期化? C/C++ には、そんな便利な機能はないよ。

「自動変数も動的に確保した変数も内容は無茶苦茶になっている」

と思ってプログラムしないとダメだよ。

(静的変数とかは別ね。)
263デフォルトの名無しさん:2006/08/17(木) 20:00:03
>>252
> これは、単にインスタンスを宣言するのとnewによる動的生成を行うのでは
> メンバ変数の初期化のされ方が異なるということですかね?

初期化のされ方は同じ。この場合はD3D〜構造体のデフォルトコンストラクタ
(=何もしない)が呼ばれて、何も初期化されてない。

ただ領域を確保する場所が違うから、そこに入っていた値によって
たまたま上手く動いたり、動かなかったりしたのでは。
264デフォルトの名無しさん:2006/08/17(木) 21:13:32
桐たんすとインスタンスと良いんでございますって似てるよね
265デフォルトの名無しさん:2006/08/17(木) 21:23:20
DirectX12!!!!!!!!!!!!!
266デフォルトの名無しさん:2006/08/18(金) 04:43:03
MeshTextureCoordsって、頂点に対するUV何ですよねぇ。
かなり不便な気が
267デフォルトの名無しさん:2006/08/18(金) 18:01:36
すみません。質問なのですが、DDSファイルを作るためにdirectX utilitiesの
中のDirectX Texture Toolを起動しようとしてるのですが、
Unable to create Direct3D Device. Please make sure your desktop color depth is 16 or 32 bit.
と出ました。画面の色も32ビットにしています。
texture作れなくて困ってます。何か他に起動しない理由とかありますか??
よろしくお願いします。
268デフォルトの名無しさん:2006/08/18(金) 18:04:30
16bitカラーも試してみたか?
269デフォルトの名無しさん:2006/08/18(金) 18:05:18
>>268
レスどうもです。。16ビットも試してみました。。
270デフォルトの名無しさん:2006/08/18(金) 20:08:15
DirectXのサンプル動いてるの?
271デフォルトの名無しさん:2006/08/18(金) 20:21:05
>>270
DirectX9のデモのドーナツというのを試してみました。
動いてました・・・orz
272255:2006/08/18(金) 20:45:39
自己解決しました
プロジェクション変換してないのが原因でした…orz
273デフォルトの名無しさん:2006/08/18(金) 21:04:01
>>267
メモリ足りないんじゃね?
画面狭くしてみたら?
274デフォルトの名無しさん:2006/08/18(金) 23:07:56
C++でD3Dを使う場合
一番楽なのはELでFA?

DirectX9.0cのサンプル見ながら一日かけてキーボード入力した方向に動くだけの物が出来た。
けどこんなペースじゃゲーム開発する前にDirectX10が出そうだよ…
275デフォルトの名無しさん:2006/08/18(金) 23:19:09
>>267
OSはWindows2000?XP?
XPに変えたら動いたような気がする。それかバージョンアップか。
276デフォルトの名無しさん:2006/08/18(金) 23:27:31
>>274
ELってのが何か知らんが、これから勉強するなら他人が作ったラッパーとか
使わないほうがいいよ。変なクセがつくから。

単純に楽してゲーム作りたいなら、何もDirectXにこだわらなくても
OpenGLっつーメチャ簡単なライブラリがあるし。
277デフォルトの名無しさん:2006/08/19(土) 00:02:32
>>274
実際のゲーム製作だって土台がしっかりしてる分何をやるにも込み入った手続きがいるぞ。
ショボそうなステータス画面作るのだってどんなに全力疾走しても1週間以上はかかる。

1日でキー入力で動くとこまでいった?
もうゲームなんてできたも同然だろw
278デフォルトの名無しさん:2006/08/19(土) 00:15:29
elは始めて触るには確かに良いけど、すぐに物足りなくなる
DXライブラリも同じくらい簡単。こっちは更新もサポートもしてるから俺はオススメ
279デフォルトの名無しさん:2006/08/19(土) 00:19:00
D3DXが一番マシ。
ただしSpriteとFont系は使うな。
280デフォルトの名無しさん:2006/08/19(土) 00:19:50
xファイル内のアニメーション読んで再生するのが難しくて萎える。DX行こうかな・・
281デフォルトの名無しさん:2006/08/19(土) 00:20:55
>>279
なんで????
282デフォルトの名無しさん:2006/08/19(土) 00:21:57
>>267
Unable to create Direct3D Device.
でググると一番最初に出るぞ。もし、これだったらググレカス
283デフォルトの名無しさん:2006/08/19(土) 00:24:13
新しいSDKじゃSpriteは改善されてるけど、あれより速いの作れる奴なんて何人いるやら
284デフォルトの名無しさん:2006/08/19(土) 00:31:46
>>283
速い?
なんで「速い」なんて言葉が出てくるのか疑問。
速さ求めるところですか?
また、速さ要求するところで使える仕様ですか?
頭空のくせにテキトウなこと言わないでくださいよw
285デフォルトの名無しさん:2006/08/19(土) 00:34:20
某2D同人STGでスプライト描画が重い重い言われてんだから
速さは求められてんじゃね
286デフォルトの名無しさん:2006/08/19(土) 00:43:47
>>285
使い手がアホなんだろ。
不透明のフィルレートどうにかして速くならなかったらもうどうしようもねぇって。
だしたらだした分だけ重くなる。頂点数なら気にするな3Dゲームと比較したら気にするほど無意味だろ。
それがライブラリちょこっと変えただけで速くなった程度の速度じゃ、
万人(といっても限度はあるが)の環境を考えたときにその速さに意味のあることかどうかなんて普通わかるだろ?
287デフォルトの名無しさん:2006/08/19(土) 01:04:17
アホみたいに敵弾やら煙やら出しまくるゲーム見る限り
「普通わかるだろ?」に頷けはしないな。
実際どれくらい違うのか白黒つけたいならソース出すしかないだろう
288デフォルトの名無しさん:2006/08/19(土) 01:10:02
>>287
じゃあ、いいだしっぺのお前が出せや。
289デフォルトの名無しさん:2006/08/19(土) 01:13:00
無闇に噛み付いているアホがいます
290デフォルトの名無しさん:2006/08/19(土) 01:20:23
だいたい弾幕っつったってDirectXのパーティクルのサンプル超えるぐらいの数だすわけ?
そりゃとっても綺麗なSTGできてんだろうなw
291デフォルトの名無しさん:2006/08/19(土) 01:37:31
あとで最適化すればいいやとか思って、最初は
パーティクル1個がごとにワールド行列セットしてDrawPrimitiveしたんですよ。
それで、開発が進む中で、アニメ機能とかスクリプト機能とか
ビルボードだけでなくスキンメッシュも扱えるとか、
デザイナーらの要望通りに高機能なパーティクルシステムを組んでいると、
いつの間にか、もうとうにもならなくなっていたんです。
292デフォルトの名無しさん:2006/08/19(土) 01:50:18
DirectX9を使ってプログラムを組もうとしているのですが
どうやら僕のPCにはデバイスが無いみたいです。
あれやこれや調べていたらどうやら設定を変えるなり
ドライバをインストールすればどうにかなりそうな情報を得ました。が方法がわかりません。

私SOTECのS2120Cを使っております。XPです。

デバイスを入れるって言うのでしょうか?
をしてDirectXを組めるようにするにはどういった
設定が必要でしょうか?
293デフォルトの名無しさん:2006/08/19(土) 01:51:54
>>290
マジレスすると桁違いの数描いてると思われるゲームはある
294デフォルトの名無しさん:2006/08/19(土) 01:52:36
日本語でおk
295デフォルトの名無しさん:2006/08/19(土) 02:08:07
>>293
そんな市販にもありそうにねぇの想定して何がしてぇの?そいつ。
320X240でフィルレート気にしない生活送れよって感じだ。
296デフォルトの名無しさん:2006/08/19(土) 02:25:16
>>295
なんか嫌なことでもあったのか?
それとも元からそんな性格なのか?
297デフォルトの名無しさん:2006/08/19(土) 02:29:07
はいはいジェネレーションギャップジェネレーションギャップ
298デフォルトの名無しさん:2006/08/19(土) 02:36:58
確かに市販にもなさそうなもの想定してるのには疑問だな。
299デフォルトの名無しさん:2006/08/19(土) 02:40:24
>>290
ポイントスプライトとポリゴンばら書きを一緒に扱っちゃいかんのだろうが、
それってそもそも表現の方法論が明後日の方向向いてるから、そーいう目に会うってだけなんだよな。
1000枚を2000枚に増やしたところで見た目のリッチさが倍になるわけでもないだろうに、
なんでそんな方向ばっかり努力すんだろうか。

つか、実際どんだけ書いたら重いなんてことになるんだか、正直ぴんとこないんだが、
コード見せてもらったら

・メッセージループがBUSYループでCPUぱっつんぱっつん
・描画命令の発行が1ポリゴン単位
・色々理論武装している割には、頂点バッファのダブル、トリプル化等を試みた形跡はなくロックしまくり

なんてオチだったりするのも、よくある話。
フィルレートフィルレート言いながら、テクスチャ単位のソートもしてないから
フェッチ時のキャッシュミス頻発しすぎで重くなってたりとか。
フィルレート以前の問題ちゃうんかと。
300デフォルトの名無しさん:2006/08/19(土) 06:43:32
>>299
そんなので遅く感じるようなことも俺はないと思うんだがな。
だいたい、その上の3つの奴だって気が付かずに組んでたら気にならない速度はでるでしょ?

>フィルレートフィルレート言いながら、テクスチャ単位のソートもしてないから
>フェッチ時のキャッシュミス頻発しすぎで重くなってたりとか。
あと、これ↑もシェーダ使いまくりでも問題無く動くのに
こんなの気にする必要ってあるわけ?
また、気にしてゲーム組めるの?普通に描画順優先じゃないの?
テクスチャ毎にソートする意味ってそんなにある?
301267:2006/08/19(土) 06:58:37
>>282
まさかソースをいじらなくてはいけないとは・・・
ほんと困ってたんです。ご教授ありがとうございました。
302デフォルトの名無しさん:2006/08/19(土) 07:28:18
まあ描画順に並べれば大体は同じテクスチャで固まるだろうしな。
303デフォルトの名無しさん:2006/08/19(土) 11:43:01
>>300
いや、気にしなくても最近のマシンなら相応の速度は出るが、
逆にこの程度のことを対策しないで速度のこと気にするのは
どっか前提が間違ってるって話。
シェーダ類を大量投入するような描画表現するんでも、多少は気にしたほうがいいぞ。

・メッセージループがBUSYループでCPUぱっつんぱっつん

これはただのプログラムミスだし、

・描画命令の発行が1ポリゴン単位
・色々理論武装している割には、頂点バッファのダブル、トリプル化等を試みた形跡はなくロックしまくり

これは描画内容の性質にもよるが、同じテクスチャ上のスプライトを大量に操作するなら
頂点バッファをCPUで加工して一括描画した方が通常断然速いのが普通だし、

>フィルレートフィルレート言いながら、テクスチャ単位のソートもしてないから
>フェッチ時のキャッシュミス頻発しすぎで重くなってたりとか。

これもカードの性能差でどうとでもなるように見えるけど、閾値を越えると隠蔽されないコスト。
それこそ1000枚が2000枚程度の違いにはなる。
とはいえ、違ったからなんだ?ってこと。

いずれも普通に作ってればテクスチャがあっちゃこっちゃ行った描画は無いだろうし、
ちょっと気をつければどうとでもなることだしなー。
304デフォルトの名無しさん:2006/08/19(土) 14:09:01
ていうかパーティクルのサンプルって前のSDKに入ってたモーションブラー付きの奴だろ?
あれぐらい余裕で超えてるゲームは本当にいくらでもあるはずだが。

もしDirect3D10のを指してるのなら知らん
305デフォルトの名無しさん:2006/08/19(土) 14:38:27
知らんなら余計な口出しすな
306デフォルトの名無しさん:2006/08/19(土) 14:59:45
>>303
俺はそんなの気にするより先にやることいくらでもあると言ってるんだがな。
307デフォルトの名無しさん:2006/08/19(土) 15:06:13
いや、そういうと話が違う方へいくからやめるか>>306は撤回。

なんつーかね。
意味無いんだよ。
そんなの。
一体、いつの知識で止まってるの?
テクスチャでソートってマテリアルソートやるってことでしょ?
こんなの意味無いの。意味無ーし。前から描画してフィルレート稼いだほうがよっぽど速くなるよ。
いまどき1つのモデル内でテクスチャの切り替えが頻繁に起こるのに馬鹿な発言もいい加減にしろよ。
お前、バンプマップすら組んだことねーだろ?ん?
308デフォルトの名無しさん:2006/08/19(土) 15:45:05
>307
なんか嫌な事でも(ry
309デフォルトの名無しさん:2006/08/19(土) 18:43:21
現実をみるべき。
ここの住人のうち6割は弾幕シューティングか2D格闘を作ってる。
2割がちっさい技術デモ専門で、あとはただの初心者いじり。
だからニーズに合ってるんだよ
310デフォルトの名無しさん:2006/08/19(土) 18:49:58
と、調べもしないで根拠のない自分勝手な妄想を語る人が確実に一人。
311デフォルトの名無しさん:2006/08/19(土) 19:08:44
まとめると、
材質、テクスチャはまとめておけ。
しか言って無いじゃん...。

312デフォルトの名無しさん:2006/08/19(土) 20:15:59
ttp://www.nomuraz.com/denpa/prog004.htm
ここの中ほどにある『DirectX9のアニメーションな話』の『読みやすく整形する所からはじめましょう。』以下にあるサンプルを触っています。
ビルドすると
CAllocateHierarchy Alloc( this );  で
'CAllocateHierarchy' : 抽象クラスをインスタンス化できません。
というエラーが出るのですがどう解決すればいいのでしょうか。
VC++.net 2003、DX2006Aug です。
313デフォルトの名無しさん:2006/08/19(土) 20:23:55
>>311
俺は不必要ならまとめるなといいたい。
まとめた時点で前から描画という後ろにあれば
「描画しない」というもっとも単純でかつ最速の方法ができなくなる。
それに物体が離れたときにまとまってると今度は片方はクリッピングで完全にはじいてしまえるのに
まとめてしまっているためにクリッピングができないこともある。
314デフォルトの名無しさん:2006/08/19(土) 20:49:06
要するに、Zバッファを活かす派と、ステート変更を最小にする派の争いか
俺も前者の方が楽だからというだけで前者かな
315デフォルトの名無しさん:2006/08/19(土) 20:56:56
俺は軽い描画パスでZバッファを埋めておいてから残りの描画をする派。
316デフォルトの名無しさん:2006/08/20(日) 00:03:03
VMR9のレンダーレスモードを試してみたんですが、
なんかムービーに、メインのゲームの描画がチラチラ混じるんですよ。
やりたいことは、単に普通のムービーテクスチャなんですけど、
うまく同期をとる手段はないでしょうか?
SDKのAllocaterサンプルのような形にメインループを大変更するのは嫌なんですけど・・・

317312:2006/08/20(日) 04:07:29
312のサンプルではなくDirectXのサンプル(C++\Direct3D\SkinnedMesh)は正常にビルド出来たのでそれを自分のプログラムに組み込もうとしたのですが、
>error C2664: 'StringCchCopyA' : 1 番目の引数を 'WCHAR [256]' から 'char *' に変換できません。

>error C2664: 'D3DXCreateEffectFromFileA' : 2 番目の引数を 'WCHAR [260]' から 'LPCSTR' に変換できません。
などのエラーが出ます。
組み込むと言ってもファイル自体をコピーしてソースファイルとして追加しただけなのですが、これら以外に何か設定が必要なのでしょうか。
古いサンプルで時々上記のエラーを目にすることがありますが、
作った人は問題ないのにこちらでビルドすると引数で異常が出るとか・・・今回はDirectXのバージョンは同じなのになんでだorz
318デフォルトの名無しさん:2006/08/20(日) 04:13:50
>317
ヒント:UNICODE
319デフォルトの名無しさん:2006/08/20(日) 15:33:51
俺はDXUtil.hがないって帰ってくるな
320312:2006/08/20(日) 16:41:18
>>318
レスありがとうございます。
文字セットという項目があったのですね。
とりあえずUnicodeとマルチバイト共に対応できるようTCHAR等に変換していく作業を行っていきます。
あまり利点・欠点が掴みきれていないのですが、
アプリが海外向けでない場合はマルチバイト文字セットで開発を行って問題ないのでしょうか。

>>319
過去のSDKに入っているDXUtil.hを持ってくれば通りました。
321デフォルトの名無しさん:2006/08/20(日) 16:52:04
過去のSDK・・・
誰かDXUtil.hうpしてくれ・・・・
322デフォルトの名無しさん:2006/08/20(日) 17:15:24
323デフォルトの名無しさん:2006/08/20(日) 17:51:01
毎回思うんだけど、SDK開発者はアホなのか?
自分の環境で一度SDKを抜いてもう一度インストールして動くことを確認してからリリースしろよな。
もう、個人で適当に修正して確認もしないでリリースしてるようにしか見えない。
324デフォルトの名無しさん:2006/08/20(日) 17:53:59
ただで提供してやってんだよ
嫌なら使うんじゃねーよということですよ
325デフォルトの名無しさん:2006/08/20(日) 17:59:22
326デフォルトの名無しさん:2006/08/20(日) 18:17:33
互換性を気にするなら何でOpenGL使わないの?
327デフォルトの名無しさん:2006/08/20(日) 22:23:45
ものすごく生産性が下がると思ふ
328デフォルトの名無しさん:2006/08/21(月) 00:26:16
>>84の状態なんですが、skinnedmeshで読み込むとこんな具合です。(http://www.uploda.org/uporg485985.jpg
>>85-86は具体的にどういったふうにやれば良いのでしょうか?
どなたかご教授願います。
329デフォルトの名無しさん:2006/08/21(月) 00:43:42
QBで検索かけたら>>5 >>43 >>187の3人上がったからドラゴンフライの3人バージョンやるか(何か名前があった気が・・・)
>>5を中心に>>43を走らせ>>187でガンガン攻める。
アイシールド21の真竜寺?のラン・パス・スクリーンやphoenixのopt.Sweepとか・・・
で俺はライン志望な
330デフォルトの名無しさん:2006/08/21(月) 00:44:17
激しく誤爆スマソ
331デフォルトの名無しさん:2006/08/21(月) 02:44:04
>>328
マトリクスにしとき
332312=317:2006/08/21(月) 04:17:44
たびたび申し訳ありません。
DX2006AugのC++\Direct3D\SkinnedMeshのソースをUnicode版から汎用版(TCHAR等)に変換する作業をしています。
調べつつ置換するだけですので問題ないと思っていましたが、肝心の置換するものが不明なのがありました。

>error C2664: 'MultiByteToWideChar' : 5 番目の引数を 'TCHAR [512]' から 'LPWSTR' に変換できません。
>error C2664: 'WideCharToMultiByte' : 3 番目の引数を 'LPCTSTR' から 'LPCWSTR' に変換できません。
>error C2664: 'CommandLineToArgvW' : 1 番目の引数を 'LPSTR' から 'LPCWSTR' に変換できません。
[MultiByteToWideChar][WideCharToMultiByte][CommandLineToArgvW] この3つの関数を何に置き換えるべきなのでしょうか。

合わせて
WCHAR* dest;  を
TCHAR* dest;   に変えると「定義されていない識別子」とエラーが出ます。
dest等に入れる値はTCHAR*型ですので通るはずなのですが、別の表記にしないといけないのでしょうか。
333デフォルトの名無しさん:2006/08/21(月) 04:20:49
君にはDirectXはまだ早いんじゃね?
334デフォルトの名無しさん:2006/08/21(月) 04:33:27
MultiByteToWideChar や WideCharToMultiByte が何を
する関数か調べた?

これらの関数が何のために使われているかが分かれば、
どうすればいいのか判るはず。
335デフォルトの名無しさん:2006/08/21(月) 04:34:11
つか、関数名を見れば調べるまでもないなw
336デフォルトの名無しさん:2006/08/21(月) 05:54:59
みんなUnicode対応ってしてる?
外人も使うツールを作る仕事をしてるとかなければ
自己満足に終わったりしない?
337デフォルトの名無しさん:2006/08/21(月) 06:02:41
スレ違い
338デフォルトの名無しさん:2006/08/21(月) 06:04:23
DirectXもこれからはUnicode対応が当たり前。
スレ違いと言うほどのこともない。
339デフォルトの名無しさん:2006/08/21(月) 06:06:44
>>338
それをいったらほとんどのスレでOKな話題になってしまうわけだが
340デフォルトの名無しさん:2006/08/21(月) 06:15:44
Unicode対応なんて当たり前だろ?
難しいことなんて何も無い。
341デフォルトの名無しさん:2006/08/21(月) 07:14:12
めんどいからちゃー
342デフォルトの名無しさん:2006/08/21(月) 08:03:02
>>336
俺は外人も使うツールを作っているがマルチバイトでしか作ってない。
多言語を同時に使うのでなければUnicode対応は必要ないな。
文字列は全てリソースに入れて日本語と英語を用意してある。

たまに勝手に中文リソースとか追加されて再配布されてたりする。
343デフォルトの名無しさん:2006/08/21(月) 18:46:47
 そもそも外人だって彼らが普段使っているローカルなコード体系で
テキスト処理をしたい場合が多いわけで、Unicodeを押し付けるよりは
OEMCPとかシステムのロケールとかで処理する方が適切なことも多い。
344デフォルトの名無しさん:2006/08/21(月) 18:57:31
シェーダーと、シェーディングって同じ意ですか?
345デフォルトの名無しさん:2006/08/21(月) 19:06:51
バッターとバッティングって同じ意ですか?
346デフォルトの名無しさん:2006/08/21(月) 22:21:28
>>336
どっちでもコンパイル出来るようにしてるけど?
347デフォルトの名無しさん:2006/08/21(月) 22:45:29
OS的にUnicodeがネイティブだから
348312=317:2006/08/21(月) 22:46:55
レスありがとうございます。
お蔭様でなんとかビルドエラーは解消されましたが、実行でエラーが出たのでサンプルを元に1つ1つ解消していくことにしました。
しかしまたエラーが出てしまい、調べても解決出来ませんでしたので手を貸していただけないでしょうか。

2006Augのサンプル[C++\Direct3D\SkinnedMesh]をフォルダごと[d:\test\]以下にコピーし、変更を行った結果

>error C2859: d:\test\skinnedmesh\debug\vc70.pdb は、このプリコンパイル済みヘッダーが作成されたときに使用された pdb ファイルではありません。プリコンパイル済みヘッダーを再作成してください。 (ファイル)SkinnedMesh
のエラーが出ます。
エラー元はCommonフォルダ内の各ファイルに記述されている「#include "dxstdafx.h"」のようです。
変更は
・ソリューションエクスプローラー [Common]フォルダのファイルとアイコンの相対パスを下記に修正
  C:\Program Files\Microsoft DirectX SDK (August 2006)\Samples\C++\Common\(ファイル名)
・プロジェクトの追加ディレクトリを上記に
です。
リビルドやDebugフォルダを削除したりしているので前のビルド結果が残っていることはありません。
サンプル「SkinnedMesh」を同じ階層に「SkinnedMesh2」としてコピーし、
ファイルの相対パスに別の場所に置いたファイルにするとこの時点で上記のエラーが出ます。
他に変更する点があるのでしょうか。
尚、現在文字セットはサンプルと同じくUnicodeです。

349デフォルトの名無しさん:2006/08/22(火) 01:13:43
>>348を無視して悪いが、このスレ的にはVC2003って結構現役?
wfstreamのコンストラクタがwchar_tのファイル名を受け付けてくれなくてビビった。
VC2005に慣れてると、UNICODE対応も結構細かなところで蹴躓くね。
つっても上のくらいのもんではあるけど。

>>348のは、その、なんだ。
悪い、誰か親切な奴答えてあげてくれ。
350デフォルトの名無しさん:2006/08/22(火) 10:02:10
X ファイルから読み込んだ3Dオブジェクトを移動させようとしています。
移動量を行列で与えることで目的を達成するというのはぼんやりと判ってきまして
ワールド行列に値を渡して移動や回転をすることはできるようになりました。
しかし個々のオブジェクトをバラバラに動かすことができません。

D3DXMatrixTranslation で移動用の行列を作成した後、
それを Direct3DDevice->SetTransform で登録することで移動を実行している様で
SetTransform の第一引数に D3DTS_WORLD を渡すとワールド行列の値を変更できます。
最初は、D3DTS_WORLD の代わりに個々のオブジェクトを示すポインタか何かを渡せば
それらのオブジェクトを動かすことができるのかと思ったのですが、
ヘルプで調べたところ、引数の型が合わないために無理だと判って行き詰りました。

ネットでサンプルを探しても、一枚のポリゴンや一つのオブジェクトを動かしているだけのサンプルしか見つけられず
次にどんな関数や型について調べるべきなのかもさっぱり判らなくなりました。
どなたかヒントをお願いします
351デフォルトの名無しさん:2006/08/22(火) 10:54:54
>>348 = >>349
っぽいからスルー
352デフォルトの名無しさん:2006/08/22(火) 18:23:49
今DXライブラリというものでゲーム作ってるものですが
DXライブラリ→DirectXという手順でプログラミングを学んだ方いらっしゃいますか?
353デフォルトの名無しさん:2006/08/22(火) 20:41:17
ここにいる
354デフォルトの名無しさん:2006/08/22(火) 20:43:08
DXが3Dをサポートしたら完璧なんだろうな。
355デフォルトの名無しさん:2006/08/23(水) 00:14:00
DX→DirectXというアプローチが効率的かは疑問だがな。
356デフォルトの名無しさん:2006/08/23(水) 00:35:27
画面のサイズが640*480で
0,0,0の位置を中心にして640*480*1の箱があります
角度はまっすぐで箱の正面を画面にぴったりと表示するには

カメラとプロジェクションを何処に設定すればいいですか?
357デフォルトの名無しさん:2006/08/23(水) 00:52:28
Transform.View = Matrix.LookAtLH(new Vector3(0.0f, 0.0f, 240.0f), new Vector3(0.0f, 0.0f, 0.0f), new Vector3(0.0f, 1.0f, 0.0f));
Transform.Projection = Matrix.PerspectiveFovLH(Geometry.DegreeToRadian(90.0f), 640.0f / 480.f, 0, 240.0f);

テキトー
358デフォルトの名無しさん:2006/08/23(水) 01:18:57
>>353
DXとDirectXの相互関係が良く分からないんですが…
Directを使いやすくするために関数などを個人的に作ったのがDXなんですよね
自分はDXを細分化したものがDirectであると解釈しているんですが…

また、DXで一通りSTGが作れたとしてDirectXで同じようなものを作れるスキルまで
到達するのには目安何ヶ月くらい必要ですか?
359デフォルトの名無しさん:2006/08/23(水) 02:07:17
DirectXの知識が一切ない状態から色々なビデオカードへの対応+
安定した動作+フルスクリーンの切り替えやデバイスロスト時の処理まで
ちゃんとやるなら3ヶ月じゃ足りないと考えといた方がいい。

RenderStateやSamplerState関係もちゃんと理解しないと思い通りに絵を出すのも面倒だ。
360デフォルトの名無しさん:2006/08/23(水) 08:11:32
>>357

微妙にずれるだろ
361デフォルトの名無しさん:2006/08/23(水) 10:06:16
>>350
オブジェクトごとにSetTransform

D3DXMatrixTranslation(&mat1,x1,y1,z1)
SetTransform(D3DTS_WORLD,&mat1)
描画

D3DXMatrixTranslation(&mat2,x2,y2,z2)
SetTransform(D3DTS_WORLD,&mat2)
描画




一緒になってるけど、計算部分と描画部分はきちんと分けるように
362デフォルトの名無しさん:2006/08/23(水) 10:45:49
だが、計算→描画→計算→描画の方が効率はいい。
363デフォルトの名無しさん:2006/08/23(水) 10:47:59
それホントか?
364デフォルトの名無しさん:2006/08/23(水) 10:48:26
環境による
365デフォルトの名無しさん:2006/08/23(水) 11:06:55
いかにブロックを減らすかが大事だな。
DrawPrimitiveは基本的に描画キューにつっこんでGPUに投げるだけだから、
描画完了までブロックしない。

バッファのロックや、Presentの時に描画完了待ちが入る。

完全に分離できるなら、「Present()→描画Req→計算」が速いとおもはれ。
366デフォルトの名無しさん:2006/08/23(水) 11:57:18
こればっかりは何を書いてるによるとしかいいようが
367350:2006/08/23(水) 12:02:58
オブジェクトごとにワールド行列を持たせればいいのかという所まで見えてきたのですが
相変わらず、「座標を示す行列」と「オブジェクト」を関連付ける方法がわかりません。
>>361の mat1 , mat2 というのは単なるD3DXMATRIX型の変数だと思うのですが
これらの値がきちんと個々のオブジェクトを指してくれることが納得できないです。
D3DXMatrixTranslation , SetTransform , あと DrawPrimitiveUP という関数にも目を付けましたが
D3DXMATRIX 型データやD3DVECTOR3 型データを渡すことはできてもメッシュを示すポインタ等は渡せないし
これらの関数の持ち主が個々のオブジェクトであるという訳でもなさそうです
368デフォルトの名無しさん:2006/08/23(水) 13:26:32
>>367
チュートリアルは一つもとばさず、きっちり動作確認して完璧に終わらせたのか?
369デフォルトの名無しさん:2006/08/23(水) 14:02:07
>>367
お前さんがC/C++で開発しているものとみなして
定義したオブジェクト構造体(クラス)の中でオブジェクトの三次元座標(x,y,z)をがあると思うが
更にその中にD3DXMATRIX変数を保持すればいいじゃん

CLASS OBJECT{
float x,y,z;
D3DXMATRIX mat;
}object;

CLASS *p=&object;

移動ルーチン
void Update(CLASS *p)
{
移動処理
D3DXMatrixTranslation(&p->mat,p->x,p->y,p->z);
}


描画ルーチン
void Render(CLASS *p)
{
SetTransform(D3DTS_WORLD,&p->mat);
描画処理
}
370デフォルトの名無しさん:2006/08/23(水) 15:12:55
>>359
ありがとうございましたm(_
参考にさせて頂きます
371デフォルトの名無しさん:2006/08/23(水) 21:22:57
>>360

仕様
372350:2006/08/24(木) 10:46:36
お騒がせして申し訳ありません
個々の描画の前にワールド行列の設定を持ってくることで、ようやく動くようになりました
ありがとうございました
373デフォルトの名無しさん:2006/08/24(木) 22:02:23
お礼などいらない。古参がつけあがるからな
374デフォルトの名無しさん:2006/08/25(金) 22:42:40
まあ、結果報告は大事だよ。
375デフォルトの名無しさん:2006/08/25(金) 22:51:46
質問です。本のサンプルをタイプして動かしてみたんですが、
特にエラーが出ないのに、何も描画されません・・・orz
多分、相当アホなことをしていると思うので、ご指摘ください。

ファイル:
ttp://www.uploda.org/uporg492177.cpp.html

376デフォルトの名無しさん:2006/08/25(金) 23:02:38
EndScene後にPresentするんだ!
377デフォルトの名無しさん:2006/08/25(金) 23:23:35
>>376
動きました!ありがとうございます。
やっぱり初歩的なミスorz
378デフォルトの名無しさん:2006/08/26(土) 00:52:26
ホントに初歩的なミスなのかね?
379デフォルトの名無しさん:2006/08/26(土) 20:58:34
VisualC++6.0、DirectX8使ってます
3Dで、パースを無効にする方法を教えてください
380デフォルトの名無しさん:2006/08/26(土) 22:56:58
pd3dDevice->SetPerspective(NULL);
381デフォルトの名無しさん:2006/08/27(日) 00:33:21
>>380
IDirect3DDevice8のメンバーではありませんって言われてコンパイルできません
382デフォルトの名無しさん:2006/08/27(日) 00:52:09
パースペクティブ云々の説明ならBBXで「パースペクティブ」で検索すれば結構記事がでてきてたよ。

もしかしてこんな↓感じ・・・
http://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=37&vew=331

これはBBXで「パースペクティブ」で検索してでてきた記事の一部だけど
他にもあるかもしれないから全部みてきてほしいな。
383デフォルトの名無しさん:2006/08/27(日) 01:14:38
正射影
384デフォルトの名無しさん:2006/08/27(日) 01:43:18
>>382
ありがとうございました
結局D3DXMatrixOrthoLHを使うことにしました
385デフォルトの名無しさん:2006/08/27(日) 01:51:39
>>384
で、やりたいことはできたのかよ!
386デフォルトの名無しさん:2006/08/27(日) 02:46:00
>>385
1時間近く試行錯誤してみましたが、なんとかいけそうです
387デフォルトの名無しさん:2006/08/27(日) 13:01:53
DirectXでの質問です。DirectXを使って全画面表示するときに
なぜか画面全部に映像が行かなくて、800×600になってしまいます。

診断ツールを見たらちゃんと1024×768になっています。
あとDirectXを使う各ソフトも設定では800×600になっていません。
なぜなんでしょうか?教えてください。
388デフォルトの名無しさん:2006/08/27(日) 13:06:38
>>387
それは自分で組んだプログラムの話なのか?
389デフォルトの名無しさん:2006/08/27(日) 13:07:18
ディスプレイの設定がおかしいんじゃね
390デフォルトの名無しさん:2006/08/27(日) 13:07:55
>>388
いや、違います。
ネットで落としたゲームやハンゲームなどです。
391デフォルトの名無しさん:2006/08/27(日) 13:10:33
>>ディスプレイ設定はどうするんですか?
392デフォルトの名無しさん:2006/08/27(日) 13:11:21
>>390
じゃあ、なんでここで質問するんだ?
393デフォルトの名無しさん:2006/08/27(日) 13:11:22
ここは自分でプログラムを組む人のための板なので、そういう質問は
ソフトを作った人や、そのソフトのためのBBSでなさってください
394デフォルトの名無しさん:2006/08/27(日) 13:11:35
↑アホですたwww
>>389
395デフォルトの名無しさん:2006/08/27(日) 13:12:27
あ、すんません。
396デフォルトの名無しさん:2006/08/27(日) 14:40:56
Imageを用意せずに
Color.〜から単色のTextureを作れますか?
397デフォルトの名無しさん:2006/08/27(日) 15:32:19
>>396
何色でもグラデでも何でも作れるぞ
398デフォルトの名無しさん:2006/08/27(日) 16:09:51
クォータニオンで姿勢を変えた後、
オブジェクトを前方に進めるにはどうしたらいいんでしょうか?

オブジェクトを回転させると、前向きに進ませるのに必要なベクトルの成分も変わってきますが
D3DXQuaternionNormalize 関数はどうやら進行方向の x y z を教えてくれる関数ではなさそうだし
クォータニオンについて説明してるサイトもあまり見つからなくて困っています
399デフォルトの名無しさん:2006/08/27(日) 16:19:12
クォータニオンについての真の理解が必要ないなら、回転だけを扱う行列程度に思っとけ。
D3DXQuaternionNormalize()は単に積算等を重ねて誤差の溜まったクォータニオンを
正規化するだけなので、残念ながら見当違い。
クォータニオンからは3x3の回転行列が作れる。
自力で展開してもいいが、D3Dなら D3DXMatrixRotationQuaternion() で4x4の行列が作れるから
その結果使って回転しれ。
400デフォルトの名無しさん:2006/08/27(日) 16:27:55
>>398
初期の方向から回転成分を掛けるだけで求まるだろう。
難しいところでも考えるところでもないのに、
何が分からないのかがさっぱり分からん。
401デフォルトの名無しさん:2006/08/27(日) 16:32:49
何がわからんのかもわからんという状態なんだろう。
お前にもそういう頃が無かったとは言わせんぞ。
402デフォルトの名無しさん:2006/08/27(日) 16:38:37
なにも回転してない状態のベクトルは、自由に決めていいわけだけど、
キャラクタのモデルは、たいてい手前向き(DirectX的に-Z方向)
に作ってあるから、初期ベクトルは (0,0,-1)が無難かしらね。
403デフォルトの名無しさん:2006/08/27(日) 16:41:52
まあ、特別な理由が無いのなら、普通そんなもんだろうな
404デフォルトの名無しさん:2006/08/27(日) 17:11:01
>>367
どうやって
405デフォルトの名無しさん:2006/08/27(日) 17:23:20
クォータニオンは、もうアニメーション制御できるくらいの理解で良いやと思っている
406デフォルトの名無しさん:2006/08/27(日) 19:38:24
実際それで十分だ。
知らなくてもアポロは月までロケット飛ばせたんだしな。
3行3列への展開式を手元に持っておくと、最適化の時に少しだけ便利だ。
407デフォルトの名無しさん:2006/08/27(日) 19:41:02
アポロで思い出したけど、ジンバルロックがよくわからん。
408デフォルトの名無しさん:2006/08/27(日) 19:54:34
>>407
クォータニオン使わずに回転行列作れば嫌でも見ることになるやってみろ。ここで聞くな。
409デフォルトの名無しさん:2006/08/27(日) 19:59:17
ホネホネロックは知ってるんだが
410デフォルトの名無しさん:2006/08/27(日) 20:13:29
>>409
じゃあ、全部歌いきってみろ。
どうせサビしかしらんくせにテキトウなこというな。
411デフォルトの名無しさん:2006/08/27(日) 20:16:52
DirectXの習得には必須事項

人食い酋長が大太鼓 月夜にこっそり叩いたら
博物館の恐竜が 一緒に浮かれて踊ったぜ
ホーネホネロック ホーネホネロック ホーネホネー ホネロック

松明持ってガイコツも ちょうつがい外し踊ったぜ
路地の裏のゴミ箱じゃ イワシの頭も踊ったぜ
ホーネホネロック ホーネホネロック ホーネホネー ホネロック

砂漠じゃ死んだライオンも 鬣乱して踊ったぜ
ムカデや蛇の亡骸も 太鼓にあわせて踊ったぜ
ホーネホネロック ホーネホネロック ホーネホネー ホネロック

ホーネホネロック ホーネホネロック ホーネホネー ホネロック
412デフォルトの名無しさん:2006/08/27(日) 20:43:26
ホネホネロック歌えない奴が居るわけ無いだろ!

ただ411はコピペだな
413デフォルトの名無しさん:2006/08/27(日) 20:45:59
ほーね。
414デフォルトの名無しさん:2006/08/27(日) 20:46:37
ガシャ
415デフォルトの名無しさん:2006/08/27(日) 20:47:36
ちっ!アンガールズ歩いてんじゃねぇよ。
高校時代バリバリの体育会系だった俺からしたら歩いた時点で失格。
拍手なんてなくていい。
416デフォルトの名無しさん:2006/08/27(日) 20:49:43
417デフォルトの名無しさん:2006/08/27(日) 20:51:19
>>416
何気に3D演出(2Dでもできるけどw)でフイタw
418デフォルトの名無しさん:2006/08/27(日) 21:44:51
>>416
なつかしすぎwwwwwwwwwwwwwwwwwwwwwwwwww
419デフォルトの名無しさん:2006/08/27(日) 22:00:20
ボンバーマンのような格子状のフィールド(3D)を一人称視点で移動するプログラムを
作成しています。Zバッファを有効にしているのですが、見る方向によって前後
が正しく表示できません。遠くのもの(壁)は小さく表示されますが、一番遠くのもの(壁)が
一番上に表示されてしまいます。D3DRS_ZFUNCをD3DCMP_LESSに設定すると今まで
おかしかった方向からの視点では正しく描画されるようになるのですが、いままで
正しかった方向からがうまくいかなくなります。
原因などわかりますでしょうか?・・・これじゃ伝わらないですかね・・?
420419:2006/08/27(日) 22:27:50
部分的ですがソースをアップしました。
ttp://www.uploda.org/uporg495059.cpp.html

InitVertexBuffer()で頂点バッファに壁情報を格納して、Render()で描画しています。
どなたかよろしくお願いします!
421デフォルトの名無しさん:2006/08/27(日) 22:44:55
>>420
× 0.0f, // 最も近い面の Z 座標
とりあえず1.0fにすればいいわ。
422419:2006/08/27(日) 22:55:13
>>421
出来ました!!ありがとうございます!
理由はわかりませんが(^^;考えてみます!
5日くらい悩んでたんで助かりました。
423デフォルトの名無しさん:2006/08/28(月) 18:28:38
DirectX SDKのなかにDirectX10のサンプルがけっこうあるけど
どのビデオカードだったら動作させられるんだ?
9800PROじゃ無理だった。

X1000シリーズなら大丈夫なの?
424デフォルトの名無しさん:2006/08/28(月) 18:34:39
テクスチャが描画されね。はまった
ふぁ;kjslkfj;かjf
425デフォルトの名無しさん:2006/08/28(月) 20:06:19
>>423
DX10 Readyと書かれてるやつ
426デフォルトの名無しさん:2006/08/28(月) 20:12:27
>>423
それ以前にOSは何を使っている?
427デフォルトの名無しさん:2006/08/28(月) 20:15:42
それを聞いてハッキングでもする気ですかw
428デフォルトの名無しさん:2006/08/28(月) 20:27:46
この質問にそういう答え方をする時点で予想通りアホだというのは分かった。
ビデオカードをいくら最新にしても動くわけがないだろ。
429デフォルトの名無しさん:2006/08/28(月) 20:39:33
びすたんが必要なんだっけ
430423:2006/08/28(月) 20:46:18
いやVistaにSDK入れたんだよ
んでRadeon9800でリファレンスモードで動かそうとしてもまったく動かない
CPUが「助けて!」ってうなってたから切ったよ

魚うごかしたいのに
http://journal.mycom.co.jp/articles/2006/08/01/siggraph01/images/020l.jpg
431デフォルトの名無しさん:2006/08/29(火) 06:13:59
>>430
普通にただのバンプじゃねぇの?
432デフォルトの名無しさん:2006/08/29(火) 06:42:16
その画像に書いてあるやん・・・
433デフォルトの名無しさん:2006/08/29(火) 07:20:59
じゃ、Radeon9800で動かないわけはないわけだが・・・
434デフォルトの名無しさん:2006/08/29(火) 09:08:00
430は貼った画像が悪いw
ttp://journal.mycom.co.jp/photo/articles/2006/08/01/siggraph01/images/021l.jpg
本題はこっちだろ。430は比較のための従来の手法の説明画像だ。
435デフォルトの名無しさん:2006/08/29(火) 13:38:25
ID3DXAnimationControllerを使った複数モーションに挑戦しているのですが
現在のモーションの再生時間や各モーションの終端フレーム数(秒数)を取得することは出来ないのでしょうか。
歩くモーションの終わりと走るモーションの始め(またはその逆)を繋げば動きが綺麗に見えるのに
現状では歩くモーションの途中で走るモーションに移行し、動きが飛んでいるように見えてしまいます。
436デフォルトの名無しさん:2006/08/29(火) 20:56:36
そんなもん使うな。以上。
437デフォルトの名無しさん:2006/08/29(火) 22:07:02
>>434
それでもディスプレースメントマッピングなんて前からできてたやんけ。
DirectX9にも虎が拉げてるサンプルあったべ。
438デフォルトの名無しさん:2006/08/29(火) 22:57:51
WindowsXP SP2、VisualC++ 2005 Express Editionで、
DirectX SDK入れようと思うんですが、

バージョンは August 2006 で大丈夫でしょうか?
439デフォルトの名無しさん:2006/08/29(火) 23:01:52
>>438
駄目です。
440デフォルトの名無しさん:2006/08/29(火) 23:06:43
>>439
October 2004 なら大丈夫でしょうか?
441デフォルトの名無しさん:2006/08/29(火) 23:08:45
間違えました。

DirectX 9.0 SDK Update (June 2006)
DirectX 9.0 SDK Update (April 2006)
DirectX 9.0 SDK Update (February 2006)

この辺なら大丈夫でしょうか?
442デフォルトの名無しさん:2006/08/29(火) 23:41:56
駄目です。
443デフォルトの名無しさん:2006/08/30(水) 02:55:23
ID3DXAnimationControllerって進化の果てに無駄な抽象化をして
使い物にならなくなったってこと?
444デフォルトの名無しさん:2006/08/30(水) 02:59:59
そんなことは無いっちゃ無いんだが、ドキュメントが無さ過ぎるのが困ります。
まあ、元から珍妙な進化の仕方してた奴だったけど…
コントローラGetしたあとReleaseが必要だって時点で激しくビビった。
445デフォルトの名無しさん:2006/08/30(水) 03:16:40
>>443
つか進化するのはいいんだが仕様が変わりすぎなんだ。
重要な関数が消えたり、なぜか他のと同じ機能の関数が出来てこれは未サポートで従来のを使えとか。
>>444でも書いてる通りドキュメントが明らかに少ないから、VerUp毎にサンプルを弄ったほうが正確じゃないだろうか。
自作するって言ってもそれだけでだいぶ時間が取られるから個人的には重宝してる。
446デフォルトの名無しさん:2006/08/30(水) 03:34:21
モーションのブレンドなんて、誰が書いても大して変わらん品ー。

の割りに、なんでAnimationControlerがあんな変な進化したのかは本気で謎だけど。
誰か止めなかったのか?
447デフォルトの名無しさん:2006/08/30(水) 04:49:16
そんなことは無いっちゃ無いんだが、ドキュメントが無さ過ぎるのが困ります。
まあ、元から珍妙な進化の仕方してた奴だったけど…
コントローラGetしたあとReleaseが必要だって時点で激しくビビった。
448デフォルトの名無しさん:2006/08/30(水) 05:28:58
>>445
>自作するって言ってもそれだけでだいぶ時間が取られるから個人的には重宝してる。
お前、作ったことねぇだろ。
こんなもんかかっても1日ありゃできるし、わざわざ他人様の使って悩まされる時間のがよっぽど無駄だっての。
それにこの辺が複雑に見えるのはようはよくわかってないから。
綺麗にまとめればこんな(AnimationControler)に無駄に複雑にはならない。
449デフォルトの名無しさん:2006/08/30(水) 08:13:13
実際キーの抽出とブレンドして行列を生成するだけだからね。
あとはそれを各フレームに適用するだけ。
別に難しいところは無い。
450デフォルトの名無しさん:2006/08/30(水) 09:35:45
>>448
>>445を擁護するつもりはないが、ゼロから組んで1日で上げる自信は俺には無いなあ。
いや、それこそコード自体は1時間かそこらで十分書きあがるんだろうが、
ちまちま細かい間違いやったりとかしそうだし。
うん、それだけなんだけどね。
451デフォルトの名無しさん:2006/08/30(水) 11:59:05
>>435
LPD3DXAnimationController pAnimCtrl;

・再生時間
D3DXTRACK_DESC desc;
pAnimCtrl->GetTrackDesc( 0, &desc );
desc.Position←コイツ

・終端フレーム
LPD3DXANIMATIONSET pAnimSet;
pAnimCtrl->GetAnimationSet( 0, &pAnimSet );
pAnimSet->GetPeriod()←コイツ
SAFE_RELEASE( pAnimSet );

・移行( Track0→Track1へブレンディング )
pAnimCtrl->SetTrackEnable( 0, TRUE );
pAnimCtrl->SetTrackEnable( 1, TRUE );

pAnimCtrl->SetWeightScale( 0, 1.0f - weight ); 1.0〜0.0へ
pAnimCtrl->SetWeightScale( 1, weight ); 0.0〜1.0へ
452デフォルトの名無しさん:2006/08/30(水) 12:02:29
× pAnimCtrl->SetWeightSacle
○ pAnimCtrl->SetTrackWeight

間違えた
453435:2006/08/30(水) 14:49:47
>>451-452
ありがとうございます。
ID3DXAnimationControllerだけしか見ていませんでしたが他に入ってたんですねorz
454デフォルトの名無しさん:2006/08/30(水) 19:34:03
ドキュメントには一通り目を通しておいた方がいいぞ。
メソッド名とか引数の意味とかは覚える必要は無いが、
どんな機能が用意されてるかくらい知っておけば、こんな所で質問する必要もなくなる。
455デフォルトの名無しさん:2006/08/30(水) 20:55:23
454は454で、一度ドキュメント読んでから説教すべきだと思ったり
456デフォルトの名無しさん:2006/08/30(水) 21:50:02
>>450
だったら、自分のコードのミスよりMSの仕様変更なんか確実にやってくるんだからそのほうが嫌だろ?
DirectXのバージョンが変わったらほぼ確実に組み直しなんだぞ。
457デフォルトの名無しさん:2006/08/30(水) 22:07:08
突然仕様が変わるのはD3DXの高レベルAPI部分だけ。
で、仕様が変わる上に使いにくいのに馬鹿ほど使いたがる。
馬鹿だから自分で何とか出来ずにわめくだけ。
458デフォルトの名無しさん:2006/08/30(水) 22:15:43
>>457
そりゃ初心者スレだしな。
459デフォルトの名無しさん:2006/08/30(水) 23:04:24
いままでスキンメッシュ使うっていうと
シェーダアセンブリとか見せられてなんだか嫌になっちゃった。
って奴多いんだろうな。
HLSLなら気持ちいいほどすっきり組める。
・・・はず。なんだけど肝心のMSのサンプルがこれまた糞。
サンプルとは思えないほど要らんことまでサポートしててスキンメッシュを単体で覚えたい奴向きじゃない。

Xファイルのデータの何をどういう計算に使うのか?
ってところもちゃんとは理解してないまでもスキンメッシュを動かせる程度の理解を求めてもまだ敷居が高いだろう。

さらにできたところでモデリングツールって何のどんな機能を使ってどんなオプションを付けて吐き出せばいいの?
とかいうところまでくるとまた頭が痛い。しかも、物によっては駄目と来てる。(見た目スキニングはできているにも関わらず)

さらに追い討ちをかけるようなアニメーションコントローラーのインターフェイス。

「ここまで御馬鹿さん専用クラスなら、フレーム毎で呼び出す形にして引数1アクション番号、引数2:tでセットして
drawで裏画面に描画って形でアニメーションしてくれてよかったんじゃないか?」

と思うが、実はそんな単純なことにはなっていないどころか
アニメーションコントローラーの仕様はウンコそのもの。これだけ複雑にした割りにはなんの恩恵もないし
できることはアクション番号+tと同じようなもん。にも関わらずこの複雑さ。一体どんな脳みそかかえてんのじゃ?

と、いうわけでスキニング嫌いだったんす・・・でも、最近全部自分で組んですっきりしたよw
460デフォルトの名無しさん:2006/08/30(水) 23:29:38
(´`).oO(なんでこんなに必死になっているんだろ)

サンプルでは読み込みは自力のように見えるけどフレーム管理だけしかしない?
もしかしたら自作より扱うの難しくないか。

461デフォルトの名無しさん:2006/08/31(木) 00:31:34
DirecxtXのGUIについて詳しく解説してくれてるサイトってありませんでしょうか?
ボタンやコンボボックス、エディットボックスを使いたいです。

ぐぐっても見つかりません。
よろしくお願いします。m(_ _)m
462デフォルトの名無しさん:2006/08/31(木) 01:46:16
DXUT自体がドキュメントみたいなもんだー。
頑張ってカットアンドペースとしれ。

つったってDXUT、あんましシンプルとは言い難いんだよな。
情報はググればいくらでも引っかかってくるけど、日本語のドキュメントには大したものは無い。
頑張れー。
463デフォルトの名無しさん:2006/08/31(木) 03:19:53
DirectSoundのバッファが短か過ぎると不安定になるというのが昔あったと思うのですが(DirectX5とかの時代)
今でもそれあります?
464デフォルトの名無しさん:2006/08/31(木) 03:23:00
不安定ってノイズが乗るとかそういう話?
465デフォルトの名無しさん:2006/09/01(金) 01:04:26
DirectXsdkのサンプルのコンボボックスとかボタンとか要らないんだが、どこを削れば良い?
466デフォルトの名無しさん:2006/09/01(金) 01:10:17
EmptyProjectじゃ駄目なのか。
467デフォルトの名無しさん:2006/09/01(金) 01:17:16
>>465
その処理をしてるところ
468デフォルトの名無しさん:2006/09/01(金) 06:55:58
取り敢えずCの入門書を軽く流して
「はじめてのWindowsプログラミング VisualC++」でAPIの
初歩をひととおり学んだのですが,ボチボチdirectxにゲーム作成を
学ぼうと思っています。

とっつきの良さそうな「DXライブラリ置き場」のライブラリを使うべきか
使ってるひとが多そうだけどあまり文献が充実していないLunaを使うべきか悩んでいます。

両方使ったことのあるひとの使用感の違いをお聞きしたいのですが
469デフォルトの名無しさん:2006/09/01(金) 06:57:30
その前にC++を勉強するのが先だと思います
470デフォルトの名無しさん:2006/09/01(金) 07:21:48
APIの学習をやるくらいなら
C++を学んでおいた方がよかったんじゃないかと思う。
471デフォルトの名無しさん:2006/09/01(金) 09:16:54
ゲームでもなんでもそうだけど、CとDirectXAPI(もしくはライブラリ)の使い方がわかったところで
なにも作れないよ。

自分がゲームやって、画面に映ってるシーンがどんなプログラムになってるか
頭の中で多少でも組めないと、無理。

初心者っぽいからDXライブラリを進めとく。
ドキュメントが充実してるし、ゲームのサンプルプログラムもあるから。
472デフォルトの名無しさん:2006/09/01(金) 14:33:55
質問です。なぜか定数として宣言した配列の一部の内容が書き換わってしまい、
終了時に「データが壊れたぞ!」と警告メッセージが出てくるのですが、どうすればいいのでしょうか?
473472:2006/09/01(金) 14:37:54
デバッガーで覗いてみたところ、なぜかtimeGetTime関数を呼ぶと値が変わってしまうようです。
よくわからないので、その部分だけ値を入れなおすようにしました。
474デフォルトの名無しさん:2006/09/01(金) 14:55:32
>>473
constで宣言したって事?

普通にメモリ管理ちゃんとしてないだけでしょ。
どっかの変数に配列を超えて書き込んでるだけ。

つーか、DirectXの話題じゃないし。言語の本でも読んどくといい。
475デフォルトの名無しさん:2006/09/01(金) 15:35:09
>>473
値が変わるときにって条件でブレークポイント設定すればいいと思うよ
476デフォルトの名無しさん:2006/09/01(金) 17:08:59
>>475
たぶんブレークポイントに引っかかるのはシステムのDLL内部だから
473にデバッグは無理w
症状的に、どこかでバッファオーバーランをやらかしていると思う。

バッファオーバーランをしている部分と、定数を破壊している部分が
全然関係ないという類のやつかと。
477デフォルトの名無しさん:2006/09/01(金) 18:12:55
>よくわからないので、その部分だけ値を入れなおすようにしました。
ワロタ
478デフォルトの名無しさん:2006/09/01(金) 18:34:23
道路の上に家を建てたらなぜか壊されてました。
よくわからないので、もう一度建て直すことにしました。
479デフォルトの名無しさん:2006/09/01(金) 23:04:27
DirectXで2D画像表示するためにスプライト使ってるんだけど
スプライト重くて・・・

なんか他にいい方法ない?
480デフォルトの名無しさん:2006/09/01(金) 23:04:49
>>476
自分は473の症状から
何かのポインタ=timeGetTimeの時にstaticのポインタ渡して弄ってる場合ってのが思い浮かんだから
それで解決できると思った。
まぁとりあえず参考意見程度に
481デフォルトの名無しさん:2006/09/01(金) 23:14:41
>>479
何をどうしてどのように重いのか、一切省略せずに適切に書け。
話はそれからだ。
482デフォルトの名無しさん:2006/09/01(金) 23:54:43
>>479
3Dでも60FPS出来るんだ。
全画面1ドットずつ動かしても毎秒60ドットはスライド出来るってことだ。
それと比べても遅いと思うならやり方が間違ってる。
483デフォルトの名無しさん:2006/09/02(土) 01:12:30
9.0だとスプライト表示って3Dより重くね?
484デフォルトの名無しさん:2006/09/02(土) 01:31:15
9.0に限らずスプライトは素の3Dより概ね重い。
本来そっち用途でない3D向けのハードにエミュレーションさせてるのが大半なんで、
性能比で見ると非常に損した気分になる。

でも、それでも必要十分な程度には(むしろお釣りが来るくらい)速いのが普通。
致命的なほどに重いとなったら、使い方に問題があるとしか思えん。

何をどうしてどのように重いのかちゃんと書いたら、>>481が適切に答えてくれるだろう。
485デフォルトの名無しさん:2006/09/02(土) 01:43:05
そもそもDirectXにはスプライト機能など存在しない。
D3DXの似たような名前のAPIをスプライト機能だと思っているのなら完全な勘違い。
あえて言えばオーバーレイや別レイヤで描画されるカーソルがそれにあたるだけ。
486デフォルトの名無しさん:2006/09/02(土) 01:48:40
機能がスプライトなら、それはスプライトだろう。
古式ゆかしくハードで実装してなきゃ認めんとか言うのは勝手だが、論点がずれてる。
487デフォルトの名無しさん:2006/09/02(土) 01:58:09
名前がSpriteを名乗っているだけで、スプライト機能ではない。
もし話を出すのならスプライトと書かずにD3DXSpriteと書くべき。
488デフォルトの名無しさん:2006/09/02(土) 01:58:49
スプライトというより、ピクセルフィルの問題の気がする。
CPU遅いやつなら妥協は必要だと思う
489デフォルトの名無しさん:2006/09/02(土) 01:59:45
むしろ論点が明らかにされていない
490デフォルトの名無しさん:2006/09/02(土) 02:03:13
何をしたのかという条件を明示せず遅い遅いと言われたって、
遅いのはテメエの足りない脳の処理速度だろという話になる。
491デフォルトの名無しさん:2006/09/02(土) 02:09:41
初心者質問スレの癖して、このスレに常駐してるのは毛が生えたばかりの子供が
昔の自分を口汚く罵るだけという罠。
492デフォルトの名無しさん:2006/09/02(土) 02:10:52
>スプライトというより、ピクセルフィルの問題の気がする。
>CPU遅いやつなら妥協は必要だと思う

わかるんだが、それだとスプライト以上に3Dが遅い環境だということに。
つーか>>479は何処行った。
寝たのか?
493デフォルトの名無しさん:2006/09/02(土) 02:13:24
途方もない大議論が展開されているこのスレに
どの面下げてレスしたらいいかわからず影から見守る>>479
494デフォルトの名無しさん:2006/09/02(土) 02:44:03
裏でスプライト関連の警告が出まくってて遅いとかじゃねえ?
495デフォルトの名無しさん:2006/09/02(土) 07:26:46
俺が思わず頭を抱えた発言を一括晒し上げ

> 9.0に限らずスプライトは素の3Dより概ね重い。

> 本来そっち用途でない3D向けのハードにエミュレーションさせてるのが大半なんで、

> そもそもDirectXにはスプライト機能など存在しない。
> D3DXの似たような名前のAPIをスプライト機能だと思っているのなら完全な勘違い。

> 名前がSpriteを名乗っているだけで、スプライト機能ではない。
> もし話を出すのならスプライトと書かずにD3DXSpriteと書くべき。
496デフォルトの名無しさん:2006/09/02(土) 08:43:53
中身ってただの板ポリちゃうんかと・・・
497デフォルトの名無しさん:2006/09/02(土) 09:35:35
最低限、CPUとビデオカード、
そしてどのくらいのサイズの物を一つのフレームにいくつ出して何FPSで、
どの程度を想定して遅いと言っているのかぐらい書くのは質問する上での義務。
498デフォルトの名無しさん:2006/09/02(土) 10:18:11
スプライトスプライトってX68000じゃあるまいし
Windowsマシンにスプライト機能はありませんよ
499デフォルトの名無しさん:2006/09/02(土) 10:51:34
つ【FM TOWNS】
500デフォルトの名無しさん:2006/09/02(土) 10:57:11
ドリキャス
501デフォルトの名無しさん:2006/09/02(土) 11:16:33
502デフォルトの名無しさん:2006/09/02(土) 12:38:41
おそらくパーティクルみたいなのを1スプライト1DrawPrimitiveで大量に出していると見た。
503デフォルトの名無しさん:2006/09/02(土) 13:30:07
X68000の奴が正しいスプライト機能って誰が決めたんだろう・・・
504デフォルトの名無しさん:2006/09/02(土) 13:41:56
基準は別レイヤになっているかどうか。
なっていなければスプライト機能ではない。
505デフォルトの名無しさん:2006/09/02(土) 13:50:55
>>504
それはどこで定義されてるの?
君の脳内以外で。
506デフォルトの名無しさん:2006/09/02(土) 13:57:00
>>505の脳内以外の全域。
507デフォルトの名無しさん:2006/09/02(土) 14:03:25
508デフォルトの名無しさん:2006/09/02(土) 14:14:43
しかしMSも、イメージを描画するだけの機能によくSpriteとか、
頭の弱い馬鹿を勘違いさせるような名前を付けたよな。
509デフォルトの名無しさん:2006/09/02(土) 14:47:08
スプライトってID3DXSPRITEインターフェイスの話じゃないの?
描画するだけで糞重いんだが違うのか。
510デフォルトの名無しさん:2006/09/02(土) 14:49:35
また重いとしか書かない馬鹿が来た。
脳味噌が足りないのは十二分に分かったから最低限の情報ぐらい出せ。
511デフォルトの名無しさん:2006/09/02(土) 14:52:02
>>508
以後1000までスプライトの定義について話し合いますか?

ちなみにセガサターンみたいなのはどう認識してるわけ?
512デフォルトの名無しさん:2006/09/02(土) 14:53:44
もう放置しろよ。
513デフォルトの名無しさん:2006/09/02(土) 14:57:47
もう結論は出てるしね。
514デフォルトの名無しさん:2006/09/02(土) 15:05:58
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>479
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |
515デフォルトの名無しさん:2006/09/02(土) 15:06:39
なんか最近無理やり2Dゲーム作ろうとしてるボーヤが
こことかゲーム製作技術板にも一定数いるみたいだな。
なんでそんな無駄なことしてるのか一体どんなゲーム目指してるのか一度聞いてみてぇ。

マップチップで作りたいとかもう時代じゃねぇんだよ。
色んなリソース食い潰した挙句そんなショボイもん作ってどうするのかと。
DirectXのスプライト機能なんて板ポリちゃうんかとあのクラスなにか恩恵あるのかと。
お前、どこまで脳みそ無いのかと。
516デフォルトの名無しさん:2006/09/02(土) 15:16:13
時代とか関係ないだろクズ
517デフォルトの名無しさん:2006/09/02(土) 15:19:51
結論
D3DX系の高レベルAPIは使うな。
APIそのものも腐っていれば使う奴はもっと腐っている。
518デフォルトの名無しさん:2006/09/02(土) 15:28:54
>>517
DirectXは腐っているから自前でGPU叩こうぜ。
Windowsは腐っているから自前でOS書こうぜ。
x86アーキテクチャは腐っているから自前で設計しようぜ。
この世界は腐っているから(ry
519デフォルトの名無しさん:2006/09/02(土) 15:29:10
テクスチャ読む('A`)マンドクセに
520デフォルトの名無しさん:2006/09/02(土) 15:32:14
>>516
あるよ。
マップチップ配置してるゲームって見た目ショボイもんしかできないじゃん。
一体何を目指してるのかマジで知りたい。
vectorにもマップチップ使ったショボイゲームが転がってるけど
何を目指してそんな見た目にしようとしたのかマジで聞いてみたい。

SRPG作るならFFTみたいなの作りたいとか思わないのかと。
521デフォルトの名無しさん:2006/09/02(土) 15:35:03
見た目信者はPS3でも買ってろw
522デフォルトの名無しさん:2006/09/02(土) 15:39:25
>>521
いや、見た目がすべてとはいわないけどさ。
わざわざショボクする必要はないわけじゃん。
523デフォルトの名無しさん:2006/09/02(土) 15:52:50
マップチップを使っている人は
わざとしょぼい物を選んでいるというわけではないと思うが…。
そんなに言うなら手当たり次第本人に忠告してやったらどうだ?
524デフォルトの名無しさん:2006/09/02(土) 15:55:14
>>523
なんかそれ荒らしっぽいじゃん。
それになんか参考にしてるゲームでもあるのかもしれないし。
525デフォルトの名無しさん:2006/09/02(土) 16:02:06
>また重いとしか書かない馬鹿が来た。
実際描画1つで糞重いんだからしょうがないだろうがwwwwww
526デフォルトの名無しさん:2006/09/02(土) 16:08:57
もうビデオカード増設しかないだろ。
http://akiba.ascii24.com/akiba/news/2006/05/26/imageview/images809266.jpg.html
527デフォルトの名無しさん:2006/09/02(土) 16:38:34
お前のPCが糞杉なんだよwwwwww
528デフォルトの名無しさん:2006/09/02(土) 16:48:04
>>525
描画一つで何十秒もかかるのか。
オマエの脳内PCも大変だな。
529デフォルトの名無しさん:2006/09/02(土) 16:49:29
無茶な結論を示してくれたり
人が作ってるものの内容を一々気にしてくれる親切な人がいたり
ほんとの初心者は実は見ないほうがいいスレになってるなここ
530デフォルトの名無しさん:2006/09/02(土) 16:52:39
実際の所、D3DXのSpriteとかFontとかX系の機能は使わない方がいい。
531デフォルトの名無しさん:2006/09/02(土) 16:54:22
昔から、DirectX初心者(が)質問(を叩く)スレだよ?
532デフォルトの名無しさん:2006/09/02(土) 17:10:11
>>526
何このゴキブリwww
533デフォルトの名無しさん:2006/09/02(土) 17:23:46
>>528
ID3DXSPRITEのDraw1回分でDrawPrimitiveで4角形(3角形2個分)24〜25個の描画が出来た。
後者はトランスフォーム済み頂点使ってるから対比するには合ってないかもしれないけど
お世辞にも「軽い」とか「同じぐらい」と言えるレベルじゃない。
なんでこんな関数消さずに残しているのだろうか。
534デフォルトの名無しさん:2006/09/02(土) 17:38:38
初心者ホイホイなんじゃね?w
535デフォルトの名無しさん:2006/09/02(土) 17:39:34
ちゃんとした例で示したのは偉すぎるが
4角形とか3角形とかって凄い表記だな。
536デフォルトの名無しさん:2006/09/02(土) 17:51:11
>>533
SDKのバージョンは?
537デフォルトの名無しさん:2006/09/02(土) 18:03:45
>>536
いや、本当に普通に遅いんじゃね?
俺も一度使っただけだけどそんとき「おっせ」って結論出した記憶がある。
厳密に数字出したわけじゃないけど。
まあ、それ以上に俺が思ってたようなことができなくて扱いづらくて止めたって記憶もあるが。
538デフォルトの名無しさん:2006/09/02(土) 19:08:03
・頂点バッファロック
・描画する分板ポリ情報を頂点バッファにCopyMemoryする
・頂点アンロック
・頂点ストリーム設定、頂点シェーダ設定とか諸々
・DrawIndexedPrimitiveで描画

これじゃあダメなんすか?
539デフォルトの名無しさん:2006/09/02(土) 19:54:31
>>538
ちょこっとだけシェーダ書けば(ホント5〜6行)
ロック、アンロックもする必要ないんじゃない?
540デフォルトの名無しさん:2006/09/02(土) 20:21:26
2Dの弾幕ゴチャキャラゲームがザラにあるのに
簡単に重い言うなよ
541デフォルトの名無しさん:2006/09/02(土) 20:39:24
>>540
ああいうのはDirectXのスプライトなんて使ってたらできないだろ。
542デフォルトの名無しさん:2006/09/02(土) 20:43:43
DirectXにスプライト機能など無い。
543デフォルトの名無しさん:2006/09/02(土) 20:46:09
>>542
いや、だからD3DXSpriteのこと。
544デフォルトの名無しさん:2006/09/02(土) 20:47:54
>>542
てか、いちいちうざいな。
日本語は話の流れを組み取るようにできた言語なんだよ。
だからよくあるセリフのほとんどに主語が存在しない。
まあ、言ってみれば馬鹿には扱えない言語ってことw
545デフォルトの名無しさん:2006/09/02(土) 20:50:37
間違いを正していかないと、勘違いする馬鹿が量産されるだろ。
省略していいものと間違いとは全く別の話。
546デフォルトの名無しさん:2006/09/02(土) 21:00:10
だいたい、そんな昔のスプライト機能なんて知ってる奴のがめずらしいだろw
まあ、知ってるけどさw
まさか、今、話題だしてそのスプライトのこと言ってるとは思わないよ。
547デフォルトの名無しさん:2006/09/02(土) 21:04:00
DirectXにスプライト機能など無い。
DirectXにスプライト機能など無い。
DirectXにスプライト機能など無い。
DirectXにスプライト機能など無い。
DirectXにスプライト機能など無い。
DirectXにスプライト機能など無い。
DirectXにスプライト機能など無い。
DirectXにスプライト機能など無い。
548デフォルトの名無しさん:2006/09/02(土) 21:18:00
>>542は昔のスプライト好き過ぎ。
そんな古の技術が神秘大陸アトランティスと共に沈んだときに
>>542も一緒に心中すればよかったのに。
549デフォルトの名無しさん:2006/09/02(土) 21:21:54
背景の復元機能まで実装していたら、ソフトウエアスプライトとして名乗っても何の問題もない。
しかし少なくともDirectXにはそんなAPIは存在しない。
550デフォルトの名無しさん:2006/09/02(土) 21:33:21
間違いを指摘されても、頭が悪いのにプライドだけは高い奴は、
決して自分の間違いを認めず、間違ったまま恥の上塗りをし続ける。

しかしほとぼりが冷めた頃、いつの間にか間違いを正して、
以前の間違っていた事実を無かったことにする。
551デフォルトの名無しさん:2006/09/02(土) 21:38:29
なんか沸いてるなw
552デフォルトの名無しさん:2006/09/02(土) 21:52:37
で、話を元に戻すけどD3DXSpriteは遅いの?
(スプライトって書くと妙なのが湧くから面倒でもこう書こう)
553デフォルトの名無しさん:2006/09/02(土) 21:59:24
D3DXのSprite、Font、X関係は使い物にならない。
554デフォルトの名無しさん:2006/09/02(土) 22:32:56
じゃ、早いスプライトって何?
555デフォルトの名無しさん:2006/09/02(土) 22:33:34
飲み物。
556デフォルトの名無しさん:2006/09/02(土) 22:41:24
2004年頃のD3DXSpriteと比べると今のは段違いに速いよ
ただ基本的に楽するためのものだから速度や自由度に差はある

弾幕系だと楽になるわけでもないので他の方法で組めよ
557デフォルトの名無しさん:2006/09/03(日) 01:28:58
>>556
速度上がったんだ。
知らなかった。
つーか今までが理不尽なくらい遅くて使い物になら無かったからなあ。
普通にバラで使うなら楽でいいが、例によって弾幕系はあれか。
頂点バッファ自前で持ってトリプルバッファリングとかで回しつつロックしまくりか。
DrawPrimitiveUPでだだ書きしても速度なんか大して変わらんかった気もするが、どうでもいいね。
558デフォルトの名無しさん:2006/09/03(日) 01:33:14
D3DXのFontは、あれ英語圏に特化してるもんなー。
文字コードが散ってる国じゃ、レンダリング結果のキャッシュなんか使い物にならん。
普通に書いてたらGDIよか遅くなるくらいだし。
つーかご丁寧にWindowsGDIのフォーマット指定なんか真似しないでいいのに。
使い辛いったらない。

D3DXのX関係は、誰だこんなん作った奴はってくらいのわかり辛さだが、
機能自体はそれなりに充実してるよな。
アロケータを継承してカスタム化したりする一連の手続きを拒絶反応起こさずに
呑めるかどうかはあるが、素性としてはそんなに悪くない。
ゼロから自分で書くのも面倒くせーしな。

アニメーションコントローラは死んでいい。リアルで。
559デフォルトの名無しさん:2006/09/03(日) 07:09:17
使いこなせない奴の僻みキタ――(゚∀゚)――!!
560デフォルトの名無しさん:2006/09/03(日) 09:05:39
>>559
こんなもん使わなきゃできない時点で終わってるw
561デフォルトの名無しさん:2006/09/03(日) 09:11:54
(・∀・)ニヤニヤ
562デフォルトの名無しさん:2006/09/03(日) 09:16:42
>>561
いや、さすがにあるもの使えっていっても使えるものと使えないものがあるよ。
D3DXSpriteにしてもアニメーションコントローラーにしても作った奴のセンスが糞過ぎて
どうにも使い物にならない。
563デフォルトの名無しさん:2006/09/03(日) 09:41:49
そうそう、さすがに居る人使えっていっても使える人と使えない人って居るよね。
564デフォルトの名無しさん:2006/09/03(日) 10:02:58
>>563
お前のこと?w
565デフォルトの名無しさん:2006/09/03(日) 11:00:37
D3DXSpriteはまだ許せるがFontはどうしようもない
566デフォルトの名無しさん:2006/09/03(日) 11:07:23
DirectXにスプライト機能など無い。
567デフォルトの名無しさん:2006/09/03(日) 11:24:31
ドリキャスハァハァ
568デフォルトの名無しさん:2006/09/03(日) 19:11:39
 
569デフォルトの名無しさん:2006/09/05(火) 00:53:18
SDK(Augaust2006)で作ったプログラム動かそうと思ったら
d3dx9_30.dll←これがないって出るんだが…
570デフォルトの名無しさん:2006/09/05(火) 00:55:45
ふーん
571デフォルトの名無しさん:2006/09/05(火) 06:29:11
>>569
http://d.hatena.ne.jp/ginpei/20060805/1154783971

ワロスw
もう、グダグダもいいとこだなw>DirectX
同人かよw
ホントに1企業の企画するシステムなんかよw
開発担当者が1人だけ割り当てられてて、そいつしかチェックしてないだろw
しかも、気分で定期更新。
572デフォルトの名無しさん:2006/09/05(火) 07:03:20
そのdllはアプリケーションと一緒に配布しないといけないものなのに
配布しない奴が悪いんだろう。
573デフォルトの名無しさん:2006/09/05(火) 07:08:44
>>572
普通の感覚が失われつつあるがそのシステムからいって頭おかしいけどなw
574デフォルトの名無しさん:2006/09/05(火) 07:49:55
>>571
GameSDKの頃から統括してた人はDX7で辞めちゃって違う人になってる。
だからDX8でごちゃごちゃし始まって、DX9なんて好き勝手やってる状態。
周りに振り回されてその場しのぎで仕上げるのがバレバレ。
575デフォルトの名無しさん:2006/09/05(火) 08:14:06
こう言っちゃなんだが、DirectX7までだって非道かったけどな
特に5や6までは、初期化すら出来ない奴が多かったろう
576デフォルトの名無しさん:2006/09/05(火) 09:42:18
>>575
いやそうではなくて
一貫して現場出身の人間が統括していたのがDX7までってこと
だから気難しいSDKだったと思う
577デフォルトの名無しさん:2006/09/05(火) 10:28:33
ごちゃごちゃし始めたのは、なにも8からじゃないわな
578デフォルトの名無しさん:2006/09/05(火) 10:47:57
ごちゃごちゃ所か、8以降は、もの凄いすっきりして来ている様な。
良くD3DXのアニメーション周りと、そのDLLの件が引き合いに出されるけど、俺にとってはどちらも瑣末だな。
579sage:2006/09/05(火) 12:01:13
シーン(カメラアニメーション、ライトアニメーション)付の人物モデルを
DirectX9で表示したいと思っていて、モーション付の人物モデルは.xファイル
で吐き出そうと思っているのですが、カメラやライトのアニメーションデータ
や背景データ(ビルボードで作成予定)はどのような形式で吐き出せばよい
のですか?(一般的なのですか?)ちなみに、3DSMAX8を使用します。
初めてDirectXを使って3Dプログラミングをやるため、どのような形式でデータ
を用意すればよいかわかりません。
どなたか教えていただけないでしょうか?
580デフォルトの名無しさん:2006/09/05(火) 13:57:44
DirectSoundで
コンパネで設定されているExclamationとかQuestionの設定を取得して鳴らせますか?
581デフォルトの名無しさん:2006/09/05(火) 16:57:01
助けてください。

Xファイルに頂点2点設定して
SDKのサンプルViewerでその線分を見ることは可能ですか?
582デフォルトの名無しさん:2006/09/05(火) 17:34:07
マルチウザ


はわわわわわ
583デフォルトの名無しさん:2006/09/05(火) 17:47:39
>Xファイル
584デフォルトの名無しさん:2006/09/05(火) 19:01:06
現在directXでキャプチャするソースをsdkについていた playcapを弄って書いています。
開発環境は VS.NET2005で、現在までに
フレームのサイズを落としたりインターレースの解除はできたのですが
fpsの変更というのがよくわかりません。

ヘルプを見ると
VIDEOINFOHEADERでできそうだったので

VIDEOINFOHEADER *pVih = (VIDEOINFOHEADER*)pmt->pbFormat;
pVih->AvgTimePerFrame = 666667;//フレームレート決定(100ナノ秒)
pConfig->SetFormat(pmt);

こんな感じで書いて見ましたが全く駄目だったので
IAMTimelineを使い

CoCreateInstance(CLSID_AMTimeline, NULL, CLSCTX_INPROC, IID_IAMTimeline, (void **)&g_pAmtime);
g_pAmtime->SetDefaultFPS(10);
みたいな感じで書いてみました。

がこちらも全く駄目した。

フレームレートを変更するにはどうしたらいいのでしょうか?


585デフォルトの名無しさん:2006/09/06(水) 16:08:42
>>584
http://www.microsoft.com/JAPAN/developer/library/jpdx8_c/ds/ref/iface/IAMStreamConfig.htm#SetFormat

「全く駄目」じゃ進歩がないよ。エラーコードをちゃんと調べなきゃ。
586デフォルトの名無しさん:2006/09/06(水) 17:28:06
DirectXを使ってプログラミングしているんですが
DirectXで描画した上にボタンやエディットボックスなどを表示できなかったのですが
ゲームなどで見かけるボタン等は自分で実装するものなのですか?
それとも自分のやり方が悪かったのでしょうか?
587デフォルトの名無しさん:2006/09/06(水) 18:00:06
単純な設定ミスと自己解決しました
スレ汚しごめんなさい
588デフォルトの名無しさん:2006/09/06(水) 22:07:14
>>586
いろんなアプリがあるからなんとも言えん。
もうぶっちゃけゲームゲームした画面なら99%が自前だと思うよ。
たまにWin32APIのを使ってるのもあるけどゲームアプリでイベント処理するの面倒臭いw
589デフォルトの名無しさん:2006/09/06(水) 23:09:48
>>586
コンフィグとかだけWin32APIで作って
本編のゲームと独立してるやつって結構ない?同人ゲーとか
590デフォルトの名無しさん:2006/09/07(木) 00:00:59
>>589
ああ、なんか主人公の名前入れるところで
日本語入力ができる(IME?)ゲーム画面みたことあるなぁ。
ちゃんとイベント処理すりゃできるんじゃねぇ?(とか、よくわからんけどテキトーなこと言ってみるw)
でも、俺だったらゲーム画面に取り込むようなことしないで設定なら
泥臭いMFCウィンドウだしちゃうかな。
主人公の名前ぐらいは用意したほうが雰囲気いいとおもうが、
さすがにIPやら解像度設定までゲーム画面で頑張らなくていいと思う。
591デフォルトの名無しさん:2006/09/07(木) 07:44:21
>>586
コントロールのためのWM_があるんでそれ拾えば対応できるよ
ソースはネットに転がってるからお好きなのどうぞ
592デフォルトの名無しさん:2006/09/07(木) 14:49:38
>>586
DXUTを解析すればいい
593デフォルトの名無しさん:2006/09/08(金) 02:53:44
これから目標のDirectXを学び始めようと思っています。
最低限動くソースに自分で追加改良して習うより慣れろ的なやり方で学びたいのですが
どこのサイトを見てみても2、3年前のものばかりでソースをそのままコピペしたものでは
ためしにコンパイルすることもできません。
dswごと入ったサンプルならもちろんコンパイルできるのですが、
これを編集していって慣れていくやり方で将来オリジナルのものを
作れるようになるものなんしょうか?
できれば勉強方法のアドバイスとかが欲しいです
594デフォルトの名無しさん:2006/09/08(金) 02:58:34
工学社からIO別冊でDirectX9の本が出てる。
必ずしも良書とは言いがたいし、DX7くらいの頃から内容も大して変わってないが、
高価いもんじゃないし、CDにソース付きでサンプルが大量に入ってる。
入門って意味ではそれなりにオススメ。
595デフォルトの名無しさん:2006/09/08(金) 03:16:23
拾ったシャキーンのソースをコンパイルしたらd3dx8.hが無いと起こられたのですが
DirectX9ではコンパイル不可なのですか?
596デフォルトの名無しさん:2006/09/08(金) 05:00:51
(`・ω・´)
597デフォルトの名無しさん:2006/09/08(金) 09:20:49
>>593
お金かかるが、>>594の方法にしなさい。
どこのサイトの話かわからんけど、ソース公開してるのにコンパイルできないんじゃ
DirectXというよりWIN32API(もしかしたら言語レベル)とかの知識が全然足りないと思う。
598デフォルトの名無しさん:2006/09/08(金) 14:40:07
言語レベル以前に、ツールレベルで知識が足りないように見えるがね
コピペして出来たソースをプロジェクトに追加する方法すら分かってない気がする
599デフォルトの名無しさん:2006/09/08(金) 14:56:32
大文字英数字使うプログラマの助言は、なにか安っぽいなw
600デフォルトの名無しさん:2006/09/08(金) 15:31:26
>>599
ほとんどがアウト
601デフォルトの名無しさん:2006/09/08(金) 15:46:04
サンプル云々以前にチュートリアルをやればいい。
602デフォルトの名無しさん:2006/09/08(金) 15:54:23
工学社の本のサンプルこそ
そのままではコンパイルできないんじゃなかったっけ?

>>593はよく調べていないだけ。ちゃんと調べれば出てくる。
603デフォルトの名無しさん:2006/09/08(金) 16:03:49
今からDirectX9をやるならこの本が一番良いな
ttp://www.amazon.co.jp/gp/product/toc/4798013161/

工学社の奴は9.0cに対応していない
604593:2006/09/08(金) 17:30:37
いろんなアドバイスありがとうございます。
Cを一通りとC++のクラスだけやった程度ではまだまだ
初心者の域にすら入れていなかったようです・・・。
もう一度勉強し直して初心者の域まできてからまたよろしくお願いします。
605デフォルトの名無しさん:2006/09/08(金) 17:35:00
いやぁ一時的にVC6.0を捨てようと思ったぜ・・・

もぅ.NETなのか・・・。
始めてVC見たとき感動したのにな・・・orz
606デフォルトの名無しさん:2006/09/08(金) 19:16:48
>>599
大文字/小文字と全角/半角を混同する方も大差ないと思うw
607デフォルトの名無しさん:2006/09/08(金) 21:07:45
>>604
君の言葉どおりだとC++はクラスだけだとしても、Cは使えるんだよな?
だったら、VC++EE2005とDirectX9SDKをDLすれば、とりあえず環境はバッチリ整うぞ。
無料だし。俺も同じ環境でやってる。
608デフォルトの名無しさん:2006/09/08(金) 21:22:51
頭の中の環境が整ってない
609593:2006/09/08(金) 22:01:57
>>607
本当にいろいろありがとです

自分もVC++EE2005でC/C++の勉強してまして、そろそろDirectXの勉強もしてみたいと思い初め
DirectX9SDKとPlatform SDKも導入したので環境の方はばっちりなんですが>>608のとおり頭の方が・・・。
とりあえずいろんな解説サイトを周って見たもののサンプルはver8で作られたソースだったり、
そのままコンパイルしても突然増えたたくさんのヘッダとライブラリに関するエラーが続出して唖然としてばっかりです。
ツールの知識もディレクトリの設定やらリンカ→入力の設定など基本的なことしかわからないので
自分では対処もできそうにないのでまた最初から出直してこようと思った次第です。


610デフォルトの名無しさん:2006/09/08(金) 22:02:04
もうめんどうだしDXライブラリとか使っちゃえよ
611デフォルトの名無しさん:2006/09/08(金) 22:22:23
もうDirectX直いぢりは素人にはおすすめできんな。
仕事にするのでもなければ、大人しくライブラリ使ったほうが賢いと思う。
612デフォルトの名無しさん:2006/09/08(金) 22:26:41
ライブラリの楽なところは、Dx周りがバグってても掲示板で直せっていうだけで直るからな。
613593:2006/09/08(金) 22:44:03
ホントにいろんな助言いただいて恐縮です。
実はここ↓のページで勉強しようとしていたときにライブラリ使ってやっていたのですが
ttp://ponk.jp/el/index.php?page=0
型が違うとエラーが出まくりでして・・・。どうもVC6時代のものだと最近のコンパイラでは
厳密に判断し過ぎて型チェックでエラーが出るとかなんとか。

もうホントどうしようもねーな俺・・・
614デフォルトの名無しさん:2006/09/08(金) 22:54:50
型は分かるが、CのI/O周りでエラー出すのはマジウザイ
615デフォルトの名無しさん:2006/09/08(金) 23:31:22
>>609
とりあえず、ウィンドウ出すだけのソースとかコピーしてみれば?
あれは毎回コピペだから変わんねーし。

それすらもコンパイル通せないんだったら、素直に本を買うといい。
616593:2006/09/09(土) 00:28:01
>>615
ttp://www.shader.jp/xoops/html/masafumi/ready2.htm
このソースをコピペしてやってみましたが結局無理でした。
絶対的に知識がないこともわかり明日から書籍で勉強する決心もつきました。
結局出たエラーがこれ↓だったのですがエラーの原因だけ教えていただけないでしょうか。
たくさんやらかしてしまったスレ汚しはこれで最後にしますのでどうかよろしくお願いします
ttp://newsstation.info/up/img/ns12975.htm
617デフォルトの名無しさん:2006/09/09(土) 00:37:55
まんま。
文字コードセットをUNICODEにしてる。
文字列定義してるところにLつけてL"ぬるぽ"みたいにするか、
マルチバイト文字使用に切り替える。
VC2005とかEEだとUNICODE使用が標準なんで、少し前のソースは
そのままだとビルド通らないことは結構ある。
618デフォルトの名無しさん:2006/09/09(土) 00:47:36
>>616
つーか、超親切なエラーがでてるじゃん…

>>617の方法とか、TEXTマクロつかうとか。
この辺は自分で具ぐれ。
619デフォルトの名無しさん:2006/09/09(土) 01:40:45
>>616
ソースまるまるコピペじゃ力つかないよ。
他の人も言うようにウィンドウ作成から地道にやるべし。
ドキュメントのチュートリアル1オススメ
ウィンドウ表示できたらキャラクタ描画とかキー入力とか一つずつ入れていく。
620デフォルトの名無しさん:2006/09/09(土) 02:11:17
そうそう。
一見、わかりきった作業でもやってみなきゃわからんもんさ。
とくになんもかんもわからんときは、今わかってるつもりのものが
実はわかってなかったって場合が多い。

完全にブラックボックス扱いならまだしも、
触らなきゃいけない部分でおぼろげに見えてるだけのものなら一度は組んでみるべき。
621デフォルトの名無しさん:2006/09/09(土) 02:13:23
まあ、根気が続けばの話だがなー。
作りたいゲームがあるなら、DXUTとかをわけもわからず使うのも有りだろ。
細かなところを自分で書くのも、それはそれでまあまあ楽しいが。
622593:2006/09/09(土) 02:46:45
>>617,618
このことがわかっただけでほかのエラーがぐっと減りました・・・。
やっぱり基礎から地道にですね・・。
大学生は暇なんでがんばってきます!
623デフォルトの名無しさん:2006/09/09(土) 03:08:41
>>622
プログラミングに関しては何事も経験だ。がんばれー!
624デフォルトの名無しさん:2006/09/09(土) 07:36:49
目的にもよるんだよなぁ。
DirectXを習熟するのが目的ならWindowsAPIから色々と調べて、
いずれは自前のライブラリを・・・・って感じだろうけど、
ゲームを作るのが目的ならありもものライブラリ引っ張ってくる方が
はるかにいいわけだし。
DirectXをまじめに習熟なんてゲーム作るよりまんどい。

ゲーム作るために自前ライブラリってパターンはほぼ確実に途中で投げるな。
625デフォルトの名無しさん:2006/09/09(土) 13:01:54
だな。
どうしてもゲーム作りたくて、最低限のスキルが欲しいなら、
いっそプロになってしまうのに限る。
毎日画面に向き合ってりゃ、その程度のスキルは嫌でも身につく。
ゲーム作る気力はごっそり萎えるが。
626デフォルトの名無しさん:2006/09/09(土) 23:51:36
DirectXを使った、チャットアプリを作りたいのですが、
参考になるサイトってありますでしょうか?
627デフォルトの名無しさん:2006/09/10(日) 00:12:05
ソース丸パクリできるレベルで参考になるサイトは知らない
628デフォルトの名無しさん:2006/09/10(日) 02:27:06
>>626
そもそもチャットのどこにDirectXを使いたいのか。
629デフォルトの名無しさん:2006/09/10(日) 03:01:01
頂点バッファを使った描画で、DrawPrimitive時に増えたVRAMを解放するにはどうすればいいのでしょうか?
630デフォルトの名無しさん:2006/09/10(日) 03:52:40
頂点バッファを開放しろ。
参照の期限はドライバだけが知っている。
管理しようと思うな。
631デフォルトの名無しさん:2006/09/10(日) 08:09:30
>>628
チャット画面とは別に3Dのおねぇさんが横で踊ります。
ここにDirectXを使います。
相手のレスを解読して反応を返します。

(例)
「こんにちは、いやー今日は・・・(略)・・・でしたよ」
→「○○さん、今日は機嫌がいいみたいだね!」

という感じです。
また、レス情報に付加して自分の状態を伝えるたり、ファイルを付加することもできます。

(例)
「こんにちは、いやー今日は・・・(略)・・・でしたよ」<state:楽>←感情コマンド(付加するとこっちの状態を伝える)
→「○○さん、今日は機嫌がいいみたいだね!」

「ちょっとみせたいものが・・・」<file:C:\Doc\bbbin.bin>←ファイル添付コマンド
→「はーい、○○さんから!贈り物!いつものところにおいておくね!」

というアフォなアプリケーションです。こっちは正直、キャラ萌え狙いでしょうか?
また、オプションで切り替えて画像チャット(画像掲示板のようなものです。レスといっしょに画像が送れます。)もできます。

と、いう仕様です。
632デフォルトの名無しさん:2006/09/10(日) 08:39:25
>>631
それはチャット部分とDirectXを使う部分に分離できるから
DirectXを使ったチャットと質問する意味がない。
別々に作って糊で張り合わせればいいだけ。
633デフォルトの名無しさん:2006/09/10(日) 09:15:59
チャット程度ならWinSock使ってTCP/IPで通信すりゃええ
634デフォルトの名無しさん:2006/09/10(日) 10:57:17
>>632
そうだな、「DirectX を使った、3Dのおねぇさんが踊るアプリを
作りたいのですが、」の方が回答者も真剣になると思う。(w
635デフォルトの名無しさん:2006/09/10(日) 11:03:09
626 = 某社の奴

このチャットは特典としてつく奴だろ
636デフォルトの名無しさん:2006/09/10(日) 11:47:37
>>635
くやしく
637629:2006/09/10(日) 14:26:53
>>630
ありがとうございます。
638デフォルトの名無しさん:2006/09/10(日) 18:08:53
>>631
きめぇ・・・
639デフォルトの名無しさん:2006/09/10(日) 21:27:14
描画について質問させてください。
DirectXでSetRenderTargetを用いて、
BackBufferではなくCreateTexture関数を用いて生成したテクスチャーに
シーンを描画したいのです。

しかしながら、その際Zバッファーが適用されずポリゴンの描画順序が
おかしくなってしまいます。
CreateTextureを用いて生成したテクスチャーにZバッファーを適用
する方法はあるのでしょうか?どなたかお知恵を貸してください。
640デフォルトの名無しさん:2006/09/10(日) 21:35:22
>>639
俺は何も考えずにSetRenderTarget使ったら
勝手にバックバッファと同じZバッファが使われたけどな・・・

たぶん前の値が残ってるんだと思うからZバッファをクリアしてみたら?
641デフォルトの名無しさん:2006/09/10(日) 22:41:16
IDirect3DDevice9::SetDepthStencilSurface()

基本的にレンダリングターゲットを変更した場合はZバッファも設定しなおし。
Viewportも設定しなおす方がいい。

SetRenderState()でZ関係の設定も再設定すると安心。

デバイス生成時にZバッファ自動生成だとどうなるかワカラン。
642639:2006/09/10(日) 22:56:50
で・・・できたー!テクスチャーにZバッファーを適用出来たよっ!
ご指摘された部分に加えて、テクスチャ生成時、サーフェイス生成時の
バックバッファと同じサイズに調整しなければならなかったようです。

640さん、641さん、ありがとうございます!
643デフォルトの名無しさん:2006/09/10(日) 23:03:24
同じサイズではなく、同じサイズ以上なら問題ない。
644デフォルトの名無しさん:2006/09/11(月) 00:18:34
小さいサイズでもViewportがサーフェイス内に収まってたら平気じゃないっけ?
645-403-:2006/09/11(月) 00:35:54
DirectX9の最新バージョンをインストールしたいのですが、自分のPCが清規Windowsか
いわれます。
どうにかダウンロードする方法教えていただけないでしょうか?・
646デフォルトの名無しさん:2006/09/11(月) 00:38:58
ダウンロード版に帰れ。
それが嫌ならMSに金払え。
いずれにしてもこのスレには帰ってくるな。
647デフォルトの名無しさん:2006/09/11(月) 00:42:31
こういうところで堂々と違法ソフト使ってますと書くのもすごいな
648デフォルトの名無しさん:2006/09/11(月) 06:35:50
>>645
>どうにかダウンロードする方法教えていただけないでしょうか?

正規版買えばいいんじゃね?w
649デフォルトの名無しさん:2006/09/11(月) 08:36:31
DirectXがWinが正規か判断するとは思えん。
650デフォルトの名無しさん:2006/09/11(月) 09:47:46
Microsoftのサイトが判断してるんだよ。
Windows UpdateやMicrosoft Updateなんかでも認証してないと
正規版使えハゲって言われる。
651デフォルトの名無しさん:2006/09/11(月) 09:49:30
じゃあその辺が突っ込んでくるActiveXをつつき回せば、
何を持ってして正規版か判別しているか解るから、
そこを適当に誤魔化してやれば回避できるって事だな。
652デフォルトの名無しさん:2006/09/11(月) 10:49:32
そんな面倒なことをしなくても普通に正規品を使えばいいだけの話。
653デフォルトの名無しさん:2006/09/11(月) 11:07:39
認証って何だ。シリアル入力のことか?
そんなのした覚えないけど。
654デフォルトの名無しさん:2006/09/11(月) 11:24:47
>>645
上のほうの 今すぐ確認 とか書いてあるところをクリックしたら確認される。
655デフォルトの名無しさん:2006/09/11(月) 11:25:32
>>651
それは不可だろ。
656デフォルトの名無しさん:2006/09/11(月) 13:39:43
つ[ スルー ]
657デフォルトの名無しさん:2006/09/11(月) 22:14:20
日給換算すれば、そんなの解析するより買ったほうが安上がりじゃないか?
まあ無職だというなら納得だけど。
658デフォルトの名無しさん:2006/09/12(火) 00:55:03
WindowsXPのProfessionalって3万くらいで買えなかったっけ?
Visual Studio Professionalの16万に比べたら安いもんだろ。
659デフォルトの名無しさん:2006/09/12(火) 01:19:04
無職でもなきゃ普通に買うだろうな。
その程度の買い物もできんモラル足らずの無職に恵んでやる知識なんかねーよ。
くたばれ。
660デフォルトの名無しさん:2006/09/12(火) 01:22:15
DirectPlayってデンジャラス?
661デフォルトの名無しさん:2006/09/12(火) 01:23:37
もうサポートされないって意味ではデンジャラス。
662デフォルトの名無しさん:2006/09/12(火) 01:27:41
>>661
d
663デフォルトの名無しさん:2006/09/12(火) 03:36:15
マルチテクスチャマッピングについての質問をさせてください。
テクスチャの上にアルファチャンネルを保持したテクスチャ(PNG画像を読込)を描画させることにかなり苦戦しています。
http://www.kurokichi.net/inside/up/src/up1881.jpg
この画像のように背景テクスチャ(Tex0)とα値保持のテクスチャ(Tex1)を合成して右端のを表示させたいのですが、
現状では白色が透明色になったり、元の画像では完全に透明の部分が黒で表示されたりします。
SetTextureStageStateに何の値を入れ組み合わせれば画像のような合成が出来るのでしょうか。

見た目はTex0をテクスチャにしたポリゴンの上にTex1をテクスチャにしたポリゴンを描画し、それを上から見たのと同じになります。
ただ、これだと処理が多くなるのでテクスチャの合成を試みています。
664デフォルトの名無しさん:2006/09/12(火) 04:06:23
3D(ライト無)で、テクスチャ付きで描画しようとしているのですが

struct LVERTEX_UV
{
D3DXVECTOR3pos;
D3DCOLORcol;
D3DXVECTOR2uv;

static const DWORDFVF;
};
const DWORD LVERTEX_UV::FVF = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1;

と宣言しておいて
D3DXCreateMeshFVF( div*2, div*2, D3DXMESH_MANAGED , LVERTEX_UV::FVF , g_pd3dDevice , &m_pMesh );
で作成して
Lockして内部パラメータ設定して

g_pd3dDevice->SetTexture(0,m_tex);
m_pMesh->DrawSubset( 0 );
で描画してるのですが、テクスチャが表示されません。
形はきちんと表示されています。

ので座標系の設定は間違っていないと思います。
m_texもきちんとロード済みです。UVの範囲は0〜1.0fです。
何が間違っているのでしょうか?
665デフォルトの名無しさん:2006/09/12(火) 04:58:56
ポリゴンの姿勢制御で質問があります

ちょっと言葉で伝えるのが難しいのですが、
Y軸を45°傾けた状態でX軸を回転させるのではなく、
直接斜めに回転させたいのですがどうすればよいでしょうか?

1┌─┐2
3│ ..│4
5└─┘6

上の図で言うと、2-5で結んだ角度でぐるぐる回したいのです
よろしくお願いします
666デフォルトの名無しさん:2006/09/12(火) 06:40:27
>>665
一番楽なのがローカル座標を使うこと。
つまり、2-5の線を軸にもつマトリックスをもって普通に回転させる。

もう1つは、@Z軸に対して2-5がY軸に垂直になるように傾ける
→AY軸を回転させたいだけまわす→BZ軸に対して2-5が元の位置に戻るように傾ける。
具体的に>>665の図でいうと
@Z軸-45度傾ける(2-5をY軸に垂直に)
AY軸をまわす
BZ軸45度傾ける(2-5を元の位置に戻す)
ってやる。
667デフォルトの名無しさん:2006/09/12(火) 07:02:13
>>663
D3DTOP_BLENDTEXTUREALPHA
668663:2006/09/12(火) 09:42:04
>>667
レスありがとうございます。
試してみましたが
http://www.kurokichi.net/inside/up/src/up1886.jpg
このように完全に透明な部分が真っ黒になってしまいます。

pDevice->SetTextureStageState(0,D3DTSS_COLOROP,D3DTOP_SELECTARG1);
pDevice->SetTextureStageState(0,D3DTSS_COLORARG1,D3DTA_TEXTURE);
pDevice->SetTextureStageState(1,D3DTSS_COLOROP,D3DTOP_BLENDTEXTUREALPHA );
pDevice->SetTextureStageState(1,D3DTSS_COLORARG1,D3DTA_CURRENT);
pDevice->SetTextureStageState(1,D3DTSS_COLORARG2,D3DTA_TEXTURE);
       ステージ0:Tex0(画像左上)    ステージ1:Tex1(画像左下)

これは間違っているのでしょうか?
669デフォルトの名無しさん:2006/09/12(火) 10:02:03
Zバッファについて質問なのですが、複数の描画先(レンダーターゲット)で
一つの深度バッファを使いまわすことは出来ないのでしょうか?

特定のモデルを描画したピクセルだけを別なテクスチャに抜き出したくて、
そのモデルを描画する際にレンダーターゲットに別なテクスチャを指定して、
深度バッファだけはいままで使用していたものを使いまそうとしています。

// 描画先の変更
LPDIRECT3DSURFACE9 rt;
newTexture->GetSurfaceLevel(0,&rt);
g_pD3DDevice->SetRenderTarget( 0, rt);
rt->Release();

//いったんクリア
g_pD3DDevice->Clear(0, NULL,
D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER, D3DCOLOR_ARGB(255,0, 0, 0), 1, 0 );


//今まで使ってた深度バッファを適用
g_pD3DDevice->SetDepthStencilSurface( pZbuffer );

といったプログラムを組んでるのですが、描画先を変更する前の
深度バッファの値は新しい描画先では無視されてしまい、
レンダータゲット変更前に描画されたオブジェクトの影になる部分まで
表示されてしまいます。
深度バッファを使いまわすことは出来ないのでしょうか?
670デフォルトの名無しさん:2006/09/12(火) 10:43:57
>>666
ありがとうございます

D3DMATRIX m1, m2, m3;
D3DMatrixRotationZ( &m1, PI*0.25 );
D3DMatrixRotationY( &m2, y );
D3DMatrixRotationZ( &m3, -PI*0.25 );
m1 = m1*m2*m3;
という処理にしてみた所、上手くいきました、
45°ではなく任意の角度でやってみた所

D3DMATRIX m1, m2, m3;
D3DMatrixRotationZ( &m1, z );
D3DMatrixRotationY( &m2, PI*0.25 );
D3DMatrixRotationZ( &m3, -z );
m1 = m1*m2*m3;
こういう処理をした場合、zがどの角度であっても生成されるマトリクスは同じものになると思うのですが
実際には傾きが変化しつづけて相殺できません
回転軸を任意に回転させるにはどうすればよいでしょうか?
671デフォルトの名無しさん:2006/09/12(火) 12:03:41
>668
ARG1とARG2逆じゃね?
672663:2006/09/12(火) 12:32:09
>>671
ありがとうございます
無事解決できました
673デフォルトの名無しさん:2006/09/12(火) 13:40:04
>>669
>無視されてしまい
D3DCLEAR_ZBUFFERしてるからじゃないのか
>>670
任意軸周りの回転行列を出すD3DXMatrixRotationなんとかっていう関数があるから探すんだ
674デフォルトの名無しさん:2006/09/12(火) 14:02:33
>>673
D3DXMatrixRotationAxisですね
ありがとうございます、希望の動きになりました
675デフォルトの名無しさん:2006/09/12(火) 14:18:26
676デフォルトの名無しさん:2006/09/12(火) 15:02:36
なんとなくはDirect3Dのサンプルプログラムや本買ってきて理解したんだけど、
複雑なモデルを表示させるには当然モデラーがいるんだよね?
そのへんがよく理解できてないんだけど、フリーウェアでDirect3Dでも読み込める
形式で出力可能なモデラーってあるんですかね?
677デフォルトの名無しさん:2006/09/12(火) 15:18:33
metasequiaが無料でxも出力する

けど、モーションはない
678デフォルトの名無しさん:2006/09/12(火) 15:23:41
>>677
さんくす。使ってみるよ。
でもモーションが使えないとかは残念な気がするけど、そこまで自分のスキルが
追いついてないからちょうど良いのかも。
679デフォルトの名無しさん:2006/09/12(火) 15:46:02
680デフォルトの名無しさん:2006/09/12(火) 16:38:33
今はモーションまで吐けるフリーソフトが結構あるよ
Animadioとか、MotionWorksしかなかった頃に比べると便利になったもんだ
MotionWorksも良かったけど、フレームアニメーションだけだったしな
681デフォルトの名無しさん:2006/09/12(火) 16:44:21
kwsk
682デフォルトの名無しさん:2006/09/12(火) 18:53:33
親戚「大学どこよ?おいらっち早稲田なんやけど〜wwwwww」
俺「東大です」
親戚「・・・え・・・!?」
俺「東京帝国大学です。」
親戚「・・・う、うわあ・・・ああ・・・ああああああああああ(イスから転げ落ちる)」
俺「どうかしましたか?」
親戚「ああ、あふゥッ・・・ひいいい・・ガクガク(足が震える)」
俺「やだなあ、そんなにびびらないで下さいよ。ちょっと頭がいいだけです
  から^^」
親戚「ああ・・あ・うんっ・ああ・・・ビクンビクン(小水を漏らす)」
俺「ちなみに理3です。」
親戚「あんっ!ああん・・らめ・・・もうらめえ!ビクンビクン(射精する)」
683デフォルトの名無しさん:2006/09/12(火) 20:27:23
Windows2000のパソコンを親戚からお下がりでもらったので
ttp://www.amazon.co.jp/gp/product/4899771517/
この本で遊んでみようと思い、インストールしました。
コンパイル済みのサンプルを実行するとなにも起動せずに終了して、
exeと同じフォルダにログファイルが出来ていたのでそれを見ると
「0:DXライブラリは24ビットカラーモードに対応していません」
という文章が書き込まれていました。
このパソコンでは24ビットモード以上にはならないみたいなのですが、
どのようにプログラムを書き直せばうちのパソコンでも動くのでしょうか?
(16ビット以下には落としたくないです。)
684デフォルトの名無しさん:2006/09/12(火) 20:31:01
24ビット以上にならないのなら24ビットも使えない。
685デフォルトの名無しさん:2006/09/12(火) 20:41:27
>>683
16bitカラーで使うしかない。
686デフォルトの名無しさん:2006/09/12(火) 21:22:13
あの、法線マップとかいろいろ使うと
三角ストリップとかの高速化技術は意味なくなってくるものなんですか?
それはそういうものだとしてこのまま行っていいものでしょうか?
687デフォルトの名無しさん:2006/09/12(火) 21:25:43
>>681
メタセコイアで形を作ってmqoファイルに吐き出す
→RokDeBone2でmqoファイルを読み込んでモーションを作る
(→RDB2で複数のモーション合成)
688デフォルトの名無しさん:2006/09/13(水) 02:05:36
>>670
もう、解決したからどうでもいいっぽい?
でも、一応w

そのやり方だとY軸に垂直にしなきゃならんので
正方形なら必ず45度にしないといけないんだ

つまり、長方形だとすっげぇ半端な角度になったりする
まあ、D3DMatrixRotationAxisのほうがいいね(俺はその関数しらんかったけどw)
689デフォルトの名無しさん:2006/09/13(水) 20:00:28
>>681
mikotoデータを流用できるmikoto2x筆頭に
吐き出し部分書けば好きなデータも付けられるプログラマ向けのRokDeBone2、
αテスト中だけど一本で出来るMusket、
シェアで良いならエルフレイナも分かりやすくて良さそうだな
後はBlenderでも吐けそうだ。プラグイン誰か書いてたような
690デフォルトの名無しさん:2006/09/13(水) 23:09:05
初期化についての質問なんですが、
初期化の仕方によって、FPSって変わるものなんでしょうか?

書籍や、そこらのホームページに載ってる方法で、初期化したものは、
大体75FPSぐらいしか出ないのに、SDKのサンプルを利用したものだと
普通に100FPSを超えます(表示するものはポリゴン一個)

どこを弄ればこんなにも差が出るのでしょうか?
よろしくお願いします
691デフォルトの名無しさん:2006/09/13(水) 23:16:35
まさかとは思うが垂直同期とってるとかいう落ちはないよな?
692デフォルトの名無しさん:2006/09/13(水) 23:17:50
>>690
http://tpot.jpn.ph/t-pot/program/103_FPSFixing/index.html

レスした後で、「実はDirectX7SDKを使っています」とかいう攻撃を受けたぐらいじゃ俺は倒れない。
693デフォルトの名無しさん:2006/09/14(木) 00:01:04
>>691 >>692

ありがとうございます。
そのまさかの、垂直同期とってることが原因でした。
D3DPRESENT_PARAMETERS構造体のメンバーPresentationInterval
の設定をしなかったせいで、デフォルトの値0(D3DPRESENT_INTERVAL_DEFAULT)
になってしまい、垂直同期を行っていました。
そのため、D3DPRESENT_INTERVAL_IMMEDIATEを設定し、垂直同期しないように
した所、FPSが120ぐらいになり改善されました。

実際に、SDKのサンプルを見るとコメントに
↓こう書いてあったので、これで正解みたいです。
// For windowed, the framework defaults to D3DPRESENT_INTERVAL_IMMEDIATE
// which will wait not for the vertical retrace period to prevent tearing,
// but may introduce tearing

694デフォルトの名無しさん:2006/09/14(木) 00:13:57
Win98を無視するならフルスクリーンでならリフレッシュレート弄れるんだよなぁ
695デフォルトの名無しさん:2006/09/14(木) 00:44:25
>>686
> あの、法線マップとかいろいろ使うと
> 三角ストリップとかの高速化技術は意味なくなってくるものなんですか?

そんな質問をしているようじゃ、とても法線マップとか使えないから安心しな。
696デフォルトの名無しさん:2006/09/14(木) 01:26:34
ヒント:外積
697デフォルトの名無しさん:2006/09/14(木) 01:52:15
ストリップは単に頂点キャッシュの効率最大化が目的だしなー。
上に何張ろうと有効性は変わらないよ。

最近はもう少しすすんで、オブジェクトを外側から内側に書くよう
渦巻き状にストリップを進めるみたいだね。
こうすると無駄なフィルが減ってオクルージョンカリングの効率が向上し、
帯域保護に繋がると。
色々考えるもんだ。
698デフォルトの名無しさん:2006/09/14(木) 02:11:06
外積ってなんですか?
699デフォルトの名無しさん:2006/09/14(木) 02:20:41
法線マップとかを使ったときの負荷を考えると
ストリップ化した程度の高速化では焼け石に水。
とかいう意味でなら、>>686 も正解と言える。

外側→内側に描画するのはZテストで早期にはじくためにも
以前から言われてたことだけど、オクルージョンカリングがハード側で
行われるようになれば格段に速くなるかもね。

アルファブレンディングを考えると内側→外側なんだけどな(´Д`)
700デフォルトの名無しさん:2006/09/14(木) 06:48:59
俺もストリップ化なんてやらねー。
全然、速くなんてならない。
貼るものが固定だったときはそれなりだったけど
もうメッシュごとにテクスチャ切り替えまくって描画してるし
ストリップ化してもマテリアルが違うからほとんど結びつかない→ストリップ化してない状態とほとんど変わらない。
701デフォルトの名無しさん:2006/09/14(木) 21:17:49
C++(orC)/DirectXでゲームを作ってる人、エディタは何使ってる?
何かのパッケージを買おうと思うものの・・・・・・どれもそれなりの値段だからなぁ・・・・・

イマイチ踏み切れない俺
702デフォルトの名無しさん:2006/09/14(木) 21:27:10
>>701
VC++2005EEでいいじゃん。
703デフォルトの名無しさん:2006/09/14(木) 21:28:01
ee jumpを思い出した
704デフォルトの名無しさん:2006/09/14(木) 22:52:09
FPSを100くらいに抑えてある状態だと問題ないんですが
抑えないで300くらいの状態で動かすと一定間隔でがくっっとなってしまいます
何が原因なんでしょうか・・・
FPSを抑えてるときは問題ないことから
ハードウェアのほうがいっぱいいっぱいなのかな?と思うんですが
情報が少なすぎかもしれませんが、思い当たることがあればご教授ください
705デフォルトの名無しさん:2006/09/14(木) 22:58:54
>>704
時々でいいので、OSにも処理を戻してあげてください。
イベント残業が溜まってしまいますので・・・
706デフォルトの名無しさん:2006/09/14(木) 23:09:35
即レスありがとうございます
一応レンダリングが終わったらSleepしてたんですが・・・1だけ
ちょっと増やしたらその分FPSも落ちますが制限しなくても大丈夫になりました
707デフォルトの名無しさん:2006/09/15(金) 00:14:15
つーかFPSなんて60ありゃ十分だろう
708デフォルトの名無しさん:2006/09/15(金) 00:21:29
>>707
やだよ。
なんか最近75はほしいと思うようになった。
709デフォルトの名無しさん:2006/09/15(金) 00:29:45
FPS75を維持するってことは実際問題として
グラフィック的なクオリティはかなり妥協するってコトだぞ。

2Dゲームなら余裕だろうけど。
710デフォルトの名無しさん:2006/09/15(金) 00:38:34
>>709
結構すらすら動いてるよ。
711デフォルトの名無しさん:2006/09/15(金) 00:42:43
FPS75で3Dすらすら動くとか言ったら、どんだけポリゴンが少なくてショボイかがばれちゃうぞ
712デフォルトの名無しさん:2006/09/15(金) 00:48:46
>>711
60で動くもんは75でもだいたい動くよ。
カメラの設定が悪かったりデザイナが腐れミカンだと一画面にポリゴン敷き詰めすぎてよろしくない。
俺は、速度が出ないのって最適化とかグラボの処理速度より、
この辺のセンスが悪いことが原因の方が大きい気がするけどね。
713デフォルトの名無しさん:2006/09/15(金) 00:55:58
全部デザイナーのせいって言ってるようなものじゃねぇか....
714デフォルトの名無しさん:2006/09/15(金) 01:01:07
BumpとかHDRとかやってないなら十分出そうではあるが・・・
あとはゲームのシステムにもよるか。
715デフォルトの名無しさん:2006/09/15(金) 01:53:49
60FPSは半ば以上慣習的なもんだしなー。

ときに一応人間の筋反射は1/16秒前後が限界、
連続量の見切りだけなら1/100程度までいくらしい。

PCが速くなった分フレームレートを上げるのはいいんだが、
今度は昔に比べて遥かにメジャーになった液晶の反応速度の問題が出てくるな。
こっちの反応速度は高級品でもなければ実質50FPS程度。
それ以上にしたところで残像まみれで見れたもんじゃなくなる。
つーか下手すると回路の都合で信号を捨てられたりしてしまう。

75FPSあたりからフリッカフリーになるとは言うが、
それは走査線走らせてるモニタの話で、液晶とかでは関係ない。

あんまり速くしたところで、今度はノッキングの問題が出てくるし、
結局のところ自己満足の世界だな、今のところは。
716デフォルトの名無しさん:2006/09/15(金) 03:29:28
絶望した!垂直同期の話がまったく出てこない現状に絶望した!
ディスプレイが60回しかフレームの更新してないのに、200回300回更新して何の意味があるよ。
717デフォルトの名無しさん:2006/09/15(金) 03:34:45
75以上出るデバイスはあるのと、操作自体の感度は上がるので。
まあ、絵に描いた餅だけどな。

液晶は大抵60固定で、実質30未満なんてのもザラだけど。
そんなんでも普通に使うには困らんからなー。
718デフォルトの名無しさん:2006/09/15(金) 06:15:53
別に液晶の話なんてしてねーし。
ただ、いいディスプレイ使ってる奴にはいい画でプレイしてほしいね。ってだけ。
719デフォルトの名無しさん:2006/09/15(金) 09:06:27
TVも60くらいじゃなかったけ?
FPS30で何が困るっちゅうんだろう?
720デフォルトの名無しさん:2006/09/15(金) 09:28:50
そもそも映画はFPS24だしな。
垂直同期に関してはソフト側でリフレッシュレートを
Win9X系では自由に変えられなかったから
その流れでWindowsはタイマーで管理って流れがあるし。

いっちゃ何だが今は液晶の方が利用者は多いと思うぞ。
FPS75だと半分に落とすことが出来ないしいっそ80で作ったら?
721デフォルトの名無しさん:2006/09/15(金) 09:38:01
CRTほしんだけどな・・・・
722デフォルトの名無しさん:2006/09/15(金) 10:53:24
つーかハードごとに違ってメンドくせーから、DirectXが標準で60FPS、ディスプレイも60FPSを必ずサポートして
初期化で完全に同期するようにしてほしい。
それ以上の解像度は性能の高いものだけサポートされると。

コンシューマはこの点でうらやましい。
723デフォルトの名無しさん:2006/09/15(金) 12:31:22
>>717
> 75以上出るデバイスはあるのと、操作自体の感度は上がるので。
操作系の処理は別スレッドでやれよ・・(;´д`)
724デフォルトの名無しさん:2006/09/15(金) 13:02:39
FPSとかリフレッシュレートの話をすると、最後は宗教論争になるぞ。
警告はした、あとは知らん。
725デフォルトの名無しさん:2006/09/15(金) 13:55:54
アニメは24fps
726デフォルトの名無しさん:2006/09/15(金) 18:23:12
俺の携帯は5fps
727デフォルトの名無しさん:2006/09/15(金) 19:50:59
FPSを固定しなければすべて解決。
728デフォルトの名無しさん:2006/09/15(金) 21:46:13
それもそうだ
なぜ皆固定したがるんだ?
729デフォルトの名無しさん:2006/09/15(金) 21:54:09
じゃ、FPS非固定のゲーム作ってくれ。
リプレイ付きで。
730デフォルトの名無しさん:2006/09/15(金) 21:55:22
>>728
可変だと色々調節するの面倒だからじゃん。
731デフォルトの名無しさん:2006/09/15(金) 21:56:06
>>729
まだ、STG作ってんのか?w
732デフォルトの名無しさん:2006/09/15(金) 22:16:28
可変でもリプレイは普通に作れるゾ
733デフォルトの名無しさん:2006/09/15(金) 22:36:31
>>730
しずちゃーん、平成18年だよ? 平成3年の知識ひけらかすのやめてよー。
734デフォルトの名無しさん:2006/09/15(金) 22:37:01
別にユーザーの環境によって多少速度変わっても
ええんじゃね?と思う。
どうせわかんねえよ。
'60FPS'って適当に文字列を表示してたら。

バーチャとかアーケード筐体の対戦ゲームの開発者ならともかく
735デフォルトの名無しさん:2006/09/15(金) 22:54:13
>>734
甜菜現る
736デフォルトの名無しさん:2006/09/15(金) 23:12:40
FPSは固定した方が断然楽だからな。
可変(非固定)にすると衝突した時の計算とかスゲー大変。

>>734
可変=速度が変わる ってのは間違いだぞ。
FPS非固定っていうのは要するにカクカクな動きになるってことだ。
移動速度とかは変わらない。(変わらないようにしなくてはいけない)
FPS可変なら、敵が弾幕撒いたときに回避が楽になるジャマイカ。
738デフォルトの名無しさん:2006/09/15(金) 23:34:17
>>737
オマエもか(;´д`)
739デフォルトの名無しさん:2006/09/15(金) 23:59:25
>>737
また馬鹿が一人。
740デフォルトの名無しさん:2006/09/16(土) 00:03:20
ヒント:名前欄
741デフォルトの名無しさん:2006/09/16(土) 00:20:14
固定にしてても描画が追い付かなければOUT(;´Д`)
742デフォルトの名無しさん:2006/09/16(土) 00:41:55
論点が違うのでOUT(;´Д`)
743デフォルトの名無しさん:2006/09/16(土) 02:21:58
固定で描画が追いつかなければ計算部分だけ落ちた分回せばいい
744デフォルトの名無しさん:2006/09/16(土) 11:23:43
>>743
それをやるために1フレの目標FPSを決めてそれを基準にするんじゃないか?
745716:2006/09/16(土) 21:21:52
>>724
>FPSとかリフレッシュレートの話をすると、最後は宗教論争になるぞ。

分かってるんだけどきれーにスルーされてるのがむかついたもんでついな。

てか、皆泥沼を恐れてこの話題避けてるから、
D3DPRESENT_INTERVAL_IMMEDIATEにしたら速くなったぞやったーで終わっちゃう無邪気な初心者と、
カクカク動くゲームが量産されてるんだよ。DirectXローカルで閉じてるのならまだいいが、
最近はゲーム機やアーケードにまでそういう無頓着な作りのゲームが紛れ込んできてるからな。
たぶんDirectX出身のプログラマがアホやってるんだろう。

ディスプレイがハードウェア的に固定回数のフレームの刷新をしていることを無視して、
究極の映像美などありえんのだよ。

と燃料投下
746デフォルトの名無しさん:2006/09/16(土) 21:32:34
>>745
無頓着とかDirectXは関係ないだろう。
処理落ちなんてアーケードでは普通にあること。
2Dの頃は処理落ちしたらそのままゲームのスピードまで遅くなっていたんだから
今よりよっぽど無頓着だったかと。
747デフォルトの名無しさん:2006/09/16(土) 21:57:28
>>746
ちと論点がずれてるっぽい。
処理オチだけの話じゃないし、そういうレベルの話じゃない。

俺は >>716 が危惧してることも分からなくはないが、
垂直同期というのもを理解しようとしない人が多いのと
FPSには強い信念を持ってる人が強情なのと、とにかく議論が平行なんだよね。

基本的にコンシューマ機ではティアリングとか無視できないけど
PCではリフレッシュレートが一様じゃないのと、スペック的に
60FPSで回すこと自体が満足にできないマシンが多いから、諦められる。

知って実装してる人と、知らなくて理解をしようともしなくてゲームを作ってる
人がいることは、大変な危機感を抱く。本当はみんなに理解してほしい。
748デフォルトの名無しさん:2006/09/16(土) 22:18:01
理解してない人が心配ってのは、ようするに60fpsを下回るような
プログラムで満足しちゃうってこと?
常時48fpsくらいで回ってるみたいな。
749デフォルトの名無しさん:2006/09/16(土) 22:28:24
>>748
そういう心配じゃなくて、ハードの特性を理解しないままでいるってことが。

垂直同期が60/秒だったら、それ以上速いタイミングで画面を更新しても
意味がないっていうか、そもそも更新することができないってこととか。
垂直同期を無視した場合に、画面にチラチラ何かが横切ってる(ティアリング)
原因がわからないとか。

無知を心配してるんじゃなくて、「でも、まあ動いてるからいいか」とか
「こっちの方が速くなった」とかで満足してる人が心配。
750デフォルトの名無しさん:2006/09/16(土) 22:36:58
ユーザが同じハードを使うなんて
どこのゲームメーカだ?
751デフォルトの名無しさん:2006/09/17(日) 01:10:27
DirectX9でサーフェイス作成してサーフェイスに画像ファイルを読んで
バッファに転送して画像を表示しています。
このサーフェイスのRGBの値は変更出来るのですが、アルファ値が変更出来ません。
どうしたらいいでしょうか?
752デフォルトの名無しさん:2006/09/17(日) 01:34:07
サーフェスのフォーマットにアルファは含まれているか。
アルファ書き込みモードはONになっているか。
753デフォルトの名無しさん:2006/09/17(日) 02:06:35
>>752
サーフェイスもバックバッファも全部アルファありにしてみたんですがダメでした
テクスチャのアルファは普通に変更出来るんですが、サーフェイス作成の方は
出来ないです。
なにか設定が足りないんでしょうか…
754デフォルトの名無しさん:2006/09/17(日) 03:25:25
質問に便乗。
LockRectで取得したピクセル列の並びがよく分からない。
ピクセルを4バイトずつ進めても上手く書き込めない。
アルファ値だけおかしい。
755デフォルトの名無しさん:2006/09/17(日) 03:32:31
サーフェスのフォーマットは?
756デフォルトの名無しさん:2006/09/17(日) 10:22:37
>>751
何をしたいのかわからんがサーフェイス間転送ってそのまんまコピーしかできないぜ。
DirectX7みたいなカラーキーの処理は無理。

そもそもStretchRectできるサーフェイスってD3DPOOL_DEFAULTのみなんだし
ロックできないんじゃねーの?
757デフォルトの名無しさん:2006/09/17(日) 10:30:49
メッシュについての質問なんですが、
下記の工程1の場合に比べ、工程2で描画した方が、なぜか描画のFPSが飛躍的
にあがります。これは、どのようなことが原因なのでしょうか。
ちなみに作成したメッシュは立方体*36であり、立方体の6面、それぞれに対して
テクスチャを貼り付けてるので、アトリビュートの値は、それぞれバラバラで
整理されていません。

よろしくお願いします。

工程1:
D3DXCreateMeshFVFで空のメッシュを作る

頂点、インデックス、アトリビュートをロックして情報を入れる

描画する

工程2:
D3DXCreateMeshFVFで空のメッシュを作る

頂点、インデックス、アトリビュートをロックして情報を入れる

D3DXSaveMeshToXでXファイルを作成する

メッシュを解放

作成したXファイルをD3DXLoadMeshFromXで読み込み、新しくメッシュを作る

新しく作ったメッシュで描画する

758デフォルトの名無しさん:2006/09/17(日) 10:33:47
>>757
1と2でメッシュがどう変わってるのか調べればいいじゃないか。
759デフォルトの名無しさん:2006/09/17(日) 10:39:23
頂点をハードでもってるか、ソフトでもってるかの違いだけだったりしてw
760デフォルトの名無しさん:2006/09/17(日) 11:11:36
Optimize
761デフォルトの名無しさん:2006/09/17(日) 11:12:56
>>758
今、調べてみたんですが、
作成したXファイルをD3DXLoadMeshFromXで読み込んだ方のメッシュは、
なんか、最適化されてるみたいです。
バラバラになってるはずのアトリビュートの値が整頓されており、
対応するようにインデックスの値も最適化されていました。
最適化を行うOptimize関数は、プログラムに書いていないので、
D3DXLoadMeshFromX関数によって、xファイルから読み込む時に最適化されてる
ようです。

D3DXLoadMeshFromX関数って、勝手に最適化するんですか?
ヘルプには、単にXファイルを読み込む関数としか書いてないんですが・・
情報お願いします
762デフォルトの名無しさん:2006/09/17(日) 11:16:58
ホントに最適化のせいなんかなー。
頂点作るときにハードかソフトかの設定が影響してんじゃねーの?
763デフォルトの名無しさん:2006/09/17(日) 11:17:44
メッシュの中身をデバッガで見れば分かることで(ry
764デフォルトの名無しさん:2006/09/17(日) 11:18:36
ところで立方体*36は全部同じ頂点バッファに突っ込んでる状態?
765757:2006/09/17(日) 11:33:59
>>762
>>763
デバッグでメッシュの中身を見た結果が>>761です。
ちゃんと、整頓されてました。

>>764
D3DXCreateMeshFVF関数を呼び出して、メッシュを作る時に
頂点の数を引数に指定するわけですから、この関数の内部で頂点バッファ
が作られ、その頂点バッファに
pMesh->LockVertexBuffer(0, (void **)&pV);
でロックして全部頂点を突っ込んでます。
766デフォルトの名無しさん:2006/09/17(日) 17:19:39
>>761
断言はできないけど、D3DXSaveMeshToX で最適化してるんじゃね?
出力されたXファイルの中身を確認してみなよ。
767757:2006/09/17(日) 19:19:21
>>766
D3DXLoadMeshFromX関数が、やっぱり最適化してました
これで、一つ疑問が解けました。
ありがとうございました
768デフォルトの名無しさん:2006/09/18(月) 02:19:09
そこまで来たら、ついでにSave&Loadを使わない方でも
Optimizeしてみて比較するのが真のプログラマ。
769デフォルトの名無しさん:2006/09/18(月) 09:11:00
>>768
それはDX10で無駄になるのでやめるべきだろう
770デフォルトの名無しさん:2006/09/18(月) 09:45:05
Xファイルなんて右も左もわからない初心者が3Dモデルをロードするだけのものじゃん。
ブラックボックスの仕様に悩まされるなんて馬鹿らしいと思わないの?
771デフォルトの名無しさん:2006/09/18(月) 09:48:56
全然ブラックボックスでも何でもない。
D3DXの高レベルAPIが癌なだけ。
772デフォルトの名無しさん:2006/09/18(月) 11:37:31
IAnimationControlerとか気まぐれで仕様変えるヤツを
使わなきゃ癌ってほどひどくはないだろ。

普通のXファイルを普通にアニメーションさせるぶんには問題ない。

テクスチャUVを複数もてないのがネックといわれていた頃もあったけど、
今じゃそんなの使わないし・・・デカールは1つありゃ十分だ。

デカール以外のテクスチャ座標は全部シェーダー内で作るしな。
773デフォルトの名無しさん:2006/09/18(月) 11:49:44
あほみたいに初心者レスなんだけど、2D処理する場合
昔のDirectDrawとDirectX Graphicsって結構違うの?
774デフォルトの名無しさん:2006/09/18(月) 12:06:42
>>773
ずいぶん違う。
昔のは回転とかしようと思うだけでアフォかってほど手間がかかる。
しかも、激遅。
今のは今ので3D絡んで面倒だけど楽は楽。
775デフォルトの名無しさん:2006/09/18(月) 12:10:35
>>774
ありがとう。
初期化処理とか手続きとかAPI名とかも変わってるの?
776デフォルトの名無しさん:2006/09/18(月) 12:11:57
もう、実はホント速い処理いらないし、
とりあえず画像が表示できて回転も拡縮もできてちょっと速度あればいいんだけど
ってときはDirectXじゃなくてGDI+を勧めるけどな。
仕事でツールが必要になって最近使ってみたけど、これで十分ってときはあるはずだわ。
DirectX初期化するの馬鹿らしいときは使える。

http://park17.wakwak.com/~dragoon/mfctop.htm
http://park17.wakwak.com/~dragoon/gdiplus5.htm
777デフォルトの名無しさん:2006/09/18(月) 12:12:50
>>775
そりゃもちろん。
いまのがずっと楽。
778デフォルトの名無しさん:2006/09/18(月) 12:22:42
D3DXはスキンメッシュの読み込みにもバグがあって使い物にならない。
779デフォルトの名無しさん:2006/09/18(月) 12:35:41
>>778
詳しく
780デフォルトの名無しさん:2006/09/18(月) 13:07:44
むかしどっかのスレに書いたから探してこい。
781デフォルトの名無しさん:2006/09/18(月) 13:15:28
>>780
無理。いま、IE7入れたからバグりまくってて検索する気になれない。
つか、たまに日本語入力できなくなって鬱。
なんでいま、2ちゃんぐらいしかやってない。
とりあえず

警告<IE7はいれるな!>

いつもはこんな人柱やんないんだけど、仕事でしょうがないからいれたらこのザマ。
782デフォルトの名無しさん:2006/09/18(月) 13:16:40
>>781
WMP11といいIE7といい
ほんとM$社はアルファも良い所で公開するよな
783デフォルトの名無しさん:2006/09/18(月) 13:17:52
>>782
いままで作ったもんが普通にずれるのはこれからの標準になっちゃうのか
これはバグなのかとりあえずはっきりしてほしい。>MS
784デフォルトの名無しさん:2006/09/18(月) 14:07:19
359 :名前は開発中のものです。:2006/08/24(木) 12:13:30 ID:sJxsspLQ
ちなみにD3DXのXファイル読み込み関数は、
頂点ウエイトが入っているときのインデックスの展開にバグがある。

頂点とウエイトと法線のデータの展開時に、
頂点と法線が別々のインデックスで管理されているはずなのに、
頂点側の並びに合わせて、インデックスで重複を省けるはずの法線データを無駄に増やさないと、
正常に展開できずにウエイトの付き方に異常が起こりメッシュに穴が開いたりする。

これは最新云々関係なく昔からのD3DX側のバグ。
はっきりいってD3DXのXファイル関係の高レベルAPIは使い物にならない。
エクスポートされたデータそのものに異常はないので、
Xファイルの読み込みぐらい自分で作ればいいだけの話。
785デフォルトの名無しさん:2006/09/18(月) 14:37:55
なら問題ねぇや。
法線自体もたないXファイルしか使ってないし。

面の角度に合わせて法線を重み付けして計算しないと
分割数の多いほうに法線が寄るから法線は自分で計算してる。
786デフォルトの名無しさん:2006/09/18(月) 14:41:58
それは単に変なモデリングソフトを使っているせいだろ。
787デフォルトの名無しさん:2006/09/18(月) 15:16:12
>>776
ナイス情報!
職業柄DirectXばかり見てきたが、GDI+だけでもいろいろ出来そうだね。
Javaみたいに手軽なのが便利だな。
788デフォルトの名無しさん:2006/09/18(月) 15:33:44
実際問題高レベル描画はGDI+使った方が格段に楽だと思うわけだが、
そのGDI+自身がDirectXで走ってたりすることはあるのかしら。
教えて詳しい人。
789デフォルトの名無しさん:2006/09/18(月) 16:10:52
>>785
いや意外に多いよ。
D3DXの法線計算も面法線を単純に合成して正規化してる
だけだからポリゴン分割数多いほうに法線が寄る。
790デフォルトの名無しさん:2006/09/18(月) 16:40:16
>>783
IE6では見れたのにFirefoxやOperaで見れなかったなら
作ったもんが異常
これまでのどのブラウザでも見れたのにIE7だけズレるならバグ
791デフォルトの名無しさん:2006/09/18(月) 17:38:36
>>790
だってすでにテストが面倒だからIEしか対応してねーしw
ActiveXあること前提だし。
792デフォルトの名無しさん:2006/09/18(月) 17:45:26
>>788
それはない
一般道と高速道みたいに通り道が違う
793デフォルトの名無しさん:2006/09/18(月) 17:57:40
>>792
いや、正直よくわからんって感じ。
クラスの関数一覧みるとインターフェースにそれっぽいのあるし。
回転がハード使ってるとしか思えないほど速い(と思う)。
普通に1ピクセルずつ画像を処理するよか速い気がする。
794デフォルトの名無しさん:2006/09/18(月) 17:58:32
DirectXは関係ないとしてもグラボのハード機能は使ってるんじゃね?
795デフォルトの名無しさん:2006/09/18(月) 18:11:05
>>794
そういうことってあるのかな?
796デフォルトの名無しさん:2006/09/18(月) 18:15:53
>>795
あるんじゃね?
昔も今もハードを制御してるのはOSなんだし。
797デフォルトの名無しさん:2006/09/18(月) 18:17:04
GDI+はぜんぜんビデオカード側が対応していないので、
ことごとくソフトエミュレートになっている。

GDI+のベンチマークソフトが使われるようになればメーカー側も考えるだろう。
798デフォルトの名無しさん:2006/09/18(月) 18:17:31
DirectX入れてなくても動くって事は?
799デフォルトの名無しさん:2006/09/18(月) 18:19:28
GDI+がグラフィックボードを利用してるかどうか確かめる方法ある?
800デフォルトの名無しさん:2006/09/18(月) 18:22:22
>>785
法線がない状態で曲面とか角をどうやって判断するつもりなんだ?
せめてスムージング情報をモデリング時に引っ張ってこないと復元できないぞ。
801デフォルトの名無しさん:2006/09/18(月) 18:29:34
>>789
そのこと俺もずっと前に言ってみたが、理解してる人はほとんどいなかった。
あと、D3DXのバウンディング球も重心求めてるだけで、最小包含球ではないね。
802デフォルトの名無しさん:2006/09/18(月) 18:34:01
そもそもグラボっていうのはグラフィックアクセラレータって言って・・
って遡らないと話は通用しないのかな?

Window自体の描画だってグラボ使ってるんだからGDI+だって使ってるだろう、
っていう単なる推測なんだが。
まさかポリゴン描画だけがグラボの仕事だとか思ってないよな?

> GDI+がグラフィックボードを利用してるかどうか確かめる方法ある?
グラボから伸びてるケーブルがディスプレイにささってるから。
803デフォルトの名無しさん:2006/09/18(月) 18:39:52
>>802
αブレンドとか回転とか、GDI+で追加されたものが、
専用のアクセラレーションで機能しないということ。

表示されていれば利用しているとか、幼稚園児かお前は?
804デフォルトの名無しさん:2006/09/18(月) 18:43:00
>>803
逆に聞きたいんだが、なんでグラボのハード機能を使ってないって思ってるの?

OSがハードを制御してるしハードは描画に特化してる、使わないって考える方が
すごく不自然なんだが・・・
805デフォルトの名無しさん:2006/09/18(月) 18:51:29
>>804
いや、用は3Dアクセラレーターが使ってあるかどうかって話なのよ。
806デフォルトの名無しさん:2006/09/18(月) 18:53:12
自前で計算したときよりもGDI+を使った方が遙かに速度が遅いから。
ちなみに3Dアクセラレーションを使った場合は桁違いに速い。
807デフォルトの名無しさん:2006/09/18(月) 18:54:30
>>805
んー3Dの話は全然してきてないんだよね・・・GDI+って2Dじゃん。

DirectX=3D とか グラボ=3D とか 変な認識があるのかもね。
808デフォルトの名無しさん:2006/09/18(月) 18:56:33
で、その3Dアクセラレーターが使ってあるとグラボによって
そのサポート状態が違うわけよ。
で、できないグラボで3Dアクセラレーターを使ってしまうと、
それを無理やりエミュレーションする場合があって、その場合今度は糞重たい(実用にならない)
だから、ハード(グラボ)の特有の機能を警戒してるわけ。
809デフォルトの名無しさん:2006/09/18(月) 18:57:21
>>806
おお!それは有力な検証結果ですな。

じゃあ描画自体は自前でやってる可能性もあるかも。
回転させたときに描画が速いっていうのが気になるが・・
810デフォルトの名無しさん:2006/09/18(月) 18:58:49
>>807
ちがうんだよ。
2Dでも3Dの機能を使って2Dの描画をしてる場合があるんだよ。
特に回転なんてソフトでやったら糞重たい、重たいどころの話じゃない。
3Dの機能を使うことと3Dの描画しかしないことは等価じゃないのよ。
3Dの機能を使って、2Dの描画をやってる場合を考えてるのよ。
811デフォルトの名無しさん:2006/09/18(月) 18:59:58
>>807
DirectDrawが打ち止めになった理由が分かってないだろ。
2Dでαブレンドや回転のアクセラレーションをハード側に載せるのが無駄だから、
全部3Dでやれということになったんだよ。
その為、メーカ側が2D用の拡張アクセラレーションをわざわざ作らなくなった。

GDI+でアクセラレーションが欲しければVistaを使うしかない。
その為のAero。
812デフォルトの名無しさん:2006/09/18(月) 19:01:20
>>808
やっぱ「グラフィイクアクセラレータ」の話からしないとダメなのか?

今で言うグラボが出た当時はね、OSの描画全般を早くこなすために
アクセラレートする目的のハードだった訳よ。もちろん普通の描画に使うのね。
それが、「最近ではハード使わない」っていうのは考えにくい。

通常のウィンドウ描画にハード使ってるんだったら、GDI+にだって
もちろん使ってる可能性は高い。むしろ使わない理由が見当たらない。
813デフォルトの名無しさん:2006/09/18(月) 19:02:21
ちなみにAero環境下ならGDI+のAPIは、ブレンドだろうが回転だろうが、
ほとんどブロック転送と変わらない速度で動く。
814デフォルトの名無しさん:2006/09/18(月) 19:05:06
>>812
だからそれはGDI用のアクセラレーションを使っているだけで、
GDI+用の拡張部分には対応していないから、
対応していない部分はCPUが計算しているという話。
一切使っていないわけではない。
815デフォルトの名無しさん:2006/09/18(月) 19:06:11
>>810
あなたは俺と同じ認識みたいだよね。
GDI+という2D描画にもハードの機能を使うことが考えられるって意味で。

>>811
それでOSが描画にハード機能を使ってないって説明になってるの?
ウィンドウを自前で書いてるとでも??
816デフォルトの名無しさん:2006/09/18(月) 19:07:12
で、GDI用(GDI+ではない)ってのは回転なんてサポートしてない(と思われる)わけよ。
817デフォルトの名無しさん:2006/09/18(月) 19:08:39
>>815
だから、俺等のいうハードの機能っては3Dアクセラレーターのことなの。
で、それをもし使っているなら各グラボごとにサポート状況が違うはずなのよ。
818デフォルトの名無しさん:2006/09/18(月) 19:10:14
結論
 GDI+の拡張部分をアクセラレーションがある状態で使いたければAeroを使え。
 XP以前なら遅くても我慢しろ。
819デフォルトの名無しさん:2006/09/18(月) 19:11:57
>>817
>>810 の言ってることもよく見てみなよ。
3D描画機能を2D描画に使うこともあるって書いてあるでしょ。
そもそも、回転とかアルファブレンドとかGDI+で設計してるのに
「ハードが対応してないから自前でやるしかないか・・」って話ないでしょ?
最大公約数なハードができることを設計してると思わない?

ちなみにGDIの時代は単なる矩形転送だけをハード利用してたから
回転とかアルファブレンディングに対応しなかっただけでしょ。
いや順番を正すと、GDIの設計がそうだからハードが対応しなかったってこと。
820デフォルトの名無しさん:2006/09/18(月) 19:16:14
>>819
どのライブラリ使ってもそのへんの機能を使うにはまずデバイスの初期化が必要でな。
俺は使ってないとおもう。
821デフォルトの名無しさん:2006/09/18(月) 19:16:26
ちなみにAeroは、Direct3Dに対応したデバイスドライバが必須。
結局GDI+は3Dアクセラレーションの機能に間借りする形で存在することになった。
822デフォルトの名無しさん:2006/09/18(月) 19:26:28
>>820
もーーーーーーーWindows起動時に初期化しとけ。OSなんだからw
アプリで初期化が必要なのはOSに宣言するためってことも考えられる。

そもそも「DirectX使わないとハード使えない」って勘違いしてる人に向けて
いろいろ書き込みしてきたんだけどさ、話がそれすぎてるしOSの実装なんか
分かりっこないんだから、誰も断言はできない訳よ。

っつーことで最後に一言。「スレ違い」(´Д`)
823デフォルトの名無しさん:2006/09/18(月) 19:30:23
>DirectX使わないとハード使えない
だれだよそいつは?
824デフォルトの名無しさん:2006/09/18(月) 19:31:07
>>822
無理っしょ。
いままでことごとく無理だったのに、いきなり動きはじめるわけないだろ。
解像度切り替えで全てのりソースが噴き飛ぶショボイ設計なんだからw
825デフォルトの名無しさん:2006/09/18(月) 19:32:19
Direct3Dを使わないと現在のドライバ対応では、
回転やαブレンドなどのアクセラレーションは使えない。

拡大縮小などは大抵のドライバが対応している。
826デフォルトの名無しさん:2006/09/18(月) 19:36:31
昔はビデオカードのうたい文句にDVD再生支援機能とかあったが、
おおすげえと思った後、実はただの拡大縮小機能だった悲しみを覚えている。
827デフォルトの名無しさん:2006/09/18(月) 19:40:43
おまれらの意見を総合すると
ようはDirectX使うな、と。
828デフォルトの名無しさん:2006/09/18(月) 19:44:35
使いたくなければ使わなければいい。
829デフォルトの名無しさん:2006/09/18(月) 19:59:54
830デフォルトの名無しさん:2006/09/18(月) 20:51:59
>>829
荒らされてるじゃんw
831デフォルトの名無しさん:2006/09/18(月) 21:40:41
こういう場合、半角英数の方を信じることにしている
832デフォルトの名無しさん:2006/09/18(月) 23:41:37
一匹変なのがいるなw
833デフォルトの名無しさん:2006/09/19(火) 00:29:21
>>832 のこと? (w
834デフォルトの名無しさん:2006/09/24(日) 05:26:27
タイトルバーつかんで移動すると
Messageの処理が帰ってこないので
メインループ動かないんですが、スレッド化以外で
これを回避する方法ありますか?
835デフォルトの名無しさん:2006/09/24(日) 05:38:41
タイマー
836デフォルトの名無しさん:2006/09/24(日) 06:55:51
だけどWM_TIMERも、タイトルバーをクリックしっぱなしで
全く動かさない状態だと来ないんだよな。

そこで俺が考えた代替案。
WM_TIMERを送信するスレッドを作るw
837デフォルトの名無しさん:2006/09/24(日) 10:01:22
>>834
でつ
( ろ WM_でタイトルバーつかんでるの拾ってその間はPAUSE
838デフォルトの名無しさん:2006/09/24(日) 11:54:10
そもそもマルチスレッドを使わない理由は?
839デフォルトの名無しさん:2006/09/24(日) 12:37:00
面倒くさいとか、面倒くさいとか、面倒くさいとか。
840デフォルトの名無しさん:2006/09/24(日) 13:57:22
GDI+の専用スレある?
841デフォルトの名無しさん:2006/09/24(日) 18:24:10
やはりスレッドにすべきなのか
842デフォルトの名無しさん:2006/09/24(日) 18:32:17
じゃあWMでタイトルバーつかんだの検地したら
以降システムメッセージを無視する→ループが動く&マウスの位置にあわせてウインドウ移動
タイトルバーいじるの終わったようなら元に戻す
843デフォルトの名無しさん:2006/09/24(日) 18:40:24
ゲームでマルチスレッドって今当たり前なのかな?
折角なら俺も使いたいところだ
とりあえずDirectX側のパフォーマンスは少し落ちるらしいけど
844デフォルトの名無しさん:2006/09/24(日) 18:46:32
必要なら使えばいいじゃん。
ゲームでマルチスレッドって、PCなら10年前から実装したけど。
アクションゲームなら必須。もちろん無くてもできる。
845デフォルトの名無しさん:2006/09/24(日) 18:46:50
スレッドは普通使わない
846デフォルトの名無しさん:2006/09/24(日) 19:09:07
>>845は異世界の住人なので、こちらの世界の事ではないというところに注意してください。
847デフォルトの名無しさん:2006/09/24(日) 19:19:26
(゚Д゚)ハァ
848デフォルトの名無しさん:2006/09/24(日) 19:29:06
俺も別にゲームはマルチスレッドにはしないな。

使うのはネットワーク処理と、ファイル読み込みくらい。
まぁどっちもゲーム部分ではない。
849デフォルトの名無しさん:2006/09/24(日) 19:36:16
ウインドウメッセージのために余計な処理を考えるくらいなら、
マルチスレッドにした方が遙かに楽。
850デフォルトの名無しさん:2006/09/24(日) 19:42:32
せめて描画と入力関係は別のスレッドに分けろよ。
取りこぼしとか最悪だぞ。
851デフォルトの名無しさん:2006/09/24(日) 19:48:28
タイピングソフトならまだしもアクション程度で取りこぼしとか別にいい気がするんだが。
コマ落ちするゲームは話が別だが。
852デフォルトの名無しさん:2006/09/24(日) 19:48:54
>>851
はあ?
853843:2006/09/24(日) 19:56:49
みんなレスサンクス
やっぱりまだ、色んな流儀があるようで

今まではシングルでやってきたけど、入力を取りこぼしたことは無いかなぁ
854デフォルトの名無しさん:2006/09/24(日) 20:01:08
すまん、取りこぼしって言葉は間違えだな。

シングルスレッドだと描画がカクカクになったら入力も同調するだろ?
それを回避するには、入力だけでも別スレッドで処理しないと駄目ってことを
言いたかっただけだ。要するに入力のフレーム落ちね。
855デフォルトの名無しさん:2006/09/24(日) 20:22:39
よし、FPS制御について語ろうぜ
856デフォルトの名無しさん:2006/09/24(日) 20:39:15
FPSの話はもめるんで嫌ですw
857デフォルトの名無しさん:2006/09/24(日) 20:46:19
directxなんて使わなくてもゲーム作れるよー
directxのゲームは動かないことが多くていやです
858デフォルトの名無しさん:2006/09/24(日) 20:55:04
>>854
いつの時代の話をしてるんだ? 1描画=1入力なのかw?
859デフォルトの名無しさん:2006/09/24(日) 20:59:39
わかっているけど2Dゲームの考えが捨てきれない
860デフォルトの名無しさん:2006/09/24(日) 22:04:49
1フレームの描画に時間がかかるようなケースだとスレッド使うしか対策無くね?
そこまでスペックが低い場合は切り捨てるっていうのも手だけどさ
861デフォルトの名無しさん:2006/09/24(日) 22:15:20
無駄な苦労がしたければシングルスレッドでやればいいんだよ。
ただしそれで問題が出てもグダグダ言うな。
862デフォルトの名無しさん:2006/09/24(日) 22:17:18
シングルスレッドで問題が出るって言うほうが信じられん
863デフォルトの名無しさん:2006/09/24(日) 22:19:55
ほんの少し前の書き込みすら読めない、能無しの>>862には一生分からないから安心しろ。
864デフォルトの名無しさん:2006/09/24(日) 22:29:21
てst
865デフォルトの名無しさん:2006/09/24(日) 22:35:48
1フレームの描画に時間かかるっていうが、
仮にえらい重い処理が入って1秒落ちたら60フレーム分キーデータバッファリングしとくのか?
866デフォルトの名無しさん:2006/09/24(日) 22:39:02
モデルデータの読み込みとか展開なんかをしている間、
ブロックしっぱなしにするつもりなんだろうか?
867デフォルトの名無しさん:2006/09/24(日) 22:41:06
重いデータのやりとりもない、入力も適当でいい、
処理中はブロックされても気にしない、
そんなプログラムを作っている人間にとってマルチスレッドは不要。
868デフォルトの名無しさん:2006/09/24(日) 22:43:26
>>886,887
それ別スレッドにするのは読み込みであって入力じゃない気がするんだけど
869デフォルトの名無しさん:2006/09/24(日) 22:49:42
小規模なミニゲームみたいなのしか作っていないのなら、
マルチスレッドの必要性なんて分からなくて当然。
気にするな、それが普通だと思っておけばいいんだよ。
870デフォルトの名無しさん:2006/09/24(日) 22:56:05
なんらかの区切り毎に、モデルデータをまとめて読み込むゲームの方が多くね
動的に展開する必要があるのって、メモリ容量が不定なPCゲー?
いや別にどっち使っても良いけど
871デフォルトの名無しさん:2006/09/24(日) 23:00:26
さすがにサウンドは別スレッドにするなぁ
それ以外はゲームループ内で全部やっちゃうけど
872デフォルトの名無しさん:2006/09/24(日) 23:00:27
作ったことがない奴がいくら気をもんだって分からないんだから、気にしなくていい。
873デフォルトの名無しさん:2006/09/24(日) 23:04:41
自己紹介が続いてますなw
874デフォルトの名無しさん:2006/09/24(日) 23:21:22
>>867
別スレッドで重いデータを読み込んでも、結局間に合わないならブロッキングが起きるっしょ。
それどころか間に合わない場合の同期とか、処理落ち管理が面倒なだけな様な。

シングルなら、やる気ならその辺の制御は厳密に出来るっつーか。
データ読み込みで処理止めるような実装する奴はいないっしょ。それが必要なら、だが。

どっちかっていうと、楽したいから別スレッドに丸投げするもんだと思うんだけどな。
875デフォルトの名無しさん:2006/09/24(日) 23:25:33
ゲーム中にリアルタイムでデータ読み込みとかは普通にやるが、
読み込みスレッドを別にするだけで入力だけ分けたりはしないけどなぁ。

ここで入力を別スレッドって言ってるやつは、
描画/演算/入力
って分け方なわけでしょ。
876デフォルトの名無しさん:2006/09/25(月) 00:00:50
そこまですると全体的なスループットは逆に低下しそうだな。
結局どこかで同期しなきゃならないわけだし
877デフォルトの名無しさん:2006/09/25(月) 00:53:25
マルチスレッドにするメリットって?
878デフォルトの名無しさん:2006/09/25(月) 01:07:16
他の処理はともかくファイルの非同期読み込みや
サウンドのストリームはさすがにシングルスレッドじゃ無謀だろw

ネットワークはWinSockならWindowメッセージにイベントとして
データのやり取りを受け取るように出来るからスレッドを別にしなくても
ゲーム次第ではシングルスレッドでも出来るな。
非同期I/Oもあるし。
879デフォルトの名無しさん:2006/09/25(月) 01:26:02
マルチスレッドはサウンドのストリーム再生にしか使ってないので、質問。

ファイルの読み込みを別スレッドでって言うけど、
読み込みなんてファイルのデータが必要なときにやるわけだから、
別スレッドで読み込んだって、どうせ読み終わるまで次の処理に行けない。

ってことは、先読みで別スレッドに読み込み処理をさせておくの?
データが必要なときに、読み込みスレッドが読み込みを終えてなかった場合はどうするの?
そんな心配をするくらいなら、いわゆる Now Loading の画面中に先読みしとけばいいんじゃないの?

こんな俺に、ファイル読み込みを別スレッドでやるメリットというか、
むしろ方法を教えてください。

880デフォルトの名無しさん:2006/09/25(月) 01:26:09
>ネットワークはWinSockならWindowメッセージにイベントとして
>データのやり取りを受け取るように出来るからスレッドを別にしなくても
>ゲーム次第ではシングルスレッドでも出来るな。

どんだけキューに積むつもりやねんとw

まあ、自分で書いても、この種の処理は大抵自前のキューに積みまくることにはなるんだけどさ。
881デフォルトの名無しさん:2006/09/25(月) 01:35:08
バタンキュー
882デフォルトの名無しさん:2006/09/25(月) 02:01:15
>>879
データが必要になるずっと前からロードを開始しとくんだよ。
それでも間に合わなかったら、もっと前からロードを開始。

NowLoadingで良いという人はそれでもいいんじゃん。
コンシューマ畑にはそんなやつはいないと信じてるが。
883デフォルトの名無しさん:2006/09/25(月) 02:02:47
>>876
同期が必要ならマルチスレッドなんか意味ないよ。
大人しくシングルスレッで頑張ってなw
884デフォルトの名無しさん:2006/09/25(月) 02:11:54
シングルスレッ!


実際問題、マルチスレッドは楽するために使うもんだ。
問題が複雑化するなら使うな以上のことは何も無い気がス。


といいながらひとつ質問。
ウインドウのメッセージループ本体と描画&更新のメインループを
別スレッドで回すのは典型的だとは思うんだが、デバイスロスト時の
復元とかはどっちのスレッ!にやらせてる?

俺は今まで何も考えずにウインドウ側にやらせてたんだが、
これをメインループ側に押し付ければ、D3Dのライブラリは
シングルスレッ!の方で済んだりするのか?
マルチスレッ!版とパフォーマンスの違いがどの程度あるのか
知らんのだけど、誰かお母さんみたいに優しく教えてくれないか。
885デフォルトの名無しさん:2006/09/25(月) 02:12:59
キー入力が同期しなくてもいいってそれはそれですげーな。
886デフォルトの名無しさん:2006/09/25(月) 02:28:24
お母さん「好きな方でやりなさい」

アイツ「どっちを選ぶかは・・・自由だ!!!」
887デフォルトの名無しさん:2006/09/25(月) 02:32:23
メカ物でNowLoadingは重要だよな。
本当に読んでいるかは別として
888デフォルトの名無しさん:2006/09/25(月) 02:35:07
>>884
スマンが、デバイスロスト関連の処理はやったことないんだ(;´д`)
なんせマルチスレッドで組んだの、DirectX3〜5の時だったもんでな。
でも、やるとしたら描画の方のスレッドだろうな。
ロストして困るのは描画だし、DirectGraphicにアクセスするスレッドだから。

ちなみに描画はメッセージ処理するメインループ側だよ。
キー入力とゲーム処理を別スレッ!でやらせてた。
889デフォルトの名無しさん:2006/09/25(月) 02:45:50
>キー入力とゲーム処理を別スレッ!でやらせてた。

それはそれで凄くね?
J2MEのアプリとかだとキー入力が全部イベントだから
そんな感じの迂遠なコードになるんだけど、D3DInputなら
普通に更新側で回した方が楽な方が。
WM_KEYDOWNとかから直接回収してたのん?

デバイスロストしてても描画はスルーされるだけだから、
復元は本体側スレッ!でやるのが典型なのかもね。
ただ、Present失敗->復元はその場でできるのだろうけど、
アダプタの切り替えとかはウインドウ側でやらないと、
毎度毎度ウインドウ位置の問い合わせとかしないとならなくなりそうだ。

誰が書いても最終的には同じ処理になるんだろうが、地味に面倒だなあ。
DXUTに全部書いてあるんだろうか。
アダプタ変更とかはメッセージループ側でやってた記憶があるが。
890デフォルトの名無しさん:2006/09/25(月) 03:02:21
>>889
当時のグラボは、パンチスルーすらも無いのがあるくらい低能で
とにかく描画が遅かったんだよね。だから、描画とそれ以外を分ける必要があった。

具体的にどうやってたかは覚えてないんだがw、キーボードにも対応してたから
メッセージを直接取ってたんだろうね。D3DInputは普通にね。

>普通に更新側で回した方が楽な方が。
更新側ってのが何を指してるのか分からんが、ゲーム処理は入力と同じスレッド
だから、そっちが更新側とも言える。描画更新という意味だったら別だね。

描画は同期を取ってないから必然的にトリプルバッファになったかな。
座標とか描画に必要なものだけをトリプルで管理してた。
入力→ゲーム処理で更新するもの、したもの、描画中のもの。
891デフォルトの名無しさん:2006/09/25(月) 03:07:59
OK、描画コンテキストの生成が別スレで、
更新周りは切り離してたわけだね。

今のGPU事情考えたらまず無いタイプの実装だとは思うけど、
当時はそうするメリットがあったってことなのかな。
実感は追いつかないけど、なんとなく想像はつく気がする。
とりあえずお疲れ様でした。
892デフォルトの名無しさん:2006/09/25(月) 03:14:40
> 今のGPU事情考えたらまず無いタイプの実装だとは思うけど、
何か特別な制限がない限り今でも同じ実装をすると思う。

PCってのは実行環境がまちまちだから、スペック低いのから高いのまで
同じ「ゲーム感覚」で遊べるようにしたいんだよね。
それには最低限、入力処理は別スレッドで同じタイミングで、って。

> とりあえずお疲れ様でした。
ありーん( ´∀`)
893デフォルトの名無しさん:2006/09/25(月) 03:32:46
フレーム落ち対策で、更新側と描画命令生成側とを分離するのは
割とよくやる手ではあるよね。
ただ、それをスレッドで分けてまでやる価値があるかについては
賛否分かれるところな気がする。

ひとつには単純にタイミングの問題、描画周りはGPU側の応答つーか
端的には垂直同期の縛りがある以上スケジュール応答性に縛りがあるし、
それに足並みを揃えて同期をとる以上、更新側もプッシュバッファ的に
描画前準備情報を積んでおいて、描画側は詰まれた情報を元に描画命令を生成って
流れになると思うんだけど、そのオーバーヘッドはあまり小さく無い気がするし、
作りとしては少々大掛かりになっちゃうよね。

俺は単純に前フレームで経過したデルタ時間を更新側に渡す手をよく使うわ。
フレームを厳密に見たいとか、ゲームの質によっては許容できない場合もあるのだろうし、
誤差周りがついて回るので、これはこれで設計に気を配るところは多いんだけど、
PCゲーでかつ3D物だったりする場合、内部更新が60FPS固定で描画を分離〜のスタイルより
作りやすいのは確かだし、人間が感知できるレベルでの違いらしい違いもほとんど現れないし、
スループットも概ね上。

まあ、この辺は好き好きなのかな。
894デフォルトの名無しさん:2006/09/25(月) 03:43:09
> 流れになると思うんだけど、そのオーバーヘッドはあまり小さく無い気がするし、
> 作りとしては少々大掛かりになっちゃうよね。
結局はそれなんだよね。面倒って。
あとオーバーヘッドは小さくはないが、描画の重さからすると微量なんだ。
もちろん描画が軽ければ別スレッドにする意味なんかなくなるよね。

> 俺は単純に前フレームで経過したデルタ時間を更新側に渡す手をよく使うわ。
今勉強用に作ってるやつとか、ちょっとしたデモだったら同じ方法使う。
アクションゲームだと無理が出てくるけどね。ネット対戦対応とか。
でも作りやすいのは確か。フレーム落ちにも対応できるし。普段だったらコレ。
895デフォルトの名無しさん:2006/09/25(月) 05:25:19
最近はハイパースレッドやデュアルコアなCPUなんで
スレッド使ったほうが処理効率上がるモナ
896デフォルトの名無しさん:2006/09/25(月) 09:55:01
>> 俺は単純に前フレームで経過したデルタ時間を更新側に渡す手をよく使うわ。
ELがその方法とってるよね。
あとは基本的に60固定で組んでおいて、落ちたときに差分の時間見て演算部分だけ複数回回すっていう方法もあるね。

>>895
それはどっちかというとOggのデコードみたいなCPU使う部分をスレッド化した方がよさそうな気もする。
897デフォルトの名無しさん:2006/09/26(火) 23:09:22
なんか変な使い方してる奴いるな。
内部処理と描画を別スレッドでってなんかメリットあんのか?
しかも、描画が遅いときって別スレにしても結局CPUもある程度負荷かかってるような気がするんだが・・・
確実に負荷も分離できるもんなのか?
スレッドってぐらいだから1描画につき何回か内部処理を実行してるんだろうけど、
描画が1回されてる間、内部処理をそう何回もできるほど内部処理って負荷すくねぇかな?
当り判定で枝狩り処理してみたり、開発終盤になると意外と重くなるような気がするんだが・・・(どんなゲームでも何故か)

マルチスレッド使うときって、先読みのロードとか曲やムービーの再生とか、そんなもんじゃねぇの?
ここまで読んだけど他はあんまりメリット感じないなぁ。
898デフォルトの名無しさん:2006/09/26(火) 23:36:23
>>897
スゲー古い話で、グラボが貧弱だから描画が遅いって言ってるのにね。
そんな当時のゲームなんで、内部処理は本当に軽いものなんだよ。

> マルチスレッド使うときって、先読みのロードとか曲やムービーの再生とか、そんなもんじゃねぇの?
ロードとかBGM再生でも使うに決まってるじゃん。
899デフォルトの名無しさん:2006/09/26(火) 23:38:10
Athlon64X2のマルチコア環境で衝突判定とフレームの計算を二分割して、
2スレッドで処理したらFPSが1.4倍ぐらいになった。
キャラクターを増やすとさらに差が開く。
900デフォルトの名無しさん:2006/09/26(火) 23:39:01
シームレス
901デフォルトの名無しさん:2006/09/26(火) 23:40:11
いかに処理を分散させるかが重要だな
>>897は、ちと勘違い
902デフォルトの名無しさん:2006/09/26(火) 23:44:41
今のうちにスレッドを効率的に処理する方法を覚えておかないと、
今後化石と呼ばれるようになるぞ。
もうすぐ4コアがやってくるような時代だし。
903デフォルトの名無しさん:2006/09/26(火) 23:47:19
セガサターンを思い出した
904デフォルトの名無しさん:2006/09/26(火) 23:53:22
とりあえずキーワードは volatileな。
905デフォルトの名無しさん:2006/09/27(水) 00:24:48
いや、volatile厨はこのスレまで出張ってこなくていいから。
906デフォルトの名無しさん:2006/09/27(水) 00:27:20
> いや、volatile厨はこのスレまで出張ってこなくていいから。
マルチスレッドでvolatile指定しなくてどうするよ?w

別スレのvolatile厨の話と混乱してるなキサマ(´Д`)
907デフォルトの名無しさん:2006/09/27(水) 00:38:01
>>902
CPUが複数あるのとアプリケーションのスレッドが複数あるのとどう関係があるのか全くわからない。
908デフォルトの名無しさん:2006/09/27(水) 00:44:02
>>907
アプリがマルチスレッドだと、複数CPUにスレッドを割り振ってくれるんですよ。
909デフォルトの名無しさん:2006/09/27(水) 00:53:52
別にゲームって組み込みじゃないからvolatileいらんのでは
910デフォルトの名無しさん:2006/09/27(水) 00:58:37
volatileを指定しないと、最適化がかかって、
別スレッドからの値の変更が認識できなくなる場合がある。
この辺りの話は常識だと思うんだが。
911デフォルトの名無しさん:2006/09/27(水) 01:09:13
>>908
それってそれぞれのスレッド同士が完全に分離してない場合でもその方が速いの?
例えば、キャラのボイスにしたって再生の命令を送ること自体は内部処理のスレッドになるわけじゃん?
終了を待つ処理があったとしたら、それを待つのも内部処理のスレッドなわけじゃん?
こんな状態で別スレッドって本当に速いの?
912デフォルトの名無しさん:2006/09/27(水) 01:15:12
負荷のかかる処理を出来るだけ均等に分けて待ち時間を減らす必用がある。
いかに効率的に処理させるかどうかはプログラマの腕次第。
旧時代の化石プログラマには無理な作業。
913デフォルトの名無しさん:2006/09/27(水) 01:17:47
>>911
別スレッドで終了を待ってたら(同期を取るっていうことね)
マルチスレッドの意味無いよね。もちろん速くもならない。
914デフォルトの名無しさん:2006/09/27(水) 01:21:44
ループでぐるぐる直列で回している作業は、
きちんと考えればお互いのデータが依存していない範囲を分析して分散出来るんだが、
頭が硬いと、こういう処理を想像することすら出来ない。
915デフォルトの名無しさん:2006/09/27(水) 01:23:57
何故オタは他人の人格否定から始まるのだろうか
916デフォルトの名無しさん:2006/09/27(水) 01:26:29
どこに人格批判なんてあるんだ?
917デフォルトの名無しさん:2006/09/27(水) 01:27:57
>>916
あ?わかんねーのかよww馬鹿だろ、おめー?
918デフォルトの名無しさん:2006/09/27(水) 01:29:44
>>914
既にあるプログラムをマルチスレッドに分散するのは至難の技だよ(;´д`)

やはり最初からマルチスレッド前提で組み始めないと
どこでデッドロックするか分からなくて怖い。
919デフォルトの名無しさん:2006/09/27(水) 01:30:55
もしかして今までの自分を否定されてしまうような、
なにかショッキングな事に気がついてしまったのか。
920デフォルトの名無しさん:2006/09/27(水) 01:31:13
>旧時代の化石プログラマには無理な作業。

これとか?
サターンは旧時代のハードだがマルチコアじゃないのかと。
てかもっと昔にもマルチコアのハードなかったっけ・・・?
921デフォルトの名無しさん:2006/09/27(水) 01:32:59
>>920
どこにも人格に対する言及は含まれていないように見える。
922デフォルトの名無しさん:2006/09/27(水) 01:33:03
>>915
「頭が硬いと、」ってところに反応したのかも知れないが
普通に「頭が硬い人は〜できない」って意味じゃねーか?
923デフォルトの名無しさん:2006/09/27(水) 01:34:21
能力 != 人格
924デフォルトの名無しさん:2006/09/27(水) 01:39:27
だけど真面目な話、これからはマルチスレッドは必須だから
ちゃんと注意点・問題点と利点などを理解しておくといいよ。

最初は簡単で確認もしやすいファイルロードを別スレッドでやってみるとかね。
テクスチャファイルだけだったら停止することもないだろうし
問題があったら見た目にも分かりやすいし入門にいいんじゃん?
925デフォルトの名無しさん:2006/09/27(水) 01:45:43
そういやファイルI/Oのスレッドって裏でずっと回してる?
それとも読み込み時にスレッド立てて完了したらスレッド閉じてる?
926デフォルトの名無しさん:2006/09/27(水) 01:59:39
>>925
人それぞれだと思うけど、最近よく聞く「スレッドプール」でやる人は
読み込み時にスレッド起動して完了したらプールに返すんじゃないかな。

ファイルはBGMストリームにも使われるから、アプリ起動中ほとんど使ってる
って考えだったら、専用のスレッドにしてずっと回してればいいと思う。
もちろん暇な時はsleepしてね。
927デフォルトの名無しさん:2006/09/27(水) 02:17:35
マルチスレッドプログラミング相談室 その5
ttp://pc8.2ch.net/test/read.cgi/tech/1157814833/l50

volatile厨っつーのが出て静かになった感があるけど
過去ログみたら少しは勉強になるんじゃないかな。
928デフォルトの名無しさん:2006/09/27(水) 02:29:44
>既にあるプログラムをマルチスレッドに分散するのは至難の技だよ(;´д`)

簡単かと思って迂闊に手を染めると大抵ドツボだな。
一度徹底的に解体して再構成する羽目になる。
見合った成果が得られるかは状況次第だけど、
このところのCPU事情鑑みるに、DirectX的には美味しいかもだな。
命中判定部分だけ切り離したりしたコードが高速に動いてくれるのを見るのは楽しそうだ。
929デフォルトの名無しさん:2006/09/27(水) 02:35:37
深夜になると盛り上がるな。このスレ。
930デフォルトの名無しさん:2006/09/27(水) 03:15:57
>>920
セガサターンはマルチプロセッサ。論理的には一緒だが。
サターンでも最後期のバージョンはマルチコアらしいが未確認。
たんにマルチプロセッサなだけなら、全然珍しくない。

旧世代のマルチプロセッサシステムは、マルチスレッド的な使い方よりも
マルチプロセス的な使い方だから、OSがCPU時間を勝手に割り振って
くれるような今のマルチスレッドとは全然違う。
931デフォルトの名無しさん:2006/09/27(水) 03:43:19
単なる複数プロセッサ搭載マシンとSMPで組まれたシステムを一緒にしてはいかんよな、うん
932デフォルトの名無しさん:2006/09/27(水) 06:46:30
どっちにしてもOSにまかせたほうが楽そうな話だけどな。
こんなの自分で管理してホントに速くなるのかね?
933デフォルトの名無しさん:2006/09/27(水) 07:51:57
処理手順が思いつかず、そういう疑問を抱く>>932には無理。
934デフォルトの名無しさん:2006/09/27(水) 08:23:24
スレ伸びすぎ

つかマルチスレッド自体は相当前からあるだろうに、
なんで「最近出てきた新しい技術!」みたいな奴がいるんだろ
935デフォルトの名無しさん:2006/09/27(水) 11:42:01
質問失礼します。

A1R5G5B5のテクスチャーをTRIANGLELISTで2Dとして描画しています。
頂点のアルファを変更し、半透明にしようとしたのですが、全く効果がありません。
(不透明になります。ただし、テクスチャーA1R5G5B5のピクセルの抜き色は反映されています。)
頂点色 D3DCOLOR_ARGB(128, 255, 255, 255) 0x80FFFFFF の時に半透明になるようにしたいです。

アルファブレンディングの設定は以下のようにしています。
dev->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
dev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
dev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);

ドライバーは最新です。
(他のソフトで半透明になるのを確認しました)

環境は以下の通りです。
DirectX 2005 April
VS2003
Win2000

リモート
DirectX 9.0c
Win2000

原因が分かる方、よろしくお願いします。
936デフォルトの名無しさん:2006/09/27(水) 13:46:17
考えるまでもなくテクスチャのα値を参照するようになっているからだろ。
それに何か疑問点があるのか?
937デフォルトの名無しさん:2006/09/27(水) 13:48:42
>>936
それをどうやったら頂点カラーを参照するようになるか?って質問だろ。
オマエは初心者に厳しいなw
938デフォルトの名無しさん:2006/09/27(水) 14:06:26
SetTextureStageState()のAlphaOP
939935:2006/09/27(水) 14:32:09
返答ありがとうございます。

SetTextureStageStateに関しては嫌な予感がします。
今会社なので試せませんが、夜見直して結果を書き込みます。
ありがとうございます。
940デフォルトの名無しさん:2006/09/27(水) 14:54:36
wave読み込むmmio〜なAPIで、
ファイル(mmioOpen)でなくメモリから読み込むやつってあります?
941デフォルトの名無しさん:2006/09/27(水) 17:04:45
mmioOpen自体にメモリから読み込む機能があるので頑張ってください。
とってもとっても応援してます。
942デフォルトの名無しさん:2006/09/27(水) 20:05:29
「デバイスの消失」についての質問です。
SDKに書いてあるようにデバイスが消失したらD3DPOOL_DEFAULTで取得した
頂点バッファとかを解放する必要があると書いてあるわけなんですけど
これって、わざわざ、↓の工程をしないといけないのですか?
せっかく、頂点バッファを取得して、そこに頂点のデータを代入しても
デバイスが消失したら、その頂点バッファを使えなくなってしまい、
代入した頂点データがパーになってしまうということですよね?
皆さんは、どのような対策をしてるんでしょうか?
代入する頂点データとかを別の場所に保存してるんですか?
よろしくおねがいします。

工程:
デバイス消失

D3DPOOL_DEFAULTで取得した頂点バッファを解放

Resetできるなら、Resetメソッドで復帰

また、頂点バッファを取得しなおす
943デフォルトの名無しさん:2006/09/27(水) 20:30:41
元に戻せばいいだけの話なのに何が問題なんだ?
944デフォルトの名無しさん:2006/09/27(水) 21:00:58
>>942
データを元に戻すのが面倒だったらアプリ終了しちゃえ。
「デバイスロストしたので終了します」って。マジでそれで十分だ。
945942:2006/09/27(水) 21:33:05
>>943
元に戻すためには、頂点バッファに入れた情報を別の場所で
保持し続けなければいけないわけで、もったいないと思うから。
946デフォルトの名無しさん:2006/09/27(水) 21:40:32
ハァ、何がもったいないんだ?
必用な処理にもったいないも糞もないだろ。
947デフォルトの名無しさん:2006/09/27(水) 21:42:37
面倒というなら分かるけど、そういう風になっているからしょうがない。
D3DPOOL_MANAGEDを使うか、DirectX10を待つしかない。
948デフォルトの名無しさん:2006/09/27(水) 21:49:54
>>946
>>947

頂点も数が多くなれば、それを保持するのも
もったいないと思ったわけですが、
D3DPOOL_DEFAULTフラグを使う時は節約することは
できないようですね。
ありがとうございました
949デフォルトの名無しさん:2006/09/27(水) 21:57:59
裏で保存する処理が行われていれば、どんなにメモリが無駄遣いされても絶対気にしないくせに、
面倒な作業だと思うと、途端にもったいないとか言い出す。
950デフォルトの名無しさん:2006/09/27(水) 22:03:29
裏でバンバンメモリの確保開放が行われてるのに
断片化を嫌がって初期化時以外は一切mallocやnewをしない方針の人。
昔はよくいたよね。
951デフォルトの名無しさん:2006/09/27(水) 22:41:00
>>950
別に同じヒープから確保されているとは限らないじゃん。
952デフォルトの名無しさん:2006/09/27(水) 22:44:11
メモリプールだ
953デフォルトの名無しさん:2006/09/27(水) 22:45:22
最近はOSがやってくれてるから
わざわざアプリ側でそんなことをする必要がない
954デフォルトの名無しさん:2006/09/27(水) 22:52:03
俺、メモリまわりの勉強ってやったことないんだけどさ。
今、自分のプログラムで何にどのくらいメモリを使っているか?
ってどうやったらわかるの?
あ、タスクマネージャーでわかるようなのじゃなくて
どのクラスがどれくらい食ってるとかそういう情報まで調べようと思ったら
一般的な方法としてはどういうのがあるの?
955デフォルトの名無しさん:2006/09/27(水) 22:54:23
malloc/free自分でこしらえたら?
956デフォルトの名無しさん:2006/09/27(水) 22:55:08
とりあえずスレタイを読むと良いと思う。
957デフォルトの名無しさん:2006/09/27(水) 22:55:30
>>955
もう、newとdeleteでかなり組んでるので勘弁してくださいw
958デフォルトの名無しさん:2006/09/27(水) 22:56:55
>>957
オーバーライドするだけだから変更箇所は少ない
959デフォルトの名無しさん:2006/09/27(水) 23:02:08
>>958
オーバーライドする方法は昔試みたけどSTLかなんかで妥協した覚えが・・・
960デフォルトの名無しさん:2006/09/27(水) 23:07:00
>>959
じゃあ今回も妥協しなさい・・・妥協?挫折?
961デフォルトの名無しさん:2006/09/27(水) 23:07:48
>>960
なんかエラーがたくさんでんねん。
962ヶロス:2006/09/27(水) 23:08:13
用語わからんw
963デフォルトの名無しさん:2006/09/27(水) 23:19:30
>>954
メモリの残り容量取得する関数があるから
自分のアプリだけ立ち上げてテストして見れ
964デフォルトの名無しさん:2006/09/27(水) 23:50:29
それだったらタスクマネージャーで見たらええやん
965デフォルトの名無しさん:2006/09/27(水) 23:55:31
そういえばそうだ
966デフォルトの名無しさん:2006/09/27(水) 23:57:23
そろそろ次スレの季節
俺無理だった。他の人ヨロ
967デフォルトの名無しさん:2006/09/28(木) 00:27:05
>>941
kwsk
MMIOINFOの説明が無いしポインタっぽい指定も無い><
968デフォルトの名無しさん:2006/09/28(木) 00:57:27
ウィンドウで描画してる間、別のコンソール画面で情報を表示したいのですが、具体的な手段が分かりません。
教授願います。
969935:2006/09/28(木) 01:10:05
>>938
解決しました。
ありがとうございました。
970デフォルトの名無しさん:2006/09/28(木) 01:12:53
>>968
デバッグモードでアウトプットウィンドウで見たらいいんじゃん?
971デフォルトの名無しさん:2006/09/28(木) 01:14:47
>>968
リッチテキストのウインドウでも作って、好きなように出力すれば?
972デフォルトの名無しさん:2006/09/28(木) 01:27:47
>>970,971
ありがとうございます。
とりあえずprintfで出力できるコンソールウィンドウを考えています。
973デフォルトの名無しさん:2006/09/28(木) 01:37:03
>>972
デバッグんときはシステムを/consoleでビルドして、
リリースんときは/windowsでビルドしろ。

int main( void )
974デフォルトの名無しさん:2006/09/28(木) 01:38:51
送っちまった・・・
#ifdef _DEBUG
int main( void )
{
  return WinMain( ... );
}
#endif
とかやれば問題ねぇ
975デフォルトの名無しさん:2006/09/28(木) 01:42:06
そういうのパッと見わけがわからないからやめてくれない?
976デフォルトの名無しさん:2006/09/28(木) 01:58:23
Windows厨は、黙ってOutputDebugString(TRACE)
977デフォルトの名無しさん:2006/09/28(木) 02:03:34
>>973
ありがとうございます
コンソールウィンドウは出せましたが、今度は描画してるウィンドウがなくなりました。
描画しつつコンソールに文字出力というのは無理なのでしょうか?
978デフォルトの名無しさん:2006/09/28(木) 02:05:13
んじゃ>>975の要望にもこたえる方法

::AllocConsole();
hConsole = ::GetStdHandle( STD_OUTPUT_HANDLE );

void Printf( const char *pStr,... )
{
  Uint32 WriteSize;
  char Temp[1024] = "";

  vsprintf( Temp, pStr, (char*)(&pStr + 1) );
  ::WriteFile( hConsole, Temp, (int)strlen(Temp), &WriteSize, 0 );
}
979デフォルトの名無しさん:2006/09/28(木) 02:06:34
>>977
コンソールアプリでもCreateWindowで普通にウィンドウ作れるわけだが・・・
UpdateWindow()とかShowWindow()とかしてないだけじゃない?
980デフォルトの名無しさん:2006/09/28(木) 02:26:01
e:\デスクトップ\dx9animation\cd3dxobject.cpp(6): fatal error C1083: include ファイルを開けません。'DXUtil.h': No such file or directory
とか言われるんだけど、DXUtil.hって昔のヘッダか何か?
981デフォルトの名無しさん:2006/09/28(木) 06:44:30
SamplesのCommonの下にある、サンプル類が共通で使用してるファイル。
DirectX本編側に組み込まれてるわけじゃないから、自前で組み込んでなければ
それは出るだろうさ。
982デフォルトの名無しさん:2006/09/28(木) 11:48:25
教えてエロい人

スキンメッシュアニメーションと、ボーンアニメーションっていっしょ?
肌と骨で違う感じするけど、どうなん?

DirectX使って再生する場合って、それぞれまったく違う
プログラムが必要でつか?
983デフォルトの名無しさん:2006/09/28(木) 12:18:44
>>982
一緒
984982:2006/09/28(木) 12:21:32
>>983
ありがとうごぜいます。
これで安心してプログラムくめまつ。

せっかくだから俺はボーンアニメーション使って
エロい同人ゲーム造るぜ。
985デフォルトの名無しさん:2006/09/28(木) 13:16:10
Vistaが来るぞ、気をつけろぉ!
986デフォルトの名無しさん:2006/09/28(木) 15:54:10
DirectXを初期化するとdoubleの割り算の結果が変わるのはなぜ?
987デフォルトの名無しさん:2006/09/28(木) 16:03:32
>986
つD3DCREATE_FPU_PRESERVE
988デフォルトの名無しさん:2006/09/28(木) 19:06:08
>987
ありがとうございます。
お手数ですがもう一つお願いします。

このパラメータDirectX8以降に対応してるっぽいけど、
DirectX7だと_controlfpしかないですかね?

使って戻してがかなり不便・・・
989デフォルトの名無しさん:2006/09/28(木) 19:41:59
>988
自分で調べろよ
DDSCL_FPUPRESERVE
990デフォルトの名無しさん:2006/09/28(木) 22:28:43
>>989
度々ありがとうございます。

>自分で調べろよ
ここで聞くことは調べてることになると思いますが違いますかね?
調べるということは情報を得るということですから、
このスレで情報を得ようとすることは調べてることと同じと思います。

それにこのやりとりを他の人が見ることで、
その人もここで調べることができるわけですから、
決して無駄ではないはずです。
991デフォルトの名無しさん:2006/09/28(木) 22:33:31
これがゆとりの成果。
992デフォルトの名無しさん:2006/09/28(木) 22:38:57
初めて超理論展開を体験した
993デフォルトの名無しさん:2006/09/28(木) 22:51:41
宇宙の真理がここにある
994デフォルトの名無しさん:2006/09/28(木) 22:59:49
銀河の歴史に新たな1ページ
995デフォルトの名無しさん:2006/09/28(木) 23:06:08
宇宙の授けた光の答え
996デフォルトの名無しさん:2006/09/28(木) 23:10:20
次スレないの? じゃあ完結おめでとう?
997デフォルトの名無しさん:2006/09/28(木) 23:14:14
何度でも蘇える!
998デフォルトの名無しさん:2006/09/28(木) 23:25:52
>>990
日本語ドキュメント1つ読むコトすらできないの?
ってコトだ。
999デフォルトの名無しさん:2006/09/28(木) 23:27:42
>>990
天然なんだねw
自分で調べろって言われるってことは、ぐぐればすぐわかることを質問してるからだろ?
1000デフォルトの名無しさん:2006/09/28(木) 23:34:11
そして時は動き出す。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。