【C++】 DirectX初心者質問スレ Part5 【C++】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/07/22(金) 20:20:54これらに当てはまる人のための質問スレです。
1.C/C++は多少理解している。
2.最近DirectXを始めたばかり
3.SDKを見ても、Googleで検索しても、いまいち理解できない人
4.余計な雑談は不要ですよ
【 回答してくださる方 】
・ できるだけ優しく質問に答えてあげてください。
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。
「ググれ」「SDK見れ」以外の回答でおながいします。
・ 神ですら理解不能な質問は無視して下さい。
【 質問する香具師 】
・ どんな事で躓いているのか明確にしよう。
・ 長くならないなら躓いている部分のコードを晒してみれ。
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書こう。
・ 回答して貰ったら、出来るだけお礼もしよう。
前スレ
【C++】 DirectX初心者質問スレ Part4【C++】
http://pc8.2ch.net/test/read.cgi/tech/1115484821
0003デフォルトの名無しさん
2005/07/22(金) 21:40:40DirectXはどこでダウンロードするんですか?
前にサイトに行って、ダウンロードしようと思ったんですが、
英語ばかりで、しかも、登録?みたいな事を進められたので、
ほかにダウンロードできる場所ありましたら、教えてください。
0004デフォルトの名無しさん
2005/07/23(土) 00:01:46つか、SDK?RUNTIME?
SDKは開発者用のもんで、ランタイムは実行するのに必要なものだけだ。
用は開発者用がSDKで、ユーザ用がRUNTIMEだけどそこらへんは大丈夫なのかと・・・。
ランタイムならスレ違いなので適当にCDROM付きエロゲ情報誌でも買えw
SDKなら↓
http://www.microsoft.com/downloads/search.aspx?displaylang=en&categoryid=2
のページから適当にContinueボタン押して適当に同意した後、Continueボタンを押せば
普通にDownloadできるぞ。まあ、いつものアプリのインストールと同じだ。登録してるわけじゃねぇよ。
0005デフォルトの名無しさん
2005/07/23(土) 00:17:150006デフォルトの名無しさん
2005/07/23(土) 01:35:530007デフォルトの名無しさん
2005/07/23(土) 01:36:540008デフォルトの名無しさん
2005/07/23(土) 11:23:16パパとママの定義は、現代では以下の種類がある。
遺伝子上のパパとママ
法律上のパパとママ
出産したママ
育てたパパとママ
お金をくれるパパ
どのことを言ってるのかね。
0009デフォルトの名無しさん
2005/07/23(土) 11:44:47画面上に複数同時(別座標)に描画したいのですが。
やり方がよくわかりません。
モデル1個の描画に対して一個のメッシュポインタを用意して、
D3DXLoadMeshFromXで描画したい分ロードしDrawSubsetを呼んでいます。
それぞれのモデルが移動や回転をする為には、デバイスオブジェクトも
複数生成して、setTransformメソッドを呼ぶのでしょうか?
0010デフォルトの名無しさん
2005/07/23(土) 12:15:02メッシュオブジェクトはひとつでいい
唯一のメッシュ作成
↓
1番目のトランスフォーム行列をD3DDeviceにセット
↓
DrawSubset
↓
2番目のトランスフォーム行列をD3DDeviceにセット
↓
DrawSubset
0011デフォルトの名無しさん
2005/07/23(土) 12:20:250012デフォルトの名無しさん
2005/07/23(土) 12:31:53VRAMに読み込んだ画像(メッシュ)を異なる座標に描画すればいいだけなのに
0013デフォルトの名無しさん
2005/07/23(土) 13:00:22参考にしてた資料とDirectXでは定義が違ってたみたいで
作ったライブラリをDirectX側に合わせて修正したら
動作がおかしくなってしまった。
DirectXの定義って
FOV = 垂直視野角(Y軸)
AspectRate = ディスプレイの幅/ディスプレイの高さ
で良かったんでしたっけ?
0014デフォルトの名無しさん
2005/07/23(土) 13:02:3600159
2005/07/23(土) 13:14:32D3DDeviceも複数作成する必要があるということですね?
D3DDeviceは1画面に1つ作成するものだと勝手に思い込んでいました。
0016デフォルトの名無しさん
2005/07/23(土) 13:15:160017デフォルトの名無しさん
2005/07/23(土) 13:20:10メッシュはスタンプみたいなもんだ。
DrawSubsetでぺったんぺったん。
0018デフォルトの名無しさん
2005/07/23(土) 13:22:54ありがとうございます。
確認してみたころ
ヘルプD3DXMatrixPerspectiveFovXXの項が間違っていた為でした。
正しくはこうみたいです。
xScale = aspect ratio / yScale
↓
xScale = yScale / aspect ratio
00199
2005/07/23(土) 13:34:47ものすごく勘違いしていました。
トランスフォーム行列をD3DDeviceにセットしてから、
DrawSubsetを呼べば、セットした座標に描画されるということですね。
0020デフォルトの名無しさん
2005/07/23(土) 15:59:48どうやったら指定した色を透過出来ますか?
0021デフォルトの名無しさん
2005/07/23(土) 17:02:08誰かFAQ書きませんか俺はヤだよめんどくさいから。
>>20
Sufaceってなんのサーフェイスですか?
DirectDrawですか?
だったらカラーキーというものを設定する関数があるので透過したい色を指定ください。
それともDirect3Dのテクスチャですか?
だったらピクセルの透過具合を指定するアルファ値を操作してください。
具体的にはCreateTextureFromFileExなどでアルファ付フォーマットのテクスチャを作成します。
その際に引数のColorKeyで透過したい色を指定すれば勝手にやってくれます。
また、たとえアルファ値を指定してもレンダリングステートなどが間違っていると
うまく透過してくれないのでそのへんがよくわからない場合はいちいち聞きにこないでください。
0022デフォルトの名無しさん
2005/07/23(土) 20:32:46他のアプリケーションが使用しているフィルタグラフに勝手にフィルタを追加するにはどうすればいいですか?
グラフマネージャのアドレスを取得できればなんとかなりそうだと思っています。
0023デフォルトの名無しさん
2005/07/23(土) 20:34:090024デフォルトの名無しさん
2005/07/23(土) 21:22:520025デフォルトの名無しさん
2005/07/23(土) 21:23:16画像の縦横サイズが2のn乗じゃなかったんですが、2のn乗じゃない
画像をテクスチャにするにはどうすればいいんでしょうか?
0026デフォルトの名無しさん
2005/07/23(土) 21:35:340027デフォルトの名無しさん
2005/07/23(土) 21:36:03そんな無駄なことしてる奴ほとんどいないぞ。
それに、2のn乗でしかテクスチャサーフェスが作れない
ビデオカードなんて、今はi810あたりしか残ってないかと。
0028デフォルトの名無しさん
2005/07/23(土) 21:43:29002925
2005/07/23(土) 21:46:37こちらのサイトを見ながら勉強してるのですが、こちらの「テクスチャ」の項には
DirectXは2のn乗じゃないと画像を作れない、画像のサイズは全て256*256で統一した方がいい、
とあったのでそう思い込んでました。
テクスチャの読み込み方法をD3DXCreateTextureFromFileしか知らないのですが、
一般的にキャラクタースプライトを表示する手順というのはどのようなものなのですか?
0030969
2005/07/23(土) 22:13:58一体どこから呼び出されてるのか
皆目検討がつかん・・・。
0031969
2005/07/23(土) 22:33:48中身残ってるのでしょうか、もしや
とりあえず登録クラスのデストラクタで
ReleaseせずClearを使った上に
deleteやってeraseしてみた。
もうこれで完全に消えるっしょw
0032デフォルトの名無しさん
2005/07/23(土) 23:56:17まだやってるのか
なんかvectorわかってなさそうだな
eraseの使い方大丈夫か
0033デフォルトの名無しさん
2005/07/24(日) 00:03:32俺もその辺は困ったよ。
あちこちのサンプル見ても、2の累乗サイズのテクスチャを貼るものしかなかったもんなあ。
でも、画像は2の累乗サイズじゃないのが普通なんで、利便性を取ってがんばって対応した。
29もがんばれ。
0034デフォルトの名無しさん
2005/07/24(日) 00:20:43D3DXCreateTextureFromFileExのフィルターオプション(DWORD Filter、DWORD MipFilter)
にD3DX_FILTER_NONEを入れれば解決
違う意味だったらスマソ
0035デフォルトの名無しさん
2005/07/24(日) 00:43:01で、そこからD3DXCreateTextureFromFileInMemoryEx()するだけじゃないかな。
或いはD3DPOOL_DEFAULTがいらないなら、十分な広さの2乗テクスチャをCreateTextureで作成し、
それをLockRect()してデータを書き込むだけでいんでない?
0036デフォルトの名無しさん
2005/07/24(日) 16:04:50設定できたんですがDirectX9.0cあたりから関数が4つの引数になり
回転とかはどう指定したらよいのか解らなくなってしまいました。
どう指定するか教えてくださると嬉しいのですが。
後、sprite->Beginの引数が要るようになったのでpSprite->Begin(D3DXSPRITE_ALPHABLEND);
にして(これ以外だとカラーキーならない)宜しかったんでしょうか?
0037デフォルトの名無しさん
2005/07/24(日) 18:12:24というエラーが出たのですがどうしたら解消できるのでしょうか?
0038デフォルトの名無しさん
2005/07/24(日) 18:39:12何のゲームかも言わずにここで聞くな。
そのフリーゲームの作者とかサポ掲示板などで聞く。
ゲーム名でぐぐる。なり汁。
0039デフォルトの名無しさん
2005/07/24(日) 22:26:20>DirectX8時代はsprite->drawで拡大縮小率とか回転率とか
トランスフォーム行列作ってSetTransformしてください。
>後、sprite->Beginの引数が要るようになったので
宜しいかどうかは君にしかわからない。想定通りの挙動をしてるのかね?
0040デフォルトの名無しさん
2005/07/24(日) 22:27:570041デフォルトの名無しさん
2005/07/24(日) 22:37:17WinSockを使用し、自分で正しい実装をする。
004225
2005/07/25(月) 00:31:12>>34
D3DX_FILTER_NONEを用いることで無事に出来ました。
2のn乗に足りない部分は自動的に透明な黒で補完されつつ
一番近い2のn乗のサイズでテクスチャを作ってくれる、
という理解をしましたが、合ってるかは不安です…
>>35
CreateCompatibleDCやCreateCompatibleBitmapなどを用いて作業用領域に画像を展開し、
メモリ上にあるDIBをテクスチャとして用いるという方法であってるでしょうか?
大きいサイズの背景画像をどうやって表示すればよいのか悩んでいたのですが、
512*512ぐらいのサイズの画像としてメモリ上に分割して、描画する際にまとめる
という方法で試しみようかと思います。
0043デフォルトの名無しさん
2005/07/25(月) 05:20:48マスク画像とのαブレンドの方法がよくわかりません。
テクスチャの頂点フォーマットのカラー値のαを操作すれば
透明度の調整は出来ますが、ここら辺にヒントがあるのでしょうか…
DDS形式に変換してからのαブレンドについては何件か検索で引っかかったのですが、
αマスクのビットマップ画像とのαブレンドについては見つかりませんでした。
何方か御教示願えれば幸いです。
# DIBでなら立ち絵・立ち絵マスク・背景のバッファを取得、
# それらをαブレンドの式で計算して出力してたんですが、
# DirectXでのやり方についてはお手上げですorz
0044デフォルトの名無しさん
2005/07/25(月) 08:08:110045デフォルトの名無しさん
2005/07/25(月) 10:24:09はじめからα値含められる画像フォーマット(tgaとか)にすればいいじゃない
まあどうしてもっていうならSetTextureStageStateを調べれば幸せになれるかな
0046デフォルトの名無しさん
2005/07/25(月) 16:07:55ジョイスティックがついているかというのはどのように判別したらいいんでしょう
CreateDeviceの戻り値で判定させようと思ったのですが GUID_SysKeyBoardとGUID_SysMouseしかないので・・・orz
0047デフォルトの名無しさん
2005/07/25(月) 16:56:37なんか色々試行錯誤してたらできました。
SetTextureStageStateじゃなくSetRenderStateの設定を
しただけなんですが、こっちだとよくないんでしょうかね?
(共に抜き色は黒で)αマスクのビットマップは
デバイスポインタ->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
デバイスポインタ->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
と設定し、描画したいビットマップは
デバイスポインタ-->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
デバイスポインタ-->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
と設定したところ、ちゃんとαブレンドできました(ように思えます)。
0048デフォルトの名無しさん
2005/07/25(月) 17:00:37(描画したいビットマップ側の絵が黒で縁取られていれば綺麗になるのですが、
それ以外の場合だと周りが黒っぽく描画されてしまいます)
0049デフォルトの名無しさん
2005/07/25(月) 17:52:23D3DBLEND_INVSRCALPHA→D3DBLEND_INVSRCCOLORでどう?
0050969
2005/07/25(月) 18:34:48ついでにちょいと謎が解ける
vector<NODE> node;
void Hoge()
{
for( int i = 0; i < node.size(); i++ )
{
if( node[i].time > MAX_TIME )
RemoveAt( i );
else
++node[i].time;
}
}
void RemoveAt( int Index )
{
node.erase( node.begin() + Index );
}
こんな使い方をしていたからさぁ大変w
とりあえず修正して様子見中
0051デフォルトの名無しさん
2005/07/25(月) 21:15:03私はeraseされた次の要素の判定が飛ばされるような気がします。
0052969
2005/07/25(月) 22:57:46time = MAX_TIMEという条件で以下の流れ
i = 0 でRemoveAtが動作、要素削除
node.size()が 4に
i = 1 でRemoveAtが動作、要素削除
node.size()が 3に
i = 2 でRemoveAtが動作、要素削除
node.size()が 2に
i = 3 になり、node.size()が2なので終了
中身2つの要素が処理されず次回へ持ち越し
と言った具合です。
ちなみに
int end = node.size()
for( int i = 0; i < end; i++ )
これは、エラーでうっ止まるので。
0053デフォルトの名無しさん
2005/07/25(月) 23:04:45{
vector<NODE>::iterator it = node.begin();
while (it != node.end())
{
if (it->time > MAX_TIME)
it = node.erease(it);
else
++it;
}
}
0054デフォルトの名無しさん
2005/07/26(火) 00:02:25はループされるたびにnode.end()は呼び出されないのかな?
とりあえず試してみるか。
いまんとこ RemoveAtしたら i をデクリメントして対策してます。
0055デフォルトの名無しさん
2005/07/26(火) 01:50:57どうやらC++.netが必要みたいですが、アカデミック以外で一番安く買えるのは
Microsoft Visual C++ .NET 2003
http://www.yodobashi.com/enjoy/more/i/cat_38974489_36928194_320347/8973942.html
でしょうか?
0056デフォルトの名無しさん
2005/07/26(火) 01:51:280057デフォルトの名無しさん
2005/07/26(火) 07:09:35あとageんな
0058デフォルトの名無しさん
2005/07/26(火) 08:03:310059デフォルトの名無しさん
2005/07/26(火) 08:08:25http://pc8.2ch.net/test/read.cgi/tech/1109618655/
こちらのタダバージョンをお勧めする
0060デフォルトの名無しさん
2005/07/26(火) 10:45:18ニートじゃないけど見てみます
ありがとう
0062デフォルトの名無しさん
2005/07/26(火) 12:04:23006355
2005/07/26(火) 14:59:25学生じゃないです
>>59
ニートじゃないです
VC4を昔会社で使っていたので、VC環境でやりたいっす
Microsoft Visual C++ .NET 2003で問題無いということでしょうか?
エンタープライズなんちゃらじゃなくてもとりあえず問題は無し?
後はDirectX9って書いてあるIO辺りの本を買ってきてぴゃーってサンプルとか動いちゃう?
0064デフォルトの名無しさん
2005/07/26(火) 15:08:45Standardは最適化なしのコンパイラしかついてこないので、
Toolkit2003の最適化ありのコンパイラに差し替えて使うように。
最後の一行は訳わかめだしふざけ過ぎ。
006555
2005/07/26(火) 15:42:57DirectX9って書いてあるIO辺りの本とはこれらのことです
http://www.amazon.co.jp/exec/obidos/search-handle-url/index%3Dbooks-jp%26field-author%3DO%E7%B7%A8%E9%9B%86%E9%83%A8%2C%20%E7%AC%AC%E4%BA%8CI/249-5483332-2413147
最適化の件もありがとうございます
0066デフォルトの名無しさん
2005/07/26(火) 19:25:430067デフォルトの名無しさん
2005/07/26(火) 21:13:140068デフォルトの名無しさん
2005/07/26(火) 21:14:130069デフォルトの名無しさん
2005/07/28(木) 06:45:270070デフォルトの名無しさん
2005/07/28(木) 08:17:270071デフォルトの名無しさん
2005/07/28(木) 23:51:47D3DPT_lineSTRIP でラインを描画しようとすると、
meshファイルの色の影響が出ているようなのですが、
どうしてなんでしょうか?
また、回避するにはどうすればいいのでしょうか?
0072デフォルトの名無しさん
2005/07/29(金) 00:42:45Zバッファが微妙なんじゃねーの?
0073デフォルトの名無しさん
2005/07/29(金) 01:23:06それともテクスチャ?
後者なら
IDirect3DDevice9::SetTexture( 0, NULL )
0074デフォルトの名無しさん
2005/07/29(金) 01:53:16それは解決法として如何なものか
0075デフォルトの名無しさん
2005/07/29(金) 02:51:41ラインを描画する前にRenderStateとTextureStageStateを
ちゃんと設定しているか?
007671
2005/07/29(金) 03:05:09SetTexture( 0, NULL )
これでラインがきちんと白色で描画されました
どうもありがとう
helpでこの関数を調べたら、後ろの引数がNULLだと
どうなるか記述されていませんでした
>>74
73でどういう症状になっていたのがわかりました
ようするにテクスチャを描画する状態が残っていたので、
その状態から脱出すればいいのですね?たぶん
SettextureStateState() に D3DTOP_DISABLE を
渡すのが正しい処理なのでしょうか?
実際に試してみたら、この方法でも白色で描画されました
これでいいのかな?
007771
2005/07/29(金) 03:07:13あぁ、レスを書いているときに入れ違いになってしまいました
RenderState と TextureStageState のそれぞれの
何の項目を設定するのでしょうか?
0078デフォルトの名無しさん
2005/07/29(金) 12:36:50出力色 = マテリアルディフューズ色
なら、
colorVertex = false;
colorOp[0]= selectArg1;
colorOp[1]= disable;
colorArg1[0]= current;
alphaOp[0]= selectArg1;
alphaOp[1]= disable;
alphaArg1[0]= current;
texture[0] = null;
0079デフォルトの名無しさん
2005/07/29(金) 16:28:53今月号の付録は何かなー?
http://www.microsoft.com/downloads/details.aspx?FamilyID=3904b19a-02b9-447b-ab58-c12e2456e9ba&DisplayLang=en
0080デフォルトの名無しさん
2005/07/29(金) 17:10:11どうせまた隠し変更あるんだろお
しっかしHLSLコンパイラのアップグレードがねえなあ
たのむぜまったく
0081デフォルトの名無しさん
2005/07/29(金) 17:37:21何の項目って、必要な項目に決まってるだろう。
何が必要かを自分で調べろ。
Direct3Dを使うならRenderStateとTextureStageStateは
全部把握しないと駄目。そのくらい重要で基本的なこと。
0082デフォルトの名無しさん
2005/07/29(金) 18:47:57DX9.0での内部動作についてです。
pd3dDevice->DrawPrimitive()って処理時間必要ないんですか?
この関数が帰って来た時は、まだ描画が終了していない様な動きをしてしまうんですが。
具体的には、自前のレンダーターゲットに、ピクセルシェーダーを使って描画し、
その後、pd3dDevice->Present()でプライマリサーフェイスへ転送しています。
D3DPRESENT_PARAMETERS.PresentationInterval=D3DPRESENT_INTERVAL_ONEにしてても、
テアリングが発生してしまいます。
ピクセルシェーダー処理が軽い時は、テアリングは発生しないのですが、重いと書き換えラインが見えてしまいます。
そのラインの位置は一定なので、一応V-Blankは待っている様です。
もし、DrawPrimitiveが非同期ならば、何とか描画終了まで待ちたいのです。何か関数やオプションがあるんでしょうか?
・・・DX7時代には、DrawPrimitiveってフラグで同期・非同期を選択できましたよね。
008382
2005/07/29(金) 18:49:38具体的には、自前のレンダーターゲットに、ピクセルシェーダーを使って描画し、
↓
具体的には、規定のバックバッファにピクセルシェーダーを使って描画し、
008482
2005/07/29(金) 19:10:450085デフォルトの名無しさん
2005/07/29(金) 19:48:19保証はないみたいだよ。(SDKドキュメントに書いてある)
描画コマンドとの同期はIDirect3DQuery9で調べてみると幸せかも。
あとV-BlankはGetRasterState()で自前で検出できるみたいだからそっちも試してみたら?
008682
2005/07/29(金) 21:22:47ありがとうございます!!無事同期を取る事ができました。
これで週末休めそうです。・゚・(ノД`)
お詳しい85さんにもう一つ、今回どうしても解らなかった事をお聞きしても宜しいでしょうか?
現在ウインドウモード限定のD3Dアプリを作ってるのですが、
バックバッファをスワップしたいのです。
具体的には、
バックバッファを2枚用意・・・
バックバッファ1にDrawPrimitive()
バックバッファ2をPresent()(フロントバッファにコピー)
1と2を(処理対象を)入れ替える
以上繰り返し・・・
をしたい(つまり、テアリングを見せずに速度アップを行いたいんですね)のですが、
D3DPRESENT_PARAMETERSで、
BackBufferCount=2
SwapEffect = D3DSWAPEFFECT_DISCARD;
PresentationInterval = D3DPRESENT_INTERVAL_ONE;
とする事でバックバッファは2枚確保できているんでしょうか?
バックバッファとは別に、ソースとなるダイナミックテクスチャを1枚作成しているのですが、
上の設定でデバイスを作成すると、なぜかLock時にエラーが出る様になってしまいました・・・
バックバッファを複数確保した時に何か注意点とかご存知ないですか?
0087デフォルトの名無しさん
2005/07/29(金) 23:30:55で、カメラの回転するソースがあったのですが、どうもこれって
三角が回転してるようにしか見えません。
もう少し、それっぽく見えるようなソースを捜しているのですが、どこかに
ないですか? または、作れる神はいませんでしょうか?
カメラが360°手動でぐるぐる動かせるようなやつです。
もう2時間近く捜してます (´ー゚#)
008871
2005/07/29(金) 23:42:30これだけど、
>>73 と >>78 では「解法」といっていて
>>74 では「それはあやしい」といってるけど
どっちが正しいの?
0089デフォルトの名無しさん
2005/07/29(金) 23:59:02それがどうした?
0090デフォルトの名無しさん
2005/07/29(金) 23:59:590091デフォルトの名無しさん
2005/07/30(土) 00:07:23俺作ったよ
5度単位でぐるぐる動くの
0092デフォルトの名無しさん
2005/07/30(土) 00:08:47>三角が回転してるようにしか見えません。
当たり前です。
表示したい物がカメラに対してどの位置に来るのか計算しなきゃ
「三次元上のカメラの動き」が再現できるわけないでしょう。
>もう2時間近く捜してます
だから何?
009387
2005/07/30(土) 00:21:44計算の仕方がわかりませんよ・・
ソースみたら多少はつかめると思うんです
うざいかもなのでこれで最後 だめなら諦めます
さ ん ぷ る く だ さ い みっからないんです、よろしくお願いします
0094デフォルトの名無しさん
2005/07/30(土) 00:38:34あやしいという訳ではなく、足りないということ。
レンダーステートというのは明示的に変更しない限り保持される。
最初のDrawPrimitiveと次のDrawPrimitiveでエフェクトを描画効果を変えたいなら
当然ステートを変えなきゃならんでしょ。
テクスチャの影響を無くしたいのなら、テクスチャのサンプリング自体を止めるのが正道。
それが>>78
009571
2005/07/30(土) 00:55:53後ろの引数を NULL にすること自体は
間違ってない、というのですね
ところで、RenderStateとかTextureStageStateとか
現在のステートをどこかにプッシュして、
何かを行って、後からポップするようなことって
できないのでしょうか?
アセンブラでいうと、pushad/popad で、汎用レジスタの値を
全部まとめてスタックにセーブしたりロードしたりできたと
思うのですが、こんな感じのものが欲しい…
0096デフォルトの名無しさん
2005/07/30(土) 01:13:04> 何かを行って、後からポップするようなことって
エフェクトを使えばできるよ。
あと、使ったことないけどステートブロックってのがそれっぽい。
0097デフォルトの名無しさん
2005/07/30(土) 02:29:41ハイハイ
ここは釣堀じゃありませんよ
さっさと巣に帰れ
0098デフォルトの名無しさん
2005/07/30(土) 02:38:35さっきNHKでやってたデンジロウ先生の蓄音機に感銘を受け
独力で作り上げた小学生の恥垢でも煎じて飲めやカス
0099デフォルトの名無しさん
2005/07/30(土) 12:50:50このサイトでは、手の親指をX・人差し指をY・中指をZ、として座標を形作る
http://www.sis.otsuma.ac.jp/~tsutsumi/lecture/graphics/gif/s7_10.jpg
一方このサイトでは、親指がz軸となっています
一体どちらが正しいんですか?
0100デフォルトの名無しさん
2005/07/30(土) 13:17:260101デフォルトの名無しさん
2005/07/30(土) 14:29:030102デフォルトの名無しさん
2005/07/30(土) 14:32:33自分で使わないだけなのに責任転嫁とは厨の考えることはさっぱり分からない。
0103デフォルトの名無しさん
2005/07/30(土) 14:35:01やっぱこれがベストだよね♪
0104デフォルトの名無しさん
2005/07/30(土) 15:59:330105デフォルトの名無しさん
2005/07/30(土) 16:59:002005Aprさがそうとするぞ?
0106デフォルトの名無しさん
2005/07/30(土) 20:41:39仕事でも趣味でも、必要なやつなんてほとんどいないだろう。
Vistaたんまでもちつけ。
0107デフォルトの名無しさん
2005/07/31(日) 15:19:06が見つかりません。2004年版と2005年版を両方探しました。
だれか居場所をご存じの方教えてください。
0109デフォルトの名無しさん
2005/07/31(日) 19:20:53Summer2004以降は削除された気がする。
Summer2003にならある。
0110デフォルトの名無しさん
2005/07/31(日) 21:23:110112デフォルトの名無しさん
2005/08/01(月) 03:22:57カメラのnerとfarの間は出来るだけ小さいほうが言いと聞いたのですがそれは何故でしょうか?
また、あるものを描画したい場合そのまま描画するよりもそのものやカメラの距離などを全てを例えば十分の一にしして描画結果は同じでもnerとfarを小さくしたほうがいいのでしょうか?
0113デフォルトの名無しさん
2005/08/01(月) 06:48:13<O_______near____________far
カメラ
<O__________near_____far
描画対象が少ないから?
0114デフォルトの名無しさん
2005/08/01(月) 09:37:24nearからfarまでが10mだとすると、1bitで約0.04mになります。
nearからfarまでが1000mだとすると、1bitで約4mになります。
もしnearから2mの点と3mの点があった場合、
前者ではちゃんと違う深度になりますが、
後者では同じ深度になってしまいます。
0115デフォルトの名無しさん
2005/08/01(月) 09:37:57<O__near__(・ω・)__far
これは意味ないわね。
>>113もそうだし、nearとfarの比が大きい(nearが近すぎとか)と、
射影後のZ値の偏り(近くが密、遠くが疎)が大きくなるってのは一応あるわ。
0116デフォルトの名無しさん
2005/08/01(月) 11:34:46目安としては、視錐体に対角線を引いて、交わった部分が0.5になる位置。
http://www.uploda.org/file/uporg160631.png
だからnearを極端に近づけると、後ろの方のZの精度が 1/2,1/4…に
なるから注意してね。
0117デフォルトの名無しさん
2005/08/01(月) 11:52:47そこらへんの理解が足りないんだけど、
射影変換後のZ値は
z' = z / ( far - near ) - near / ( far - near )
で0.0〜1.0でリニアに変換される。
これにw(z)で除算すると
z'' = z' / w
非線形分布になる。
前者がZバッファリング、後者がWバッファリングってことでいいのかな?
0118デフォルトの名無しさん
2005/08/01(月) 12:39:50Zバッファ用の値は、後者みたいなw除算後の値だわ。
(前者の計算式はちょっと違うみたいだけど)
Wバッファ用の値は…たしか1/z をそのまま使うと思うわ(自信ないけど)
0119デフォルトの名無しさん
2005/08/01(月) 13:03:270120デフォルトの名無しさん
2005/08/01(月) 13:11:24ごめんなさい間違えました。
前者は射影変換とは関係ない
Z値を0.0〜1.0にリニアに変換する式でした。
Wバッファリングは今思い出したんですが、
言われたそれで良かったと思います。
頭のもやもやがとれました。ありがとうございました。
0121デフォルトの名無しさん
2005/08/01(月) 14:22:15しようとするとエラーが出てしまいます。
groundVer = new LVERTEX[NUM_MAPVERTEX] ←コレ
pD3DDevice->CreateVertexBuffer(sizeof(LVERTEX) * NUM_MAPVERTEX,0,FVF_LVERTEX,D3DPOOL_MANAGED,&p_GroundBuf, NULL);
p_GroundBuf->Lock(0,0,(void**)&argVer,0);
memcpy(groundVer,mapVer[0], sizeof(LVERTEX) * NUM_MAPVERTEX);
p_GroundBuf->Unlock();
何ででしょう?
0122デフォルトの名無しさん
2005/08/01(月) 15:22:530123デフォルトの名無しさん
2005/08/02(火) 00:05:140124デフォルトの名無しさん
2005/08/02(火) 12:16:17記述ミスでした。
argVerではなくgroundVerです。
0125デフォルトの名無しさん
2005/08/02(火) 12:48:02根本的に解放できるわけがない。
0126デフォルトの名無しさん
2005/08/02(火) 14:02:150127デフォルトの名無しさん
2005/08/02(火) 15:25:590128デフォルトの名無しさん
2005/08/02(火) 18:22:030129デフォルトの名無しさん
2005/08/02(火) 20:32:41どうやって単位をもぎとればいいですか?
0130デフォルトの名無しさん
2005/08/02(火) 20:37:260131デフォルトの名無しさん
2005/08/02(火) 20:49:41C++でDirectXの基本的な解説やってるWebと本を教えて。
WinMainつかうのと
AppWizardつかうのと
そのほかのフレームワークやら、ライブラリやら使う奴を個別に教えて欲しい。
で、できれば、次スレ以降のテンプレに加えてくれ。
最初のここでつまづいているオレよりのお願いだ!
0132デフォルトの名無しさん
2005/08/02(火) 21:12:030133デフォルトの名無しさん
2005/08/02(火) 22:31:56>>66-70
0134デフォルトの名無しさん
2005/08/02(火) 23:31:07本スレのテンプレ見ろよ
0135デフォルトの名無しさん
2005/08/03(水) 12:08:080136デフォルトの名無しさん
2005/08/03(水) 14:40:42お前にこれをやろう
つ「グーグル」
0137デフォルトの名無しさん
2005/08/03(水) 15:07:35グーグルで検索してもわかりませんでした。
0138デフォルトの名無しさん
2005/08/03(水) 15:10:120139デフォルトの名無しさん
2005/08/03(水) 15:45:180140デフォルトの名無しさん
2005/08/03(水) 15:48:160141121
2005/08/04(木) 00:01:35解放しないとメモリーリークしませんか?
>126
どこのメモリを使っているのか自明でないと不安なんです。
0142デフォルトの名無しさん
2005/08/04(木) 00:30:18p_GroundBuf->Lockの中の人がせっせとメモリを確保してくれるのだから、その前に自分でnewを書く必要はない。
0143121
2005/08/04(木) 01:20:49あ、なるほど
愚問失礼致しました
0144デフォルトの名無しさん
2005/08/04(木) 17:09:17これってDSBVOLUME_MAX(0)からDSBVOLUME_MIN(-10000)までしか値が指定できません。
という事は、音量を小さくする事しか出来ないのでしょうか?
例えば、ゲームのコンフィグ等にある音量調節を実装する場合、
一度下げてからまた上げたい場合等にはどうすればよいのでしょう?
0145デフォルトの名無しさん
2005/08/04(木) 17:12:53要は、絶対的な音量指定は出来ないのでしょうか?
相対的(しかも下げる方向のみ)だけでなく………
0146デフォルトの名無しさん
2005/08/04(木) 17:42:55それ以上上に移動させようとしているわけだが、頭が固いにもほどがある。
0147デフォルトの名無しさん
2005/08/04(木) 17:45:39ぼくのおちんちんもガチガチです
0148デフォルトの名無しさん
2005/08/04(木) 17:50:44何の疑問も抱かず使うんだろうな。
0149デフォルトの名無しさん
2005/08/04(木) 17:53:29それは、DSBVOLUME_MAXがボリュームコントロールのスライダーの位置最大ということでしょうか?
MSDNを参照すると
>設定可能な値の範囲は、DSBVOLUME_MAX (減衰なし) から DSBVOLUME_MIN (無音) までである。
>これらの値は、Dsound.h 内ではそれぞれ 0 および ?10,000 と定義されている。
>値 DSBVOLUME_MAX は、ストリーム本来の未調整のボリュームを表す。
>値 DSBVOLUME_MIN は、オーディオのボリュームが 100 dB 減衰していることを表し、これは実際的には無音を意味する。
>DirectSound は増幅をサポートしていない。
と書いているのですが………
0150144
2005/08/04(木) 17:55:440151デフォルトの名無しさん
2005/08/04(木) 18:03:23頭固いなあ。
0152デフォルトの名無しさん
2005/08/04(木) 18:05:14>それは、DSBVOLUME_MAXがボリュームコントロールのスライダーの位置最大ということでしょうか?
>それは、DSBVOLUME_MAXがボリュームコントロールのスライダーの位置最大ということでしょうか?
>それは、DSBVOLUME_MAXがボリュームコントロールのスライダーの位置最大ということでしょうか?
>それは、DSBVOLUME_MAXがボリュームコントロールのスライダーの位置最大ということでしょうか?
0153144
2005/08/04(木) 18:10:09とりあえず、有難う御座いました。
0154デフォルトの名無しさん
2005/08/04(木) 18:23:310155デフォルトの名無しさん
2005/08/04(木) 21:40:09数取得できる方法ご存知ないでしょうか?
0156デフォルトの名無しさん
2005/08/04(木) 22:16:31メッシュの輪郭線を描画するために、テクスチャに白地に黒の線を書いて、
それを最後に乗算描画しようとしているのですが、うまくいきません。
設定は
pd3ddevice->SetRenderState(D3DRS_SRCBLEND , D3DBLEND_ZERO);
pd3ddevice->SetRenderState(D3DRS_DESTBLEND , D3DBLEND_SRCALPHA);
です。
テスト用に
pd3ddevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA));
pd3ddevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA));
と設定すれば、白地に黒の輪郭線のみが表示されますので、
テクスチャへの描画はうまく言っているはずです。
SetRenderStateの設定ミスでしょうか?
0157デフォルトの名無しさん
2005/08/04(木) 23:27:130158デフォルトの名無しさん
2005/08/05(金) 15:07:49描画すると真っ黒で、ライトをオフにするとテクスチャと同じ色で描画されます。
この前後でXファイルを描画させると、それに対しては問題なくライトの処理が行われています。
何か特殊な処理でも必要なのでしょうか?
0159デフォルトの名無しさん
2005/08/05(金) 15:36:36法線逆じゃないの?
0160デフォルトの名無しさん
2005/08/05(金) 16:35:28テクスチャ座標を色として出力したいんですが
可能でしょうか?
HLSLの場合こんな感じです。
float4 PixelShaderMain( const in float4 i_vTexCoord0 : TEXCOORD0) : COLOR0
{
return i_vTexCoord0;
}
0163デフォルトの名無しさん
2005/08/07(日) 20:24:43ジョイスティックの名前を取得できませんか?
コントロールパネルのゲームコントローラーで出てくる名前を取得したいんです。
0164163
2005/08/07(日) 21:01:37DIDEVICEINSTANCE構造体から取得できるんですね。
0165デフォルトの名無しさん
2005/08/08(月) 21:16:40普通の画面を描画したあとに、一番手前に大きなポリゴンをアルファブレンディングで
描画するする方法しか思いつきません。
これはすごく重くなりそうです、、一般的にはどのようにして実装するのがいいでしょうか?
0166デフォルトの名無しさん
2005/08/08(月) 21:26:24何故簡単に試せることすらやろうとしない?
0167デフォルトの名無しさん
2005/08/08(月) 21:29:560168デフォルトの名無しさん
2005/08/08(月) 21:42:49レスありがとうございます。
一度作ってみます(ノ∀`) でも重そう…。
>>167
フォグですか。一度試してみます。
ご助言ありがとうございました。
0169デフォルトの名無しさん
2005/08/08(月) 22:01:47「重そう」だと考える根拠が知りたい
0170デフォルトの名無しさん
2005/08/08(月) 22:03:420171デフォルトの名無しさん
2005/08/08(月) 22:04:56ちんちんがむけてないと、たまにそういうこと言うよ。
0172デフォルトの名無しさん
2005/08/08(月) 22:42:150173デフォルトの名無しさん
2005/08/08(月) 22:47:57ちんちんがむけるってゆーたら、
皮のこと指すんだろがふつー。
わからないお前のが童貞。
つーか、俺のソープ初体験(1年前)聞きたいのかボケ。
0174デフォルトの名無しさん
2005/08/08(月) 22:49:510175デフォルトの名無しさん
2005/08/08(月) 22:56:23意気揚々とカスなレスで埋める
お前らがウゼー
ちょっと難しいことを聞くと、
だんまり決め込むチンカスども死んでね
0176デフォルトの名無しさん
2005/08/08(月) 23:11:16よしよし、なんだい?
元ゲームプログラマー(現在業務系プログラマ)な俺が質問に答えてやろう。
0177デフォルトの名無しさん
2005/08/08(月) 23:12:040178マイク ◆yrBrqfF1Ew
2005/08/09(火) 00:02:58どうやって作るんすか
0179デフォルトの名無しさん
2005/08/09(火) 00:14:19さっきググってみたけどポータルって窓口のことだってよ。
やっぱりアルミサッシ買ってくるんじゃね?
0180デフォルトの名無しさん
2005/08/09(火) 00:37:44―――――――――――――‐┬┘
|
____.____ |
| | | |
| | ∧_∧ | |
| |( ´∀`)つ ミ |
| |/ ⊃ ノ | | >>179&アルミサッシ
 ̄ ̄ ̄ ̄' ̄ ̄ ̄ ̄ |
馬鹿かてめーは
アルミサッシもつけてやるから
二度とこのスレ覘くな。
0181デフォルトの名無しさん
2005/08/09(火) 01:38:36では質問、
View空間での方向ベクトルを
射影空間に変換するにはどうすればいいの?
普通に射影行列を掛けてW除算でいいのかな?
0182デフォルトの名無しさん
2005/08/09(火) 03:02:42本当に「方向」ベクトルなら、変換前の座標はちゃんとW=0にして無限遠に向けようね。
それに射影行列をかけてW除算した結果が果たして何を意味するのかは、使う前によく考えましょう。
0183デフォルトの名無しさん
2005/08/10(水) 00:42:48D3DDEVTYPE_REFでも,D3DDEVTYPE_HALでも同様です。
WinnXP Pro SP2 DirectxX9.0 Summer 2005 SDK VC++NET2003 MatroxG400 最新のドライバーを当てています。
いろいろ自分なりに調べてみましたが解決できません。
考えられる原因は何でしょうか?対象方はありますか?教えてください。
0184デフォルトの名無しさん
2005/08/10(水) 00:57:47>MatroxG400
・・・・・・やっぱり、これかな(笑)
0186デフォルトの名無しさん
2005/08/10(水) 10:56:29ポリゴンの頂点がランダムに移動する言う症状が発生しています。
頂点、インデックス共に最初の書き込みのみで、以降変更していません。
なのに何故変化があるのでしょうか?
どなたか助言いただけませんでしょうか。
実際のプログラムはごちゃごちゃしていたので、症状が発生するように抜き出しました。
ttp://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20050810105127177.zip
WindowsXP ProSP2
GeforceFX5900XT
Dx9SDK August 2005です。
0187デフォルトの名無しさん
2005/08/10(水) 11:56:38描画以前の問題。
0188デフォルトの名無しさん
2005/08/10(水) 12:06:59VC++ Toolkit2003でコンパイルしてみました。
中に入っていたpngの正しい描画と同じ結果が得られました。
以上。
0189デフォルトの名無しさん
2005/08/10(水) 12:37:20症状でねぇ
WinXP
Geforce256
DX9.0c
0190デフォルトの名無しさん
2005/08/10(水) 15:37:320191デフォルトの名無しさん
2005/08/10(水) 15:47:21変形ロボットアニメ
0192デフォルトの名無しさん
2005/08/10(水) 15:50:08変圧器
0193デフォルトの名無しさん
2005/08/10(水) 16:14:400194デフォルトの名無しさん
2005/08/10(水) 16:22:37却下
0195186
2005/08/10(水) 17:16:58元はあったのですが、症状の再現に関係なさそうだったので省略しました。
フレーム毎にブレークをかけてF5連打しても時々発生するので、
同期やら、バックバッファ云々では無いかと。
>>188-189
そうですか・・・
3Dゲームとかがおかしかった事は無いし、
ビデオカードのドライバを変えてみたりしたのですが変わらず。
症状が出ても、次のフレームが何事も無かったように描画されるのがなんとも不思議で。
0196デフォルトの名無しさん
2005/08/11(木) 09:04:17D3DCREATE_HARDWARE_VERTEXPROCESSINGを指定してないか?
0197デフォルトの名無しさん
2005/08/11(木) 21:17:37ttp://www.microsoft.com/japan/msdn/academic/Articles/DirectX/02/
ここの「2.3 文字列の表示」を読んでるんですが、
D3DXCreateFont(pD3DDevice, hFont, &pD3DXFont);
の時に関数が不正な 3 個の実引数
pD3DXFont->DrawText(psz, strlen(psz), &rc, DT_SINGLELINE, color); // 文字列を出力
の時に関数が不正な 5 個の実引数
になってしまいます。
BeginとEndも'ID3DXFont' のメンバではありませんと言われてしまいます。
0198デフォルトの名無しさん
2005/08/11(木) 21:43:14もしくはヘッダの宣言みろや
0199デフォルトの名無しさん
2005/08/11(木) 21:51:19DirectX 9.0 SDK Update (Summer 2003) で、ID3DXFont のインターフェイスが変更されました。
http://msdn.microsoft.com/library/en-us/directx9_c/directx/graphics/reference/d3dx/interfaces/id3dxfont/_id3dxfont.asp
0200デフォルトの名無しさん
2005/08/11(木) 21:59:150201デフォルトの名無しさん
2005/08/11(木) 22:10:330202197
2005/08/11(木) 22:38:06if( FAILED( D3DXCreateFont(lpD3DDEV,h, w, 0, 0,0,SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,DEFAULT_QUALITY,
DEFAULT_PITCH,"MS ゴシック", &m_lpFont ) ) )
{
MessageBox( 0, "D3DXCreateFontIndirect FALSE", "ok", MB_OK);
exit(0);
}
で駄目でした。
D3DXFONT_DESChFont={h, w, 0, 0,0,
SHIFTJIS_CHARSET,OUT_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,"MS ゴシック", };
if( FAILED( D3DXCreateFontIndirect( lpD3DDEV, &hFont, &m_lpFont ) ) ) {
MessageBox( 0, "D3DXCreateFontIndirect FALSE", "ok", MB_OK);
return;
}
も駄目でした。
両方コンパイラは通りますが、エラーになってるみたいです。
SDKは丁度、DirectX 9.0 SDK Update (Summer 2003)です。
0203デフォルトの名無しさん
2005/08/12(金) 00:01:56そしたら、
「どのようなエラー値が返っているのか?」
を調べるべし。
0204デフォルトの名無しさん
2005/08/12(金) 00:29:25ヘッダとかエラーメッセージを見たら分かることなんだし。
0205197
2005/08/12(金) 00:50:50DEC値が -2005530516
DXGetErrorDescription9で見てみると
Invalid Call
呼び出し無効?引数が間違ってるって事でしょうか…?
0206デフォルトの名無しさん
2005/08/12(金) 00:51:580207206
2005/08/12(金) 01:50:270208デフォルトの名無しさん
2005/08/12(金) 01:59:06D3DXCreateFontのドキュメントを良く見るんだ。
戻り値について解説がある
0210デフォルトの名無しさん
2005/08/12(金) 11:02:450211デフォルトの名無しさん
2005/08/12(金) 11:31:460212名無し募集中。。。
2005/08/12(金) 16:44:270213デフォルトの名無しさん
2005/08/12(金) 22:49:51書籍片手に悪戦苦闘しています。
質問なんですが、参考にしている書籍ではD3DDeviceのポインタを
全ての描画関数に引数で渡してあるのですが、
これはグローバル(クラス)にひとつだけ持つようにしても問題ないものなのでしょうか?
それとも今後D3DDeviceを2個生成して切り替えるようなテクニックを使うのでしょうか?
0214デフォルトの名無しさん
2005/08/12(金) 23:12:05すべて引数で渡すのが正解。
グローバルで1つだけ生成したとして、
それをどこからも呼べるようにしておいて実際にそうやってくんじゃうと
バグったときに最悪。
これはグローバル変数が駄目といわれる理由。
なんで駄目なのかってのは自分で実際に痛い目をみなきゃ理解できないと思う。
引数で渡すようにするのはそれをどこが呼んでいてどこが変更を加えているのか
わかるようにするため。
決して面倒だからという理由でこれをおこたってはならない。(本当はねw)
0215デフォルトの名無しさん
2005/08/12(金) 23:21:23Mesh読み込んで表示するクラス作ったんだけど、
自分で作ったxファイルが表示できない…。
なんで?
0216デフォルトの名無しさん
2005/08/12(金) 23:22:22回答ありがとうございます。2,3質問があります。
バグった時ってのが具体的に分からないのですが、
変更する必要がなくて、1個だけでよければ
シングルトン(グローバルインスタンス)のメンバ変数で
問題がないように思えるのですが。
どこで呼んでいて、どこで変更ってのも参考にしている書籍では
メイン関数(WinMain)のローカル変数で生成して、それを全てで使いまわしています。
この構成ではシングルトンのメンバに持ったほうが、可読性が上がり、
バグの入り込む余地はないと思うのですが。
テクスチャのリソース管理なども今後シングルトンで管理しようと思っていますが、
D3DDeviceの取り扱いでちょっと悩んでいます。
0217デフォルトの名無しさん
2005/08/12(金) 23:22:400218デフォルトの名無しさん
2005/08/12(金) 23:24:52DXUTGetD3DDeviceの立場はどうなるんだろう、とふと思った。
0219デフォルトの名無しさん
2005/08/12(金) 23:29:51シングルトンで問題ないと思うよ。
いきなりグローバル変数の一般論を語り出す>>214は軽く聞き流しておけばいい。
0220デフォルトの名無しさん
2005/08/12(金) 23:54:14じゃあ例えば、
gGlobalという変数を用意したとしてどうやらそこがバグの原因らしいと
でも
initGame();
frameGame();
endGame();
これ↑じゃ関数の中身をいちいちチェックしないとわからないでしょ?
initGame(&gGlobal);
frameGame();
endGame();
でも、これ↑ならバグの発生箇所がinitGameの中であることが確定されてるでしょ?
こういう細かいところをしっかりと管理することでバグが格段に減る。
また、別の視点として、自分ではない誰かにソースをみせたとき、
gGlobalをシングルトンにしてしまうとgGlobalの影響範囲が絞れない。
つまりでかいプロジェクトでこれをやってしまうと終了確定。
俺も新人の頃これをやって先輩(上司ね)にすげー怒られた。
0221デフォルトの名無しさん
2005/08/12(金) 23:58:350222デフォルトの名無しさん
2005/08/13(土) 00:19:01まあ、1回痛い目にあわないとそんなもんだよw
俺もそうだったし。
ただ、C/C++ってインスタンスやクラスの影響範囲を絞るのって
ヘッダーファイルのインクルードか引数をみるしかないんだよね。
俺が最悪だと思うソースは2つ、
1つはグローバル変数がヘッダーファイルに1つにまとめて宣言してあって
そのヘッダーファイルがすべてのヘッダにインクルードされているソース。
もう1つは、ほとんどの引数がvoid*
0223デフォルトの名無しさん
2005/08/13(土) 00:19:50回答ありがとうございます。参考になります。
>>220
解説ありがとうございます。
確かに一般論はそうなのですが、私の方では、ひとつしかないデバイスを扱う物は基本的にシングルトンにします。
各種マネージャー系、ハードデバイス系(コントローラー、サウンド、バックアップデバイス等)です。
それらを引数で渡していると、ある関数に渡す引数がそれこそ10や20では足りなくなります。
これらの広範囲で使うデバイスは、どこから呼ばれているかでバグの原因が
分からないというのが想定しにくいです。
ただ、この辺りは個別の問題に関することなので、
D3DDeviceに関してもそうだとは断言できません。
私の方で作成予定のソフトでは、D3DDeviceを引数に渡すのが恐らく最終的には、
クラスで100、関数で、数1000以上になると思われます。(一桁増える可能性もあります)
引数を渡す必要のある関数のネストは10ぐらいは平気で行くと思われます。
可読性を考慮して、シングルトンの方が良いと判断します。
ただ、一時的にあるいは動的にデバイスを生成削除するなら、引数で渡します。
で、一時的にデバイスを生成削除する必要があるのかなと思った次第です。
今まで扱ってきた3D環境では、D3DDeviceのような概念がなかったので、
ちょっと悩んでいます。
スレの趣旨と変わってきたので、後は自分で頑張ってみます。ありがとうございました。
0224デフォルトの名無しさん
2005/08/13(土) 00:34:03初期化処理でD3d8.libをリンカに指定しなければ
ならないらしく、ところがそのライブラリがない
っぽいです。BCCでは無理なんでしょうか?
0225デフォルトの名無しさん
2005/08/13(土) 00:37:07うぁ・・・俺が新人ときに先輩にいったことと全く同じこといっとるw
それじゃ、バグったときも1000以上あるクラスを
影響範囲も特定できない状態で調べるつもりなんだ。
つか、可読性を完全に履き違えてる。
ソースの見た目を綺麗にするのが可読性じゃないぞ。
クラスやインスタンスの影響範囲が限定できてこその可読性。
そのクラス(変数も)が関連するクラスはどのクラスとどのクラスなのか
これが綺麗に表現できていなければ、いくらソースの見た目が綺麗であっても
誰も読めない。
>それらを引数で渡していると、ある関数に渡す引数がそれこそ10や20では足りなくなります。
それでいいんだよ。
その関数はそれだけの複雑性を抱えてるってことなんだよ。
プログラムの腕が上がれば綺麗にまとめる方法が見えてくるよ。
しばらくは大量に引数をつけちゃってもかまわないから
ノーグローバル変数のスタイルを貫いてみてほしいなぁ・・・。
0226デフォルトの名無しさん
2005/08/13(土) 00:47:31http://homepage3.nifty.com/tosikazu/pch/pchREP4.html
0227デフォルトの名無しさん
2005/08/13(土) 00:52:35大小さまざまな構造体がグローバルに置かれていてその数なんと、50は下らない。
確かにそれだけの情報量が必要ではあるのだが、外部から変更される可能性のある
設定ファイルの内容までもそうして保持しているから一体いつ更新されているのか
最早誰にも理解できなくなっている。
0228デフォルトの名無しさん
2005/08/13(土) 01:09:32はは、私も3年目ぐらいの時はその考えでした。
その考えで1本ゲームも作ったな。
これでも信念持ってやってますし。経験も長いので、ただ宗教論争になるので止めましょう。
長いって言ってもゲームなんで特殊かもしれませんが(笑
何をグローバルにして何をクラスメンバにして、何をローカルにするかは
常に考えていますよ。その上で、必要なところはシングルトンにします。
スレッドが絡んでくるとむしろシングルトンの方がまだ楽だし。
可読性云々も含めてこれ以上は宗教論争になるので止めときましょう。
0229デフォルトの名無しさん
2005/08/13(土) 01:17:23嘘でしょう。
発言の薄さから、プログラムの設計について考えた形跡が全くみられない。
0230デフォルトの名無しさん
2005/08/13(土) 01:37:59Direct3Dの勉強、頑張って下さいね〜。
0231デフォルトの名無しさん
2005/08/13(土) 02:00:390232デフォルトの名無しさん
2005/08/13(土) 02:05:38(その都度引数として渡そうが大域変数を使おうが中身は常に同じ)
まあスタイルとして統一するってことでいいんじゃないの?
0233デフォルトの名無しさん
2005/08/13(土) 02:17:55た
し
の
た
め
に
争
う
の
は
や
め
て
0234デフォルトの名無しさん
2005/08/13(土) 02:20:220235デフォルトの名無しさん
2005/08/13(土) 03:12:23ぜひロガーもサウンドモジュールも引数渡しでがんばってくれればと切に願う。
ところでd3ddの中にはレンダリングステートとかがあるし、
それぞれd3ddを通して描画するモジュールが全員自分用のstateblockでも持ってて
毎回自分の都合のよいように全部設定してから描画するとかならいいけど、
ある状態になってることを前提にして描画処理を流したいということになってくると
d3ddがどこからでも触れるようになっていて、モジュールが好き勝手なタイミングで
描画をやっているとなると、ある日前提がくずれて思ったような描画が
されなくなったときにその原因追求は結構厄介なことになるのではなかろうか。
そのような問題に対処するための何らかの歯止めは必要だと思う。グローバル変数がどうとかじゃなくて。
それはたぶん結局は…ってことになるのだとは思うけど
0236デフォルトの名無しさん
2005/08/13(土) 03:35:55偏執で頭固まりすぎ。
経験の浅い学生なんだろうけど、こんな協調性のない奴が
職場にいたらと思うとぞっとするな。
設計のなんたるかも分かってないみたいだし。
4人のギャングが怒ってくる罠。
0237デフォルトの名無しさん
2005/08/13(土) 04:10:10だな。たかがpd3dDeviceの話なのに、必死に論点ずらしてて笑えるw
0238デフォルトの名無しさん
2005/08/13(土) 04:25:36変数の場所を決めるスレでつか?
0239デフォルトの名無しさん
2005/08/13(土) 08:47:11そんなわけあるか。
グローバル変数を使うプログラムの設計が糞なのは
C言語のときから散々言われてきた。
そういう駄目な例を扱った本も何十冊と発売されてきたし、
禁じ手といったらグローバル変数は代表みたいなもんだ。
ここまでしてグローバル変数を回避する必要があったんだよ。
それをもっとよく考えるべきだと思う。
0240デフォルトの名無しさん
2005/08/13(土) 08:47:51�dクス
0241デフォルトの名無しさん
2005/08/13(土) 08:54:19俺だってグローバル変数は「できるだけ」回避するようにしてるけどさあ。皆も同じじゃねーの?
そろそろ自分の言葉で語ってみたらどうよ。
0242デフォルトの名無しさん
2005/08/13(土) 08:57:57そろそろもなにも自分の言葉だけどなにか?
#そういや、最近、リンクの紹介だけして逃げてくアホが増えたけど
#あーいうのに言ってやれよ。
0243デフォルトの名無しさん
2005/08/13(土) 09:29:03た
し
の
た
め
に
争
う
の
は
や
め
てって言ってんだろがこのハゲどもがああああああああああああ
0244デフォルトの名無しさん
2005/08/13(土) 09:38:010245デフォルトの名無しさん
2005/08/13(土) 09:38:160246デフォルトの名無しさん
2005/08/13(土) 10:15:580247デフォルトの名無しさん
2005/08/13(土) 10:41:52> グローバル変数を使うプログラムの設計が糞なのは
> C言語のときから散々言われてきた。
> そういう駄目な例を扱った本も何十冊と発売されてきたし、
> 禁じ手といったらグローバル変数は代表みたいなもんだ。
そんなことはいちいち書かなくても誰でも知ってますよ。
もっとも、本書く人は大抵開発現場にいませんけどね。
0248デフォルトの名無しさん
2005/08/13(土) 10:51:13じゃあ、なんでシングルトンとか使っちゃうアレな人が減らないわけ?
0249デフォルトの名無しさん
2005/08/13(土) 10:53:09チェケラッチYO!
0250デフォルトの名無しさん
2005/08/13(土) 11:03:460251デフォルトの名無しさん
2005/08/13(土) 11:09:30まさに思考停止だな。
ほんと全て引数渡しでがんばってくれと切に願うね。
そして一人で誰にも迷惑かけずにやってくれと。
0252マイク ◆yrBrqfF1Ew
2005/08/13(土) 12:05:530253デフォルトの名無しさん
2005/08/13(土) 12:16:25その言葉、そっくりそのままお前に送るます
0254デフォルトの名無しさん
2005/08/13(土) 12:23:39論点ずらしまくりのキチガイなんだから。
0255デフォルトの名無しさん
2005/08/13(土) 12:38:02その言葉、そっくりそのままお前に送るます
0256デフォルトの名無しさん
2005/08/13(土) 12:45:44デザパタなんか現場じゃ全く使ってないのにねw
0257デフォルトの名無しさん
2005/08/13(土) 13:15:440258デフォルトの名無しさん
2005/08/13(土) 13:16:42俺知ってるぜ
0259デフォルトの名無しさん
2005/08/13(土) 13:22:11とりあえず、ナムコ、カプコン、スクエニではデザパタは使ってないですw
0260デフォルトの名無しさん
2005/08/13(土) 13:44:02・デザインパターンを「使う物」だと思っている
・なんか子供っぽい権威を持ち出す(ナムコ、カプコン、スクエニ)
なるほど痛いな
0261デフォルトの名無しさん
2005/08/13(土) 14:59:500262デフォルトの名無しさん
2005/08/13(土) 17:06:37lpDevMouse->SetDataFormat( &c_dfDIMouse2 );
やっても
error LNK2001: 外部シンボル "_c_dfDIMouse2" は未解決です
になります。
他に何かやる事ありますか?
0263デフォルトの名無しさん
2005/08/13(土) 17:19:07dinput.libかdinput8.libがリンクされてないとか。
0264デフォルトの名無しさん
2005/08/13(土) 18:07:30そんなことは……
当たりでした…orz。
0265デフォルトの名無しさん
2005/08/13(土) 19:03:38マウスの初期化はできたんですが、
マウスの軸移動の情報がウィンドウ外でしか入手できてないみたいなんです。
クリックはウィンドウ内でも受け付けてるんですが…。
0266デフォルトの名無しさん
2005/08/13(土) 19:07:360267デフォルトの名無しさん
2005/08/13(土) 20:23:54226さんのリンク先をたどると
ttp://codecentral.borland.com/Item.aspx?id=16547
ここのサイトでユーザー登録しないと
ライブラリが手に入らないらしいんですが、
それでいいんでしょうか?
0268デフォルトの名無しさん
2005/08/13(土) 20:51:35http://www.excite.co.jp/world/
0269デフォルトの名無しさん
2005/08/13(土) 20:54:360270デフォルトの名無しさん
2005/08/13(土) 20:57:38あ、URL変わってるのでこっちで
前のは重たい
0271267
2005/08/13(土) 21:28:59エキサイト一応やりましたが…意味不明で確信がもてません。
>>269-270
�dです。でも書かれてる内容が分かりません。
ここからDLできるんですか?
0272デフォルトの名無しさん
2005/08/13(土) 23:24:32あの程度わからないならBCCでDirectX使おうなんて
身の程違いもいいところだよ…。馬鹿は素直にVC買っとけ。
0273デフォルトの名無しさん
2005/08/14(日) 15:04:060274デフォルトの名無しさん
2005/08/14(日) 15:38:06とりあえず登録しておけ
0275デフォルトの名無しさん
2005/08/14(日) 19:31:54「アルファブレンディングを使って描画呼び出しでz-テスト/書き込みを有効にすれば」
~~~~
とあるのですが、無効の間違いでしょうか?
(私は半透明なオブジェクトではどちらも無効にして最後に書いてました)
0276デフォルトの名無しさん
2005/08/15(月) 01:08:09その本持ってないのでそれだけの情報では分からないな。
0277デフォルトの名無しさん
2005/08/15(月) 01:25:36その本は知らないが、半透明を描画する際にZテストは
無効にしちゃ駄目だろう。無効にするのは書き込みだけ。
0278デフォルトの名無しさん
2005/08/15(月) 13:42:500279デフォルトの名無しさん
2005/08/15(月) 15:38:280280デフォルトの名無しさん
2005/08/15(月) 17:27:390281 ◆YlfFTVBogg
2005/08/16(火) 00:43:52現在、自動車教習所のシミュレータのパクりを作ろうと考えています。
半年前二輪免許取ったときのシミュレータが楽しくて、是非自分で実現しようと思いまして。
細かい仕様をだいたい決定して、さて次は具体的に技術を考えようと思った矢先に
フィールドに関する事項で躓きました。
みなさんフィールドの実装はどのようにされていますか?高低差を含んだフィールド
の実装方法を教えて下さい。
また、それを載せているサイトでも構いません。
現在考えている方法は、
・2次元の高さ配列を作り、それをメッシュにする。
・メタセコイアでがんがって作ってXファイル表示。
です。何か良い方法などありましたらサイト、書籍構わず教えて下さい。
当方VisualC++での開発経験はあります。(あくまで自分用の制御系ツールですが
英語の資料は無理なく読めます。よろしくお願い致します。
0282デフォルトの名無しさん
2005/08/16(火) 01:07:04あー、「ナビゲーションメッシュ」とか「オクトツリー」で
ググるとそこ周辺の情報がついてくるよ。
英訳してググルとさらに当たると思われる。
0283デフォルトの名無しさん
2005/08/16(火) 01:13:18そこそこ茨の道だと思うので覚悟するように。
0284デフォルトの名無しさん
2005/08/16(火) 01:41:42多分、見た目用のモデルと、当たり用のモデルを用意するって手法(?)を知らないと思われる。
2次元の高さ配列なんていってっけど、それをどうやって作るのか考えてないと思われ。
なるほど。Game Programming Gemsが欲しくなるような検索結果でした。
しかし、結構な情報が手に入りました。また熟考してみたいと思います。
ありがとうございました。
>>283
単なるメッシュを作ることも考えましたが、後の拡張性を考えて、う〜ん
と悩んでいたところです。
>>284
当たり判定云々は知ってます。
二次元配列はDXF形式のデータを三次元加工用に三次元配列に変換する
プログラムを作ったことがあるので、その技術を流用しようかと考えています。
0286デフォルトの名無しさん
2005/08/16(火) 02:01:08そんな面倒なことしなくても、メタセコでモデル作ったときに当たり用のモデルも作っちゃえばいいじゃん。
当たり用のモデルの名前だけ特定のものにしておけば楽じゃん。
当然その予定です。
ただ、配列を用いたと仮定したときの場合を述べました。
分かり難くてすみませんです。
本題に戻りますが、
http://www.gamedev.net/reference/list.asp?categoryid=45
にLandscapeの話が載っていました。
面白そうなので、少し読んでみます。
またお世話になると思いますので、今後ともよろしくお願い致します。
0288デフォルトの名無しさん
2005/08/16(火) 14:41:57良いライブラリとか知らない?
みんな自作してるの?
0289デフォルトの名無しさん
2005/08/16(火) 14:58:22ものすごく遅いんですが、どうにもなりませんか?
0290デフォルトの名無しさん
2005/08/16(火) 15:37:43見えないときはDrawしない
ハードウェアを良いものに買い換える
0291デフォルトの名無しさん
2005/08/16(火) 15:40:360292デフォルトの名無しさん
2005/08/16(火) 15:59:51やっぱ細かいとこつきつめてくしかなさそうですな。
ありがとうございました。
0293271
2005/08/16(火) 20:40:37皆様ありがとうございました。
しかし、初期化処理にはd3d8.hヘッダファイルが
必要らしくそれもDLできないでしょうか?
0294デフォルトの名無しさん
2005/08/16(火) 20:44:24物事自分で調べられない奴はプログラミングには向いてないと思うよ
0296デフォルトの名無しさん
2005/08/16(火) 20:52:05いんたーねっとにはべんりなけんさくえんじんというほーむぺーじがあります
http://www.google.co.jp/
0297デフォルトの名無しさん
2005/08/16(火) 21:30:37Microsoftのサイトから落としてこい。
0298デフォルトの名無しさん
2005/08/16(火) 21:56:380300デフォルトの名無しさん
2005/08/16(火) 22:04:24キーワード:DirectX SDK
てか君まず検索の練習から始めた方がいいよ・・
0302デフォルトの名無しさん
2005/08/16(火) 22:22:24釣り?釣りじゃないなら
もう君プログラミングやめた方が良いよ。
0305デフォルトの名無しさん
2005/08/16(火) 22:34:120307デフォルトの名無しさん
2005/08/16(火) 22:40:210308デフォルトの名無しさん
2005/08/16(火) 23:03:53マジレスすると、>>272が書いてあることが一番的を射ている感じがする。
おそらく君はDirectX(SDK)がどういうものなのかも分かっていないし、
コンパイラがどういう仕組みで動いているのかも分かっていない。
(プログラミング経験も無いんじゃないか?)
つまり、何を調べれば動くようになるのかすら分からない状態なわけだ。
素直にVisualC++.NETとDirectXの入門書を買ってくることを薦めるよ。
0309271
2005/08/17(水) 19:35:05ありがとうございます。
改めて今日探して見ましたが
Microsoft DirectX 9.0 SDK Update (August 2005)
のソフトウェア開発キットというのに
ヘッダやライブラリがすべてありました。
どうもお騒がせしました。
0310デフォルトの名無しさん
2005/08/17(水) 20:11:13頂点カラーとテクスチャカラーの合成をしたとき
頂点カラーが0.5のときに、テクスチャカラーがそのままでて
頂点カラーが0.5より上なら明るく、下なら暗く
という感じの設定って無いでしょうか?
0311271
2005/08/17(水) 21:00:18初期化処理をしたところ
>309でダウンロードした中のd3d8.libファイルにリンクしてもエラーが出てしまいます。
>270さんに紹介してもらったclootieというサイトで
DLしたライブラリだとなぜか上手くいきました。
前者のファイルでおこったエラーは以下の通りです。
Error: 'C:\BORLAND\DIRECTX\LIB\X86\D3D8.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
どういう事でしょうか。教えてください。お願いします。
0312271
2005/08/17(水) 21:02:210314デフォルトの名無しさん
2005/08/17(水) 21:30:420315デフォルトの名無しさん
2005/08/17(水) 21:41:56固定機能なら D3DTOP_MODULATE2X でいけるんじゃない?
0316デフォルトの名無しさん
2005/08/17(水) 22:10:40LIBファイルの変換が必要
詳しいことはBorland C++スレで聞け
0317デフォルトの名無しさん
2005/08/17(水) 22:40:35SetTextureStageですね、MDULATE2XかADDSIGNEDがそれっぽい感じがします
他にも色々なことができるみたいですね、ありがとうございました
0319デフォルトの名無しさん
2005/08/17(水) 23:03:24少しも自分で調べようとしないで人に片っ端から聞きまくって恥ずかしくないの?
0320デフォルトの名無しさん
2005/08/17(水) 23:10:20どうせお前は伸びない。
0321デフォルトの名無しさん
2005/08/18(木) 02:01:29ライティングを有効にすると頂点カラーは使えないのでしょうか?
0322デフォルトの名無しさん
2005/08/18(木) 02:11:350323321
2005/08/18(木) 12:09:43有効にするとライティング計算済みの色がDIFFUSEに入るということでしょうか?
0324デフォルトの名無しさん
2005/08/18(木) 12:20:580325321
2005/08/18(木) 12:29:46読んでも見つからないっす
COLORARG1にD3DTA_TEXTURE
COLORARG2にD3DTA_DIFUSE
を設定して
COLOROPにD3DTOP_MODULAT
を設定してるのですが
これだとD3DTA_DIFUSEはどちらかになりますよね?
他になにか設定必要なのですか
D3DA_TEMPって一般的には使って良いのでしょうか?
例えば、例えばフェードアウトとか半透明表示する場合のアルファレートなどに
後、レジスタの値をどこで設定するかわかりません、デフォルトは0.0.0としか書いてない
0326デフォルトの名無しさん
2005/08/18(木) 13:07:32TextureStageStateだけでなく、RenderStateのところも読め。
D3DA_TEMPはテクスチャステージの途中の段で値を一時的に
保存しておくためのもの。D3DTSS_RESULTARGで書き込む。
確認してないが、シェーダ使えるチップならみんな使えるんじゃない?
逆に言うと、シェーダが使えないチップではまず無理。
0327デフォルトの名無しさん
2005/08/18(木) 13:26:310328デフォルトの名無しさん
2005/08/18(木) 13:28:150329デフォルトの名無しさん
2005/08/18(木) 14:41:42「ググれ」「SDK見れ」以外の回答でおながいします。
お前ら天麩羅嫁
0330デフォルトの名無しさん
2005/08/18(木) 14:46:430331デフォルトの名無しさん
2005/08/18(木) 15:11:53はいじゃないが。
0332デフォルトの名無しさん
2005/08/18(木) 15:41:42取り扱い説明書見れば書いてあることを
わざわざ文章書いて説明しろってのも変な話だ
取り説のこの文章の意味がわからん
なら話は違ってくるがな
つーかお前が教えてやれよ
0333デフォルトの名無しさん
2005/08/18(木) 15:49:08こなんのためのテンプレだ
大アホか
好
き
0334デフォルトの名無しさん
2005/08/18(木) 15:56:07よくテクスチャサイズは2のべき乗にしなさいと言われますが、
これは縦と横のサイズも同じじゃないとだめでしょうか?
(例)256x256はOK, 256x128はNG
0335デフォルトの名無しさん
2005/08/18(木) 16:19:320336デフォルトの名無しさん
2005/08/18(木) 16:29:56OKですか、ありがとうございました
0337デフォルトの名無しさん
2005/08/18(木) 16:35:07だから、ヘルプの「Render States」のところを読めって言ってるだろうがボケ
http://msdn.microsoft.com/library/en-us/directx9_c/directx/graphics/programmingguide/gettingstarted/direct3ddevices/states/renderstates.asp
0338321
2005/08/18(木) 18:50:02D3DRS_COLORVERTEXって何ですか?
これをFALSEにしても頂点カラーが有効のままなのですが
これはなにか根本的に設定が間違ってたりするのでしょうか?
0339337
2005/08/18(木) 18:52:180340321
2005/08/18(木) 18:56:21でもわからんのです
0341デフォルトの名無しさん
2005/08/18(木) 18:56:39現在碁盤の目のようにプリミティブを配置し、頂点のy座標に高さを持たせて起伏を表現しています。
細かくすると視野内(〜FogEnd)だけでも数千になり、DrawIndexedPrimitiveで一括描画してもかなり重いです。
荒くすると大雑把なマップになりますし思ったような地形を組むことができません。
xファイル1つでマップ1つを表示させるのは作るのも表示させるのも無謀ですよね。
クォータービューの2Dっぽいゲームなら碁盤の目のようにプリミティブ(頂点)を置いても問題ないですが、
3Dのゲームだとこのやり方は適さないのでしょうか?
地形の作成・描画方法について何か参考になるようなことをご存知の方がいればアドバイスをお願いします。
DirectXで作っていますがアルゴリズムの質問なので聞くところ間違えてたらすみません。
0342デフォルトの名無しさん
2005/08/18(木) 19:07:08だから、SetRenderStateじゃなくて>>337の「Render States」のページは読んだのか?
「Per-Vertex Color State」の説明でわからないなら俺にはお手上げだ。
0343デフォルトの名無しさん
2005/08/18(木) 20:11:56ビデオカードによる
0344デフォルトの名無しさん
2005/08/18(木) 20:21:12DirectXにそんなCaps項目ないし
0345デフォルトの名無しさん
2005/08/18(木) 20:28:03あるぞ
0346デフォルトの名無しさん
2005/08/18(木) 20:35:36はたぶん2のn乗にしろってことの意味を理解してないのだろう
0347345
2005/08/18(木) 20:36:000348321
2005/08/18(木) 20:42:50なんとか出来たような気がします
アンビエントライト、ディフューズライトの設定で
頂点カラーの色を飛ばしてしまっていました
これの計算式は、
ディフューズライトx頂点カラー+アンビエントライト
になるのでしょうか?
ディフューズライトが当たっていない部分は頂点カラーの色が無くなってしまうのですが
0349345
2005/08/18(木) 20:44:08そういうのはLODの考え方を採用するべし。
遠いものは荒いメッシュで、近くのものは細かく描画。
具体的なアルゴリズムに関しては長くなるので…
LODで調べれば何かヒットするでしょ。
0350デフォルトの名無しさん
2005/08/18(木) 20:52:25指摘サンクス
dxinfoで調べてみたら、S3 ProSavageがMaxTextureAspectRatio=1だった
こんな環境も存在するのね・・・
>>346
もちろん理解してるよん
0351デフォルトの名無しさん
2005/08/18(木) 20:54:26頂点カラーの色を無条件にそのまま加算したければ、
D3DRS_EMISSIVEMATERIALSOURCEでEMISSIVEに
頂点カラーを使用する指定を行う。
アンビエントカラーの影響を考えたいなら
D3DRS_AMBIENTMATERIALSOURCEに頂点カラーを設定。
他の部分のマテリアルソースもちゃんと調整すること。
0352351
2005/08/18(木) 21:04:34〇アンビエント光
0354デフォルトの名無しさん
2005/08/19(金) 20:30:53ここのプログラムが上手くビルドできません。
エラーは出ないのですが、終了ボタンを押しても正式に止まりません。
開発環境はノートPCでBCC、clootieのライブラリにリンクしてます。
原因を教えてください。お願いします。
0355デフォルトの名無しさん
2005/08/19(金) 20:58:32終了ボタンってなんだよバカ
そもそもBCCを疑うぐらいならVCTK使え
0356デフォルトの名無しさん
2005/08/19(金) 21:17:01読み込むときに256x256に縮小することってできますか?
0357デフォルトの名無しさん
2005/08/19(金) 22:27:35D3DXCreateTextureFromFileExでWidthとHeightを指定しる
0358デフォルトの名無しさん
2005/08/19(金) 23:32:01描画前にtimeGetTime()を実行し
Presentメソッドを呼び出した直後に再度timeGetTime()を実行すると
その差分が描画にかかった時間になるのでしょうか?
0359デフォルトの名無しさん
2005/08/19(金) 23:38:490360デフォルトの名無しさん
2005/08/19(金) 23:41:210361デフォルトの名無しさん
2005/08/20(土) 00:02:13描画負荷を大きくするとPCからノイズのような音が聞こえてきます
こいつはなんなのでしょうか?
もう1台のPCの方では特に変化はありません
ノイズが鳴る方のPC
アスロン64 3200+ Radeon9600 ファンレス
ノイズが鳴らないPC
P4 1.8G GeforceMX440 ファンレス
SpeedFanでファンの回転数を見ても変化していません(つД`)
0362デフォルトの名無しさん
2005/08/20(土) 00:11:59どうにもならない
0363デフォルトの名無しさん
2005/08/20(土) 01:04:22音響系の配線の引き回しに注意。ボードやましてチップが原因ならお手上げだけど、
大抵は筐体内の配線を見直すだけで改善する(かも知れない)。
0364デフォルトの名無しさん
2005/08/20(土) 01:12:54怪現象などではなくて、普通にありえる問題ということでしょうか?
スピーカーは繋いでません、サウンドはオンボードで近くのPCIスロットを使用しているとかではないです
CPUだけに負荷をかけても影響ないので、ビデオカードに負荷をかけると
干渉?してノイズが出るという感じでしょうか?
とりあえず壊れるような問題でなければこのまま使うことにします
ありがとうございました
0365デフォルトの名無しさん
2005/08/20(土) 01:43:02それはマザボが死にかけてるよ。自作PC板参照。
0366デフォルトの名無しさん
2005/08/20(土) 01:48:59マジですか、買ってから1ヶ月・・・orz
自作板逝って来ます
ちなみにDOSパラのショップブランド・・・
ビデオカードは3年ぐらい前に買ったものですが
0367デフォルトの名無しさん
2005/08/20(土) 02:21:04うちもノイズが入って仕方が無い。
Radeon9600
Athlon 1.2GHz
SW1000XG というカードからノイズが混入している模様。
気温が高いと特に乗りやすく、ウィンドウをスクロールしただけで出たりする。
とりあえずスレ違いsage
0368デフォルトの名無しさん
2005/08/20(土) 03:09:36そのときは電源が原因で、別の電源に交換したら鳴らなくなった。
スイッチング回路のコイルが物理的に振動していたらしい。
マザボのコイルが鳴るってのもあるみたいだね。
0369デフォルトの名無しさん
2005/08/20(土) 10:19:39パソコンどころかマイコンという言葉すらメジャーではなかった時代の話
0370デフォルトの名無しさん
2005/08/20(土) 19:13:04どうすればいいでしょうか?
0371デフォルトの名無しさん
2005/08/20(土) 19:15:12知識がなければお金を出して開発環境を買ってください。
0372デフォルトの名無しさん
2005/08/20(土) 19:22:31はい。すみましぇん。
0373デフォルトの名無しさん
2005/08/20(土) 21:26:04よくある話なのでそれほど気にしなくてもいい。
0374デフォルトの名無しさん
2005/08/20(土) 21:57:190375デフォルトの名無しさん
2005/08/20(土) 22:14:01スレを汚してすみません
Directxで負荷が大きい描画やPresent命令を短期間で何度も呼び出したりしてると
なんか変な音が聞こえてきて、気になったので書き込みしました
普段使ってるときはそんな音全然聞こえなかったので・・・
0376デフォルトの名無しさん
2005/08/21(日) 00:24:34グローシェーディングは、RadeonやGeForce等のビデオボードが
無いと補間されないのでしょうか?
0377デフォルトの名無しさん
2005/08/21(日) 17:46:06BCCでDirectXを動かそうとしているのですが、
ttp://www.kohgakusha.co.jp/books/detail/4-7775-1112-X
この書籍の2Dプログラムのサンプルコードをビルドすると
Error: 外部シンボル 'DXTraceA' が未解決(D:\MYPROG\JUNK\TEST4\DEBUG\DXGSAMPLE04.OBJ が参照)
Error: 外部シンボル 'Direct3DCreate9' が未解決(D:\MYPROG\JUNK\TEST4\DEBUG\DXGSAMPLE04.OBJ が参照)
とエラーコードが出てしまいます。ライブラリはclootieのです。
原因を教えてください。お願いします。
0378デフォルトの名無しさん
2005/08/21(日) 22:20:46bcc32.cfg、ilink32.cfg のDirectXライブラリのパスを
-L○○○○;×××× ←尻にではなく、
↓頭に追加
-L××××;○○○○
0379デフォルトの名無しさん
2005/08/22(月) 12:19:07ありがとうございます。
しかし、上手くいきませんでしたが、
リンクするライブラリを本書のp26の通りに変えて
リリースと上手くいきました。
ですが、コンパイルが上手くいっても
白紙のウィンドウで全く動きません。
エラーは全くないのですが、どういう原因が考えられる
でしょうか?
0380デフォルトの名無しさん
2005/08/22(月) 13:59:052D ならテクスチャが読み込めてないとか?
0381デフォルトの名無しさん
2005/08/22(月) 14:27:04下のエラーが出てコンパイルできません。
コンパイルできるようにするにはどうすればいいんでしょうか?
エラー E2268 C:\Program Files\Microsoft DirectX 9.0 SDK (August 2005)\Include\d3dx9math.inl
1578: 未定義の関数 'sqrtf' を呼び出した(関数 D3DXVec2Length(const D3DXVECTOR2 *) )
0382デフォルトの名無しさん
2005/08/22(月) 14:47:14悉くコンパイラーにはじかれるようになったorz
エラーが出るのは仕様変更されたみたいだけど、意味が分からないorz
(省略)
//フォントの設定
LOGFONTLogFont ;
LogFont.lfHeight = 16 ;//高さ( 0 で標準)
LogFont.lfWidth = 0 ;//横幅( 0 で自動 )
LogFont.lfWeight = 1000 ;//太さ( 0 〜 1000 の範囲 : 100 刻み )
LogFont.lfItalic = FALSE ;//斜体
LogFont.lfUnderline = FALSE ;//下線
LogFont.lfStrikeOut = FALSE ;//打ち消し線
LogFont.lfCharSet = SHIFTJIS_CHARSET ;//文字コード
lstrcpy(LogFont.lfFaceName, FONT_NAME1);//フォント設定( "" で標準 )
D3DXCreateFontIndirect(lpD3DDevice, &LogFont, &lpFont);//フォントを初期化
lpFont->OnResetDevice();
(省略)
//文字描画
lpFont->Begin();
RECT rc = {0, 100, 200, 200};
lpFont->DrawTextA(NULL ,"文字表示", -1, &rc, DT_LEFT | DT_NOCLIP, D3DCOLOR_ARGB( 255, 255, 255, 255));
lpFont->End();
(省略)
0383デフォルトの名無しさん
2005/08/22(月) 15:09:43#define sqrtf(f) (float)sqrt(f)
0384デフォルトの名無しさん
2005/08/22(月) 15:48:572004Octの日本語ヘルプを落とすとよろし。
0385デフォルトの名無しさん
2005/08/22(月) 17:27:14D3DRS_POINTSPRITEENABLEのヘルプの説明がよくわかりません。
これがTRUEになっている時は
ビルボード表示の為に、4スミのテクスチャ座標が生成されるというのはわかるんですが
FALSEの場合、どのような動作をするのかわかりません。
ヘルプでは、
>FALSE の場合、頂点テクスチャ座標はポイント全体で使われます。
>D3DRS_POINTSPRITEENABLE が FALSE に設定されている場合は、頂点テクスチャ座標は頂点それぞれで複製されます。
とあります。どういう意味でしょうか?
0386デフォルトの名無しさん
2005/08/22(月) 19:53:24これがあればspy++使えますか?
0387デフォルトの名無しさん
2005/08/22(月) 20:07:280389デフォルトの名無しさん
2005/08/22(月) 20:10:32もしくはサンプルを公開しているサイトを教えてください
もの凄いくアホで申し訳ないです
とっかかりがまったくわかりません
0390デフォルトの名無しさん
2005/08/22(月) 20:12:14http://www.microsoft.com/japan/msdn/directx/default.aspx
0391デフォルトの名無しさん
2005/08/22(月) 23:48:26一応SetCursorPropertiesでのソフトウェアエミュレーションは試してみたんですが何も効果なし…
ご存知の方いらしたら教えてください。
0392391
2005/08/22(月) 23:50:17描画したクライアント画面そのものはまったくちらつかないんですがマウスカーソルだけがちらつく状態です。
0393デフォルトの名無しさん
2005/08/23(火) 00:41:42独自にマウスカーソルを描画するとかどう?
いや、テキトーなこと言ってるけど。
0394デフォルトの名無しさん
2005/08/23(火) 00:48:52「頂点テクスチャ座標は」を「(元の)頂点のテクスチャ座標が」に変えれば少しは意味が通るかと。
「頂点それぞれ」ってのはスプライト生成後の四隅の各頂点のことね。
マイクロソフトの手抜き翻訳は何とかならないもんかねぇ・・・。
0395デフォルトの名無しさん
2005/08/23(火) 09:31:18この関数で得られた行列をワールド行列としてモデルを描画すると
Zテストが正しく行われていないかのような描画結果になってしまいます。
まずキャラを描画し、次に地面の近くの平面に投影しているのですが、
ぺったんこになったキャラが、最初に描いたキャラで隠面消去されずに描画されてしまいます。
この問題はどういった原因が考えられますでしょうか?
0396デフォルトの名無しさん
2005/08/23(火) 09:41:480397デフォルトの名無しさん
2005/08/23(火) 09:51:55pd3dDevice->SetRenderState( D3DRS_FILLMODE, D3DFILL_WIREFRAME )
でワイヤーフレームの描画を試みていますが、ポイントスプライトがワイヤーフレームではなく、
元のテクスチャが表示されてしまいます。何か他にステートを変更する必要があるのでしょうか?
開発環境:
SDK:9.0(June)
グラフィックボード:RADEON9000Pro
0398395
2005/08/23(火) 10:09:06シャドウのポリゴンが隠面消去されずに描画されてしまうという状態が起こっているのですが、
これは問題ではないということでしょうか。
なにかレンダーステートで足らない設定があるのでしょうか?
0400385
2005/08/23(火) 16:10:44今わかったんですが
D3DRS_POINTSPRITEENABLEがFALSEの時って
ポイントスプライトを使わない普通のポリゴン表示モードなんですよね。
ヘルプの意味はわかりませんでしたが、単にポイントスプライトのフラグとだけ
覚えておけばいいみたいですね。
お答えありがとうございました。
0401デフォルトの名無しさん
2005/08/23(火) 16:30:20ワールド行列には、投影行列をそのままじゃなくて、
(キャラクタ自体のワールド行列)×(投影行列)を設定しているかしら。
0402395
2005/08/23(火) 17:11:19はい、行列は (キャラクタ自体の回転行列)×(平行移動行列)×(投影行列)×(カメラ行列)
という順番で設定しています。
先程気が付いたのですが、光源の位置を、
light(0.0f, 1000.0f, 0.0f, 1.0f);
というように、Y軸上に置いた場合だけは問題が起こらないみたいです。
よろしくお願いします(´・ω・)
0403デフォルトの名無しさん
2005/08/23(火) 18:07:19bmpのピクセルフォーマットはは自動で16bitに変換されるのでしょうか。
それとも、自分で処理したいと駄目なんでしょうか。
0404デフォルトの名無しさん
2005/08/23(火) 18:49:320405デフォルトの名無しさん
2005/08/23(火) 19:07:56おまいに必要なのはDirectseXだ。
0406デフォルトの名無しさん
2005/08/23(火) 19:09:56うーん、それだとタスクバーとクライアント領域の中間でカーソルが表示されない空白地帯ができないですか?
0407デフォルトの名無しさん
2005/08/23(火) 20:17:49とりあえず、おかしくなるときのキャラクタ座標、ライト、平面の
数値を例で挙げてみて。
あと、まさかWバッファは使ってないわね。
0408395
2005/08/23(火) 21:34:27レスありがとうございます。
キャラクタは、XZ平面上に立っている人型モデルです。
高さはY座標で20.0f程度です。XZ平面上のどの場所にいても起こります。
ライトは、
D3DXVECTOR4 light(100.0f, 100.0f, 100.0f, 1.0f);
D3DXVec4Normalize(&light, &light);
という感じに設定しました。正規化をしないとシャドウが消えてしまうみたいです。
平面は、
D3DXVECTOR3 point = D3DXVECTOR3( 0.0f, 0.01f, 0.0f ); //平面上の一点
D3DXVECTOR3 normal = D3DXVECTOR3( 0.0f, 1.0f, 0.0f ); //法線
という感じです。
Wバッファは使っていません。Zバッファは16ビットです。
カメラのZNearとZFarを色々と変えてみたのですが、変わりありませんでした。
0409デフォルトの名無しさん
2005/08/23(火) 23:20:48ライト座標の正規化は不要(しても意味がない)のはずだけど、
それで結果が変わるのはおかしいわね。
リファレンスラスタライザで試してみて。
0410395
2005/08/24(水) 00:32:45ライトは正規化しても意味がないのですか、怪しいですね。。
リファレンスラスタライザで試してみましたが、結果は同じでした。
うーん。。
0411デフォルトの名無しさん
2005/08/24(水) 01:44:39位置座標だろ、正規化しちゃ駄目だろ。
隠面消去されないってのもおかしい。
Zバッファリングが有効になっていれば必ずされます。(当然その他もろもろの設定が正しいとして)
どうなるべきのものがどう違っているのか、もっと詳しく述べるべき。
俺はD3DXMatrixShadowを使ったことないから正確じゃないけど
これはZバイアスがいるんじゃねーの?
0412デフォルトの名無しさん
2005/08/24(水) 02:07:04pLightは同次座標だから定数倍しても位置は不変なんだけど・・・
0413395
2005/08/24(水) 02:50:08Zバッファは有効になってますし、シャドウ以外のモデルは正しく隠面消去が行われてますです。
Zバイアスというのは知らなかったので、先程使ってみたのですが、
Value値を16にしても何も変わりませんでした(つД`)
http://gamdev.org/up/img/3062.jpg
これが症状です。シャドウは床スレスレに存在しているのですが、なぜか兵士の上側に
描画されてしまっています。
0414デフォルトの名無しさん
2005/08/24(水) 03:28:08もし固定機能の頂点ブレンドを使ってるのなら、これが参考になるかも。
ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=42&vew=318
0415395
2005/08/24(水) 13:07:10>>414のリンク先が参考になりました。
これまでシェーダーに以下のように記述してました。
float3 position;
position = mul(float4(vertex.pos, 1), (float4x3)matWorld);
position = mul(float4(position, 1), (float4x3)matView);
ret.pos = mul(float4(position, 1), matProjection);
これを以下のように修正しました。
float4 position;
position = mul(float4(vertex.pos, 1), matWorld);
position = mul(position, matView);
ret.pos = mul(position, matProjection);
これまでワールドビュー変換では、W成分を使わなかったのですが
平面投影行列を使うとW成分を使うことになるので、射影変換の結果がおかしくなっていた
ということでしょうか。どうも皆さんありがとうございました!
0416デフォルトの名無しさん
2005/08/24(水) 13:29:360417379
2005/08/24(水) 15:39:32原因が分かりません。ソース等をうpしたので
教えてください。
ttp://49uper.com:8080/html/img-s/73761.zip
pはメル欄です。
0418デフォルトの名無しさん
2005/08/24(水) 15:45:36>>399と>>417のreleaseのEXEを実行すると、どちらも、
青い背景に、「DirectX graphics サンプル」と言う文字がフェードイン、フェードアウトを繰り返してるけど・・
0419デフォルトの名無しさん
2005/08/24(水) 16:28:19D3DXMatrixShadowの行列は一般に4×4のすべての成分が非ゼロになるからね。
この機会に、同次座標や射影幾何学について理解を深めてみると面白いと思うよ。
とりあえずは、pLightやpPlaneの4次元ベクトルを適当に定数倍しても影が動かないことや、
pLightのw成分だけを0に近づけていくと光源が遠ざかっていくことなどを観察してみましょう。
0422デフォルトの名無しさん
2005/08/24(水) 23:56:15おまいのPCのグラフィックカードが酷くオンボロ
0423デフォルトの名無しさん
2005/08/25(木) 00:23:33incorrect version of Direct3D
というエラーが出ます。
d:\bld_sdk7.pl\devtools\sdk\9.5\sdk\libs\src\dxut\dxut.cpp(494): D3DXCheckVersion hr=Unknown (0x80040909)
という出力がでており、うまくバージョンが取得できていないようですがなにが問題なんでしょうか?
環境は
VS.NET 2003 C++.
DirectX 2005 Aug.
VideoCard GF6600GT
です。
他の自作プログラムやらなんやらは普通に動きます。
0424デフォルトの名無しさん
2005/08/25(木) 10:10:29ヒント:戻り値
ヒント:DirectX コントロールパネル
0425379
2005/08/25(木) 13:06:00それから情報の小出しスマソ。
DirectXランタイムというのを使うとエラーらしきものが出ました。
Direct3D9: (ERROR) :HAL Disabled: Device doesn't support texturing
上手くいかない原因に関係あるでしょうか?
0426デフォルトの名無しさん
2005/08/25(木) 13:08:26そのままでは?
0427デフォルトの名無しさん
2005/08/25(木) 14:38:55>>422
0428デフォルトの名無しさん
2005/08/25(木) 15:47:48テクスチャが張られなくて全部真っ白(影はある)だった事があったなぁ。
いまどきテクスチャに対応してないカードってなんだろ・・・
0429379
2005/08/25(木) 16:44:39>>427
ありがとうございます。
グラフィックボードは
ATI RAGE Mobility P/M PCI (A21/2)
というらしいんですが、
動作はできても、作成する事ができない
ことってあるんですか?
0430デフォルトの名無しさん
2005/08/25(木) 17:54:56本にはコンパイルずみのバイナリーは付いてないの?
0432デフォルトの名無しさん
2005/08/25(木) 20:49:310433デフォルトの名無しさん
2005/08/25(木) 20:55:12ノーパソのオンボのグラボじゃ無理でしょ・・・
0434デフォルトの名無しさん
2005/08/26(金) 07:00:28なぜかピクセルシェーダがセットされません。
シェーダはコンパイルもセットも成功しているようなのですが、
まったく反映されないのです。
どうもデフォルトのシェーダみたいなものがセットされているみたいで、
SetPixelShaderをすっとばしても描画はされます。(意図したものではない)
問題がどこにあるか、お分かりになる方はいらっしゃいますか?
0435434
2005/08/26(金) 07:04:33使用ハードはパナのR3Eで、チップセットが855GME(GPUは82855?)です。
0436デフォルトの名無しさん
2005/08/26(金) 08:03:13ピクセルシェーダを使いたい場合には、デバイス作成時に必ず
IDirect3DDevice9::GetDeviceCaps で PixelShaderVersion をチェックしなさい。
0437434
2005/08/26(金) 08:57:30どうもです。
DeviceCapsはDirectX Caps Viewerで確認することはできませんか?
今はps_2_0でコンパイルしていますが、
非対応の場合はコンパイルエラーになりませんか?
0438デフォルトの名無しさん
2005/08/26(金) 09:05:07で、Caps Viewerで確認したらどうだったんだ?
なぜ非対応だとコンパイル時にエラーが出ると思うんだ?
0439デフォルトの名無しさん
2005/08/26(金) 09:35:21>非対応の場合はコンパイルエラーになりませんか?
そのコンパイラくれ。
0440デフォルトの名無しさん
2005/08/26(金) 10:04:45方向ライトを当てたときの光が当たったときの明るさを制御したいです
ちょっと説明しにくいのですが、
光に対し面の傾きが
角度0 = 100%
角度45 = 50%
角度90 = 0%
のときは、こんな感じだと思うのですが、これを
角度0 = 100%
角度45 = 25%
角度90 = 0%
のように2乗にするとかで、光の当たりを極端にすることはできるのでしょうか?
0441デフォルトの名無しさん
2005/08/26(金) 10:06:46Caps Viewer上のどこを見てよいのか分かりません。
PS20Capsという項目があるので対応しているのではないかと思いましたが、
そう判断していいのかが分かりません。
ps_2_0非対応のデバイス使用時にD3DXCompileShaderでエラーになるのではないかと。
>>439
そちらの環境ではD3DXCompileShaderは使えませんか?
0442デフォルトの名無しさん
2005/08/26(金) 11:12:53[D3D Device Type]->[HAL]->[Caps]のPixelShaderVersion。
あと、コンパイルの段階ではビデオカードが非対応でもエラーは出なくて、
その後でD3DXCreatePixelShaderを呼んだときにエラーになるはずだわ。
D3DXAssembleShader じゃなくて D3DXCompileShader を使ってるみたいだけど、
アセンブラじゃなくHLSLなのかしら、それならエフェクトの方が
楽じゃないかしら。
0443434
2005/08/26(金) 11:32:21>>442
PixelShaderVersion確認できました。ありがとうございますです。
CreatePixelShaderのエラーコードを華麗にスルーしてましたorz
どうもお騒がせしました。
なお、PixelShaderVersionが2.0のPCでは問題なく表示できました。
CF-R3Eはこれが0.0・・・、って一切対応していないのか。
>アセンブラじゃなくHLSLなのかしら、それならエフェクトの方が
>楽じゃないかしら。
エフェクトの効果をよく理解していないのではずしているかもしれませんが、
テクスチャの重ね合わせ処理にピクセルシェーダを使ってます。
重ね重ね、どうもありがとうございました。
0444デフォルトの名無しさん
2005/08/27(土) 03:03:31バンプマップのときのtangentとbinormalって、頂点ごとに1つなのでしょうか?
三角形ABCと三角形CDEと三角形CFGとあったとき、
頂点Cのtangentとbinormalは1つと考えてもいいのでしょうか?
0445デフォルトの名無しさん
2005/08/27(土) 03:06:48法線と同じように考えればいい
0446デフォルトの名無しさん
2005/08/27(土) 03:12:07レスありがとうございます。
足して、正規化しちゃっていいということでしょうか?
0447デフォルトの名無しさん
2005/08/27(土) 04:20:51最近API仕様がけっこう変わってると聞くのですが、DirectX 5で勉強しといても問題ありませんか?
最近の仕様のほうが分かりやすいインターフェースだとすればそちらを勉強したほうがいいのかな、とも思います。
アドバイスお願いしますです。必要なら新しい本を買おうと思ってます。
0448447
2005/08/27(土) 04:22:130449デフォルトの名無しさん
2005/08/27(土) 05:04:160450デフォルトの名無しさん
2005/08/27(土) 09:02:100451デフォルトの名無しさん
2005/08/27(土) 11:51:52基本的に2Dっつってもポリゴンで2Dっぽく描画するか、
ほんとに2D描画なのかってところでわかれるんだけど
DirectX8,9ぐらいになるとDirectDrawが削除されてるから、
ポリゴンで2Dっぽく描画するしかなくなってる。
もう、プログラマとしての発展はのぞまねーよ。ただ、2Dゲーム(ショボイ)をつくれりゃいいんだよ。
っていうなら、多分、DirectDrawでほんとに2D描画したほうが手っ取り速い。
でも、プログラマとしてもスキルアップしていきたいな。もし、できるなら将来3Dも触ってみたい。
っていうなら、DirectX9推奨。
0452451
2005/08/27(土) 11:56:58AVGのキャラのまわりの淵を市販のゲームみたいに綺麗にしたいとかDirectDrawでやろうとすると
yaneSDKとかに頼ったりした方がいいかも。
もう、こういう小細工とかやろうとするとすげー知識いるからそのつもりで。
誰かのライブラリにたよることでなんとかなるかも?
じゃあDirectX8,9ではその辺楽になってるのかというと、そうでもなくてだな。
今度はアルファ云々の3Dまわりの知識が必用になる。
0453デフォルトの名無しさん
2005/08/27(土) 12:42:030454デフォルトの名無しさん
2005/08/27(土) 14:33:41ありがとうございます。
ドット絵の貼り合わせでゲームを作るつもりなので
DirectDrawで十分かな、と思いましたが、新しいバージョンだと使えないんですね…
ビットマップ描画するにも、テクスチャにして、ポリゴンの表面に貼り付ける、
って形になるのでしょうか。(基本的な概念もよく分かってないので変な言葉使ってたらごめんなさい)
3D機能は後々使っていきたいので、DirectX9にチャレンジしようと思います。
いろいろ新しいこと勉強する覚悟で。(3D周りの理論?とか)
DXLIBも検討してみます。
ありがとうございました。
0455デフォルトの名無しさん
2005/08/27(土) 16:59:420456デフォルトの名無しさん
2005/08/27(土) 18:24:36どうすればいいですか?
前バージョンの開発キットのようなものは残ってないですか?
0457デフォルトの名無しさん
2005/08/27(土) 19:06:180458デフォルトの名無しさん
2005/08/27(土) 19:11:200459デフォルトの名無しさん
2005/08/27(土) 19:29:41http://www.cmagazine.jp/contents/index.html
0460デフォルトの名無しさん
2005/08/27(土) 20:42:01�dクス
0461460
2005/08/27(土) 21:07:460462デフォルトの名無しさん
2005/08/27(土) 22:20:080463デフォルトの名無しさん
2005/08/27(土) 22:46:072000年3月号
0464デフォルトの名無しさん
2005/08/27(土) 22:59:11#define DIRECTDRAW_VERSION 0x0500
#include <ddraw.h>
0465デフォルトの名無しさん
2005/08/27(土) 23:18:41これからだったら、こっちのほうが応用が利いていいかも
http://www.microsoft.com/japan/msdn/directx/japan/dx9/mxd10.asp
0466デフォルトの名無しさん
2005/08/28(日) 00:00:57それで描画したドット絵を拡大してみると
ふちがアンチエイリアスぽくなってる。
バイリニアフィルタ?のせいらしいんだけど、
これをかからなくする方法を教えてください。
0467460
2005/08/28(日) 00:27:04皆さんありがとうございます。
>>464氏のこれってまさか
最新のバージョンのDirectXでもDirectDrawが使えるってことですか?
すみません。勘違いだったら…
開発キットとかぬかして、お手間取らせて
>>463氏ごめんなさい皆さんごめんなさ(ry吊ってきます。
0468デフォルトの名無しさん
2005/08/28(日) 00:47:51別に無かったことになんてしてませんよ。
3Dで描画すると3Dの知識がいるっていってるでしょう。
D3DXSpriteだけ例外のわけないでしょうよ。
とりあえず、ここにバイリニアフィルタのON/OFFを制御できる関数があるので調べてくださいな。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/directx9_c/directx/graphics/reference/d3d/interfaces/idirect3ddevice9/setrenderstate.asp
ところでなんでOFFにしたいんでしょうか?
バイリニアフィルタなら綺麗だからかかっててもいいじゃないですか?
もしかしてフィルタ云々と別の理由でOFFにしようとしてません?
0469デフォルトの名無しさん
2005/08/28(日) 00:53:17私は466ではありませんが、フィルタがかかっているのが常に嬉しいとは限りませんよ。
ドット絵とかだったら、そのまま拡大したいときもあると思います。
私は別の理由でしばしばMAGFILTER切ったりしますよ。
って、あれ?MAGFILTERならSetSamplerStateだよな。
466氏の要望はどっちだべ?
0470デフォルトの名無しさん
2005/08/28(日) 01:19:55すみません。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/directx9_c/directx/graphics/reference/d3d/interfaces/idirect3ddevice9/setsamplerstate.asp
SetRenderStateからヘルプをググってSetSamplerStateのページ開いてアドレスコピーしたんだけど
IEのアドレスバーに入ってるアドレス変わって無かったw
>>469
拡大するならなおさら、かかってた方が綺麗な気がするけど。
具体的にどういう場合なの?
0471デフォルトの名無しさん
2005/08/28(日) 01:29:05フィルタをかけるのが綺麗とは限らない。
0472466
2005/08/28(日) 01:34:22拡大縮小しないでそのまま描こうとしてもにじむのを何とかしたい。
ds.d3ddev->SetSamplerState( i, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
ds.d3ddev->SetSamplerState( i, D3DSAMP_MINFILTER, D3DTEXF_POINT );
ds.d3ddev->SetSamplerState( i, D3DSAMP_MIPFILTER, D3DTEXF_POINT );
とりあえずこれやってみたけど効果なかったorz
どうするんでしょう?
0473デフォルトの名無しさん
2005/08/28(日) 01:37:51clampの設定がマズいんでしょ。
>>472
D3DSAMP_ADDRESSU
D3DSAMP_ADDRESSV
この設定だと思われ。
0474デフォルトの名無しさん
2005/08/28(日) 01:55:172chではこういう返しをする奴多いけど
なんでだろ?
0475デフォルトの名無しさん
2005/08/28(日) 01:57:570476デフォルトの名無しさん
2005/08/28(日) 02:03:30俺も始めそれかと思ったんだけど、
細い線がどうとかいってるから違うと思われ。
0477デフォルトの名無しさん
2005/08/28(日) 02:04:160478デフォルトの名無しさん
2005/08/28(日) 02:12:41もしかしたら、フィルタを消したいわけじゃなくて、
>>473の問題で悩んでるんじゃなかろうか?と考えた。
なんつーかね。
質問する側が
「作ってるもんの現状がどんな状態で、こういう風にしたい。」
ってのがなくて、ただ、
「アンチエイリアスっぽくなってる、バイリニアフィルタじゃなかろうか?」
っていってるから、
「それってバイリニアフィルタが問題じゃねーんじゃねーの?
そもそもなんでフィルタ消したいの?」
って疑問が回答者から消えない。
だから、
「どうしてそれがやりたくて、結果どうなってほしいのか?」
ってのがこっちから聞かなきゃならない。
で、結局、バイリニアフィルタをOFFにしても問題は解決していない(かもしれない)わけだ。
とりあえず、>>472はそのコードでバイリニアフィルタのON・OFFが効いてるのかどうか
もっとわかりやすい画像で試してくれって感じだな。
0479デフォルトの名無しさん
2005/08/28(日) 02:27:28テクスチャそのものの"ふち"ということになるけど、
そうなのかな?>>466どの
>>470
>拡大するならなおさら、かかってた方が綺麗な気がするけど。
>具体的にどういう場合なの?
質問者のケースはドット絵、例えば32x32のアイコンを
拡大して見せたいような場合はフィルタ切りますな。
あとは、ビデオのインタレースをそのまま表示したい場合とか。
>>472
サンプラステ−ジインデックス合ってる?
0480デフォルトの名無しさん
2005/08/28(日) 02:34:13> 拡大縮小しないでそのまま描こうとしてもにじむのを何とかしたい。
テクスチャの幅が 2の累乗じゃないのでは?
0481デフォルトの名無しさん
2005/08/28(日) 02:48:190482デフォルトの名無しさん
2005/08/28(日) 02:53:26自分で自分を試すの
0483464
2005/08/28(日) 02:55:32そゆこと。これを使えば最新のSDKだけで過去の資産も生かせる。
ほかにもDIRECT3D_VERSIONとかいろいろあるよ。
ちなみに、DX8以降ではDirectDrawの更新が凍結されたので、
DIRECTDRAW_VERSIONはデフォルトで0x0700になる。
だから、DX7のDirectDrawは最新のSDKでそのまま使えるはず。
0484466
2005/08/28(日) 03:10:43その通りです。
現状は、絵をそのままの大きさで描画するときに、
細い線や絵がアンチエイリアスがかかったように滲むので
それを滲まないようにしたいです。
バイリニアと書いたのは一番症状が近いかなと思ったもので、
確信があるわけではないです。
>>479 サンプラステージ
たぶんあってます。
デフォルトは0ですよね?一応不安になって0から7までforで回してみたんでiになってますけど。
>>480 テクスチャの幅
64*512 スプライトで表示するときは64*64
一応512*512にしてみたけど変化ないです。
今のところ、SetRenderStateもSetSamplerStateも、いじってみても変化がない。
なんだか根本から間違ってるような気がしてきた。
0485デフォルトの名無しさん
2005/08/28(日) 03:26:150486デフォルトの名無しさん
2005/08/28(日) 08:00:120487デフォルトの名無しさん
2005/08/28(日) 08:48:50ステートの変更はBegin-End間でやってるか?
ID3DXSpriteはブラックボックスだから何ともいえないが。
0488466
2005/08/28(日) 12:23:38根本的な原因はバックバッファとウィンドウのサイズが微妙に違うということでした。
そりゃぁにじむに決まってる。
で、それを直した後もにじんでたのは>>487でした。
Begin-End間でもやってみたことはあったんですが、ウィンドウのサイズを直す前だったので、
場所は関係ないのかと思って別の場所においたのが原因みたいです。
>>486 -0.5ピクセルずらす
念のため-0.5ピクセルずらしてますが影響はないようです。
Begin End間で
ds.d3ddev->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT );
を行えば同サイズでの描画の際に、にじみはなくなるようです。
数々の助言ありがとうございました。
0489473
2005/08/28(日) 16:14:06まぁ、解決してヨカタね。
0490デフォルトの名無しさん
2005/08/29(月) 01:12:34ヘルプに載ってるパースペクティブ補正は必要なときだけとありますが、
これはどの命令で変更するのでしょうか?それっぽいのが見当たりません
またSetRenderStateのD3DRS_NORMALIZENOMARLSはどういう意味があるのでしょうか?
パフォーマンスに影響無いように思えるのですが
0491デフォルトの名無しさん
2005/08/29(月) 07:37:36DX7以前はD3DRENDERSTATE_TEXTUREPERSPECTIVEで手動でオンオフできましたが、8から消えました。
デバイスのD3DPTEXTURECAPS_PERSPECTIVEが有効になっている限り、自動的に補正がかかります。
現在のグラフィックスハードウェアはパースペクティブ補正を前提に設計されていますので、
たとえ無効にできたとしても、速度の向上はほとんど見込めないと思います。
0492デフォルトの名無しさん
2005/08/29(月) 07:44:33これみるとwin2kは対応してないみたいなんだけど
directx使って開発するにはxpにしないとだめなんですか?
0493デフォルトの名無しさん
2005/08/29(月) 10:30:44最新じゃないSDK使えばよい。
0494デフォルトの名無しさん
2005/08/29(月) 16:16:43win2k対応は(December 2004)まで
日本語ヘルプが出てるのは(October 2004)まで
0495492
2005/08/29(月) 18:54:07解決しました。
dxguid.lib(dxguid.obj) : fatal error LNK1103
というリンクエラーが出たのでファイルが壊れてるのかと
入れ直そうといろいろ調べていた所だったのです。
上のエラーが無くなったのは October 2004 のでした。
ググってみると VisualStudio6 との問題らしいです。
ありがとうございました。
0496デフォルトの名無しさん
2005/08/30(火) 22:56:48通常のウィンドウを初期設定したいのですがどうすればいいですか?
0497デフォルトの名無しさん
2005/08/30(火) 23:38:390498デフォルトの名無しさん
2005/08/30(火) 23:50:54( ・∀・) 市中引き回しの上火あぶり
( ∪ ∪
と__)__)
0499デフォルトの名無しさん
2005/08/30(火) 23:51:240500デフォルトの名無しさん
2005/08/31(水) 09:18:42全体がフリーズしてしまい、リセットボタンを押す羽目になります。
GetRenderTargetData()を呼び出す間隔をある一定以上にすると
問題はありません。他の方はどうですか?
うちは、Athlon64 3200+ Geforce6800(ドライバ77.76)を使用しています。
0501デフォルトの名無しさん
2005/08/31(水) 11:30:26SetCooperativeLevelでDDSCL_NORMALを設定すると
思うのですが、サーフェイスを作成するところで躓いてしまいます。
DirectDrawの初期化については
ttp://www.cnet-try.ne.jp/akiji/directx.htm
こちらのサイトのソースを参考に拝借させてもらってます。
フルスクリーンから通常のウィンドウモードにするには何か他に手順が必要なのでしょうか?
低脳な質問ですが教えてください。おながいします。
0502デフォルトの名無しさん
2005/08/31(水) 18:03:35switchやテーブル変換等を使って表示させるしか方法ないですか?
0503デフォルトの名無しさん
2005/08/31(水) 19:19:17ヘルプのDirectInputのチュートリアルは読んだかな?
アレは中々上手い方法でやっているので一度は読んでみることをオススメする。
0504デフォルトの名無しさん
2005/08/31(水) 19:52:51ありがとうございます。早速読んでみました。
これのことですよね?
#define KEYDOWN(name, key) (name[key] & 0x80)
g_lpDIDevice->GetDeviceState(sizeof(buffer),(LPVOID)&buffer);
if (KEYDOWN(buffer, DIK_RIGHT));
// Turn right.
マクロについて勉強してきますorz
0505デフォルトの名無しさん
2005/08/31(水) 20:01:06直接入力の場合の構文ですね。ボケてたorz
0506501
2005/09/01(木) 19:27:08ひとつ訂正があるのですが、
×フルスクリーンから通常のウィンドウモードにするには
○ウィンドウモードにするには
ここではDirectDrawの質問は受け付けてないんですか?
せめて何がいけないのか教えてください。
0507デフォルトの名無しさん
2005/09/01(木) 19:49:03DDSCL_FULLSCREEN
0508デフォルトの名無しさん
2005/09/01(木) 20:03:260509501
2005/09/01(木) 20:32:35ttp://www.cnet-try.ne.jp/akiji/directx05.htm
ソースはこちらと同じで
hRes = lpDD->SetCooperativeLevel(hWnd,DDSCL_NORMAL);
と修正しただけです。
躓くというのは
・・・
hRes = lpDD->CreateSurface(&ddsd,&lpDDSPrimary,NULL);
if(hRes != DD_OK)
{
lpDD = NULL;
lpDDSPrimary = NULL;
MessageBox(hWnd,"Step4","Error",MB_OK);
return hRes;
}
ここでエラーになるという事です。
0510デフォルトの名無しさん
2005/09/01(木) 21:00:28SDKのサンプルに答えがあるのに
なぜ見ない?
0511デフォルトの名無しさん
2005/09/01(木) 21:54:42pTexture->LockRect(0, &LockedRect, &rect, 0);
↑みたいなLock関数について伺いたいのですが、
Lock関数の引数で、ロックフラグ(↑のLockRectの場合は第四引数)が
0の場合はどのような意味を持つことになるのでしょうか?
DirectXのヘルプには、
D3DLOCK_DISCARD
D3DLOCK_NO_DIRTY_UPDATE
D3DLOCK_NOSYSLOCK
D3DLOCK_READONLY
D3DLOCK_NOOVERWRITE
のいずれかを使えと書いてあり、内容も理解できます。
しかし、いろいろサイトを見てきましたが
このフラグに0を指定してるソースが多々見受けられます。
解説が見つからなかったのでここで質問させていただきます。
どうかよろしくお願いします。
0513デフォルトの名無しさん
2005/09/01(木) 22:22:08初心者スレでそうガーガーわめいたところで解決などしない。
それにあのSDKのサンプル郡は初心者には触り難いイメージがある。
アレは普通はみないよ。
俺も初心者の頃、DirectXの初心者本買いまくった方だから、
初心者の役に立たないサンプルソースの匂いってわかるんだ。
0514デフォルトの名無しさん
2005/09/01(木) 22:34:44日本語ヘルプはファビョってるから、英語のヘルプを読め。
0515デフォルトの名無しさん
2005/09/01(木) 22:47:260517デフォルトの名無しさん
2005/09/01(木) 23:03:33DirectDrawなんて使ってると、わからないことがあるたびにそうやって
生き字引を探さなきゃならないわけだが・・・
それでもDirectDrawを使い続けるのか?
正直、旧バージョンのサポートなんて無いといっていい。
あくまで実行ファイルが動くってだけだ。
なんかさ、どうでもいいところで躓くのって嫌じゃない?
特に理由がないなら、DirectX9を奨めたいけどね。
0518デフォルトの名無しさん
2005/09/01(木) 23:05:57近所の書店でも見かけた
0519デフォルトの名無しさん
2005/09/01(木) 23:06:18まあ、どうしてもっつーならこの本をかいたまへ
http://www.amazon.co.jp/exec/obidos/ASIN/4875937997/qid=1125583494/
もう、これっきゃないっしょー
0520デフォルトの名無しさん
2005/09/01(木) 23:17:42> I/O別冊第1編集部 (編さん)
「編纂」なのは分かっているが、ひらがななもんで一瞬「編さん(影さん・つぐ美ちゃん)」が書いたのかと
0521デフォルトの名無しさん
2005/09/02(金) 01:37:59作られてないの??
0522デフォルトの名無しさん
2005/09/02(金) 02:01:450523デフォルトの名無しさん
2005/09/02(金) 02:24:48ここ見たら、DirectX9は、2002しかないけど...
0524デフォルトの名無しさん
2005/09/02(金) 02:35:20http://www.microsoft.com/downloads/details.aspx?FamilyId=4B9B1752-6F6C-440E-816C-35D247570AE4&displaylang=ja
0525デフォルトの名無しさん
2005/09/02(金) 03:00:21D3DのDLLを個別に配布しないですむDirectX9は
Dec2004が最新ってことで良いのでしょうか?
0526デフォルトの名無しさん
2005/09/02(金) 03:06:56d3dx9_24x.dll〜d3dx9_27.dllの事ならそうだ
0527デフォルトの名無しさん
2005/09/02(金) 03:21:03ありがとー。
0528デフォルトの名無しさん
2005/09/02(金) 15:52:30サイトの方は見てないが
おそらくバックバッファとプライマリバッファのピクセルフォーマットが
異なっているんじゃないだろうか。
俺はバックバッファはOFFSCREENPLAINで作って、
ウィンドウモードのときはGDIでウィンドウに転送してる。
それとI/Oの本は持ってるけどその辺のことは全然書いてないし、
フルスクリーンで何も考えないでとりあえずDirectX使うところまでも
たどり着けないようなやつが買う本。たぶん参考にならない。
0529デフォルトの名無しさん
2005/09/02(金) 22:14:55位置情報を元に一つのメッシュを幾つも描画してますか。
それとも
vector<Mesh*> array;
初期化部
Mesh* pmesh = new Mesh;
array.push_back( pmesh );
描画部
for( int i = 0; i < 10000; i++ )
array.Draw()
こんなんやってますか?
というのは
今までメモリを気にして前者のやり方でやってたのですが
本をみると(Spriteですが) listに放りこんでるではないですかっ!!
そこで試しに10000回push_backやってみたんですが
GlobalMemoryStatusで dwAvailPhysを見てみたんですが
殆どメモリが減ってない。
vector<Mesh*>は Meshサイズ分のメモリを食ってないのでしょうか??
0530529
2005/09/02(金) 22:19:02描画部がわけわかんなくなっちゃったぜ
0531デフォルトの名無しさん
2005/09/02(金) 22:44:390532デフォルトの名無しさん
2005/09/02(金) 22:45:250533デフォルトの名無しさん
2005/09/02(金) 22:55:100534529
2005/09/02(金) 23:05:24見当違いのメモリを調べていたのかw
0535デフォルトの名無しさん
2005/09/02(金) 23:11:06共通の描画用メッシュの参照ポインタを持てばいい。
そのためのAddRefだろー。
現実はあまり使わないけどなw
0536529
2005/09/02(金) 23:17:53フリーソフトはあるのだから
調べる方法は必ずあるんだろうなぁ
VRAM sprintf でググっても出てこんw
同じ物を描画する時はどうやってますかい?
0537デフォルトの名無しさん
2005/09/02(金) 23:23:100538529
2005/09/02(金) 23:43:41位置情報を元に 一つのメッシュを
再利用すべきなのですな
1000回のチェックに下げて
VRAMチェッカー(フリーソフト)で調べると
2Mちょっと食われてた。
0539デフォルトの名無しさん
2005/09/02(金) 23:58:29同じマップチップを何度も使いまわしている。
それが3Dになっただけだ
0540デフォルトの名無しさん
2005/09/03(土) 00:07:21MFC スレかどうか迷ったのですが、ここで質問させていただきます。
プロジェクトは MFC を用いて組んでいます。
DirectInput に関してです。
(プロジェクト名).rc(85): error RC2104 : undefined keyword or key name: DIK_BACK
というエラーが出て、rc ファイルを見てみると、次のようなコードがありました。
/////////////////////////////////////////////////////////////////////////////
//
// Accelerator
//
IDR_MAINFRAME ACCELERATORS PRELOAD MOVEABLE PURE
BEGIN
"C", ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT
"V", ID_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT
DIK_BACK, ID_EDIT_UNDO, VIRTKEY, ALT, NOINVERT
DIK_DELETE, ID_EDIT_CUT, VIRTKEY, SHIFT, NOINVERT
DIK_F6, ID_NEXT_PANE, VIRTKEY, NOINVERT
DIK_F6, ID_PREV_PANE, VIRTKEY, SHIFT, NOINVERT
DIK_INSERT, ID_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT
DIK_INSERT, ID_EDIT_PASTE, VIRTKEY, SHIFT, NOINVERT
"X", ID_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT
"Z", ID_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT
END
(続く)
0541540
2005/09/03(土) 00:08:33実は rc ファイルをいじったこと今まではなく、そもそも rc ファイルが何者なのかも理解できていません。
また、DirectX 関連のライブラリとのリンクなどはずっと以前から行っており、プロジェクトのビルドもできていましたが、
今日、突然このようなエラーが現れました。
このかん、DirectX に関連する部分をいじってはないつもりです。(いじったからエラーが出たと思うんですが・・・)
上の部分のコードはいつ生成され、エラーの原因は何なのでしょうか・・・。
よろしくお願いします。
0542529
2005/09/03(土) 00:12:48ロールプレイングゲームプログラミング
という書籍に
CChipという関数に画像データを1個ずつ入れて
それを
list<CCharacter>にぶっこんでるわけですよ
↑(Image(画像を取り扱うクラス)を継承している。)
マップに存在する分だけ
そこで、オレもぶっこんでみようかなと
頭こんがらがったワケデスヨ。
>>540
.rcはResourceファイルでメニューバーやら
ショートカットキー(Accelarator)などを保存?みたいな
しているファイルで、それは
resource.hファイルというのに定義されている。
#include "resource.h"てのが抜けてるのだろうか?
0543デフォルトの名無しさん
2005/09/03(土) 00:27:29とりあえず "DIK_"ってのを"VK_"にすればいいんじゃないかしら。
間違って置換しちゃったとか。
0545関連リンク製作委員会
2005/09/03(土) 03:45:01ttp://pc8.2ch.net/test/read.cgi/tech/1122031254/
[詳細不明]DirectX9.0c日本語リリース[人柱]
ttp://pc8.2ch.net/test/read.cgi/win/1090985428/
鬱だ氏のう DirectX (Part 15)
ttp://pc8.2ch.net/test/read.cgi/tech/1096649788/
DirectXとOpenGL、ゲーム作るならどっち?
ttp://pc8.2ch.net/test/read.cgi/gamedev/1009941920/
Managed DirectX vol.2
ttp://pc8.2ch.net/test/read.cgi/tech/1061285378/
最強のDirectShow Filterを探そう
ttp://pc8.2ch.net/test/read.cgi/avi/1030190329/
Direct 3D
ttp://pc8.2ch.net/test/read.cgi/gamedev/1005293179/
OpenGL VS Direct3D
ttp://pc8.2ch.net/test/read.cgi/tech/1044308707/
出やがったなDirectX8.1
ttp://pc8.2ch.net/test/read.cgi/win/1005383406/
C#でDirectX9 初心者の館 2頂点目
ttp://pc8.2ch.net/test/read.cgi/tech/1103998649/
DirectShowと戦うスレ
ttp://pc8.2ch.net/test/read.cgi/tech/1026666092/
Direct3D
ttp://pc8.2ch.net/test/read.cgi/tech/1011762546/
VB.NET で DirectX 初心者の箱庭
ttp://pc8.2ch.net/test/read.cgi/tech/1106216291/
2D!!のDirectXをやってみるかもな
ttp://pc8.2ch.net/test/read.cgi/gamedev/1005133911/
━━━━Direct Draw━━━━
ttp://pc8.2ch.net/test/read.cgi/gamedev/1031289035/
DirectXのサンプルをしゃぶりつくす!
ttp://pc8.2ch.net/test/read.cgi/gamedev/1032657642/
0546デフォルトの名無しさん
2005/09/03(土) 19:55:38SHIFTが同時に押されているかどうかはどう判断するのでしょうか?
今はシフトが押されたらbool isShift=true; 離されたらisShift=false:として
場合分けをしています。
0547デフォルトの名無しさん
2005/09/03(土) 20:04:26両方しらべればいいじゃない
0548デフォルトの名無しさん
2005/09/03(土) 20:34:29使えるようにするにはどうしたらいいでしょうか?
0549C初心者です
2005/09/03(土) 21:01:05NT系のOSってノートパッドに書き込める容量は制限されて無いみたいなんですけど、
Meってノートパッドに書き込みすぎるとメモリ不足って言う表示がでてしまい、それ以上書けなくなってしまいます。
そこで、Meで動作する容量の制限されないノートパッドをC言語で作ってるんですけど、イマイチ作れません。
だれか作り方教えてください。お願いします。
0550デフォルトの名無しさん
2005/09/03(土) 21:09:59スレタイ百回口にだしてよもう
0551C初心者です
2005/09/03(土) 21:17:31早とちりしてました。ほかのスレに行きます
0552546
2005/09/03(土) 21:31:25よく考えたらバッファーからは押されたキーの情報を時系列順にしか取り出せないのだから
この場合はフラグでしか無理ですね…。
>>547
チェックした時点でSHIFTが押されているかではなく、あるキーが押された時点で
同時にSHIFTが押されているかどうかを調べたいので
やはりバッファーからの情報を元にフラグを立てることにします。
スレ汚しすみません。
0553デフォルトの名無しさん
2005/09/03(土) 22:10:42キーはな。
まず関数を作るんだ。
作る関数は
GetOnTrgKey関数 キーが押された瞬間をとる
GetOffTrgKey関数 キーが放された瞬間をとる
GetOnKey関数 キーが現在押されているかどうかをとる
の3つだ。
引数はスペースだとかリターンだとか上とか下とかキーの種類な。戻り値はboolな。
この関数ができれば、
if(GetOnKey(SHIFT)){
if(GetOnTrgKey(ENTER)){
}
}
って簡単だろ?
もちろん、前回のフレームのキー状態をとっておく必要はあるからね。
上の3つができたら、キーの長押しなんかも判断できる関数作ってみ。
長押しってのはRPGのステータス画面なんかで十字キーしばらく押してると
ピッピッピッピピピピピピピって連続で押されているみたいな動作するじゃん。それ。
0554デフォルトの名無しさん
2005/09/03(土) 22:37:26スッドレとイベントが必要だったり
0555デフォルトの名無しさん
2005/09/03(土) 23:05:50いらないと思うけど・・・
0556デフォルトの名無しさん
2005/09/04(日) 02:03:14答えようとしてる人達が、バッファリングデータのことを
知らない人ばかりですまないな。
0557デフォルトの名無しさん
2005/09/04(日) 02:16:20>GetOnTrgKey関数 キーが押された瞬間をとる
戻り値がboolで、キーが押された瞬間を捉えるとすると同期オブジェクト使うしかないやん。
スピンロックは却下な。
0558デフォルトの名無しさん
2005/09/04(日) 02:21:36フレーム単位であわせりゃいいじゃん。
つーか、フレーム単位でしかとらないほうがいいだろ。
0559デフォルトの名無しさん
2005/09/04(日) 12:13:42MFC を利用してコードを組んでいます。
DirectX9 の勉強中です。
DirectInput によりキーボードの入力状態をチェックしてるのですが、上手く行きません。
コンパイルエラーは出なく、原因が全くつかめないため、
冗長かも分かりませんがソースの必要と思われる部分をUPします。
http://www.geocities.co.jp/CollegeLife-Club/7442/ts.txt
自作 CDirectInput8 クラスの InitDInput() を、MainFrame の OnCreate() 内で呼び出して
DirectInput の初期化を行い、OnTimer() 内でキー状態をチェックしています。
道中メッセージボックスでのエラーは出ません。
が、キー入力を行っても "成功" のボックスが出ません。
調べたところ、OnTimer() 自体は確実に呼ばれているようです。
お手上げ状態です。
かなり面倒な質問ですが、お時間のある方、ご協力をお願いします。
0560デフォルトの名無しさん
2005/09/04(日) 12:24:02hr = mpDInputDevice->Poll();
hr = mpDInputDevice->GetDeviceState(256,diKeyState);
if(hr != DI_OK){
hr = mpDInputDevice->Acquire();
while(hr == DIERR_INPUTLOST)
hr = mpDInputDevice->Acquire();
return 0;
}
その部分、俺のソースではこんなことになっていた・・・orz
なんか支離滅裂なコードなのであんまり気にしないでくれw
君のは多分Poll関数が呼ばれてないだけじゃないのかな?(違ったら素マンコ)
0561559
2005/09/04(日) 12:39:48Poll() に関して調べてみました。
内容はまだ理解できていませんが、キーボードやマウスの場合は必要ないようです・・・。
申し訳ありません。
0562デフォルトの名無しさん
2005/09/04(日) 12:50:12//if (hr == DIERR_INPUTLOST){
//m_directinput.m_pDIDevice->Acquire();
//}
if( FAILED(hr) )
{
hr = m_directinput.m_pDIDevice->Acquire();
while( hr == DIERR_INPUTLOST )
hr = m_directinput.m_pDIDevice->Acquire();
return;
}
0563デフォルトの名無しさん
2005/09/04(日) 12:52:55ほんとだ。
いい加減なこといってすまん。
じゃ、やっぱ
while(hr == DIERR_INPUTLOST)
hr = mpDInputDevice->Acquire();
なのか?ちがうか・・・orz
0564デフォルトの名無しさん
2005/09/04(日) 12:53:59かぶった。すまん。
0565デフォルトの名無しさん
2005/09/04(日) 12:58:45DI_OKならm_diKeyStateを直接表示してみては
0566559
2005/09/04(日) 13:01:03GetDeviceState() で SUCCEED していないようです。戻り値調べてみます。
ありがとうございます。
0567デフォルトの名無しさん
2005/09/04(日) 13:04:000568559
2005/09/04(日) 13:06:24DIERR_NOTACQUIRED
The operation cannot be performed unless the device is acquired.
orz
0569559
2005/09/04(日) 13:10:02FAILED の時に Acquire() 呼び出すように改良してみます。
お付き合いありがとうございました。一旦失礼します。
0570559
2005/09/04(日) 13:16:49ありがとうございました。ようやく次の作業にいけます!
長々とお世話になりました。それではー。
0571デフォルトの名無しさん
2005/09/04(日) 16:34:03ベクトルを任意軸で回転させ新しいベクトルを取得したいのですが、計算結果にわずかな誤差がでてしまうのです。
例えば (0, 0, 1) というベクトルを (1, 0, 0) という軸で90度回転させるとします。
+Zに向いているベクトルを-Yに向けたいのです。
ところが、計算してみると (0, -0.999998, 0) などコンピュータらしい誤差が生まれます。
この問題、なんとかならないでしょうか?
ベクトルの回転方法としては、ベクトルを行列に格納し、回転行列を作って掛け合わせ、その行列から
_41, _42, _43 を取り出して新しいベクトルとしています。
関数はD3DXMatrixRotationAxis() や D3DXQuaternionRotationAxis() と D3DXMatrixRotationQuaternion() などを使いましたが、
誤差をなくせません・・・。
よろしくお願いします。
0572デフォルトの名無しさん
2005/09/04(日) 16:39:53演算の手法や順番の工夫、遅くなるのを覚悟で倍精度や拡張精度の
浮動小数点演算を行うといった方法である程度軽減は可能ですが、
離散値しか扱えない以上は丸め誤差や打切り誤差は不可避です。
0573デフォルトの名無しさん
2005/09/04(日) 16:43:050574デフォルトの名無しさん
2005/09/04(日) 16:46:59つーか、何がしたいの?
こういうの無理そうだって感覚的に理解できるっしょ普通w
また、こういう微妙な数字をゲームの判定なんかにつかっちゃ駄目だよ。マジで。
1ぴったりであることとか、0ぴったりであることとか。
0575デフォルトの名無しさん
2005/09/04(日) 16:50:220576デフォルトの名無しさん
2005/09/04(日) 18:04:080577デフォルトの名無しさん
2005/09/04(日) 18:06:46ん〜…
ある平面があって、その平面は指定したベクトルの先に展開したいので、
まず回転のない平面の4頂点を作り、指定したベクトルに応じた回転を与えることで、
4頂点の座標を求める・・・・ということをやっています。傘なんかを思い描いてもらえればいいかと思います。
傘の柄が指定したいベクトル。柄の先に有るビニールが展開したい平面。
そして、その平面と当たり判定をするのですが・・・その平面に対しつっこんできた点の、
反射ベクトルを求めようとしているのですが、なにか微妙な誤差がありまして。平面との反射角は、
法線と角度をとった場合、平面の表なら90以下、平面の裏なら90ど以上じゃないとおかしいじゃないですか。
それが、裏なのに89.9999...など「微妙に数値がずれてる」場合がありまして、うまく計算できないときがあるのです。
先ほどの例で(0,0,1)を(1,0,0)などで90度回転させた平面の座標を見たところ、しっかり90度で回転させているのに
頂点が綺麗な数字にならず14.9999...など回転させた際に誤差が生まれたようで。それが反射角が微妙に
おかしくなる原因かと思ったのです。
>>572
不可能・・・ですか。マジですか・・・。
まぁ、反射角の求め方もまだ怪しいので、もうちょっと調べてみます。
ありがとうございました。長文ですみません。
0578デフォルトの名無しさん
2005/09/04(日) 20:09:10スパコンで行う大規模数値計算ですらそれを前提に行う。
ゲームみたいなテキトーなものはテキトーでよい。
>>577
DirectXのヘルプのHLSLのreflect関数に公式が出てるよ。
説明はt-potに良いのがあった記憶が。
0579デフォルトの名無しさん
2005/09/04(日) 23:16:45多分それは、その部分は適当にすませてるケースが多いからだろうな。
ttp://www.amazon.co.jp/exec/obidos/ASIN/4563036420/qid=1125843179/sr=1-7/ref=sr_1_10_7/250-0637096-8431410
この本がお勧めです。難しいけどね。
0580デフォルトの名無しさん
2005/09/04(日) 23:34:27わw
センスなさそーだなお前w
誤差がでることを前提に作るしかねぇってわかるだろ。
それとも何か解決策でもあったか?
くっだらねぇ本紹介する前にテメェがその本で獲た結論から言えや。
0581デフォルトの名無しさん
2005/09/04(日) 23:44:51著者に向かってなんてことを言うんだ
0582デフォルトの名無しさん
2005/09/04(日) 23:45:46この本は誤差がでることを前提に作れっていってるんだよ。
誤差があっても落ちない破綻しないようにする作り方を示してる。
でも他により良い資料があるなら是非紹介して欲しい。
0583デフォルトの名無しさん
2005/09/04(日) 23:49:47自分で自分をDQNだって明言することが趣味なのか?
アカデミックな本に関してアレルギーでも持ってるのかな?
0584デフォルトの名無しさん
2005/09/04(日) 23:56:250585579
2005/09/05(月) 00:02:52んーやはりちょっと気になるなぁ。
いったい何をもってくだらないと断じているのか知りたい。
ちなみに自分自身は、学歴ないし頭悪いし計算幾何学に通じてる訳でもないし
その本は半分ぐらい読んで放置中だw
でもいずれそれに沿った実装はしたいと思っている。
誤差は本当に頭が痛い問題だ、もっと簡単で使える技術があるなら本気で知りたい。
0586デフォルトの名無しさん
2005/09/05(月) 00:03:090587デフォルトの名無しさん
2005/09/05(月) 00:03:10営業活動必死だなw
0588デフォルトの名無しさん
2005/09/05(月) 00:04:51>この本は誤差がでることを前提に作れっていってるんだよ。
読んでも読まなくても俺と結論がいっしょじゃねぇかよw
0589デフォルトの名無しさん
2005/09/05(月) 01:29:15DirectInput の勉強中です。
class CDirectInput8
{
public:
BOOL CALLBACK EnumDevicesBySemanticsCallback(
LPCDIDEVICEINSTANCE lpddi,
LPDIRECTINPUTDEVICE8 lpdid,
DWORD dwFlags, DWORD dwRemaining, LPVOID pvRef);
}
BOOL CALLBACK CDirectInput8::EnumDevicesBySemanticsCallback(
LPCDIDEVICEINSTANCE lpddi,
LPDIRECTINPUTDEVICE8 lpdid,
DWORD dwFlags, DWORD dwRemaining, LPVOID pvRef)
{
//(中略)
}
自作 CDirectInput8 クラス内で上記コールバック関数を定義し、
CDirectInput8::InitDInput() (初期化用のメソッド) 内で以下のように EnumDevicesBySemantics() を使っています。
(続く)
0590589
2005/09/05(月) 01:29:52hr = m_pDInput->EnumDevicesBySemantics(
NULL, &m_DIActionFormat, EnumDevicesBySemanticsCallback, NULL, DIEDBSFL_ATTACHEDONLY);
if (FAILED(hr)) {
AfxMessageBox("デバイスへのアクションマッピングに失敗");
return false;
}
すると、上記コードでコンパイルエラーが出ます。
〜\DirectInput8.cpp(44): error C2664: 'IDirectInput8A::EnumDevicesBySemantics' : 3 番目の引数を 'BOOL (LPCDIDEVICEINSTANCE,LPDIRECTINPUTDEVICE8,DWORD,DWORD,LPVOID)' から 'LPDIENUMDEVICESBYSEMANTICSCBA' に変換できません。
型変換ができないと言われましたが、
他の色々なサンプルを見ても、同じコードが書かれており、コンパイルが通ります。
原因分からなくて困っています。
よろしくお願いします。
0591デフォルトの名無しさん
2005/09/05(月) 01:47:43メンバ関数をコールバックに渡してっからだろ。
0592デフォルトの名無しさん
2005/09/05(月) 01:51:22ttp://sapporo.cool.ne.jp/tanomi/qanda/a014.html
0593デフォルトの名無しさん
2005/09/05(月) 02:02:00知らなかった・・・。完全に勉強不足でした。ありがとうございます。
0594デフォルトの名無しさん
2005/09/05(月) 02:22:020595デフォルトの名無しさん
2005/09/05(月) 02:29:58なんで検索して自力で調べようとしないんですか?
0596デフォルトの名無しさん
2005/09/05(月) 02:41:25デバッグするときどうするんだろ
0597デフォルトの名無しさん
2005/09/05(月) 02:50:08ケチ臭い事言ってんなよ
いちいち調べろとかわざわざ書き込むな
調べてもわからないから聞いてんだろコラ
0598デフォルトの名無しさん
2005/09/05(月) 03:00:45なら正しい検索の仕方から学んだ方が良いと思いますよ
0599デフォルトの名無しさん
2005/09/05(月) 03:06:04ほほう
ではその検索とやらの仕方はどーすんのよ?
ここは初心者スレだろ?
0600デフォルトの名無しさん
2005/09/05(月) 03:09:35http://www.microsoft.com/downloads/details.aspx?FamilyID=bc7ddedd-af62-493d-8055-5e57bab71e1a&DisplayLang=en
んで、このGenuine Windows Validationってもう任意じゃなくて必須なのかしら。
0601デフォルトの名無しさん
2005/09/05(月) 03:11:56スレタイ読めますか?日本語の勉強からしたほうが良いかもしれませんよ。
0602デフォルトの名無しさん
2005/09/05(月) 03:20:31日本語から学べ?ハイワロスワロス
0603デフォルトの名無しさん
2005/09/05(月) 03:22:37まぁこの程度の事すら自力で調べられないようならプログラミングなんぞ無理でしょうけど。
0604デフォルトの名無しさん
2005/09/05(月) 03:27:520605デフォルトの名無しさん
2005/09/05(月) 03:29:40それSDKw
日本語サイトにもSDKやシンボルはあるよ
0606デフォルトの名無しさん
2005/09/05(月) 03:36:42ただ検索も満足に出来ない人に見つけられるかは知りませんが。
0607デフォルトの名無しさん
2005/09/05(月) 03:38:36試してみ?
0608デフォルトの名無しさん
2005/09/05(月) 04:22:20良くわかんないわね。
0609デフォルトの名無しさん
2005/09/05(月) 04:48:250610デフォルトの名無しさん
2005/09/05(月) 04:49:110611デフォルトの名無しさん
2005/09/05(月) 04:51:54んで、仮にわざわざ9.0bの環境にしてデバッグしたいってことなら、
とりあえず初心者では無いわねw
0612デフォルトの名無しさん
2005/09/05(月) 05:10:52http://www.microsoft.com/downloads/details.aspx?familyid=c64e9f07-b562-4849-ad61-b2fc7fa55fd9&displaylang=en
0613デフォルトの名無しさん
2005/09/05(月) 05:40:07初心者ではないならなおさら見苦しいなwww
0614589
2005/09/05(月) 07:27:44>>592 を参考に、コールバック関数を static で宣言しました。
class CDirectInput8
{
public:
// (中略)
static BOOL CALLBACK EnumDevicesBySemanticsCallback(
LPCDIDEVICEINSTANCE lpddi, LPDIRECTINPUTDEVICE8 lpdid,
DWORD dwFlags, DWORD dwRemaining, LPVOID pvRef);
};
BOOL CALLBACK CDirectInput8::EnumDevicesBySemanticsCallback(
LPCDIDEVICEINSTANCE lpddi, LPDIRECTINPUTDEVICE8 lpdid,
DWORD dwFlags, DWORD dwRemaining, LPVOID pvRef)
{
// (中略)
}
bool CDirectInput8::InitDInput(HWND hwndApp)
{
// (中略)
// デバイスへのアクションマッピング
hr = m_pDInput->EnumDevicesBySemantics(
NULL, &m_DIActionFormat, EnumDevicesBySemanticsCallback, (LPVOID)this, DIEDBSFL_ATTACHEDONLY);
}
0615589
2005/09/05(月) 07:28:37>DIERR_INVALIDPARAM
>無効なパラメータが、戻ってくる関数に渡されたか、オブジェクトがその関数を呼び出せる状態になかった。
どっちのエラーかも分からないのでなかなか解決しません。
お手を貸していただけないでしょうか。
0616デフォルトの名無しさん
2005/09/05(月) 07:40:10m_DIActionFormatが怪しいような。
アクションマッピング使ったことないから分からんけど。
0617589
2005/09/05(月) 07:56:43// アクションマップの定義
int number_of_actions = sizeof(g_GameAction) / sizeof(g_GameAction[0]);
m_DIActionFormat.dwSize = sizeof(DIACTIONFORMAT);
m_DIActionFormat.dwActionSize = sizeof(DIACTION);
m_DIActionFormat.dwDataSize = number_of_actions * sizeof(DWORD);
m_DIActionFormat.dwNumActions = number_of_actions;
m_DIActionFormat.guidActionMap = g_AppGuid;
m_DIActionFormat.dwGenre = NULL;
m_DIActionFormat.rgoAction = g_GameAction;
m_DIActionFormat.dwBufferSize = 100;
m_DIActionFormat.lAxisMin = -1000;
m_DIActionFormat.lAxisMax = 1000;
lstrcpy(m_DIActionFormat.tszActionMap, "hoge");
こんな感じでした。
0618デフォルトの名無しさん
2005/09/05(月) 08:31:31フィールドはそれ以外にもあるからそういうのが関係してるとか。
(あんまり関係ない気はするが一応やってみるのがいい)
ユーザー関数が呼ばれているかどうかはブレークポイントを関数内に設定してみ。
ブレークポイントで止まる前に落ちるなら、関数への設定パラメータのミスと考えるのが妥当かと。
まあINVALIDPARAMだし恐らくそうなんだろうけれど…
0619589
2005/09/05(月) 08:36:38ZeroMemory を行っていなかったのでやってみました。
また、コールバック関数内にブレークポイントを設定してみましたが、そこは通らず、
// (中略)
// デバイスへのアクションマッピング
hr = m_pDInput->EnumDevicesBySemantics(
NULL, &m_DIActionFormat, EnumDevicesBySemanticsCallback, (LPVOID)this, DIEDBSFL_ATTACHEDONLY);
if (FAILED(hr)) {
/* ※ */
}
※の行に設定してあるブレークポイントでストップしました。
0620デフォルトの名無しさん
2005/09/05(月) 08:47:07とりあえずリファレンスとかサンプル参考にしながら見てこう。
サンプルがあるなら、それと自分のコードの違いを見比べて、
怪しいと思ったところを修正するのが楽かな。
仕事行くのでこの辺で。
0621デフォルトの名無しさん
2005/09/05(月) 13:56:240622デフォルトの名無しさん
2005/09/05(月) 14:16:170623デフォルトの名無しさん
2005/09/05(月) 14:24:42[-1,0,0,0]
[0,1,0,0]
[0,0,1,0]
[0,0,0,1]
最初にこの行列をかける
0624デフォルトの名無しさん
2005/09/05(月) 14:31:29>>m_DIActionFormat.dwGenre = NULL;
NULLはだめみたいよ。他のを適当に代入。
あと、アクションマップは Program Files/Common Files/DirectX に
勝手に設定ファイル作ったりするので、個人的にお勧めできないわ。
0625デフォルトの名無しさん
2005/09/05(月) 14:38:12適当なものが無かったので、サンプルにあった DIVIRTUAL_SPACESIM を入れてみました。
が、ダメでした・・・。
マジですか
アクションマップだめですか。うーん。作り変えてみます。ありがとうございます。
0626デフォルトの名無しさん
2005/09/05(月) 14:58:25例えばDIBUTTON_FIGHTINGH_KICKを使うには
dwGenre = DIVIRTUAL_FIGHTING_HAND2HAND; になってる必要があるみたいね。
結局ややこしいからお勧めでき(ry
0627デフォルトの名無しさん
2005/09/05(月) 17:46:45技術者の多いこちらで再度質問させてください。
なぜDirectXを使用したゲームはCPU使用率が100%(HTでは50%)になるのでしょう?
処理の重さに関係なく必ずCPU使用率が100%になります。
理由がわかるかたいませんでしょうか?
0628デフォルトの名無しさん
2005/09/05(月) 17:58:51PCのスペックが十分でFPSを固定してれば100にはならんし、
キーフレームアニメーション使ってて常時再描写してるんだったら100になるってだけだ。
例えばRigidChipsでもFPS固定して軽いモデル使えば50〜80くらいにはなる。
0629デフォルトの名無しさん
2005/09/05(月) 18:02:330630デフォルトの名無しさん
2005/09/05(月) 18:11:27CPUを100%使ってるからだろ。っていうか質問の前提がおかしい。ウザス
0631デフォルトの名無しさん
2005/09/05(月) 18:18:33CPUが100%になることを確認したソフトのリストと
PCのスペックを詳しく
0632デフォルトの名無しさん
2005/09/05(月) 18:31:13熱心なこった
0633デフォルトの名無しさん
2005/09/05(月) 18:41:59プレゼン資料みただろ?w
0634デフォルトの名無しさん
2005/09/05(月) 18:48:03ま、偏見だけど
0635デフォルトの名無しさん
2005/09/05(月) 20:01:27叩いているとかいう以前に、なぜそうなのか疑問に思っただけです。
具体的なゲームタイトルとしては、RagnarokOnline Lineage2
Pangya ハンゲの3Dビリヤードなどなど
Direct3Dを使用するゲームは全般的にCPU使用率が100%になるようです
これというのはDirectXの仕様なのでしょうか?
それとも各ゲームのプログラム上の都合なのでしょうか?
>CPUを100%使ってるからだろ。っていうか質問の前提がおかしい。ウザス
画面を大幅に書き換えている状態でCPU使用率が100%になることはあり得るとしても
画面にほぼ動きがなく、処理もたいしたことをしていない状態でも
安定して100%状態を維持してます
※質問の要点は、なぜ軽い処理をしているときもCPU使用率が100%なのですか?という点です
わかりにくくてすみません
0636デフォルトの名無しさん
2005/09/05(月) 20:07:10チョソが書いた糞プログラムだけみて「全般的」とか言っちゃうのって
脳みそ腐ってんじゃないの?wwwww
0637デフォルトの名無しさん
2005/09/05(月) 20:11:52お前プログラムしたことないだろ?
メッセージループ回してるだけでも、CPU100%食うんだよ。
0638デフォルトの名無しさん
2005/09/05(月) 20:20:55ちゃんとPresent( NULL, NULL, NULL, NULL )使ってるか?
あとSDKのサンプルも見て見ろ。
俺の環境だとSDKのサンプルを起動して更新をINTERVAL_DEFAULTにするとCPU使用率は100%にならない。
0639デフォルトの名無しさん
2005/09/05(月) 20:21:45食わねえだろボケ
おまえのInternetExplorerはアイドル中にもCPU100%食うのかよ
0640デフォルトの名無しさん
2005/09/05(月) 20:27:32アイドル中はGetMessage()で止まってるからループは回ってないぞ。
逆をいえば、GetMessage()ではなくPeekMessage()で溜まり具合をみつつ
ゲームのメインループを回してるとCPU100%になる。
0641デフォルトの名無しさん
2005/09/05(月) 20:28:15一般アプリはGetMessage関数でSleepされているが、
Direct3D系のアプリはPresentでSleepされている。
しかしドライバによってはPresentがSleepを使わず無限ループの場合があるらしい。
INTERVAL_DEFAULT(っつーかINTERVAL_ONE)でも100%になる原因みたい。
0642デフォルトの名無しさん
2005/09/05(月) 20:44:12>しかしドライバによってはPresentがSleepを使わず無限ループの場合があるらしい。
>INTERVAL_DEFAULT(っつーかINTERVAL_ONE)でも100%になる原因みたい。
ホントにその処理ってドライバ依存なのかぁ?
俺はSDKのサンプル以上のサポートはいらんと勝手に自分に結論付けたからどうでもいいけど。
0643デフォルトの名無しさん
2005/09/05(月) 20:51:140644デフォルトの名無しさん
2005/09/05(月) 21:26:32DirectXを使っているかどうかは全く関係ない。
一般アプリケーションとゲームでは処理の仕方が違うだけ。
一般アプリケーションはユーザの入力に対して何か処理をするのが
中心だから、入力がないときは何もしていない。だからCPU使用率は低い。
ゲームの場合は、何も入力がないときでも常に進行していくのが普通なので、
CPU負荷は常に高め。
それでも大抵のゲームではCPU時間が余るが、余った時間を解放するか
どうかはプログラマーの考え方次第。
ただ、最近はノートPCの人も多いし、デスクトップでも消費電力が無視できなく
なってきたから、ベンチマーク目的以外では解放した方がいいが。
0645デフォルトの名無しさん
2005/09/05(月) 22:19:33CPU解放型のアプリってショボイの多いな。
結局、することなくて解放してるだけでさ。
0646デフォルトの名無しさん
2005/09/05(月) 22:35:55ファルコムなんかは100%だね。
0647デフォルトの名無しさん
2005/09/05(月) 22:45:09アリスソフトも100%だけど動作がいいぞ。
0648デフォルトの名無しさん
2005/09/05(月) 22:55:10うるせーエロゲマニア
0649デフォルトの名無しさん
2005/09/05(月) 23:54:05Sleep使えば基本的にはいけるんだが
Sleepって実際はその時間で戻ってくるって保障されないんだっけ?
マイクロソフトがSetTimerとかSleepをもっとちゃんと作ってくれればなんとかなるのだがな
0650デフォルトの名無しさん
2005/09/06(火) 00:08:140651デフォルトの名無しさん
2005/09/06(火) 00:13:18でもコスト高いから、たまに使う程度にしろとか。どーしろってんだ。
結局timeGetTimeかよ。
0652デフォルトの名無しさん
2005/09/06(火) 00:23:58それ、インテルのデュアルコアプロセッサでのマルチスレッド
の話の奴なら、意味が違うかと…
0653デフォルトの名無しさん
2005/09/06(火) 01:14:300654デフォルトの名無しさん
2005/09/06(火) 04:39:07QueryPerformanceCounter使うと動かないっていう奴まだいるんだよなぁ
0655デフォルトの名無しさん
2005/09/06(火) 05:23:12最近は省電力とかでクロック数が動的に変化するCPU結構あるから
細かくフリーケンシー計らないと使い物にならない。 案外微妙。
0656デフォルトの名無しさん
2005/09/06(火) 05:24:450657デフォルトの名無しさん
2005/09/06(火) 05:52:100658デフォルトの名無しさん
2005/09/06(火) 08:20:16え、マジで?
どういう環境で動かないんだろう。
0659デフォルトの名無しさん
2005/09/06(火) 10:09:43CEDECでって、MSのセッション?
0660デフォルトの名無しさん
2005/09/06(火) 11:39:330661デフォルトの名無しさん
2005/09/06(火) 11:47:05毎回 timeGetTime() でフレームを進めるかどうかをチェックしてる・・・
ダメなのかな?
0662デフォルトの名無しさん
2005/09/06(火) 11:54:310663デフォルトの名無しさん
2005/09/06(火) 11:59:490664デフォルトの名無しさん
2005/09/06(火) 12:01:45ガンガン遅れるんじゃなかったっけか
0665デフォルトの名無しさん
2005/09/06(火) 12:29:07マウスで窓サイズの変更の真っ只中かだと、ぜんぜんやってこん
0666デフォルトの名無しさん
2005/09/06(火) 12:50:10普通に使う分には1msの精度で十分だから、あまり必要ないんじゃない?
時間に厳しい処理なんかは、WindowsXPはリアルタイムOSではない
という理由で実装されてないし。
QueryPerformanceCounterの精度なんて普通はプロファイリングにしか
必要ないよ。fpsの制御に使うのはオーバースペック。
リフレッシュレート75Hzや85Hzのモニタで60fpsの動画を再生したときの
最大の誤差を計算してみれば、1msの精度で十分だと分かるはず。
0667デフォルトの名無しさん
2005/09/06(火) 13:06:430668デフォルトの名無しさん
2005/09/06(火) 14:04:460669デフォルトの名無しさん
2005/09/06(火) 14:37:160670デフォルトの名無しさん
2005/09/06(火) 19:43:17アンチエイリアス機能はDirectXにはないのでしょうか?
0671デフォルトの名無しさん
2005/09/06(火) 19:50:18ある
0672デフォルトの名無しさん
2005/09/06(火) 20:06:12普通はアンチエリアスを無視しますよね。
全ハードで使える保障がないので先輩が怒りますし。
0673670
2005/09/06(火) 20:15:39検索しても答えになるようなことが全く出てこないのでないものだと思っていましたが、
あるのならと思いあれこれ調べてたらやっとたどり着きましたorz
あまり実用的ではないからあえて触れていないのですね。
0674デフォルトの名無しさん
2005/09/06(火) 20:15:47どうすればよいのでしょうか?
0675デフォルトの名無しさん
2005/09/06(火) 20:24:42SetRenderStateで設定する。(たしか)
0676デフォルトの名無しさん
2005/09/06(火) 20:27:05調べても見つけられませんでした。
0677670
2005/09/06(火) 20:29:49MultiSampleTypeはD3DMULTISAMPLE_9_SAMPLESを指定でフルシーンアンチエイリアス
0678デフォルトの名無しさん
2005/09/06(火) 21:00:26>全ハードで使える保障がないので先輩が怒りますし。
普通は使えるのかどうか調べるのだが
その先輩とやらは脳無しだから明日から下っ端扱いで構わない
0679デフォルトの名無しさん
2005/09/06(火) 21:13:26この小学生みたいな台詞もどうかと思うぞ。
0680デフォルトの名無しさん
2005/09/06(火) 21:36:19ショックだと思うが、こころして聞いてくれ
D3DRS_EDGEANTIALIASはもうここにはいないんだ!!!
0681デフォルトの名無しさん
2005/09/06(火) 22:39:00ゲフォ5950Uだから問題は無いはずなんですが(´・ω・`)
0682デフォルトの名無しさん
2005/09/06(火) 22:56:10安心しろ俺の環境でもそうなるからw
0683デフォルトの名無しさん
2005/09/06(火) 22:56:47ちなみにRadeon9600Proね。
0684デフォルトの名無しさん
2005/09/06(火) 22:59:430685デフォルトの名無しさん
2005/09/06(火) 23:06:58いや、確実に効果はある。
たしかに淵は滑らかになってるけど、
ここまで速度を犠牲にしてまで、それにふさわしい効果があるかっていうと、
無いと言いきれる。そんなレベル。
こんなもんのスイッチいれるぐらいなら画面の更新頻度が多い方が絶対にうれしい。
0686デフォルトの名無しさん
2005/09/06(火) 23:13:22×アンチエイリアス×○ とかは何なんだろ。
○アンチエイリアス×○ とかはどうやってるんだろ。
0687デフォルトの名無しさん
2005/09/06(火) 23:14:330688デフォルトの名無しさん
2005/09/06(火) 23:17:36そんなのSetRenderStateに値を設定すればいいだろ!ウンコ!
何が聞きたいのかさっぱりわからないよ!ウンコ!
0689676
2005/09/07(水) 00:01:11float *mat0 = (float*)aMat0;
float *mat1 = (float*)aMat1;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
for(int k=0;k<4;k++){
out[i*4 + j] = mat0[k*4 + j] * mat1[i*4 + k];
}
}
}
こんな感じで頑張ってみました・・・
あってるでしょうか?
0690デフォルトの名無しさん
2005/09/07(水) 00:06:02解像度低くてスムージングかかってたり
CRTじゃあまり感じられないかもね
0691マイク ◆yrBrqfF1Ew
2005/09/07(水) 00:39:16マトリックスの乗算公式をそのままコード化してるだけだろ
0692デフォルトの名無しさん
2005/09/07(水) 00:50:450693デフォルトの名無しさん
2005/09/07(水) 00:57:47いや、それがどうだったけかなぁ・・・と。
なーんか、昔、DirectX5とか6の頃はヘルプにコードが載ってたような気がするんですけど
なーんだっけかなぁ・・・と、まあ、そんなところでした。
ところで・・・
まちがえますた・・・orz
float *out = (float*)aOut;
float *mat0 = (float*)aMat0;
float *mat1 = (float*)aMat1;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
for(int k=0;k<4;k++){
out[i*4 + j] += mat0[k*4 + j] * mat1[i*4 + k];
}
}
}
0694デフォルトの名無しさん
2005/09/07(水) 00:58:27いえ、それを使えない場面にあたっちまいまして・・・
0695デフォルトの名無しさん
2005/09/07(水) 01:18:09DX6のサンプルのd3dutils.cppより:
D3DMATRIX
MatrixMult(const D3DMATRIX & a, const D3DMATRIX & b)
{
D3DMATRIX ret = ZeroMatrix();
for (int i=0; i<4; i++) {
for (int j=0; j<4; j++) {
for (int k=0; k<4; k++) {
ret(i, j) += a(k, j) * b(i, k);
}
}
}
return ret;
} // end MatrixMult
最初に出力行列を初期化しようね。
0696デフォルトの名無しさん
2005/09/07(水) 06:05:12希望する環境はEclipse+CDTですが可能でしょうか?
0697デフォルトの名無しさん
2005/09/07(水) 07:15:13ありがとうございます!
0698デフォルトの名無しさん
2005/09/07(水) 12:03:2212ポリゴンで構成されたメッシュを
900体以上表示させるとFPSの速度が落ちるのは
オレのプログラムが悪いからでしょうか?
0699デフォルトの名無しさん
2005/09/07(水) 12:05:540700デフォルトの名無しさん
2005/09/07(水) 12:07:301回のDrawPrimitiveで1000頂点くらい描画しないと
その性能はでないよ。
0701デフォルトの名無しさん
2005/09/07(水) 12:21:51化ッ
>>700
なるほど そういうことですか。
for文が900回繰り返してるからかな?
0702デフォルトの名無しさん
2005/09/07(水) 12:29:020703デフォルトの名無しさん
2005/09/07(水) 13:22:060704698
2005/09/07(水) 13:37:5725200ポリゴン描画してみたら問題なしでした
が
熱でPCフリーズw
色々と、レス有難うございました。
0705デフォルトの名無しさん
2005/09/07(水) 21:16:111ポリゴンあたりの面積も重要。
0706デフォルトの名無しさん
2005/09/07(水) 21:22:281つ目は四角形(三角2枚)のプリミティブに張るテクスチャを画像データの一部分を切り取っている場合、同一の画像を繰り返し描画することは可能かどうかです。
赤青 これで1枚の画像としたとき、
緑白 赤と青の部分だけ切り取って四角形のプリミティブに複数の縞模様をつける。
1枚の画像を全て使用するならアドレシングモードで設定できますが、DrawIndexedPrimitiveで200枚近く一括描画していますので、それぞれに専用のテクスチャを用意して設定していくのは非常に効率が悪いです。
2つ目はポリゴンに張るテクスチャの作り方です。
地球のテクスチャ1つでも極の部分は赤道直下部分より伸びていて、球体に貼り付けると奇麗な地球に見えます。
こういうテクスチャを作るには、
適当にテクスチャを描く→ポリゴンに貼り付ける←<繰り返し>→テクスチャの描き直し
と言う風にしているのでしょうか。
それともポリゴンに直接模様等を描いてそれを画像データにするようなソフトでもあるのですか?
(長々と読みにくい文章ですみません)
0707デフォルトの名無しさん
2005/09/07(水) 21:43:371.
その三角二枚のポリゴン頂点のUV値に、描画したいUV値を割り当てる方法でダメ?
仮に
赤青
緑白
で、赤と青を取り出したいなら、左上の頂点から時計回りにUV値(uv(n))は以下のようになる。
uv0 = {0.0f, 0.0f};
uv1 = {0.5f, 0.0f};
uv2 = {0.5f, 0.5f};
uv3 = {0.0f, 0.5f};
これを描画したい三角二枚のポリゴンの四隅の頂点に対して行えば良い。
いちいちuv値を計算するのがメンドクサイなら、あらかじめ表示したいテクスチャの区画を計算した
テーブルから値を引っ張ってくる。
2.
UVマッピング 球面
で検索をかけるといいかも。
0708デフォルトの名無しさん
2005/09/07(水) 21:58:21う〜ん…… QueryPerformanceCounter を使うしかないのかなぁ……
0709デフォルトの名無しさん
2005/09/07(水) 22:00:410710デフォルトの名無しさん
2005/09/07(水) 22:03:210711デフォルトの名無しさん
2005/09/07(水) 22:07:580712706
2005/09/07(水) 22:13:35これだと赤しか表示されないような・・。
赤青
緑白 から赤と青を取り出し
赤青赤青赤青
赤青赤青赤青
赤青赤青赤青
赤青赤青赤青 と表現したいのです。
赤青 のみの画像であれば、同じく
uv0 = {0.0f, 0.0f};
uv1 = {3.0f, 0.0f}; (V値は何でも問題ないですね)
uv2 = {3.0f, 4.0f}; にし、D3DTADDRESS_WARP等を
uv3 = {0.0f, 4.0f}; 指定すれば複数の縞模様ができますが。
2番については検索の仕方が悪かったのか球体マッピングのやり方ばっかり出てきます。
実際球体ではなく白黒パトカーのテクスチャを作りたいのですが、
ボンネットの「く」の字の部分やドアの線が合ったテクスチャが作れなくて困っています。
0713デフォルトの名無しさん
2005/09/07(水) 22:26:19uv1 = {1.0f〜, 0.0f};
uv2 = {0.0f, 0.5f};
uv3 = {1.0f〜, 0.5f};
コレじゃだめなの?
0714707
2005/09/07(水) 22:27:52すまんかった・・・OTL
>赤青 のみ
赤青で描画した四角形ポリゴンを目的の大きさになるまで複数並べるんじゃだめなんすか?
0715706
2005/09/07(水) 22:41:58同一の色なら問題ないのですが、模様が描かれているので縦長に表示されてしまいます。
>>714
単純に縦横4倍ずつにすると16倍のプリミティブを描画しないといけないことになり、
試した結果かなり重くなりました。
1枚1枚テクスチャをセットしてラップテクスチャで描画をしたほうが若干ではありますが軽かったです。
0716デフォルトの名無しさん
2005/09/07(水) 23:01:01例題は何とか可能か知れないが
汎用ではないので、出来ないとするべきだろう。
0717デフォルトの名無しさん
2005/09/07(水) 23:05:25一括描画って、
for(******) {
dev->DrawIndexedPrimitiveUP(****);
}
って感じ?
これだと激しく遅い。
0719デフォルトの名無しさん
2005/09/07(水) 23:10:200720706
2005/09/07(水) 23:12:42そうですか(´・ω・`)
>>717
dev->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, (表示したい四角形の数)*4, 0, (表示したい四角形の数)*2);
だけです。
0721706
2005/09/07(水) 23:44:471つ目の質問のほうは出来ないという結論で閉めておきます。
残る2つ目の質問なのですが皆さんはどういう風にテクスチャを作っているのでしょうか。
非常に単純なポリゴン+テクスチャを作ってみましたが、
ttp://vipquality.orz.hm/imageup/file/3946.jpg
見るも無残な姿に・・。
パトカーのように白黒ハッキリしているなら色に合わせて面を作っていけば出来なくもないですが、
ドアの枠線(境界線)などのように細かな模様を付けたい位置に調整するのが非常に困難です。
地球にしろ車にしろ人の顔にしろ1枚のテクスチャ画像に収まっていますが、
こういうのを作るにはどうすればいいのでしょうか?
0722デフォルトの名無しさん
2005/09/08(木) 00:49:02もしかして、テクスチャってどうやって作るの?って話してる?
ならこの本がオススメ。
http://www.amazon.co.jp/exec/obidos/ASIN/4881663488/
まあ、俺等の範囲じゃないけど。
知っておかないとカッコつかないしね。と思うなら買い。
まあ、掻い摘んでいうと、3Dモデル(左右対称だとする)を作ったら、
真正面から見た図、真横から見た図をウィンドウズのプリントスクリーンキーでとる。
で、とった図に色を塗ってそれをテクスチャにする。
で、モデリングソフトのUVマップの設定に平行投影っていう設定あるべ?
それで色をぬったテクスチャを真正面、真横からそれぞれ平行投影で貼り付ける。
って作業工程らしい・・・。
え?もしかして、そんなことが知りたいんじゃない?(笑)
0723デフォルトの名無しさん
2005/09/08(木) 01:35:550725デフォルトの名無しさん
2005/09/08(木) 05:33:353Dモデルに直接描画できるソフトもあることにはある。
0726デフォルトの名無しさん
2005/09/08(木) 05:43:300727デフォルトの名無しさん
2005/09/08(木) 08:19:41GeForceの3や4でハードウェアアクセラレーション効きますか?
0728デフォルトの名無しさん
2005/09/08(木) 12:52:32vs_1_1以下ならたぶん
0729デフォルトの名無しさん
2005/09/08(木) 13:36:29カメラ位置(Eye)に RotationX すると、回る事には回るのですが、ただオブジェクトが
回転しているようにしか見えませんでした。
そこで、注視点に同じように RotationX を掛けてみると望んだ結果に近い動きをするのですが、
うまく周りを回ってくれません。
どのような順序で演算すると、カメラがオブジェクトの周りをぐーるぐる回るのが作れますか?
0730デフォルトの名無しさん
2005/09/08(木) 13:39:26相対的な運動って意味わかるか?
0731デフォルトの名無しさん
2005/09/08(木) 13:40:480732デフォルトの名無しさん
2005/09/08(木) 14:03:01>ただオブジェクトが回転しているようにしか見えません
これ以外になにがしたい?
0733デフォルトの名無しさん
2005/09/08(木) 14:18:320734デフォルトの名無しさん
2005/09/08(木) 14:31:250735デフォルトの名無しさん
2005/09/08(木) 14:54:58そのまま80mくらい投げそうだ
0736デフォルトの名無しさん
2005/09/08(木) 15:09:13>>729 vEye = vAt + α, αは自力で。
0737デフォルトの名無しさん
2005/09/08(木) 15:27:04吹いたw
0738デフォルトの名無しさん
2005/09/08(木) 15:42:530739デフォルトの名無しさん
2005/09/08(木) 15:55:06DirectSound を利用して、WAVE ファイルのストリーミング再生で BGM を流そうとしています。
方法と、スレッドを作成し、バッファの半分が演奏されたら Notify で通知し、もう半分を埋めるのを繰り返す、一般的な方法です。
が、プロジェクトの仕様上、BGM 切り替え時の遅延をできるだけ少なくしたいのです。
そこで、演奏する可能性のある BGM の数だけセカンダリバッファを作成し、全 BGM に対して、
WAVE をオープンすると同時にあらかじめ、ストリームバッファの半分だけバッファに BGM をロードし、
イベント通知用のスレッドを作成しようとしています。
が、こうすると、BGM の数だけのスレッドが待ち状態になり、効率が悪く思えます。
BGM の演奏開始時に、その BGM 用のスレッドを作成することも考えましたが、
スレッドの生成にどれだけ時間がかかるかが分かりません。
こういうときの定石みたいなものはありますでしょうか?
ゲームなどではよく出くわしそうな状況なので、「普通はこうする」みたいなのがあればと思って質問しました。
よろしくお願いします。
0740デフォルトの名無しさん
2005/09/08(木) 16:32:481BGMに1スレッドにするから何本もスレッド作ることになるんでは。
俺は1スレッドで複数BGMを再生しているよ
0741デフォルトの名無しさん
2005/09/08(木) 16:36:02ああ、全くその通りでした・・・。ありがとうございます。
0742デフォルトの名無しさん
2005/09/08(木) 17:53:38何度も申し訳ありません。
DirectSound を用いたストリーミング再生で BGM を演奏しているとき、
他の音を鳴らすと、BGM が飛ぶというバグが発生しています。
しばらくしたら元に戻るため、(1秒未満の間だけ、ずれた演奏ポイントで BGM が演奏される)
間違ったイベントが通知されているのではないかと考えていました。
調べてみたところ、同じ質問が各所であり、
DirectSound の有名なバグだという記述まで見つけたのですが、(真偽は分かりません)
詳細が調べられず、解決方法が分かりません。
質問が曖昧で申し訳ありませんが、もし本当に有名だとしたら、何かご存知の方、お願いします。
0743デフォルトの名無しさん
2005/09/08(木) 18:14:19すんごく原始的だけど、再生位置を常時チェックして、今どこを再生しているのか見る。
前回の再生ポイントから現在の再生ポイントまでを新しいバッファで埋める。
まあストリーミング再生なんて再生できれば十分なことだし、こんなんでいいかと
0744デフォルトの名無しさん
2005/09/08(木) 18:17:350745デフォルトの名無しさん
2005/09/08(木) 18:52:10前に自分で使ったとき、オンボードのサウンドチップで
バッファをハードの方に取るとおかしくなることがあったよ。
0746デフォルトの名無しさん
2005/09/08(木) 18:59:59試しに Play() に DSBPLAY_LOCSOFTWARE フラグを与え、
全てソフトウェアで再生してみたところ、通常に再生されました・・・。
何でだよおおおお
PCに高スペック要求してしまうかもしれないので、起動時にどちらで再生するかを選ばせるようにしてみます。
ありがとうございました。
>>744
AudioVideoPlayback についても調べてみます。ありがとうございました。
0747742
2005/09/08(木) 19:00:380748デフォルトの名無しさん
2005/09/09(金) 08:03:16今時ハードウェアバッファ使う奴なんていないぞ。
余計にバス圧迫するからDX6の時点で打ち切りだ。
0749デフォルトの名無しさん
2005/09/09(金) 16:38:25注視点に RotationX を掛けたあと、オブジェクトをカメラ位置(Eye)から移動させて、
そしてから RotationX すると望んだ結果になりました。
てっきりオブジェクトを置いてからカメラで撮るような感じかと思ったんですが、
まずはカメラありき、、、なんですね。
そこで新たな疑問です!!!
一周ぐるりと回転させてるはずなのに、二個のオブジェクトがあるとなぜか二周?
ぐらい回ってしまいます。どちらかの RotationX を半分にするのかと思うんですが、
これはオブジェクトの個数が影響するんでしょうか?
0750デフォルトの名無しさん
2005/09/09(金) 16:44:40とりあえず君は基礎からやりなおしたほうがいいとおもう
0751デフォルトの名無しさん
2005/09/09(金) 17:04:04まずは君がテレビのカメラマンになったつもりで
固定されたティーポットの全方位を視聴者に見せるには、どうすればいいのか考えろ。
カメラマンがオブジェクトの周囲を回転するだろ? だから、
Camera.Pos = Object.Pos + Radius*(cosθ,sinθ)
以上。
0752デフォルトの名無しさん
2005/09/09(金) 17:56:42合わせる行列だから、カメラ行列用の関数を利用しないで生の行列を
使うと分かりにくいんだけどな。
0753デフォルトの名無しさん
2005/09/09(金) 20:05:180754デフォルトの名無しさん
2005/09/09(金) 22:26:590755マイク ◆yrBrqfF1Ew
2005/09/09(金) 23:43:310756デフォルトの名無しさん
2005/09/09(金) 23:47:16それともやっぱりケースバイケース?
0757デフォルトの名無しさん
2005/09/10(土) 02:36:090758デフォルトの名無しさん
2005/09/10(土) 03:48:37この世を終わらそうと思ったら他人を皆殺しにするか、自分が死ぬかどっちがいいの?
0759デフォルトの名無しさん
2005/09/10(土) 04:04:250760デフォルトの名無しさん
2005/09/10(土) 04:24:030761デフォルトの名無しさん
2005/09/10(土) 04:31:220762デフォルトの名無しさん
2005/09/10(土) 05:06:19教えてください!!
0763デフォルトの名無しさん
2005/09/10(土) 12:27:54また、DirectX8や7を使った時もd3dx9_27.dllは必要になるのでしょうか?
0764デフォルトの名無しさん
2005/09/10(土) 14:05:16……あと、dx8 なら d3dx9_*.dll は必要無いとおもう。多分
ところで「Z 値が同じポリゴン2枚を描画すると後から描いたのが必ず手前に来る」は正しい?
0765デフォルトの名無しさん
2005/09/10(土) 14:21:33頂点座標がまったく同じなら、D3DRS_ZFUNCの設定による。
デフォルトはD3DCMP_LESSEQUAL。
0766デフォルトの名無しさん
2005/09/10(土) 15:28:330767デフォルトの名無しさん
2005/09/10(土) 15:31:02ヘルプくらい読んだらどうだ?
0768デフォルトの名無しさん
2005/09/10(土) 15:36:20だよね。うん、対応してる筈。
……ってことはリソースの組み込み方が変なのか orz
0769名無しさん@そうだ選挙に行こう
2005/09/10(土) 17:27:50一度自分でバッファに読み込んでInMemoryとか?
むしろ、たくさんファイルがあるならリソースじゃなくデータ用フォルダに突っ込むか
データをまとめて1ファイルに突っ込んでおくのもいいんじゃ。
0770名無しさん@そうだ選挙に行こう
2005/09/10(土) 23:37:42質問なんですが、ウィンドウを動かしたり最小化して戻したりすると
画面が一瞬ノイズだらけになったり、直前に動かしていた別のDirectXプログラム
(ゲームなど)の画面が一瞬映ったりするんですが、原因は何なんでしょうか?
デバイスロストって奴なのかな? どう修正すれば分からず困ってます……
0771名無しさん@そうだ選挙に行こう
2005/09/10(土) 23:58:11どっちも一緒
0772名無しさん@そうだ選挙に行こう
2005/09/11(日) 16:33:33gshowという動画再生のフリーソフトがあるのですが・・・このソフトを改良しようと思って日々いろいろ勉強しています。
このgshowには、ソースがついているので、改良前に自分でgshowをVisual C++6.0でビルドしようにもサッパリできないのです。
プログラミングに詳しい知人に聞いたのですが、わからず八方塞状態です。ちなみに、gshowの作者とは連絡がとれないのです。
このソースとDirectX8.0以降のSDKとWindows Media Format SDKがあれば、ビルドできるそうです。
今現在、DirectX9(october2004)SDKを導入し、コンパイルしたら下記のようにエラーがでました。
自分なりに解決方法をしらべてはいますが、1週間以上解決法がみつからないままです。
Windows Media Format 9.5SDKをインストールしてはあるのですが・・・きちんと導入できているかわからないです。
このソフトのソースをなんとかビルドできるように、ご指導よろしくお願いいたします。
/////////////// /////////////// /////////////// ///////////////
コンパイル中...
StdAfx.cpp
c:\program files\microsoft directx 9.0 sdk (october 2004)\include\strmif.h(1024) : error C2146: 構文エラー : ';' が、識別子 'HSEMAPHORE' の前に必要です。
c:\program files\microsoft directx 9.0 sdk (october 2004)\include\strmif.h(1024) : fatal error C1004: 予期せぬ EOF が検出されました。
cl.exe の実行エラー
gshow.exe - エラー 2、警告 0
/////////////// /////////////// /////////////// ///////////////
↓gshowの配布サイト
http://www.vector.co.jp/soft/win95/art/se296143.html?y
0773名無しさん@そうだ選挙に行こう
2005/09/11(日) 16:55:54警告は大量にでるけど一応最後まで終わるよ。
'HSEMAPHORE' が定義されてる箇所を調べてみた?
あとそれのtypedef元のDWORD_PTRはどう?
それの_WIN64とかのifndefが怪しいんじゃないかな。
0774名無しさん@そうだ選挙に行こう
2005/09/11(日) 17:09:590775名無しさん@そうだ選挙に行こう
2005/09/11(日) 17:27:44773さん
私は、超初心者なので・・・ソースの中身をみても意味を理解できていません。
'HSEMAPHORE' が定義されてる箇所を調べたり・・・というのはできないです。
すいません。
普通に、VC++をインストールして、DirectX9 SDKとWindows Media Format 9.5SDK
インストールするだけでは、ビルドできないということでしょうか?
774さん
何かの本で、最近のDirect X9は、Direct Showが導入されていない
という記事を読み、DirectX9のoctober2004を導入してるわけです。
一方で、Direct ShowはPlatform SDKに含まれているようになったときいたのでが・・・
ですから、古いDirect X9 SDKを入れるかわりにPlatform SDKはインストールしていないです。
0776名無しさん@そうだ選挙に行こう
2005/09/11(日) 17:30:45ロスト前の内容は保証されない
ウィンドウを戻す前に適切に処理汁
0777名無しさん@そうだ選挙に行こう
2005/09/11(日) 17:36:20改良しようとしているんじゃなかったのか?
定義を調べるぐらいできるだろ
0778名無しさん@そうだ選挙に行こう
2005/09/11(日) 18:01:29777さん
HSEMAPHOREを文字検索するぐらいしかできないです。
何分、自分自身プログラミングのことがわかってないですから。
すいませんが、何をしたらいいのかわからないです。
改良といっても、gshowは重複起動できないので、「重複起動のチェックを外す」ことだけを目標としています。
これについては、大体の見当がついてます。
付け加えですが・・・一番最初に、DirectX9SDK(augsut2005)とPlatform SDKをいれてみたのですが、
やはり上手くいきませんでした。
0779名無しさん@そうだ選挙に行こう
2005/09/11(日) 18:24:150780名無しさん@そうだ選挙に行こう
2005/09/11(日) 18:29:160781デフォルトの名無しさん
2005/09/11(日) 19:16:27しかも最近売ってない6.0
0782名無しさん@そうだ選挙に行こう
2005/09/11(日) 19:36:59スレ違いだ。
>>1 読め
0783名無しさん@そうだ選挙に行こう
2005/09/11(日) 20:00:31スレ違いも甚だしい
↓いけ
ttp://pc8.2ch.net/test/read.cgi/tech/1124511889/
0784マイク ◆yrBrqfF1Ew
2005/09/11(日) 23:06:49警察の予感♪
0785デフォルトの名無しさん
2005/09/12(月) 02:55:260786デフォルトの名無しさん
2005/09/12(月) 18:08:25プログラミングは大学の授業関連で使った程度で久しぶりに使ってるわけです。
なんで「警察の予感♪」なのかわかりませんが、きちんとその当時に、アカデミックパックですが、
家電店にて購入したものなので違法性など微塵もありません。
VC++.NETで試すのも一つの方法かもしれませんが・・・gshow事態は、VC++6.0で作っているので、
VC++6.0を使うことはとんでもない間違いではないはず。
0787デフォルトの名無しさん
2005/09/12(月) 18:21:23DirectX SDKのOctober 2004はPlatform SDKを必要とする。
最新のPlatform SDKはVC++6ではうごかないので、
Platform SDKのFebruary 2003を導入する必要がある。
0788デフォルトの名無しさん
2005/09/12(月) 18:37:01俺には既にあなたが学生ではないような書き方に思えるのでが
>>家電店にて購入したものなので違法性など微塵もありません。
アカデミックパックは学生の間だけですよ?
0789デフォルトの名無しさん
2005/09/12(月) 18:43:430790デフォルトの名無しさん
2005/09/12(月) 18:45:52ホーミングレーザーがうまい具合に作れないっす。
バーチャロンのサイファーがうつ4つでるレーザーみたいに作りたいんだけど
誰かアドバイス求む。
0791デフォルトの名無しさん
2005/09/12(月) 18:53:38>>789
MSの場合、卒業後もそのまま使い続けられるはずだけど。
0792デフォルトの名無しさん
2005/09/12(月) 18:54:56何がうまくいかないのか詳しく
0793デフォルトの名無しさん
2005/09/12(月) 18:55:13教職員は?
0794デフォルトの名無しさん
2005/09/12(月) 19:12:02バーチャ論は知らんが
明後日の方向に撃って
高次曲線で補間じゃ駄目なのか?
0795デフォルトの名無しさん
2005/09/12(月) 19:13:53バーチャロンなんて知らないから画像とってこい画像。
そしたらやり方教えてやる。
0796デフォルトの名無しさん
2005/09/12(月) 19:31:38オペムー止まりの俺はVIPER�Uしか知らん。
0797デフォルトの名無しさん
2005/09/12(月) 20:47:26VisualC++ 6.0
DirectX 9.0 SDK October2004
Windows Server 2003 SP1 SDK
Windows Media Format 9.5 SDK
(OS:WindowsXP)
wmstub.lib 非リンク
hr = WMCreateCertificate(&m_pCert); -> hr = E_FAIL;
でビルドできたわよ。
0798デフォルトの名無しさん
2005/09/12(月) 20:55:55どうしたらよいでしょうか?
他のプロセス(ゲーム)の画面上にFPSをポリゴンで作った数字で表示させようと
しているのですが、一応表示はできたもののFPSのポリゴンの色が変わったり
消えたりします。
D3D9でお願いします。
0799デフォルトの名無しさん
2005/09/12(月) 21:10:051、エンダ〜♪
2、そういえばender's gameの映画化ってどうなった?
0800798
2005/09/12(月) 21:42:450801772
2005/09/12(月) 23:17:28いろいろアドバイスありがとうございます。「windows media format 9.5 SDK」と「Platform SDK」のIncludeとlibraryのリンクを再度見直して、リンクをやり直してみたら、772よりも進みました。しかし・・・・まだ完全にビルドできないです。
hr = WMCreateCertificate(&m_pCert); -> hr = E_FAIL; を追加しましたが・・・・
//////////////////////////////////////////////////////
コンパイル中...
DsControl.cpp
C:\Documents and Settings\take\デスクトップ\gshow100\src\DsControl.cpp(105) : error C2143: 構文エラー : ';' が '->' の前に必要です。
gshow.cpp
コードを生成中...
cl.exe の実行エラー
gshow.exe - エラー 1、警告 0
///////////////////////////////////////////////////////
とエラーが出てしまいます。
ちなみに hr = WMCreateCertificate(&m_pCert); -> hr = E_FAIL;の -> hr = E_FAIL;を追加しない場合は、
/////////////////////////////////////////////////////////
リンク中...
LINK : fatal error LNK1104: ファイル "wmstub.lib" を開けません。
link.exe の実行エラー
gshow.exe - エラー 1、警告 0
////////////////////////////////////////////////////
と出てしまいます。とりあえずここまで進みました。なにか気がついた点がありましたら、ご指導をお願いいたします。私事ですが、明日は仕事で当直なので水曜日以降に、書き込みにたいする返事をいたします。
0802デフォルトの名無しさん
2005/09/12(月) 23:23:22基礎を知ってないと幾らソース眺めても何も出ないよ・・
0803デフォルトの名無しさん
2005/09/12(月) 23:28:590804772
2005/09/12(月) 23:36:45WMCreateCertificate(&m_pCert)をE_FAILに代えるってことなのかな?
E_FAILに代えてみても・・・
/////////////////////////////////////////////////////////
リンク中...
LINK : fatal error LNK1104: ファイル "wmstub.lib" を開けません。
link.exe の実行エラー
gshow.exe - エラー 1、警告 0
////////////////////////////////////////////////////
のままです。
確かに、私はプログラミングの知識はほとんどないですが、どうしてもこのフリーソフトを改良(重複起動のチェックをはずす)ことをしなければならないので
どうが見捨てずにご指導ください。よろしくお願いいたします。
0805デフォルトの名無しさん
2005/09/12(月) 23:37:36wmstub.lib は最新のSDKでは必要ないみたいだから
メニューの[プロジェクト]-[設定]-[リンク]のライブラリ欄から
wmstub.lib を削除すればいいわ…
0806デフォルトの名無しさん
2005/09/12(月) 23:40:240807デフォルトの名無しさん
2005/09/12(月) 23:44:53全部他人任せかよ。ちょっとは努力しろや。
0808デフォルトの名無しさん
2005/09/12(月) 23:57:31上司かなんかに言われてそういうソフトが必要になったダケ
とかじゃねーのかな。
プログラミングは大学でかじったことあります、って言ったツケが回ってきたとかナ。
0809デフォルトの名無しさん
2005/09/13(火) 00:06:07どうすれば直りますか?
0810デフォルトの名無しさん
2005/09/13(火) 00:22:23カーソルを一度ウインドウの外に移動させれば直るよ。試してみ?
0811デフォルトの名無しさん
2005/09/13(火) 00:27:16直りませんでした
どんな原因が考えられますか?
0812デフォルトの名無しさん
2005/09/13(火) 00:30:51??????????????
0813デフォルトの名無しさん
2005/09/13(火) 00:33:310814デフォルトの名無しさん
2005/09/13(火) 00:34:050815デフォルトの名無しさん
2005/09/13(火) 00:45:59ソースのどこかを2行コメントアウトすれば目標が達成されるみたいよ。
これは自力で見つけて欲しいわね。
0816デフォルトの名無しさん
2005/09/13(火) 00:55:50::LoadCursor(NULL, IDC_ARROW);
0817デフォルトの名無しさん
2005/09/13(火) 01:15:48うまくいきました
ありがとうございます
0818デフォルトの名無しさん
2005/09/13(火) 21:09:23ていうかどこで質問すれば良いのかよくわかんないからとりあえずここで質問してみる。
0819デフォルトの名無しさん
2005/09/13(火) 21:39:26ttp://www.amazon.co.jp/exec/obidos/ASIN/4894712601/qid=1126614569/sr=1-4/ref=sr_1_8_4/249-9302812-8897111
参考書としてこれを注文しようと思っているのですが、
持ってる方などいらっしゃれば、参考までにご感想をお聞きしたいです。
0820デフォルトの名無しさん
2005/09/13(火) 21:46:400821デフォルトの名無しさん
2005/09/13(火) 21:48:370822デフォルトの名無しさん
2005/09/13(火) 21:51:17入門向けの本
FPS制御みたいなゲ製作板でFAQになりそうな事が書いてある
もし工学社みたいなリファレンス風が好みなら、その正反対なのでおすすめできない
0823デフォルトの名無しさん
2005/09/13(火) 21:51:480824デフォルトの名無しさん
2005/09/13(火) 22:09:490825デフォルトの名無しさん
2005/09/13(火) 22:31:09どっか
0826デフォルトの名無しさん
2005/09/13(火) 22:41:45DXSetup.exeみつけたらSDKのバージョン教えてくれ
ヘルプには入ってるって書いてるのに無い
October 2004です
0827デフォルトの名無しさん
2005/09/13(火) 22:52:56Redist\DirectX9フォルダに入ってる。(October 2004)
0828デフォルトの名無しさん
2005/09/13(火) 22:56:06間違えて(December 2004)入れてました
おさがわせして本当にすみません
特に助言いただいた>>827さんにはご迷惑をかけました
今からDirectXと性根を入れなおしてきます
ありがとうございます
0829デフォルトの名無しさん
2005/09/13(火) 23:38:38AVIDに質問しろよ。
0830デフォルトの名無しさん
2005/09/13(火) 23:51:02フォーマット公開されてんじゃん。
その前に君はXファイルのスキンアニメーションはできるレベルなの?
0831デフォルトの名無しさん
2005/09/14(水) 03:53:08DirectPlay8Peer についてです。
IDirectPlay8Peer::Host() を実行したところ、ウィンドウに制御が戻ってくるのにかなりの時間がかかりました(2秒ほど)。
例えば IDirectPlay8Peer::Connect() では、DPNCONNECT_SYNC を指定しないことで
処理を非同期にできますが、Host() ではこれを行う方法はないでしょうか。
スレッドを作成して並列処理を行うしかないでしょうか?
また、Host() が実行されると、DirectPlay8Peer で指定したコールバック関数に
DPN_MSGID_CREATE_PLAYER が届きました。
特に問題ないのですが、ホスト自体がセッションに参加したときにこのメッセージが届くのに不自然を覚え、
MSDN を見ても、このメッセージが送信されるという記述がありませんでした。
これはこういう仕様なのでしょうか。
以上2点ですが、よろしくお願いします。
0832デフォルトの名無しさん
2005/09/14(水) 04:07:11Hostは起動時に時間がかかる仕様。
MSのソフトのAoKとかもバッチリ固まってくれるよ。
AoKはConnectすらSYNCでやってるっぽい。
DPN_MSGID_CREATE_PLAYERがホスト生成時にも生成されるのは非常に便利。
コールバック引数に渡される構造体のpvPlayerContextの初期化とかをここで行うとよい。
ホストプレイヤーの場合はHost()に渡すときにpvPlayerContextを初期化できちゃうけど、
ユーザーコンテキスト側からDPNIDの参照設定のタイミングとしてはここが最高かと
0833831
2005/09/14(水) 04:17:49時間がかかるのは仕様ですか・・・。まあ大きな問題はないので、これについてはあきらめます。
メッセージについても理解しました。詳しい説明ありがとうございました!
0834デフォルトの名無しさん
2005/09/14(水) 08:38:28すでに開発ストップした既存のラッパーライブラリーを少しいじって
俺のものにしちゃっても問題ないよね?
C++とDX9SDKで動くやつにしようかと思ってる
0835デフォルトの名無しさん
2005/09/14(水) 09:18:530836デフォルトの名無しさん
2005/09/14(水) 10:03:08つーかそんなんで卒研になるのかよ
0837デフォルトの名無しさん
2005/09/14(水) 10:36:280838デフォルトの名無しさん
2005/09/14(水) 12:50:23友人の卒研がプログラムでOKだったのでじゃあ俺も同じにしようかと
0839デフォルトの名無しさん
2005/09/14(水) 12:57:310840デフォルトの名無しさん
2005/09/14(水) 12:58:48おそらく前のバージョンに入っているのでしょうが、古いバージョンをインストールしてなにか問題は発生しますか?
0841デフォルトの名無しさん
2005/09/14(水) 13:01:281: ウィンドウを非表示にする
2: Device をリセットする
3: ウィンドウのスタイルを変更して表示する
……で合ってますか?
今は上手く動いてるけど、いつ動かなくなるかと思うと心配で心配で。
0842デフォルトの名無しさん
2005/09/14(水) 15:29:02かなり初歩的でお恥ずかしい質問なのですが・・・。
DirectPlay8Peer を使っています。
DPN_PLAYER_INFO 構造体のメンバに、pwszName というのがあり、型は PWSTR 型です。
サンプルでは、pwszName = L"hogehoge" というように、L という・・・
演算子?か何かよく分からないものを用いて文字列の代入を行っています。
この L は何者なんでしょうか。
また、char[] 型に格納されている文字列をこの pwszName に代入するのはどうすればいでしょうか。
よろしくお願いします。
0843デフォルトの名無しさん
2005/09/14(水) 15:35:11UNICODE文字列(2バイト、wchar_t形の文字列)をL"..."
で表す。
DirectPlayは基本的にUNICODEを使うのでL"hogehoge"を代入する。
0844デフォルトの名無しさん
2005/09/14(水) 15:39:01mbtowcだったかその辺の関数を使うんだったかな。
俺はもうめんどくさくなってデフォでUNICODE使うプログラムを作ることにしたよw
そのほうがフォントとか自力描画するとき便利なんだわ
0846デフォルトの名無しさん
2005/09/14(水) 16:24:030847デフォルトの名無しさん
2005/09/14(水) 17:01:50[Sx,Sy,Sz] x [Py] = [Ry] x -1
[Tx,Ty,Tz] [Pz] [Rz]
R : 転置View行列の1行目
S : 転置View行列の2行目
T : 転置View行列の3行目
P : カメラ位置
0848デフォルトの名無しさん
2005/09/14(水) 17:03:41[Rx,Ry,Rz] [Px] [Rw]
[Sx,Sy,Sz] x [Py] = [Sw] x -1
[Tx,Ty,Tz] [Pz] [Tw]
0849デフォルトの名無しさん
2005/09/14(水) 17:26:560850デフォルトの名無しさん
2005/09/14(水) 17:49:54カメラ位置をビュー行列で変換したら原点に来るんだから、その逆を考えてみましょう。
0851デフォルトの名無しさん
2005/09/14(水) 17:54:41DirectPlayPeer8 に関してですが、
自分自信の DPNID を取得するにはどうすればいいでしょうか。
ホストがセッションを構築したとき、ホスト自体にも DPN_MSGID_CREATE_PLAYER が届くため、
セッションに参加したのが自分なのか他人なのかを調べたいのです。
現在は DPN_PLAYER_INFO 構造体の pwszName で比較を行っていますが、
これだとたまたま名前がかぶったときに衝突してしまいます。
よろしくお願いします。
0852デフォルトの名無しさん
2005/09/14(水) 17:58:140853851
2005/09/14(水) 18:02:420854851
2005/09/14(水) 18:07:52DPN_MSGID_CREATE_PLAYER が届いたときの処理ではじめて(自分のも含め)DPNID を取得するのですか?
では、セッションに参加したのが自分かどうかを判定するには、IP などの情報から判断するのが適切なのでしょうか。
0855851
2005/09/14(水) 18:13:21自己解決しましたorz お騒がせしました・・・。
0856デフォルトの名無しさん
2005/09/14(水) 18:13:25君さ、次々質問してるけど
その件について、中国の了解を取ったのですか? 取ってないでしょ?
アジアの人々はみんな怒ってますよ!
0857デフォルトの名無しさん
2005/09/14(水) 18:25:21それに気づかないうちは単にめんどくさいだけにしか見えないんだよなあ…
0858デフォルトの名無しさん
2005/09/14(水) 20:42:11timeGetTime()の精度が違っちゃうんですけど、どうしたら良いんですか?
timeEndPeriod(1);//・・・1
timeBeginPeriod(1);
座標 += ミリ秒単位の移動量 * (timeGetTime() - 前のフレームの時間);
前のフレームの時間 = timeGetTime();
timeEndPeriod(1);//・・・2
endPeriodの位置変えてみると
片方の動作がちょっと変わるんだけど、
どうしてだろう…。
グラフィックボード関係あるかな・・・?
0859デフォルトの名無しさん
2005/09/14(水) 21:43:42始めのtimeGetTimeと次のtimeGetTimeの間にタスク切り替えが
発生したら平気で10ms単位でずれていきそう
現在時間 = timeGetTime();
座標 += ミリ秒単位の移動量 * (現在時間 - 前のフレームの時間);
前のフレームの時間 = 現在時間;
0860デフォルトの名無しさん
2005/09/14(水) 22:11:320861デフォルトの名無しさん
2005/09/14(水) 22:29:27ありがとうございます。
とりあえずそうしてみます。
0862772
2005/09/14(水) 22:31:03まだ、うまく行かないですが・・・原因を調査中です。アドバイスありがとうございました。
今回の件をきっかけに、もっとプログラミング勉強しようと思います。
ありがとうございました。
--------------------構成: gshow - Win32 Debug--------------------
リンク中...
uuid.lib(oaidl_i.obj) : fatal error LNK1103: デバッグ情報が壊れています; モジュールを再コンパイルしてください
link.exe の実行エラー
gshow.exe - エラー 1、警告 0
0863デフォルトの名無しさん
2005/09/14(水) 22:42:06VC6でPlatformSDKのライブラリをリンクするとうまくいかないから、
ライブラリディレクトリ欄から削除(それか下の方に移動)するといいわよ。
0864772
2005/09/14(水) 22:47:12できました!!ありがとうございました!
これから改良に取り組んで行こうとおもいます。
本当にありがとうございました。
0865772
2005/09/14(水) 23:06:20改良も、見当をつけていたところを少し修正したら成功しました。
本当にありがとうございました。
ここの皆様のご指摘通り、まだまだ勉強が足らないのは確かなのでこれからじっくり勉強していこうと思います。
ありがとうございました。
0866デフォルトの名無しさん
2005/09/15(木) 00:01:20・・・気がする。
0867デフォルトの名無しさん
2005/09/15(木) 14:11:040868デフォルトの名無しさん
2005/09/15(木) 14:53:42いろいろいじって俺のものにしちゃうことにした
調べたけどベクターとかに登録されてないみたいだし
完全に俺のものとして俺の名前で登録予定
どんな名前のラッパーライブラリーにすっかなーと考えてる
0869デフォルトの名無しさん
2005/09/15(木) 14:57:190870デフォルトの名無しさん
2005/09/15(木) 15:07:540871デフォルトの名無しさん
2005/09/15(木) 17:07:530872デフォルトの名無しさん
2005/09/15(木) 17:18:560873デフォルトの名無しさん
2005/09/15(木) 19:49:08完全に俺のものにするんで 乗っ取り かな
0874デフォルトの名無しさん
2005/09/15(木) 20:07:540875デフォルトの名無しさん
2005/09/15(木) 22:00:100876デフォルトの名無しさん
2005/09/15(木) 22:07:17昔は初期化だけで200行以上書かされた
しかもバグや環境依存を回避するコードを入れたらさらに増える
そういう時代なら役割があったのかもしれない
0877デフォルトの名無しさん
2005/09/15(木) 22:25:160878デフォルトの名無しさん
2005/09/15(木) 22:25:29今もじゃん。
0879デフォルトの名無しさん
2005/09/15(木) 22:27:18今もじゃん。
0880デフォルトの名無しさん
2005/09/15(木) 22:28:210881デフォルトの名無しさん
2005/09/15(木) 22:32:18今更WinAPIで作りたいなんて思わない。
0882デフォルトの名無しさん
2005/09/15(木) 22:34:270883デフォルトの名無しさん
2005/09/15(木) 22:48:35s.dwSize = sizeof(DXSTRUCTURE);
こういうの無くなって良くなった。
0884デフォルトの名無しさん
2005/09/15(木) 23:04:41DPN_PLAYER_INFO dpi;
dpi.dwSize = sizeof(DPN_PLAYER_INFO);
ってのならあるけどこれとは違うんだろうか。
0885デフォルトの名無しさん
2005/09/15(木) 23:07:26レンダリング部分も特に面倒なことなんてないし。
強いて言えば、デバイスロスト時の動作周りか?
エラー処理部分も例外使えば結構すっきりするし、
どう考えてもラッパーの必要性を感じない。
ところで、アームレストの布地が破れた。
1年も持たないのか。。。
0886デフォルトの名無しさん
2005/09/15(木) 23:07:34DXSTRUCTURE s;
ZeroMemory(&s,sizeof(s));
s.dwSize = sizeof(DXSTRUCTURE);
じゃね?
0887デフォルトの名無しさん
2005/09/15(木) 23:12:09駄目。MSのAPIはソースぐちゃぐちゃになって、ラッパー書かなきゃわけわかんね。
せめて機能ごとにまとめておいてくれないと、どういう意図でそのAPIを使ってるのか、
作った人間に聞かないとわからない。ラッパーじゃないにしてもブロックごとにコメントはつけておいてほしい。
でも、ラッパーになっていてくれれば、ラッパーで提供されてる関数ごとに何をやっているかの概要だけはすぐに掴める。
0888デフォルトの名無しさん
2005/09/15(木) 23:23:53DXSTRUCTURE s = {sizeof(DXSTRUCTURE)};
0889デフォルトの名無しさん
2005/09/15(木) 23:27:48わざわざ使うのはどうかと思うよ。
0890888
2005/09/15(木) 23:33:580891デフォルトの名無しさん
2005/09/15(木) 23:45:47どこが?
0892デフォルトの名無しさん
2005/09/15(木) 23:52:190893デフォルトの名無しさん
2005/09/16(金) 00:03:31>>883はdpi.dwSize以外の構造体メンバは未初期化。
0894デフォルトの名無しさん
2005/09/16(金) 00:13:250895デフォルトの名無しさん
2005/09/16(金) 01:03:23覚えなくていいよ。
>>888はまともな人間なら書かないコードだから。
0896デフォルトの名無しさん
2005/09/16(金) 01:37:54ローカル仕様じゃなく、cの規格にのっとっているはずだし
Win32にも最初のメンバがサイズであるような構造体が大量にあるわけだが。
0897デフォルトの名無しさん
2005/09/16(金) 01:52:120898デフォルトの名無しさん
2005/09/16(金) 01:52:15レベル高すぎだな。
速度や容量その他のメリットがあるならわからなくもないが、、
違わないなら、わかりやすい(多く知られてる一般的な)書き方をするのが当然だと思っていたが。
0899デフォルトの名無しさん
2005/09/16(金) 03:02:46( ‘д‘) <馬鹿にレスつけんな!
⊂彡☆))Д´)>>898
0900デフォルトの名無しさん
2005/09/16(金) 04:59:020901デフォルトの名無しさん
2005/09/16(金) 05:10:01それぞれ言語スレが立ってるだろうに。
0902デフォルトの名無しさん
2005/09/16(金) 07:42:240903マイク ◆yrBrqfF1Ew
2005/09/16(金) 07:52:390904デフォルトの名無しさん
2005/09/16(金) 08:09:58仕様にも糞仕様ってものが存在する。
特にプログラムにおいて可読性は最優先事項だ。
一体>>888で何が得られるものがあるのか激しく疑問。
就職作品なら書いてあった時点で落とす。あまりにもキモ過ぎ。
0905デフォルトの名無しさん
2005/09/16(金) 08:45:18【初心者歓迎】C/C++室 Ver.21【環境依存OK】
http://pc8.2ch.net/test/read.cgi/tech/1125743714/147-
0906デフォルトの名無しさん
2005/09/16(金) 11:47:41当方、VisualStudio.NET(2003じゃない)を持っており、DirectX9をインストールしました。
VisualStudio.NETで、(できればVBで)
DirectXインストールから、マウスドラッグで簡単な3Dモデルが動かせるようなプログラムを
書くまでを解説してるようなサイトってないでしょうか?
0907デフォルトの名無しさん
2005/09/16(金) 12:25:20DX9のヘルプとサンプル
0908デフォルトの名無しさん
2005/09/16(金) 12:30:11dwSizeはstrlen(S)+1でいいんですよね?
0909デフォルトの名無しさん
2005/09/16(金) 12:30:590910デフォルトの名無しさん
2005/09/16(金) 14:14:07HOGESTRUCT d = { sizeof(d) };
として、dwSize の初期化と残りのゼロ埋めを
まとめてやってしまうコードもたまに見るな。
0911デフォルトの名無しさん
2005/09/16(金) 14:23:33>>888-
0912デフォルトの名無しさん
2005/09/16(金) 19:34:42初頭関数では表せません
0913デフォルトの名無しさん
2005/09/16(金) 22:27:27俺は0埋めがメインで、sizeof dはついでだと思っている。
0914デフォルトの名無しさん
2005/09/16(金) 22:59:02DirectX9による3Dプログラミングは出来ますか?
Webの情報だと古いものしか見つかりませんでした。
ご存知の方いらしたら教えていただけないでしょうか?
0915デフォルトの名無しさん
2005/09/16(金) 23:00:36やったことないけど、DirectXSDK を落としてきてパス設定とか設定すれば問題ないはず
0916デフォルトの名無しさん
2005/09/17(土) 12:06:06public:
CCharData() { ZeroMemory(this,sizeof(CCharData)); }
LPD3DXMESH pMesh;
D3DMATERIAL9* pMeshMaterials;
LPDIRECT3DTEXTURE9* pMeshTextures;
DWORD dwNumMaterials;
} ;
enum { MAX_CHAR = 10 } ;
CCharData CharData[MAX_CHAR];
という風にCCharDataクラスを使ってXFileを読み込み表示したのですが
for (int i=0; i<MAX_CHAR; i++) {
SAFE_RELEASE( CharData[i].pMesh );
CharData[i].pMeshMaterials = NULL;
CharData[i].pMeshTextures = NULL;
}
でメモリ解放してもメモリリークしてしまいます。
クラスでなく構造体でやるとメモリリークしませんでした。
どこが悪いのか教えていただけないでしょうか。よろしくお願いします。
0917デフォルトの名無しさん
2005/09/17(土) 12:11:20> CharData[i].pMeshTextures = NULL;
これはまずいんじゃない?
これもRelease呼び出さないと。
0918デフォルトの名無しさん
2005/09/17(土) 12:22:07どうでもいいけど、これクラスが仮想関数持ってたら
仮想関数テーブルポインタも初期化しちゃって、そのうちアボンよ。
0919デフォルトの名無しさん
2005/09/17(土) 12:27:56>SAFE_RELEASE( CharData[i].pMesh );
よくわからんけど、これがそうなんじゃね?
0920デフォルトの名無しさん
2005/09/17(土) 12:55:33ポインタはリリースできないとか言われちゃったので、無理やりNULLしてました;
>>918
おおお;そんなことが。
変数ごとにNULLか0かします。
>>919
SAFE_RELEASEでメッシュをReleaseしてNULLを入れてるんですが迷子です
ZeroMemoryをやめてD3DMATERIAL9とLPDIRECT3DTEXTURE9をポインタで
無いようにしてやってみます。
ありがとうございます。
0921916
2005/09/17(土) 14:22:50初歩的なミスでしたすみません;
for (int i=0; i<MAX_CHAR; i++) {
for (int j=0; j<CharData[i].dwNumMaterials; j++) {
SAFE_RELEASE( CharData[i].pMeshTextures[j] );
}
delete[] CharData[i].pMeshTextures;
delete[] CharData[i].pMeshMaterials;
SAFE_RELEASE( CharData[i].pMesh );
}
と配列の削除を入れたらメモリリークが無くなりました。
0922デフォルトの名無しさん
2005/09/17(土) 14:36:33あー、そういやそんなのあったなぁ。
STLのvectorとstringとlistはお手軽に使えて便利だから
ちょっとだけかじってみればそういう苦労なくなるよ。
0923デフォルトの名無しさん
2005/09/17(土) 21:14:40そんなのあったなぁって、おまい、、、
0924デフォルトの名無しさん
2005/09/18(日) 01:22:16デバッガの中から実行するとRenderFile()で0x80040200エラーになってしまう。
何か手がかりありませんか?
環境はVisual C++ 2003, WinXP Proです。
0925デフォルトの名無しさん
2005/09/18(日) 01:29:120926924
2005/09/18(日) 01:50:27>>925
ファイルはプロジェクトと別フォルダに置いてあります
0927デフォルトの名無しさん
2005/09/18(日) 01:53:270928924
2005/09/18(日) 01:58:09#defineFILENAME L"c:\\home\\foobar.mpg"
....
IGraphBuilder *pGraphBuilder;
IMediaControl *pMediaControl;
HRESULT hr;
hr = CoInitialize(NULL);
hr = CoCreateInstance(CLSID_FilterGraph,NULL,
CLSCTX_INPROC,IID_IGraphBuilder,(LPVOID *)&pGraphBuilder);
hr = pGraphBuilder->QueryInterface(IID_IMediaControl,(LPVOID *)&pMediaControl);
hr = pMediaControl->RenderFile(FILENAME);
ここでエラー。
0929924
2005/09/18(日) 01:58:42#defineFILENAME L"c:\\home\\foobar.mpg"
....
IGraphBuilder *pGraphBuilder;
IMediaControl *pMediaControl;
HRESULT hr;
hr = CoInitialize(NULL);
hr = CoCreateInstance(CLSID_FilterGraph,NULL,
CLSCTX_INPROC,IID_IGraphBuilder,(LPVOID *)&pGraphBuilder);
hr = pGraphBuilder->QueryInterface(IID_IMediaControl,(LPVOID *)&pMediaControl);
hr = pMediaControl->RenderFile(FILENAME);
ここでエラー。
0930デフォルトの名無しさん
2005/09/18(日) 04:30:29これのインターフェイスはほぼ素のC++であり
依存する他のライブラリはDirectXぐらいです。
これらの設定を入力する為にダイアログを作らなきゃならなくて
windows用のGUIフレームワークが必要になるんですが
何使うのがベストですか?
思いついた一覧
MFC → IDEのサポートが効くしシンプルな構造で使いやすそう、独自コンテナとかウザい、この板の評判が悪い。
ATL/WTL → 軽い、この板の評判はいい、ドキュメントがソースのみ、MFCそっくりなのであえて選ぶメリットが不明瞭。
JavaSwing → 今風な作りで楽に書けそう、Windows+DirectXの構成でわざわざJavaを選ぶのはアクロバティック過ぎないか?
そもそもDirectX動くのか?
.NET WindowsForm → 今風な作りで楽に書けそう、.NETの仕様を一から覚えるの大変、MC++なんとなく嫌。
0931デフォルトの名無しさん
2005/09/18(日) 05:07:34どれも全く経験が無いなら、MFCが扱いは楽で導入の問題も比較的少ない。
.netは、クライアントに.net Framework入れるのが前提になるので、
俺は配布するようなライブラリには、絶対選ばない。Javaも同様。
ATL/WTLが個人的には一番オススメ。使用経験ないならこの際いかが?w
MFCそっくりだから選ぶメリットが不明瞭というけど、
それはGUIフレームワークを使用して、プログラミングした時だけの話でしょ。
結果生成される物は、似て非なる物だもの。
0932デフォルトの名無しさん
2005/09/18(日) 05:41:100933デフォルトの名無しさん
2005/09/18(日) 05:43:57あれで躓くようなら、他のGUIフレームワークどれでも躓くような気がするが。
それだったらいっそのこと、VCLでも薦めるよ。
0934デフォルトの名無しさん
2005/09/18(日) 05:46:140935マイク ◆yrBrqfF1Ew
2005/09/18(日) 06:11:01>何使うのがベストですか?
もはやQt以外に選択肢は無いな。
0936デフォルトの名無しさん
2005/09/18(日) 06:13:338以降のバージョンしか置いてありません。
他にインターネット上で入手する方法はありませんか?
0937デフォルトの名無しさん
2005/09/18(日) 06:40:250938デフォルトの名無しさん
2005/09/18(日) 09:40:400939デフォルトの名無しさん
2005/09/18(日) 09:53:520940デフォルトの名無しさん
2005/09/18(日) 10:07:14たかがゲームの設定ダイアログだけの為に、フレームワークだの何だのは大げさな気がするけど。
0941デフォルトの名無しさん
2005/09/18(日) 11:58:39プログラムからやるのは、初期値の設定と最後に
ダイアログから値を取得することくらいだし。
0942デフォルトの名無しさん
2005/09/18(日) 15:05:260943デフォルトの名無しさん
2005/09/18(日) 15:42:340944デフォルトの名無しさん
2005/09/18(日) 15:43:460945930
2005/09/18(日) 16:21:50お答え参考にしてMFCで行くことにします。
Qtというのもちょっと調べてみます。
0946デフォルトの名無しさん
2005/09/19(月) 01:38:21解像度を640x480にすると、SDKサンプル全てで発生します。
0947デフォルトの名無しさん
2005/09/19(月) 02:18:28発行年度がバラバラで、
1.2004年1月
2.2004年11月
3.2005年3月
となっていて、一番新しいやつを読むと、2004年の途中で大幅に仕様が変更になったらしいのですが、
この場合どうしたほうが良いでしょうか?
自分として考え付くのは、発行年度が一番古い本のバージョンのDirectXを入れて、古い順に勉強していって、
次の本に行くごとにその本にあったDirectXのバージョンを入れる
または、一番新しいやつを最初に勉強して、古いやつのコードを新バージョンのDirectXにあうように書き換える(出来るかどうかわかりませんが)。
位なんですが、どうでしょうか?
0948デフォルトの名無しさん
2005/09/19(月) 03:15:54仕様変更っちゅーても、初心者が学習する範囲においては気にするようなモンじゃないよ。
いーんじゃない? 新しいので。なんの本買ったのか知らんけど。
0949デフォルトの名無しさん
2005/09/19(月) 11:49:28SDK付属のサンプルコードだけで十分。
Microsoft謹製
0950947
2005/09/19(月) 11:52:011.DirectX9シェーダプログラミングブック
2.DirectX9ゲームプグラフィックスログラミング Ver.2
3.DirectX9 DirectX Graphics
を買ったんですが、古いやつほど、ページ数が多く色々書いてあるので・・・
仕様変更は、ライブラリが変更になったり、関数が変更になったりと書いてあったと思うんですが、
古いコードを新バージョンに対応させることって出来ますかね?
0951947
2005/09/19(月) 11:54:30SDKのヘルプとかも一応見たんですけど、どうもPC上に書いてある長文は苦手で、
本で見れるものがほしかったので。
0952デフォルトの名無しさん
2005/09/19(月) 12:26:20SDK付属のドキュメントも日本語版は古いままだしなぁ。
0953デフォルトの名無しさん
2005/09/19(月) 12:33:230954デフォルトの名無しさん
2005/09/19(月) 12:34:38とか書いてあるし
どのみち後ろの二つで先に基礎を学ぶことになるのでは
0955デフォルトの名無しさん
2005/09/19(月) 15:41:250956デフォルトの名無しさん
2005/09/19(月) 18:15:28>現在テスト可能な環境、SavageIX、G200、G400MAX、Radeon9600Proで、
>トランスフォーム済み頂点で1024×512のテクスチャを640×480に切り出して
>ひたすら描画するだけのテストをしてみましたが、
>512×512を二枚使って二回描画した方がパフォーマンスが落ちてしまいました。
>
>間違いないと断言されていらっしゃるので、何らかのテストされたのだと思いますが、
>具体的にどの製品でどのような描画の仕方でパフォーマンスの低下が確認できたのでしょうか?
2回レンダしたら遅くなるの当たり前だろ知障
2048*1024と1024*1024から640*480だけ抜いて比較しろよ染色体異常者
0957デフォルトの名無しさん
2005/09/19(月) 18:17:230958デフォルトの名無しさん
2005/09/19(月) 18:24:542048にする意味がわからんのだが、
そもそも1024*512と512*512二枚とどっち使うかという話だったんでは?
俺は素直に1024*512使うが。
0959デフォルトの名無しさん
2005/09/19(月) 18:33:34あいつは正方形のほうが速いということに反応し、
512*512*2と1024*512で比較したんだよな?
正方形が速いという話はテクスチャ1枚のことであって、
2枚と1枚を比較してる時点で頭おかしいだろ?
640*480で正方形と長方形を比較するなら、
これがすっぽり収まる2048*1024と1024*1024だろ?
元々の512*512*2と1024*512の話は別で、
どれぐらいの大きさまで使えるのか聞いてただけだろ?
0960デフォルトの名無しさん
2005/09/19(月) 18:36:23何言ってるの、君?
0961デフォルトの名無しさん
2005/09/19(月) 18:42:28>ただ、なしさんが言われたようにパフォーマンスは保障されません。
>工夫して、無駄をなくすことを心がけましょう。
>例えば、よく使う640×480や800×600の背景などは、実は512×512のテクスチャ2枚の中に納まります。
>これだけで、1024×1024のテクスチャよりも半分節約できます。
こいつがそもそも頓珍漢
同一人物か?
0962デフォルトの名無しさん
2005/09/19(月) 18:53:37アンカーぐらいちゃんと使ってくれよ。
0963デフォルトの名無しさん
2005/09/19(月) 19:08:31の方が主流?そこで質問
C VS JAVA
使いやすさ、流通度、就職や職場ではどちらが使われているか
の点から意見求む。
0964デフォルトの名無しさん
2005/09/19(月) 19:10:04スレタイも読めない人には教えられません。
というか先に日本語勉強しましょう
0965デフォルトの名無しさん
2005/09/19(月) 19:25:18C++とDirectXが主流ですよ
使いやすいし、これ以外流通してない
0966デフォルトの名無しさん
2005/09/19(月) 19:33:25ここの板みてるとJAVAが多いような気がする。
0967デフォルトの名無しさん
2005/09/19(月) 19:43:29スレタイみて死ねw
0968デフォルトの名無しさん
2005/09/19(月) 20:20:350969デフォルトの名無しさん
2005/09/19(月) 21:17:47よくある厨のパターンですか。
0970924
2005/09/19(月) 22:31:17相変わらず解決しません。
MPEG1, AVIは問題なくデバッグ可能ですが、MPEG2だけだめみたい。
(作りたいのはMPEG2なので、他のフォーマットが再生できても)
アドバイスをお願いします
0971デフォルトの名無しさん
2005/09/19(月) 22:44:530972デフォルトの名無しさん
2005/09/19(月) 23:41:51時計回りでよろしいでしょうか?
0973デフォルトの名無しさん
2005/09/20(火) 00:03:280974デフォルトの名無しさん
2005/09/20(火) 00:05:41埋め
0975デフォルトの名無しさん
2005/09/20(火) 00:05:480976デフォルトの名無しさん
2005/09/20(火) 00:09:060977デフォルトの名無しさん
2005/09/20(火) 00:17:22時計回りなら平面の法線(a,b,c)が上、逆なら下になるわ。
(v2-v1)と(v3-v2)の外積(の正規化ベクトル)ね。
平面の式としては同じだけど、
平面の向きが関係する関数(D3DXPlaneDotCoordとか)では
結果が変わってくるみたいね。
0978デフォルトの名無しさん
2005/09/20(火) 00:22:42D3DXPlaneFromPointNormalってのもあって、こっちの方がわかりやすいかもね。
0979974
2005/09/20(火) 00:30:41こういうドキュメントに載ってないのは、やっぱり
実験実証なのでしょうか。て、それしかなさそうですね。
面倒くさがりな自分....
0980デフォルトの名無しさん
2005/09/20(火) 02:41:55hr = lpDirectPlay8Peer->Connect(&dpnAppDesc, prgHostAddr, prgDeviceInfo,
NULL, NULL, NULL, 0, NULL, NULL, NULL,
DPNCONNECT_OKTOQUERYFORADDRESSING | DPNCONNECT_SYNC);
if(FAILED(hr)) {
//エラー処理
return;
}
として実行したらIP入力ダイアログに何を入力してもエラー処理に行かないで
ダイアログが再度出てくるのですがDPNCONNECT_OKTOQUERYFORADDRESSINGっていうのは
そういう仕様なんですか?
キャンセルしてもダイアログがまた出てくるから強制終了しか出来ないorz
0981980
2005/09/20(火) 02:49:18どこで何間違えてるんだろう…orz
0982デフォルトの名無しさん
2005/09/20(火) 03:41:46IP は例えばどんな風に入力してる?
0983デフォルトの名無しさん
2005/09/20(火) 04:52:57後17
0984デフォルトの名無しさん
2005/09/20(火) 04:53:560985デフォルトの名無しさん
2005/09/20(火) 05:01:23http://pc8.2ch.net/test/read.cgi/tech/1096649788/
0986デフォルトの名無しさん
2005/09/20(火) 07:25:43IPアドレスはコーディング段階では未入力で
実行時にDPNCONNECT_OKTOQUERYFORADDRESSINGによって作成されたダイアログに入力してます。
適当な数字、文字列、ポートを指定せずにIPを入力してOK、もしくはキャンセルを押した場合は
即座にIP入力ダイアログが再出現します。
127.0.0.1:2345などの形式で入力した場合は、接続試行をした後再度ダイアログが出ます。
0987デフォルトの名無しさん
2005/09/20(火) 08:45:49DirectPlayのサンプルが、きちんとエラー処理に飛んでるなら、
絶対どこかに違いがあるはず。
ほんの些細な事でもいいから具体的な違いを見つけ出すしかないかと
0988980
2005/09/20(火) 09:59:30原因が判明しました。
bool OnConnect () {
//省略
hr = lpDirectPlay8Peer->connect(...);
if(FAILED(hr)) {
MessageBox(NULL, "接続失敗", "ERROR!", MB_OK | MB_ICONWARNING);
return false;
}
としているのですが、このOnConnect()が誤ってループの中に書かれているというお約束のミスでしたorz
お騒がせしました。申し訳ないorz
0989デフォルトの名無しさん
2005/09/20(火) 10:18:490990デフォルトの名無しさん
2005/09/20(火) 15:47:09http://pc8.2ch.net/test/read.cgi/tech/1127198808/
0991デフォルトの名無しさん
2005/09/20(火) 15:48:02乙&梅
0992デフォルトの名無しさん
2005/09/20(火) 17:04:470993デフォルトの名無しさん
2005/09/20(火) 17:19:460994デフォルトの名無しさん
2005/09/20(火) 17:20:140995デフォルトの名無しさん
2005/09/20(火) 17:24:190996デフォルトの名無しさん
2005/09/20(火) 17:27:140997デフォルトの名無しさん
2005/09/20(火) 17:52:020998デフォルトの名無しさん
2005/09/20(火) 17:52:360999デフォルトの名無しさん
2005/09/20(火) 17:53:19誰かが1000を狙ってる余寒
1000デフォルトの名無しさん
2005/09/20(火) 17:53:4910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。