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

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

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

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

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

【C++】 DirectX初心者質問スレ Part16 【C】
http://pc11.2ch.net/test/read.cgi/tech/1202634347/
2デフォルトの名無しさん:2008/04/09(水) 12:08:16
【関連サイト】

MSDN DirectX
http://www.microsoft.com/japan/msdn/directx/default.aspx

DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.mspx

BBX (掲示板)
ttp://isweb8.infoseek.co.jp/computer/bbx/

DXライブラリ置き場
ttp://homepage2.nifty.com/natupaji/DxLib/

Lamp:ゲーム開発とその学習をサポートするミドルウェア
ttp://lamp.sourceforge.jp/

TWINTAIL LOVERS.
ttp://www.twin-tail.jp/

[t-pot] PROGRAMMING
ttp://www.t-pot.com/program/

GamDevPukiWiki - DirectX総合スレ (過去ログ等)
http://gamdev.org/w/?%5B%5BDirectX%C1%ED%B9%E7%A5%B9%A5%EC%5D%5D

GamDevPukiWiki - 3DCG製作ソフト (過去ログ等)
http://gamdev.org/w/?%5B%5B3DCG%C0%BD%BA%EE%A5%BD%A5%D5%A5%C8%5D%5D

ゲームを作るための素材を集めよう まとめサイト
http://paw.my-sv.net/index.html
3デフォルトの名無しさん:2008/04/09(水) 13:29:51
>2
一番下のサイト消えてるみたい
4デフォルトの名無しさん:2008/04/09(水) 15:18:25
マルペケつくろーどっとコム
ttp://marupeke296.com/

↑これも入れてもいいんじゃね?
てかここ読めば大抵わかるのと、超初心者ターゲットのしつこいくらいの説明がいい
5デフォルトの名無しさん:2008/04/09(水) 15:32:13
>>2
スレ立てたのはいいが点プレ反の忘れてたぜ!
6デフォルトの名無しさん:2008/04/09(水) 21:23:42
シェーダーファイル(テキスト形式)をコンパイル(バイナリ化)して
ロードする方法ってD3DX〜とかにありますか?
7デフォルトの名無しさん:2008/04/09(水) 22:00:08
このスレの住人なら知っていますね、あの糞開発ツールのことを

・自分のプログラムのバグなのかコンパイラのバグなのかわからない
・他の仕事に応用できない糞開発ツールの独自世界を必死に学習している
・テキストエディタで書いたほうが効率的なのに糞UIツールを懸命に使っている
・糞開発ツールを批判すると「性格が悪いから糞ツールを批判するんだ」と言われる

糞だけど、政治的な理由で無理やり使わされているんですよね。
もう、あんな厨の作った糞ツールを我慢して使うのはやめましょう。

・糞開発ツールを部下に押し付ける上司の命令は無視しましょう。
 上司は糞開発ツールが使われる実績を作ることであの会社のごきげんをとっているのです。
・糞開発ツールを使わせる上司の下では働けません、と上司の上司に直訴しましょう。
・あの糞開発ツール提供会社には「おたくの糞開発ツールは話にならない」と突き放しましょう。
 バグレポートなどしてはいけません。改善要求などもってのほかです。
 あの会社はあなたたちのことをテスター/モルモットとしか思っていません。
・あの会議で「糞開発ツールを使ったら生産性がxx%アップしました」
 なんて話が出たら力強く机を叩き、会議室を出ましょう。
 あの人たちは糞開発ツールをマンセーすることで立場を確保しているのです。

糞な開発ツールを糞だと言える、そんな当たり前の環境をみんなの力で取り戻しましょう。
8デフォルトの名無しさん:2008/04/10(木) 21:32:35
>>6
標準添付のfxc.exeとか?
9デフォルトの名無しさん:2008/04/10(木) 23:30:40
LPD3DXFONTは描画が遅いから使うなと言われましたが
これより早い文字描画をする手段はあるのでしょうか?
10デフォルトの名無しさん:2008/04/10(木) 23:33:21
>>9
必要な文字だけテクスチャとして用意して使う。
コンシューマ機では一般的な方法だけど、速度よりも使用料を削減するためにだったりもするけどね。
11デフォルトの名無しさん:2008/04/11(金) 00:50:24
DrawIndexedPrimitiveUPで四角いテクスチャ3つ表示したいのですが、
何も表示できません。教えてください。
struct CUSTOMVERTEX{
float x,y,z; float rhw; DWORD c; float u,v;
};
IDirect3DIndexBuffer9* pIndex;
g_pD3DDev->CreateIndexBuffer(sizeof (USHORT) * 18,
 D3DUSAGE_WRITEONLY , D3DFMT_INDEX16 , D3DPOOL_MANAGED , &pIndex,NULL);
USHORT index[18] = {
 0,1,2,3,2,1,// 1枚目
 4,5,6,7,6,5,// 2枚目
 8,9,10,11,10,9// 3枚目
};
void *bBuf;
pIndex->Lock(0 , sizeof(USHORT)*12 , (void**)&bBuf , 0);
memcpy(bBuf , index , sizeof (USHORT) * 18);
pIndex->Unlock();
CUSTOMVERTEX v[12]=
{
 { x + width/2, y - height/2, 0.0f, 1.0f,0xffffffff, 1.0f, 0.0f},
 { x + width/2, y + height/2, 0.0f, 1.0f,0xffffffff, 1.0f, 1.0f},
 { x - width/2, y - height/2, 0.0f, 1.0f,0xffffffff, 0.0f, 0.0f},
 { x - width/2, y + height/2, 0.0f, 1.0f,0xffffffff, 0.0f, 1.0f},
 ...(あと8つほど略)
};

g_pD3DDev->SetTexture(0, pTexture);
g_pD3DDev->SetIndices(pIndex);
g_pD3DDev->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
g_pD3DDev->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST ,0,
 12,6 , pIndex ,D3DFMT_INDEX16, v , sizeof(CUSTOMVERTEX));
12デフォルトの名無しさん:2008/04/11(金) 01:07:07
>11
モニタの電源が入ってないんじゃねーの?

と俺のESPが発動したぜ
13デフォルトの名無しさん:2008/04/11(金) 01:28:47
UPを使いたいのかバッファを使いたいのか、どっちかにしろ。危ないぞ
14デフォルトの名無しさん:2008/04/11(金) 07:25:31
ライトの設定がONになってるとOFFで表示したいもんが表示されないとかなかったか?
15デフォルトの名無しさん:2008/04/11(金) 07:55:53
3つで表示できないなら1つ表示の最小限のプログラムをテストすればいいよ。
問題点を絞っていかないといつまでも解決しない。
16デフォルトの名無しさん:2008/04/11(金) 08:32:30
いつまでも目に頼ってるからそういうことになる
17デフォルトの名無しさん:2008/04/11(金) 09:37:15
心眼か
18デフォルトの名無しさん:2008/04/11(金) 18:33:59
WinXpのSp2についてくるDirectX(9.0c)があれば
ラインタイムのインストールとかしなくても動くEXEが作りたいんだが
SDKはどれを使えばいいですか?
1911:2008/04/11(金) 18:35:21
どうも。DrawIndexedPrimitiveの方だと上手く動いたんですけどね。
UP系はいいサンプルが見つからなくてよく分からないです。

>>13
どういうことですか?
msdn見る限りUP系もバッファを使うようですが……。
20デフォルトの名無しさん:2008/04/11(金) 18:52:24
>>19
DrawIndexedPrimitiveUPの第・・・いくつめだか引数に指定するのは、
インデックスバッファじゃなくてインデックスデータそのものだと思ふ
>>11でいうところのpIndexじゃなくてindex
2111:2008/04/11(金) 19:06:18
>>20
本当だ。インデックスデータにしたら描画されました。
ありがとうございます。

一件落着!
22デフォルトの名無しさん:2008/04/11(金) 20:25:40
>>18
October 2004
23デフォルトの名無しさん:2008/04/11(金) 20:34:00
>>21
ろくに調べてないから頓珍漢なこと言ってるかも知れんが、それってIndexBuffer作る意味あんの?
24デフォルトの名無しさん:2008/04/11(金) 20:50:02
>>22
トンクス

みんなSDKは最新の使ってるのかの〜?
25デフォルトの名無しさん:2008/04/11(金) 20:56:23
>>24
使ってない。
・VS6.0を使ってるから
・DLL無いというエラーに素人がちゃんと対応できず、サポートがたるい
・古くても特に不便がない
26デフォルトの名無しさん:2008/04/11(金) 23:09:11
DLL位動的に読み込めよ・・・
27デフォルトの名無しさん:2008/04/11(金) 23:34:25
>>26
頼むから知ったかやめようよ、初心者質問スレでさ・・・
28デフォルトの名無しさん:2008/04/11(金) 23:37:11
PC内に存在しないDLLをどう動的に読み込むんだろう
29デフォルトの名無しさん:2008/04/11(金) 23:43:19
書き方が悪かったな
「DLLを動的に読み込もうとがんばって、読み込めない時は
ユーザに適切なDLLをインスコする様にメッセージを出すアプリの少ないことよ」
こうですか
30デフォルトの名無しさん:2008/04/11(金) 23:46:19
えー?なにこれ、これなんかエラーでた
俺ちゃんとDirectX9.0cとかいうの入ってんぜ?
何この不良品なめてんの
サポートに文句つけてやる「なんか起動しないんすけど責任とれ金払ったんだぞこっちはボケ」
31デフォルトの名無しさん:2008/04/11(金) 23:56:43
しかしd3dx9_xx.dll同梱して配布するとライセンス違反となる罠
32デフォルトの名無しさん:2008/04/12(土) 00:19:32
だから古いSDK使うわけで
33デフォルトの名無しさん:2008/04/12(土) 00:29:32
/*チラ裏
どうせ無償配布してんだから、つべこべ言わずに配布させろよ・・・*/
34デフォルトの名無しさん:2008/04/12(土) 00:41:02
35デフォルトの名無しさん:2008/04/12(土) 00:59:11
プログラマが「これくらいやってくれるだろ…JK…」と思うことは、大抵のライトユーザーにとって垣根が高い
36デフォルトの名無しさん:2008/04/12(土) 01:02:51
同人ゲーなんかは無断で添付してるのも多いけどねぇ

>>34
インストーラのリンク張るくらいなら、最小構成のセットアップファイルをつけて
起動を促す方が良いと思う。
個人的統計によれば素人にゃこっちの方が行動を起こしてくれる傾向がある、気がする。
37デフォルトの名無しさん:2008/04/12(土) 02:52:45

//素人もやる気ないし
//マイクロソフトもやる気ないし
//苦労するのはいつも作る側
//それでもC++で作るならまだいいほう
//XNAとかラインタイムを3も入れなきゃならない
//もうあほかと
//ランタイム地獄に愛想つかしてVC++勉強したが
//今となってはよかったと思う
38デフォルトの名無しさん:2008/04/12(土) 11:08:43
>>36何それ?どうやんの
39デフォルトの名無しさん:2008/04/12(土) 13:03:56
>>38
単純にdllをプライベート配置するのはライセンス違反だが、
アプリに添付するランタイム用インストーラの容量はある程度減らせるってだけの話。

http://msdn2.microsoft.com/en-us/library/bb174600.aspx
40デフォルトの名無しさん:2008/04/12(土) 13:51:50
うわー、同人ゲームのくせにランタイムインストールとか何様だよ
めんどくせーなー
俺様のPCでもちゃんと動くようにするのがプログラマ奴隷の役目だろが
わざわざNYでDLしてやったってのに糞が
41デフォルトの名無しさん:2008/04/12(土) 14:24:39
>>39
インストーラは配布していいのね。
>>40
これだからなかなか金は取れないんだよな・・・俺無責任だしw
42デフォルトの名無しさん:2008/04/12(土) 17:04:26
よし、D3DX使うのやめよう!
43デフォルトの名無しさん:2008/04/12(土) 19:51:21
HLSLでのキューブマップの扱いについて質問です、
http://tpot.jpn.ph/t-pot/program/66_cube_normal/index.html
ここにある内容をHLSLでやろうとしたのですが、
期待する値が取れてません。

解説と同じようにD3DXCreateCubeTextureでテクスチャを作って、
同じように中身を埋めました。
で、pEffect->SetTextureで渡してます。
HLSL側では、
textureCUBE CubemapNormal;
samplerCUBE CubemapSampler_forNormal = sampler_state {
texture = <CubemapNormal>;
MinFilter = LINEAR;
MagFilter = LINEAR;
MipFilter = NONE;
AddressU = Clamp;
AddressV = Clamp;
};
でピクセルシェーダの部分で
N = texCUBE(CubemapSampler_forNormal, In.N).xyz * 2.0f - float3(1.0f, 1.0f, 1.0f);
とやっています。
何かおかしい部分ありますでしょうか?
4443:2008/04/12(土) 20:56:51
すみません、解決しました。
D3DPOOL_MANAGEDで作ったらダメなんですねorz
RENDERTARGETにしてるからMANAGEDだと失敗するのかな。
45デフォルトの名無しさん:2008/04/12(土) 22:10:55
RENDERTARGETは、DEFAULTじゃないとダメだよ。
46デフォルトの名無しさん:2008/04/13(日) 00:01:59
D3DXVec2Rotateってないですよね?
D3DXVec2Transformを使えばいいのですが、MATRIXを生成するのがバカらしい…
47デフォルトの名無しさん:2008/04/13(日) 13:18:15
2Dの画像の描画をしたいんだけど、どうしたらいい?
48デフォルトの名無しさん:2008/04/13(日) 13:22:00
>>47
つ MSDN
つ google
49デフォルトの名無しさん:2008/04/13(日) 13:47:59
>>48
探すの面倒だから代わりに探してきてよ
50デフォルトの名無しさん:2008/04/13(日) 14:47:21
>>49
お前、実際もの作るとかなったらそんな程度面倒がってたらなんも作れねーぞ
俺はDrawPrimitiveを薦めるけどね
51デフォルトの名無しさん:2008/04/13(日) 16:05:07
>>50
やさしいね。大好きだよ。
52デフォルトの名無しさん:2008/04/13(日) 20:00:01
HLSLのtex1Dってやつを使ってみようと思うのですが、
これはC++側では普通にCreateTextureでいいのでしょうか?
2次元のテクスチャでいいとすれば、どのように参照されるのかとか、
よろしければ教えてください。
53デフォルトの名無しさん:2008/04/13(日) 20:23:08
>>46
自前でやればいいと思うけど。
XYの2次元ベクトルの回転なら(XcosΘ+YsinΘ, -XsinΘ+YcosΘ)
54デフォルトの名無しさん:2008/04/13(日) 20:39:14
>>53
さすがに2次元ベクトルの回転は高校で習ったからわかりますが、お気遣いどうもw
いやー、ライブラリにあるなら独自作らないほうがいいと思ったもんで。ありがとう
55デフォルトの名無しさん:2008/04/13(日) 20:46:27
>>54
荒らし?w
純粋にライブラリにあるかどうかが知りたかっただけなら
コンパイル通るか試すだけで済むだろ。Vec3Vec4の関数名は統一されてんだし。
それかヘッダ見るかすればいいのに。
56デフォルトの名無しさん:2008/04/13(日) 22:14:54
Presentの引数を全てNULLにした際に描画される領域を取得することは出来ませんでしょうか。
DXが描画しているウィンドウ内に可動ツールバーがあり、
クライアント座標を取得する関数ではそのツールバーの領域も含めてしまうため求めたい値が取れません。
C++で取得できればこしたことは無いのですが、せめてDXで取得出来る形にさえなっていれば・・・
57デフォルトの名無しさん:2008/04/14(月) 00:04:12
>>40
ネタのつもりでやってるんだろうが実際はこういう奴ばっかりなんだよ
で、ランタイム配布めんどくさいよねっていうと
そんなの気にならないくらい楽しいゲーム作ればいいとか
本題からズレたことを言っていい気になるやつが出てくる
DirectX8以前縛りで作るとそこら辺気にしなくてよくてラク
58デフォルトの名無しさん:2008/04/14(月) 00:06:25
アホをイラつかせられるだけでも、DX9とかにする価値があるわけだ。
59デフォルトの名無しさん:2008/04/14(月) 01:28:51
XNAなら

DirectX
.NETFW
XNAFW

の3つのラインタイムでイライラMAXだな
60デフォルトの名無しさん:2008/04/14(月) 02:37:33
アレはユーザもイライラ
開発者もイライラ
61デフォルトの名無しさん:2008/04/14(月) 13:33:16
>>55
あるものを発見するのは楽だが、無いものを無いと確信するのは難しい
また、ライブラリにあるものを自前で再実装するのは大抵の場合悪
62デフォルトの名無しさん:2008/04/14(月) 14:19:04
そんなメタ正論持ち出さんでも
ドキュメントのD3DX項目眺めるだけじゃんこの場合・・・
63デフォルトの名無しさん:2008/04/14(月) 14:47:03
46がどれくらい調べたのかはわからんが、言葉どおり
D3DXVec2Rotate
という関数があるのかを聞いたわけじゃないだろ?
D3DXVec2Rotate 相当の関数があるかってことだろうから、俺でも「多分無い」としか言えん
D3DXVec2Transformは知ってたわけだから、それなりにサイトを見たんじゃなかろうか。


…MSDNもVer古い関数載せてたりするからあんまり信用できないんだよなw
特にI3DXAnimationControllerあたり
64デフォルトの名無しさん:2008/04/14(月) 14:51:55
ID3DXEffect で

シェーダー側の
float2 形式で渡したいんですけどできないんでしょうか?

ID3DXEffect::SetVectorは、D3DXVECTOR4 だし
65デフォルトの名無しさん:2008/04/14(月) 14:55:39
SetFloatを2回やるのじゃダメなんか?
66デフォルトの名無しさん:2008/04/14(月) 15:09:36
>>64
俺もそれ思ったけど多分GPUの仕組みからして
SetVector(float4)かSetFloatだけしか用意してないんだとオモタので気にしてない。
詳しくは知らないけど、GPUの定数レジスタって全部float4じゃなかったっけ?
(floatもあるのかもしれないけど。)
floatを2つにして渡すか、float4のうち2つを使うかは自分の設計や効率と相談ってことで。
67デフォルトの名無しさん:2008/04/14(月) 20:16:48
IDirect3DDevice9::SetPixelShaderConstantFは
float4の配列を引数に受け取る訳で
こいつに合わせるのがベターだろう
68デフォルトの名無しさん:2008/04/15(火) 11:31:58
ID3DXAnimationControllerで質問です。
現在アニメーショントラック合成をやっているのですが…

Aのとあるポーズ(とある時間で停止)から、Bの歩きアニメ(再生)へ、1秒かけて変移。
とやる場合、以下のようにやって実現しました。

・トラック0にAをセット
・しばらく後「歩くボタン」を押した
・トラック0のデータをトラック1に移行
・(DESCを初期化した上で)トラック0にBをセット
・トラック0の時間のみSetTrackAnimationTimeで進め、行列更新のためにAdvanceTime(0.0f,NULL);を呼び出す
・1秒かけてTrackWeightを変移させていく

ですが、AからBに変移している途中の状態から、Cアニメへ移行したい。という場合に困っています。
もちろんトラックをまた1つずつずらして、0:C 1:B 2:A にし、Weightをきちんとやれば実現は可能です。
ですがこの方法だと、さらに途中でDアニメ…Eアニメと(そんな多重になるようにすんなとは思いますが)移行させようとした場合、トラックがいくつあっても足りません。

「現在のポーズ」をアニメーションセットとして認識させる方法はないでしょうか?
69デフォルトの名無しさん:2008/04/15(火) 18:57:19
MSが提供しているのは便利機能であってそれ以上を求めたいなら自前でやれと。
70デフォルトの名無しさん:2008/04/15(火) 19:22:06
DX関数群は使用しないでください
頭が腐ります
71デフォルトの名無しさん:2008/04/15(火) 20:19:51
D3DXのアニメーションコントローラとか使ってないからわからんけど
Weightをきちんと、って頂点に含まれるウエイト値をいじるってこと?
そんなことしたらデメリット多いし俺も自前でやった方がいいとオモ
72デフォルトの名無しさん:2008/04/15(火) 20:35:21
アニメーションコントローラは、アニメAとアニメBに重みをつけられるんだよ
アニメAで設定されてるを8割採用し、アニメBで設定されてる角度を2割採用。みたいな感じ。
それをウエイトって言うのよ
7371:2008/04/15(火) 20:47:50
なるほど、D3DXでもモーションブレンドとかできるのかぁ。
「現在のポーズ」の状態を擬似的に以降のフレームに入れて騙したりは出来ないのかな。
あるいはアニメーション時間を騙すとか。役に立てずスマンコ
74デフォルトの名無しさん:2008/04/15(火) 20:51:25
70はネタだよね?
なかったら脂肪決定な漏れ
75デフォルトの名無しさん:2008/04/15(火) 21:36:59
わかりにくかったらごめんなさい。

画面に四角形を描画した後、その四角形の一つの頂点の座標だけを動かして
四角形を歪んだような形にすることってできますか?
76デフォルトの名無しさん:2008/04/15(火) 21:49:24
>>75
意味がわからんが、3Dでポリゴン描画のことを言っているならばできる
BitBltなどの2D描画のことをいっているならできない(自作すべし)
77デフォルトの名無しさん:2008/04/15(火) 21:52:28
描画してからとなると描画したバッファ自体をテクスチャとして使用すれば変形も可能。
>>76
TL頂点でも出来る。
78デフォルトの名無しさん:2008/04/15(火) 23:12:33
DirectInput8でジョイパットの状態を

pJoyDevice->GetDeviceState(sizeof(DIJOYSTATE2), &js);

で取得すると

js.lX と js.lY が十字キー押してないのに-1になるんだが
うちのジョイパットがおかしいんだろうか?
押してるときは 6とか-6とかになるのに
押してないときは 0でなく-1って一体
7978:2008/04/16(水) 00:13:20
事故解決
無効ゾーンを設定して小さすぎる値を無視することでようやく解決
80デフォルトの名無しさん:2008/04/16(水) 00:19:04
それ十字キーとはいってもアナログなんじゃない?
アナログだと、何も入力してないつもりでも大抵入ってる
だからその解決法が正しいね
81デフォルトの名無しさん:2008/04/16(水) 00:28:56
>>80
サイバーガジェットのPSのコントローラーつなげられる
USB接続のジョイパット変換機なんだがアナコンのほうは認識しない古いやつ
で、十時キーがいつもマイナス方向に微妙に入ってるってことになってるみたい
アナログじゃないのにアナログ扱いされることもあるのね
勉強になりました
82デフォルトの名無しさん:2008/04/16(水) 01:34:51
>>81
俺もDirectInputでは悩んだんだけど、アナログでなくとも
XYZの軸入力は指定した範囲で送られてくる(指定した最大値・最小値で)から
同じように扱うしかなかった。んで、-1000〜1000の範囲にして
-100〜100は無視するとかしたと思う。
友人のPS2コントローラの変換機もうまく動かないやつがあって、
ボタンの状態が、普段がONで押すとOFFになるんだったかなぁ。
コントローラの送ってくる情報は基本的に信頼しない方がいいかもしれない。
色んなメーカーが気軽に作ってるようだから。
83デフォルトの名無しさん:2008/04/16(水) 06:37:08
>>76,77
ありがとうございます。
いろいろと試してみます。
84デフォルトの名無しさん:2008/04/16(水) 15:00:51
背景を透明にすることってできますか?
85デフォルトの名無しさん:2008/04/16(水) 15:12:11
何の背景よ?
ウィンドウを透過させてデスクトップの壁紙が見えるようにしたい?
86デフォルトの名無しさん:2008/04/16(水) 15:15:41
>>85
説明不足ですいません。
そのとおりです。描画してあるものはそのままに
ウィンドウを透過させて壁紙が見えるようにしたいんです。
87デフォルトの名無しさん:2008/04/16(水) 17:22:27
レイヤードウィンドウでぐぐるといい。DirectXとは無関係だよ。
88デフォルトの名無しさん:2008/04/16(水) 17:31:04
デスクトップアクセサリーみたいなのだとリージョンとかもあり
ま、結局はDirectXと無関係
89デフォルトの名無しさん:2008/04/16(水) 22:02:09
DrawTextメソッドのRectangleが値渡しなのでCalcRectが機能しません。

って英語でどう書くの?
90デフォルトの名無しさん:2008/04/16(水) 22:10:59
Fuckin' DrawText Method Rectangle!!
Goddamn CalcRect Don't WORK!!
Sun of a bitch!!
91デフォルトの名無しさん:2008/04/16(水) 22:16:32
>>89
DT_CALCRECT becomes Font.MeasureString in managed code.
92デフォルトの名無しさん:2008/04/16(水) 23:58:30
解決しますた。
93デフォルトの名無しさん:2008/04/18(金) 01:28:34
XAudio 2 にCPUのSSEサポートが必要ってどこかに書かれてますか?
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=572be8a6-263a-4424-a7fe-69cff1a5b180&displaylang=en#Requirements
にはないようなんですが、こんな書き込みを見ました
ttp://pc11.2ch.net/test/read.cgi/win/1206653607/981
94デフォルトの名無しさん:2008/04/18(金) 02:03:03
http://msdn2.microsoft.com/en-us/library/cc308006(VS.85).aspx

ドキュメントには明記されてるね。
95デフォルトの名無しさん:2008/04/18(金) 02:17:53
>>94
ありがとうございます、やはり必要なんですね
96デフォルトの名無しさん:2008/04/18(金) 07:54:08
問題は見つかりませんでした。
DirectDraw テスト結果 : テストはすべて成功しました。
Direct3D 7 テスト結果 : エラー - ステップ 8 (3D デバイスを作成中): HRESULT = 0x80004005 (一般エラー)
Direct3D 8 テスト結果 : エラー - ステップ 8 (3D デバイスを作成中): HRESULT = 0x8876086c (エラー コード)
Direct3D 9 テスト結果 : エラー - ステップ 8 (3D デバイスを作成中): HRESULT = 0x8876086c (エラー コード)

すみませんこのエラーコードってなんですか?
97デフォルトの名無しさん:2008/04/18(金) 11:43:37
なんのツール上で吐かれたエラーなのかすら説明なく?
98デフォルトの名無しさん:2008/04/18(金) 11:44:46
ヘッダから漁ってみそ
99デフォルトの名無しさん:2008/04/18(金) 16:14:21
なんか、シェーダー側のグローバル変数に
データが届きません><。

.cpp側
m_hMapWidth = m_pEffect->GetParameterByName( 0 , "MAP_WIDTH" );
m_hMapHeight= m_pEffect->GetParameterByName( 0 , "MAP_HEIGHT" );

hr = m_pEffect->SetFloat( m_hMapWidth , 490.0f );
hr = m_pEffect->SetFloat( m_hMapHeight, 472.0f );

.fx側
float MAP_WIDTH;
float MAP_HEIGHT;

と書いても、MAP_WIDTHには、数値が入ってないみたいです。
シェーダー側で、MAP_WIDTH=490.0fすれば、ちゃんと動きます。

SetFloatの前にやっている
SetFloatArrayは、ちゃんと数値届いてるのに><。

なんか、SetFloatの制限とかあるんですか?
ハンドル利用してないバージョンでも試しました。
やっぱだめです。

100デフォルトの名無しさん:2008/04/18(金) 16:20:27
intに変えて、SetIntにしてみたらいけました。
Floatって400とか行くと駄目なん?
101100:2008/04/18(金) 16:21:53
嘘です。やっぱいけてませんでした><。
102デフォルトの名無しさん:2008/04/18(金) 21:02:51
400程度でケタ落ちとかは無いよ。
GetParameterByNameで得たハンドルがNULLでないか、
hrがE_FAILになってないか、そのへん見てみたら?
あとはエフェクト側の定数が多すぎて定数レジスタ食い尽くしてないか。
(頂点シェーダ3_xまでは定数レジスタはfloat4×256個しかない)
103デフォルトの名無しさん:2008/04/18(金) 21:50:06
補足。浮動小数点値ってのは、
floatなら値を24bit、桁を8bitで保存してる(んだったと思うけど自信ない・・・w)。
だから10000000000000000.5とかの結果になった場合の0.5、あるいは
20.0000000000000000128とかの0..0000000000000000128の部分が消える。
だから値そのものの大小は関係ない。基本的に幅が足りないときに細かい部分が消えるだけ。
(桁が8bit?で足りないときも狂うけどね。)間違ってたら補足ヨロ。
104デフォルトの名無しさん:2008/04/18(金) 22:13:08
値は23bitで指数が8bitで符号が1bit
105デフォルトの名無しさん:2008/04/18(金) 23:02:04
Winsockが面倒だからDirectPlay使ってたのに、
今後は使わないでWinsock使ってくれってどういうことだ、クソックソッ
106デフォルトの名無しさん:2008/04/18(金) 23:15:12
>>96
http://oshiete1.goo.ne.jp/qa3697040.html
ちょうど同じ質問してる人がいたぜ
ようはグラボがウンコなんだ
107デフォルトの名無しさん:2008/04/19(土) 00:20:22
>>105
いつの話だよ
108デフォルトの名無しさん:2008/04/19(土) 01:21:49
>>104
暗黙の1ビットがあるから結局24-bitでいいんじゃね?
109デフォルトの名無しさん:2008/04/19(土) 09:58:30
それくらいわかっとるわいw
このスレじゃ書いといた方がよかったか?
110デフォルトの名無しさん:2008/04/19(土) 14:18:04
103です。いや補足してもらえて助かりましたw
しかし99は直ったんだろーか。
111デフォルトの名無しさん:2008/04/20(日) 00:39:12
>>99はハンドルがNULLで取得出来ていないんだろ
よくある話だ
112デフォルトの名無しさん:2008/04/21(月) 05:19:46
質問です。
ビルボードを使って描画しようとしているのですが、
テクスチャを指定するためにLockメソッドでロックし、
頂点座標を指定しようとしたところ、Lockメソッドの実行時に
「 0x00413a9d でハンドルされていない例外が発生しました :
 0xC0000005: 場所 0x00000000 を読み込み中にアクセス違反が発生しました。 。」
と表示されてしまいます。何が問題になっているのかさっぱり分からないのですが
分かる方はいらっしゃいますでしょうか。
113デフォルトの名無しさん:2008/04/21(月) 05:20:10
書いてから日本語がおかしいことに気づきました・・・すみません。
114デフォルトの名無しさん:2008/04/21(月) 05:23:29
”場所” 0x00000000を読み込み、っつーのは
NULL(0)になっているポインタからその指す内容を得ようとしたっつーことだ。
そのテクスチャのポインタか何かがNULLになってるんじゃね?
115デフォルトの名無しさん:2008/04/21(月) 05:35:44
>>114
成る程ありがとうございます。
テクスチャの位置調整用の関数から、テクスチャ位置情報を受け取っているので、
恐らくその位置調整用関数が上手くいってないのだと思います。
こんな時間なので即レスが来るとは思いませんでした。
ありがとうございます。
116デフォルトの名無しさん:2008/04/21(月) 06:57:37
質問したくせにレスが来るとは、だと?ふざけてんのかてめえ
117デフォルトの名無しさん:2008/04/21(月) 07:25:10
>>49とか>>51とか>>54とか>>99よりはマシだよw
多分悪意は無いさ。
118デフォルトの名無しさん:2008/04/21(月) 07:58:49
普通だろw
こんな時間にもかかわらず答えてくれた好意にとても感謝している、って意味にしかみえねーよw
119デフォルトの名無しさん:2008/04/21(月) 15:37:14
>>116の人気に嫉妬(^Q^)
120デフォルトの名無しさん:2008/04/21(月) 16:38:56
>>117
54は俺なんだが、そんなにひどいレスだったか54は…?
「D3DXVec2Rotateに相当するD3DXの関数はありますか?」って聞けば誤解なかったんだろうという反省はしてるけど
121デフォルトの名無しさん:2008/04/21(月) 18:46:19
>>120
>お気遣いどうもw
「w」って笑顔じゃなくて笑い、2chでは嘲笑うという意味のほうが強いかな。
>>117-118が使い所として良い。
極度な訳だけど「お気遣いどうもw 」→「そんなの分かってるわボケwww心配しなくても思ってるほどバカじゃねぇよwwww」
答えてくれた人に対して何言ってるのとか思うけどね。
皆が使ってるから意味も知らずに使っている(悪気がない)ということより、意図的に使っているとしか考えられない。
あと文法的にもマナーの面からもお礼の言葉は最初に書くのが基本なので、印象が余計に悪く('A`)

でもマナーが成ってないのにルールは守り、ラフで使いやすいのが2chのいいところだよな。
122デフォルトの名無しさん:2008/04/21(月) 20:59:47
wの意味なんてどっかで定義されたわけじゃないし、使う人見る人で違うだろww
俺には54はそこまで嘲笑には見えんぞ
123デフォルトの名無しさん:2008/04/21(月) 21:22:53
「俺には」と言うのが不味いんだよな
携帯電話で使い始めたような若い人にとって何とも無いことでも
比較的年齢が高めなこの板ではあまりいい印象がない

少なくともこの板では嘲笑うレスに対して使われるのがほとんどで
質問者もそうだけど回答者も滅多に使わない
文章が乱暴だけど他の板に比べれば紳士的な感じかな
124デフォルトの名無しさん:2008/04/21(月) 21:35:33
そうかすまん。板の空気を読もうという話ね


まぁ、俺の見る限りこの板には本当の紳士は1割にも満たないわけだが・・・
125デフォルトの名無しさん:2008/04/21(月) 21:48:14
53=55=117です。
議論するつもりではなかったんだけど、自分的にはちょっと
カチンときたので例に挙げましたw(ちなみに99は解決したかどうか書いてくれなかったから。
後から、54も99も例に挙げたのはマズかったかなと思いましたが。)
相手の機嫌を一切損ねずに質問・回答するのは不可能に近いとは
自分も思うところだけど、
自分は2chに限らずとも、他人の親切に対して笑いながら「お気遣いどうもw」
みたいな反応が出来る人間はどうかと思うので。
(付け加えるなら、D3DXVec2Rotate()と同機能の関数があるかどうかを、
D3DXVec2Rotateという名前の関数が無いとわかっているのに
ここで訊こうとするのはレアケースどころかナンセンスだとすら思う。個人的には。
>まぁ、俺の見る限りこの板には本当の紳士は1割にも満たないわけだが・・・
別にあまり攻撃したくはないのだが、紳士にしか回答をもらいたくないのであれば
ここで訊くべきかどうかくらいの判断は自分で下すべきだ。
126デフォルトの名無しさん:2008/04/21(月) 21:51:20
別に俺は紳士からじゃ無くてもオーケーよ〜
まぁ、どこにでもいろんな人がいるということだね。どっちの考え方もよく分かるよ
受け入れられるかどうかはその人しだいだけどな
127125:2008/04/21(月) 21:58:16
自分自身、懐疑的に見すぎていたきらいがあるので悪かったなと思ってまつ。
お騒がせしました。
128デフォルトの名無しさん:2008/04/21(月) 22:44:22
おまえらどんだけピュアなんだよ
2chじゃなくてちゃんとした所で聞いたほうがいいぞ
129デフォルトの名無しさん:2008/04/21(月) 22:50:40
態度が悪ければ同等の態度で返されるってだけだろ?
自業自得
130デフォルトの名無しさん:2008/04/21(月) 23:35:33
>>112
ちょっと周辺のコード晒してみぃ

っつかなんでこうやってできない奴に限って
動いてるソースのコピーからはじめないのか・・・
131デフォルトの名無しさん:2008/04/21(月) 23:36:54
あ、更新忘れてたw
>>130は解決してたら無視してくれ
132112:2008/04/22(火) 01:17:52
未だに悪戦苦闘中でしたので、コード晒してみます。

HRESULT SetFVFTexturePosition(
LPDIRECT3DVERTEXBUFFER9 aFVFBuffer , DWORD aType , DWORD aChar )
{

theCUSTOMVERTEX* tmpVertex; //頂点バッファをロック
theTexPositionRECT aTexRECT; //テクスチャの座標を受け取ります

SetCellTextureRECT(aChar , &aTexRECT);

//頂点バッファをロック
if(FAILED(aFVFBuffer->Lock( 0 , 0 , (void**)&tmpVertex , 0 ))){return(E_FAIL);}

//頂点は4つ、頂点座標、頂点職、テクスチャ座標を設定する
//D3DPT_TRIANGLESTRIPで描画するので頂点の番号と座標の対応に注意すること
tmpVertex[0].tu = aTexRECT.u0 ; tmpVertex[0].tv = aTexRECT.v0 ;
tmpVertex[1].tu = aTexRECT.u1 ; tmpVertex[0].tv = aTexRECT.v0 ;
tmpVertex[2].tu = aTexRECT.u0 ; tmpVertex[0].tv = aTexRECT.v1 ;
tmpVertex[3].tu = aTexRECT.u1 ; tmpVertex[0].tv = aTexRECT.v1 ;

//書き込みが完了。頂点バッファのロック解除
aFVFBuffer->Unlock();

return(S_OK);
}
133デフォルトの名無しさん:2008/04/22(火) 01:18:48
//セル用のテクスチャー
VOID SetCellTextureRECT(DWORD aChar , theTexPositionRECT *aRECT ){

const float kCellSize = 1.0 / 8.0f ;

//0xffの場合はビルボード全体にテクスチャを描画
if(aChar == 0xff){aRECT->u0 = 0.0f; aRECT->u1 = 1.0f; aRECT->v0 = 0.0f; aRECT->v1 = 1.0;}
else{
//あふれを防止
aChar &= 0x07;

aRECT->u0 = 0.0f ; aRECT->u1 = 1.0f;
aRECT->v0 = kCellSize * aChar ;
aRECT->v1 = aRECT->v0 + kCellSize ;
if(aRECT->v1 > 1.0f){aRECT->v1 = 1.0f;}
}
}
134デフォルトの名無しさん:2008/04/22(火) 05:52:48
ほんとにLockメソッドで落ちてるのか疑問だけど
とりあえずtmpVertex[0].tvが全部0指定してるのは直した?
(uは0〜3なのにvは0だけになってる
135デフォルトの名無しさん:2008/04/22(火) 08:51:09
Lock()実行時に落ちてるならaFVFBufferがNULLであるとしか考えられないな
136デフォルトの名無しさん:2008/04/22(火) 15:20:52
HLSLでのデバッグ環境ってありますか?
13799:2008/04/22(火) 19:03:25
プロバ全体がアク禁くらって書き込めませんでした。

結局、パラメータが渡ってません。
複数シェーダを書いて、まとめて(20個ぐらい)ロードしているんですが
SetFloatArray使ってないシェーダは、
ちゃんと幅、高さが渡ってるのに
SetFloatArray使ってるのは失敗するです><

>>102
GetParameterByNameは、ちゃんと実態がいます。
ハンドルなしで、直接指定もやってみました。
hrも成功しているはず(S_OK比較しています)です。

13899:2008/04/22(火) 21:19:38
シェーダー側に
if( param == 490 ){ // 渡した数値比較
///
}
と書いたら、///の部分がちゃんと動きました。
数値は、渡っているみたいです。
しかし、直にparam=490と書いた時と同じパラメータ渡した時との動きが違うのです。
そういうのって何かありますか?
もうわけわからんちん
139デフォルトの名無しさん:2008/04/22(火) 21:20:46
定数の数はいくつある?
もしかするとそのWIDTHとHEIGHTをfloat4(のxとy)にしたら直るかも?
140デフォルトの名無しさん:2008/04/22(火) 21:21:16
単純にシェーダの部分がバグってるんだろう
『たまたま』動いただけじゃね?
141デフォルトの名無しさん:2008/04/22(火) 21:23:38
ん、渡せてないわけではないのか。
定数多すぎてどれか溢れてるくらいしか思いつかん
142デフォルトの名無しさん:2008/04/22(火) 21:30:43
てか
GetParameterByNameはあくまで
シェーダーの定数レジスタから値をひろってくるだけだぞ?
グローバル変数に値をいれたいなら
hr = m_pEffect->SetFloat( "MAP_WIDTH", 490.0f );
hr = m_pEffect->SetFloat( "MAP_HEIGHT", 472.0f );
だろ
143デフォルトの名無しさん:2008/04/22(火) 21:33:59
こんな質問で即レスしてくれたお。
このスレの人はいい人がおおいですね><。
ありがとうございます。

ピクセルシェーダーはこんなかんじです
// MAP_WIDTH = 490.0f;
// MAP_HEIGHT = 472.0f;

Color = ( tex2D( SrcSamp, In.Tex )
+ tex2D( SrcSamp, In.Tex + float2( -1.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +1.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( -3.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +3.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( -5.0f / MAP_WIDTH, 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +5.0f / MAP_WIDTH, 0 ) )
)/7.0f;
パラメータは、ちゃんと同じ値が渡ってるのに
・シェーダーに直書き(上のコメントを外す)
・プログラムからパラメータ渡し
とでぼかし具合が違うのです。
直書きすると定数として扱われてコンパイルするのかな?
書き方これでいいんでしょうか?
144デフォルトの名無しさん:2008/04/22(火) 21:36:25
いや合ってるよ、GetParameterByNameが返すのは
値じゃなくてそのパラメータのハンドル。
もちろん、毎回GetParameterByNameしてハンドル取るくらいなら
直接名前で指定した方が簡単だろうけども。
145デフォルトの名無しさん:2008/04/22(火) 21:42:08
シェーダーの計算に括弧入れたら、挙動が変わったお><。
こんな感じ
+ tex2D( SrcSamp, In.Tex + float2( -(1.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +(1.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( -(3.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +(3.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( -(5.0f / MAP_WIDTH), 0 ) )
+ tex2D( SrcSamp, In.Tex + float2( +(5.0f / MAP_WIDTH), 0 ) )
スレ汚し、ほんますんません。
146デフォルトの名無しさん:2008/04/23(水) 01:04:40
D3DXDisassembleEffectで逆アセしてみれば?
147デフォルトの名無しさん:2008/04/23(水) 15:10:05
アセンブラから逃げ出すためにHLSL使うことにしたのに
結局アセンブラやらないとだめなのか><。
14899:2008/04/23(水) 15:38:59
逆アセしてみました。
かなり最適化して感動しました。
読んでなかったあとレジスタの仕組みとかもわかって逆アセしてよかったです。

でも、なんか怪しいので
D3DXCreateEffectで
D3DXSHADER_SKIPOPTIMIZATION //最適化しない
を渡してやってみたところ、うまく行きました><。

ああああああああああ
149デフォルトの名無しさん:2008/04/23(水) 15:51:20
ちなみにSDKは、(April 2007)です
15099:2008/04/23(水) 16:43:54
(March 2008)入れてみた
最適化しても、普通にうごいたお。

最新版、グローバル変数に数値入れられなくなってていい感じだお。

>>103,104,108,109,110,111,139,140,141,142,144,146
ありがとうございました

ぼくの7日間シェーダ戦争
〜完〜
151デフォルトの名無しさん:2008/04/23(水) 21:53:31
おめ
152デフォルトの名無しさん:2008/04/23(水) 22:42:19
FPSを計測してみたら、どんなにがんばっても
秒間60プレームしか描画できてないということがわかった
そんなにたくさんのモデルを描画してるわけじゃないのになと思いながら
モデルの描画量とか画面のサイズとかを減らしていったのに
それでも秒間65フレームくらいしかでない
いくらなんでもプリミティブ1つ描画するのに
秒間60回しか更新できないなんてありえないと思うんだが、
ひょっとしてDirectXってFPSを固定する機能があったりとか
それがデフォルトで有効になってるとかそういうことはありますか?
153デフォルトの名無しさん:2008/04/23(水) 22:49:15
param.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
param.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
154デフォルトの名無しさん:2008/04/23(水) 23:13:37
>>153
ウインドウモードで作ってるので
下の行を追加するだけでOKですか?

凄まじい勢いで描画されるようになりました
ありがとうございました
155デフォルトの名無しさん:2008/04/24(木) 00:13:24
DirectMusicがコンポーネントが削除されましたが、どれを変わりに使えばいいんですかね?

156デフォルトの名無しさん:2008/04/24(木) 13:09:54
>>155さん
私の場合はDirectMusicをLIB化して使ってますね。
それに加えてwavやmidiやmp3の場合はMCIでも同じことはできます。

本当はMCIで読み込んでDirectSoundに渡すのがいいらしいのですが、
そっちは難しいぽかったのでDirectMusicを主に使っています。
例えば以下のプログラムの音楽再生はDirectX9の11月版で作っていますが
ですが音楽再生はDirectMusicを使っています。
http://gamdev.org/up/img/11346.zip

LIB化の仕方についてはこのページがとても分かりやすかったのでどうぞ
(私もここのやり方でやってます
http://www.geocities.jp/ky_webid/win32c/056.html
157デフォルトの名無しさん:2008/04/24(木) 19:28:05
>>156
ご丁寧にありがとうございます!。
とりあえずそのサイトを見てみたいとおもいます。
158デフォルトの名無しさん:2008/04/24(木) 20:19:21
ゲームでmp3を使う時って、何使って再生したほうがいいの?
ある程度売れたらパテントとかってあるんだよね?
159155:2008/04/24(木) 20:58:12
>>156
関係ないですが、DXライブラリ3Dってここまでできるんですね。
160デフォルトの名無しさん:2008/04/24(木) 21:01:59
プレイヤーが所有しているMP3を再生したいのであれば使用料を支払えばいい
BGMやSEとしてゲーム本体に組み込むのであればmp3なんか使わない
161デフォルトの名無しさん:2008/04/24(木) 21:50:52
orbis(だっけ?)使うの?そのコードクレ
162デフォルトの名無しさん:2008/04/24(木) 22:20:36
トランスフォーム済み頂点とDrawPrimitiveUPを使って計器を描画しています。
2枚以上の計器を重ね、テクスチャに抜き色を設定したりアルファ値を下げたりした状態にしてZ値や描画順を変えると
手前の計器の抜けている部分から奥の計器が見えるべきところが透明のままで背景が見えます。
描画するときはZ値を触らずに(全て固定値)、自分で描画順を変えないといけないのでしょうか。
163デフォルトの名無しさん:2008/04/24(木) 22:34:24
directXってMP3再生できないの?
164デフォルトの名無しさん:2008/04/24(木) 23:05:18
DirectShowを使えばできる
DirectSoundでやるなら、WAVEにデコードする必要がある
165デフォルトの名無しさん:2008/04/24(木) 23:15:23
mciデコードが特許的にダメとか、DirectShowもグレーゾーンとか聞くけど
ここにいる人は何使ってるの?
166デフォルトの名無しさん:2008/04/24(木) 23:29:04
oggでいいんじゃね?
167デフォルトの名無しさん:2008/04/24(木) 23:30:07
DirectSound以外をつかわないとだめなのか〜
DirectAudioPlayってのなかったっけ?
168デフォルトの名無しさん:2008/04/25(金) 00:00:18
DirectAudioの事?
DirectMusicとDirectSoundが統合された時の名称だけども・・・
169デフォルトの名無しさん:2008/04/25(金) 00:33:07
日本ならogg
アメリカならwmaとかが主流なんじゃないかと
170デフォルトの名無しさん:2008/04/25(金) 00:53:05
再生に必要な物ってDirectShowFilterとか言うやつ?
なんか調べんのめんどいな・・・そもそもどうやってoggファイルつくんだよ・・・
171デフォルトの名無しさん:2008/04/25(金) 01:14:44
>>170
wavをoggに変換するソフトがどっかにあった希ガス
それかlibになかったっけ?
172デフォルトの名無しさん:2008/04/25(金) 01:16:28
>>170
http://www.geocities.jp/debu0510/personal/oggvorbis.html

検索一発目でヒィーーーーーーーーーット!
お前、検索すらしないで書き込んだなw
173デフォルトの名無しさん:2008/04/25(金) 01:16:52
174デフォルトの名無しさん:2008/04/25(金) 01:16:54
3回目はチンコ落とされるぞ
175デフォルトの名無しさん:2008/04/25(金) 01:18:05
>>173
脳みそで英→萌→和変換するのがストレス
176デフォルトの名無しさん:2008/04/25(金) 01:18:22
俺OGGとFLACを常用してるけど、これらに対応してる
歩き男って無いんだよな。ややマイナーなのが難点だ。
177112:2008/04/25(金) 03:34:31
先日はいろいろと誤解を招くような言い回しをしてしまったようで、
すみませんでした。
皆様のおかげでなんとか描画できるようになったのですが、
何故かテクスチャの色が表示されずに、真っ黒な像が描画されてしまいます。
問題はどこにあると思いますでしょうか・・・ご教授願います。
レンダリングステートは以下のようにしています。
theDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE ); // αブレンディング有効
theDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE ); // αテストを有効に
theDevice->SetRenderState( D3DRS_ALPHAREF, 0x00 ); // αチャネルの値が0x00なら
theDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_NOTEQUAL ); // 書き込みをしない
theDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );// Zバッファへの書き込み停止
theDevice->SetRenderState( D3DRS_AMBIENT, 0xFFFFFFFF );// 環境光
theDevice->SetRenderState( D3DRS_SRCBLEND,D3DBLEND_SRCALPHA ); // ソース側の色の比率
theDevice->SetRenderState( D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA ); // 書き込み側の色の比率
theDevice->LightEnable( 0, FALSE ); // ライトを無効に
theDevice->SetTextureStageState( 0 , D3DTSS_ALPHAARG1, D3DTA_TEXTURE ); // αチャネルの色を使用theDevice->SetTextureStageState( 0 , D3DTSS_ALPHAOP,D3DTOP_SELECTARG1 ); // テクスチャの色を使用
178デフォルトの名無しさん:2008/04/25(金) 05:57:32
ご教授ではなくご教示だドアホ
179デフォルトの名無しさん:2008/04/25(金) 07:51:31
>>177
D3DTSS_COLOROP, D3DTSS_COLORARG1 あたりの設定が
見当たらないね 設定しておいたほうがいいと思うんだけど
180デフォルトの名無しさん:2008/04/25(金) 09:46:35
>>
181デフォルトの名無しさん:2008/04/25(金) 09:52:20
早速の回答ありがとうございます。
D3DTSS_COLOROPは乗算
D3DTSS_COLORARG1はテクスチャ色使用にしてあります。
182デフォルトの名無しさん:2008/04/25(金) 10:05:29
今のレスをかきおわってから、あれ?と思い
D3DTSS_COLOPOPの値をD3DTOP_SELECTARGに変更したら出来ました
自分でも変なミスをしたと思いました。
回答してくださった方には、お手数をおかけしてすみませんでした
183デフォルトの名無しさん:2008/04/25(金) 14:00:30
>>172-173
dクス
今手元のwav変換して聞いてみたけどイイネ!
プログラム的にはダイレクトショウフィルター入れてればDirectShowで直接再生できるって感じ?
そうだとユーザーの手間が増えちゃうからやっぱりソース組み込むのかなぁ・・・
184デフォルトの名無しさん:2008/04/25(金) 20:53:24
東方wavだしwavでいいじゃん
185デフォルトの名無しさん:2008/04/25(金) 21:25:09
東方は尊敬するが基準にはできないな。
186デフォルトの名無しさん:2008/04/25(金) 21:32:43
>>183
そう
WindowsMediaPlayerみたいなのいれれば大抵のコーデック入るから
理論的にはなんでも再生可能
187デフォルトの名無しさん:2008/04/25(金) 21:37:15
>>186
今はインストールさせるのとさせないのどっちが主流っぽいの?
たいした手間ではないんだけど、ゲームも大したもんじゃないから気が引けるぜ
188デフォルトの名無しさん:2008/04/25(金) 22:13:23
OGGなら、デコードLIBをリンクしてしまえばいいのさ。
まあそれするとGPLが適用されると思うけど。
ToHeart2が引っかかってたような。
ん?あれOGGだったっけか?
189デフォルトの名無しさん:2008/04/25(金) 23:16:17
OGGはフリーでMP3じゃなかったか?
190デフォルトの名無しさん:2008/04/25(金) 23:23:22
>>187
XPでもデフォでメディアプレイヤー入ってるから、
そんなマイナーでなければ既に入ってる
心配なら、配布時にメディアプレイヤーを含めればいい

>>188
あれは、oggじゃなてくムービーのコーデック

まあそういう事情があるから、ライセンスはきっちりしといたほうが後で泣きをみない
191デフォルトの名無しさん:2008/04/25(金) 23:29:25
>>190
あぁ、まぁぐだぐだ書いたけど、
俺もお勧めはogg
ホムペを参考にしつつliboggとlibvorbisを使って組んだほうがいいぞい
192デフォルトの名無しさん:2008/04/26(土) 00:49:58
PS2のかまいたちの夜でも採用された>ogg
普通、ライセンス考えるゲームはogg
193デフォルトの名無しさん:2008/04/26(土) 01:14:38
今dshow.hが無かったのでなんかインストールして取ってきたら、
今度はstrsafe.hが無いと。
MSDN見たら新しいバージョンのPlatform SDKに入ってるとかあるんだけど
どこから取れますか?それともインクルードパスがおかしいのかな
普通どこに入ってる物なんだ?普段そこまで踏み込まないから全然分からん\(^o^)/
194デフォルトの名無しさん:2008/04/26(土) 01:20:55
directShowは、
DirectXに行ったり
Media何とかに行ったり
PlatformSDKに行ったりと大変ね。
195デフォルトの名無しさん:2008/04/26(土) 01:29:04
そんだけ動画ってものがユーザにとって身近になったって事だね
196デフォルトの名無しさん:2008/04/26(土) 09:37:50
ライセンス考えたら同人でゲーム作って売るとき

音楽系はogg 動画画像系はなにがおすすめ?
197デフォルトの名無しさん:2008/04/26(土) 09:43:08
wma wmvは大丈夫じゃね?
198デフォルトの名無しさん:2008/04/26(土) 09:54:05
エロゲ業界は50%くらいがmpeg1
wmvは結構マイナーなのよん
ちなみにScroolDaysはwmv
ま、再生の負荷で考えるならmpeg1が安易
サイズは不利だけどね
199デフォルトの名無しさん:2008/04/26(土) 10:03:19
>>196 こういうこと言う奴に限ってクソゲーしか作れないんだから
ライセンス考えなくても大丈夫。クソゲーは相手にされないから。
200デフォルトの名無しさん:2008/04/26(土) 11:00:32
作れる、作れないとライセンスは関係がないぞ。誰にでも平等だ
201デフォルトの名無しさん:2008/04/26(土) 12:38:33
なにが、誰にでも平等だ 、だよ。エロゲで抜いてるくせに
粋がるな馬鹿
202デフォルトの名無しさん:2008/04/26(土) 13:05:40
以後ヌルーで。
203デフォルトの名無しさん:2008/04/26(土) 13:53:48
Oggのライブラリみたいの落としたんだけどlibフォルダに.libが無くて代わりに
VisualStudioでコンパイルするためのバッチファイルが入ってたんだけど、
BCCでやるにはどうすりゃいいんだ?
204デフォルトの名無しさん:2008/04/26(土) 14:18:22
バッチファイルの、RC、とか、CL とかのコンパイラ名をBCCのに書き換えればいいんじゃね?
あるいはBCC用のバッチφるが別のダディレクトリにあるとか。
205デフォルトの名無しさん:2008/04/26(土) 14:19:00
VS2008stdに乗り換える
206203:2008/04/26(土) 15:32:43
お前ら、俺に優しいなwエロゲの知識が生きて満足したか?w
207デフォルトの名無しさん:2008/04/26(土) 15:46:25
>>206偽乙
VS2008Express入れてみたけど適当にコンパイルしてたら
変なファイル大量に作られるし、挙句の果てにdll吐きやがった(´;ω;`)
これだから高レベルなソフトはいやなんだ・・・

これってどうすればいいの?つうかVSでコンパイルできたとしてそのlibって
BCCじゃ使えないんだっけ?
208デフォルトの名無しさん:2008/04/26(土) 15:53:53
彼女とセクロスもするが
エロゲでオナニーもする。
別もんだ。
209デフォルトの名無しさん:2008/04/26(土) 15:56:35
ここにもアンチエロゲのキチガイがいるのか。
大日本帝国の主力産業たる萌えを否定するのは売国奴だ。
中共や南朝鮮の間諜だ。殺せっ殺せっ殺せっっっ
210203:2008/04/26(土) 15:57:50
>>207 いい加減スレ違いに気付け。ここはお前の日記帳じゃねぇんだ。
そういう下らないことは自分で対処しろ。
211デフォルトの名無しさん:2008/04/26(土) 16:10:00
だめかな?役に立つ人もいると思ったが、
まあ、いいや。後は何とかしますノシ
212デフォルトの名無しさん:2008/04/26(土) 18:44:49
>>211
キチガイはシカトしとけ
213デフォルトの名無しさん:2008/04/26(土) 19:14:05
質問です。
SDKのスキンメッシュのサンプルをクラス化して
自分の環境に持ってきたところ、テクスチャの一部がチリチリするようになりました。
SetRenderStateはサンプルと同じに設定しています。
何か原因に見当つく人がいたら、ご教示ください。
よろしくお願いします。

ttp://f11.aaa.livedoor.jp/~neomoku/neoup/src/1209203904068.jpg
214デフォルトの名無しさん:2008/04/26(土) 19:32:18
>SDKのスキンメッシュのサンプルをクラス化
原因はここに違いない
215デフォルトの名無しさん:2008/04/26(土) 19:43:16
個人で作る販売目的じゃない適当ゲーなんて
ライセンスのことなんて考えなくても大丈夫だろ?
そう思ってた時期が俺にもありました
216デフォルトの名無しさん:2008/04/26(土) 19:46:13
公開しなきゃ、それこそほぼ無法地帯だけどな
217デフォルトの名無しさん:2008/04/26(土) 20:11:06
せめてGPLかどうかだけでも見ておいたほうがいいぞ
218デフォルトの名無しさん:2008/04/26(土) 22:38:03
>>207
libは結構面倒だ
デバッグ版lib
リリース版lib
ちょっとでもコンパイル設定がかわるともう受け付けない
(みんななぜか気にしてない?うーんあわせる自信あるのかな?)
好んで使うアフォがいるがなんでか?ってのは俺も知らない
219デフォルトの名無しさん:2008/04/26(土) 22:58:14
Xファイルなどのメッシュに対してではなくて
ポリゴンに対してバウンディングボックスを作ることってできますか?
220デフォルトの名無しさん:2008/04/26(土) 23:12:54
>>218
横槍だがlibを毎回プロジェクトフォルダに入れないとパス通しても認識されないんだが
どうすりゃいいんだ?
221デフォルトの名無しさん:2008/04/26(土) 23:26:54
通したのがinclude pathだったってオチ?
222デフォルトの名無しさん:2008/04/26(土) 23:56:09
完全にライブラリのリンクです。
223デフォルトの名無しさん:2008/04/26(土) 23:58:09
きっとそこには”無い”んだよ…
224デフォルトの名無しさん:2008/04/27(日) 01:24:04
D3DFMT_D16_LOCKABLEって
16bitの何が入っているんですか?
これがわからないと読み出せないんですが
225デフォルトの名無しさん:2008/04/27(日) 01:55:19
今日のこのスレなんか空気がおかしくね
226デフォルトの名無しさん:2008/04/27(日) 03:20:49
oggだのライセンスだの言ってるあたりからおかしいと思われ
227デフォルトの名無しさん:2008/04/27(日) 03:22:15
まぁGWモードに入ったってことでしょうJK
228デフォルトの名無しさん:2008/04/27(日) 05:13:46
ごーるでんうぃーく
229デフォルトの名無しさん:2008/04/27(日) 13:53:57
ゴールデンウィークなんてこの5年間一回もないぞ。
働いたら負けって意味がよく分かったよ
230デフォルトの名無しさん:2008/04/27(日) 13:54:25
質問なんだが、Xファイルのテクスチャにdds使うえばα値で透過されたりするんですかの
231デフォルトの名無しさん:2008/04/27(日) 14:04:01
ddsじゃなくても透過できるでよ
232230:2008/04/27(日) 14:53:06
詳しくお願いしまふ
233デフォルトの名無しさん:2008/04/27(日) 15:07:52
Xファイルを作るときにD3DXCreateTextureFromFileEx関数を使って透過色を指定しておくだけでふ
234デフォルトの名無しさん:2008/04/27(日) 15:26:02
Exとかあるなんてしらなだった
調べてない自分が悪いorz
とんくす!!
235デフォルトの名無しさん:2008/04/27(日) 21:44:04
HLSLですが、以下のcase1とcase2で表示される結果が違います。
case2の方にノイズがのります。
以下の二つは何か違いがあるんでしょうか?
(HLSLは最適化なしでも同じ、設定は列優先)

// float4_t vPosition0
// float4x4_t mWorld
// float4x4_t mViewProj

// case 1
const float4_t vPosition1 = mul( vPosition0, mWorld);
o_vPosition = mul( vPosition1, mViewProj);

// case 2
const float4x4_t mWorldViewProj = mul( mWorld, mViewProj);
o_vPosition = mul( vPosition0, mWorldViewProj);

236デフォルトの名無しさん:2008/04/28(月) 23:15:14
画面から1ピクセルの色情報を取得するGetPixelをDirectX
でやるにはどうすれば良いでしょうか?Lock Unlockで
サーフェイスから1ピクセル抜き出すのは勿体無いですから。
237デフォルトの名無しさん:2008/04/28(月) 23:27:18
>>236
何がどう勿体無いのか知らんが、それが一番素直なやり方
サーフェースのフォーマットを調べたいとかいう違う動機があるなら別だが
238デフォルトの名無しさん:2008/04/28(月) 23:32:01
>>237 読み込みだけなのでLock Unlock重いから使わない方法
あればいいなと思って質問しました。Lock Unlock使わなくても
大丈夫というレスを期待したのです。レスありがとうございます。
今日は寝ます。
239デフォルトの名無しさん:2008/04/28(月) 23:38:06
>>238
誤解してるみたいだが、GetPixelも実装はLock/Unlockしてるの
それプラス余計なオーバーヘッドがかかるから、自前でやったほうが数倍速い
ちなみに、システムメモリ上のサーフェースは、その手のLock/Unlockによるオーバーヘッドは皆無
まあ、VRAM上のことを言ってるんだろうけど、VRAM上ではイメージがリニアに配置されてる保障はないので
その手のオーバーヘッドは、どういうやり方をするにせよ、回避は不能
240デフォルトの名無しさん:2008/04/29(火) 00:00:00
ピクセルシェーダーからフィードバックすればできるんじゃね?
241デフォルトの名無しさん:2008/04/29(火) 00:38:00
>>239
GetPixelってフォーマットやら範囲やらチェックしてる予感
あの遅さはそういう遅さだ
俺の直感がそうだと言っている

でもフォーマット気にしないでコピーする方法ってどうやんだっけ?
BitBltでいいんだっけ?
242デフォルトの名無しさん:2008/04/29(火) 21:55:54
ライティングについて質問です。

D3DLIGHT9 light;
memset(&light,0,sizeof(light));
light.Type = D3DLIGHT_DIRECTIONAL;
light.Diffuse.r = 0.9f; light.Diffuse.g = 0.9f; light.Diffuse.b = 0.9f;
light.Specular.r = 0.2f; light.Specular.g = 0.2f; light.Specular.b = 0.2f;
light.Ambient.r = 0.5f; light.Ambient.g = 0.5f; light.Ambient.b = 0.5f;
light.Direction = D3DXVECTOR3(0.0f, -0.5f, -0.2f);
device->SetLight(0,&light);
device->LightEnable(0,TRUE);
//*
device->SetRenderState(D3DRS_LIGHTING,TRUE); //ライティング有効
/*/
device->SetRenderState(D3DRS_LIGHTING,FALSE); //ライティング無効
//*/

上記のように設定すると何も表示されなくなってしまいます。ライトを無効にすれば表示されるので
メッシュの基本的的なところは間違ってないみたいなのですが、何が間違ってるのでしょうか?
243デフォルトの名無しさん:2008/04/29(火) 22:13:12
自己解決。マテリアル設定忘れらしいです。だからマテリアルだけ要素数が返されるんですね・・・
244デフォルトの名無しさん:2008/04/30(水) 00:23:12
これからDirectXの勉強始めようと思うのですが、DirectX9の書籍は買わないほうが良いのでしょうか?
DirectX10からいろいろ変わったと聞いたもので。
あと、お勧めの書籍があったら教えてほしいです。
245デフォルトの名無しさん:2008/04/30(水) 00:30:02
vista持ってないとdirectx10ができません
246デフォルトの名無しさん:2008/04/30(水) 00:35:41
DirectXなんて勉強目的なら8以降だったらなんでもいいのよ
要するに、概念が大事
247デフォルトの名無しさん:2008/04/30(水) 03:07:46
DX10のほうがデバッグしやすいと思うぞ
248デフォルトの名無しさん:2008/04/30(水) 03:09:53
>>244
むしろ情報がクソほど出揃ってる9以前のほうがいい
10なんかOS縛りあるわ情報少ないわでいいことまったくなし
8あたりで縛ってつくればDirectX8はXP以降なら間違いなく入ってるし
配布もラクだしとにかくいいことだらけだ
そんな初級質問をするおまいはこれからもたくさん質問するだろうから
それに答えられる使用者が多い9以前を使うべき
249デフォルトの名無しさん:2008/04/30(水) 07:57:25
今ならDX9だよな。
もうDX8はない。
かといってDX10は実行環境が限られる上に
仕様もまだ安定していない。
250デフォルトの名無しさん:2008/04/30(水) 12:19:13
ありがとうございます。9の本買ってきます。
251デフォルトの名無しさん:2008/04/30(水) 16:58:33
9できれば
10もすんなりいけるんじゃね。
252デフォルトの名無しさん:2008/04/30(水) 18:36:23
シェーダーの使い方知らんとなんもできんよ
253デフォルトの名無しさん:2008/04/30(水) 19:54:00
俺も10に移行してえ
でもVistaはイヤッ!!
254デフォルトの名無しさん:2008/04/30(水) 20:32:14
俺はやりたいことが全部9で出来ちゃったから10を触る気が起きない
255デフォルトの名無しさん:2008/04/30(水) 22:07:00
そもそも10で何ができるようになったのか知らない
256デフォルトの名無しさん:2008/04/30(水) 22:09:33
Vista専用なんて論外だ
257デフォルトの名無しさん:2008/04/30(水) 23:02:11
DirectX10はVistaと共に黒歴史になる
258デフォルトの名無しさん:2008/04/30(水) 23:09:33
10は別に黒歴史にはならないだろ
259デフォルトの名無しさん:2008/04/30(水) 23:50:06
8は初心者にはヘルプ手に入れたり、サンプル動かしたりするところで
敷居が高いからやめておいたほうがいいと思う
ある程度たどり方を知ってないと見つからないし、わからないと思う
260デフォルトの名無しさん:2008/04/30(水) 23:58:24
すみません。
ピクセルシェーダが使えない環境で
クライアント座標のある部分を描写しないようにクリッピングしたいのですが、
どのようにすればいいでしょうか。

C++でdirectx9を使ってます。
261デフォルトの名無しさん:2008/05/01(木) 01:56:50
カメラ2つでvfcでキャプチャをしたいのですが、capDriverConnect(hWnd0,0);capDriverConnect(hWnd1,1);で
キャプチャ使用とすると、カメラを選択するメニューが登場しcapDriverConnect(hWnd0,0);側だけ選んだ1つだけ
表示されてしまいます。
解決の方法はご存じないですか?
262デフォルトの名無しさん:2008/05/01(木) 06:27:11
今日も今日とて、眠らぬまま朝を迎えた・・・・・・・。
263デフォルトの名無しさん:2008/05/01(木) 07:54:59
>>262
バラモス撃破乙
264デフォルトの名無しさん:2008/05/01(木) 16:41:47
>>260
ステンシルバッファ でぐぐるよろし
265デフォルトの名無しさん:2008/05/01(木) 21:01:47
>>264
さんくすです。
266デフォルトの名無しさん:2008/05/02(金) 11:57:01
すみません。
任意の軸を中心に拡大縮小が出来る関数ってありませんか?
回転はみつけたんですが、拡大縮小は見つからなくて・・・。
267デフォルトの名無しさん:2008/05/02(金) 12:37:52
>>266
あるっちゃあるが、ちゃんと行列勉強したほうがいいと思うぞ
細かい調整きくようになるし
268デフォルトの名無しさん:2008/05/02(金) 17:20:58
任意の軸への移動行列×拡大縮小行列でいいんじゃねーの?
269デフォルトの名無しさん:2008/05/02(金) 18:45:06
D3DXMatrixTransformation2D

つーか、何を回転させようとしているのだろうか
270デフォルトの名無しさん:2008/05/02(金) 18:50:51
質問というかアンケート
ここのスレのお兄さんたちはD3DX関数群は肯定派?否定派?
速度でないし、細かい微調整がきかないから、そんなもん使うなって感じ?
それとも、車輪の再発明してもしょうがない、あるんだから使えばいいじゃないって感じ?
なんとなく気になったんで
271デフォルトの名無しさん:2008/05/02(金) 19:08:19
俺はD3D、OpenGL、その他とコードを共有してるんでしかたなく自前で作ってる
でも基本的にあるなら使えばいいじゃない派
272デフォルトの名無しさん:2008/05/02(金) 19:15:43
頭にD3DXをつけずに名前をもっと短くしてくれたら
もっと評価してやらないこともない
273デフォルトの名無しさん:2008/05/02(金) 19:21:54
そんな事より配布の問題をどうにかしてくれ
274デフォルトの名無しさん:2008/05/02(金) 19:23:33
我慢しろよ(`_ゝ´)
275デフォルトの名無しさん:2008/05/02(金) 19:25:02
>>273
わかる
DLLバージョン多すぎ
276デフォルトの名無しさん:2008/05/02(金) 19:28:58
だから2004octを使えとあれほど・・・
277デフォルトの名無しさん:2008/05/02(金) 21:30:26
僕ハンゲームというゲームしたいんですけど
それにはこのdirectxが必要なんですが、その
安全性が非常に心配です。
調べてみると、「DirectXの脆弱性」などとよく書いてあります。

ダウンロードするとしたら、最新の10.1がいいのでしょうか?
それと、当たったらどんな症状が出るのでしょうか?
278デフォルトの名無しさん:2008/05/02(金) 21:32:14
ここはプログラミングの板なのでよそで聞いてください
279デフォルトの名無しさん:2008/05/02(金) 21:35:20
おまえはなにを言ってるんだ



……と思ったが、マジレスするなら、今までWindows使ってて、脆弱性のせいでなんか不都合が起こったことあるか?
そもそも、ココに書き込みしてる時点で脆弱性を突かれて君のパソコンまずいことになってるよ。
他の人(もちろん俺も)は、事前に対策してるけど。君は丸腰なんじゃないか?
280デフォルトの名無しさん:2008/05/02(金) 21:35:39
なんかリアリティがあってワロタ
本当に何もわからんやつは、確かにプログラム→DirectX初心者でこういうところに質問するのかw
281デフォルトの名無しさん:2008/05/02(金) 21:43:17
ハンゲ自体が君の人生にとって有害だよ
282デフォルトの名無しさん:2008/05/02(金) 21:43:34
10.1 はまだ Vista でしか使えなかった気が。
というか、Vista だと標準装備じゃなかったっけ?
入ってないってことは XP なんだろうけど、
それなら 9.0c を入れるといいよ。
283デフォルトの名無しさん:2008/05/02(金) 21:54:49
DirectXの穴はwindows updateで修正されてるし。
284デフォルトの名無しさん:2008/05/03(土) 05:51:55
>>270
D3DX関数群の集まりって昔中身見れたんだけど
なんか難しそうなアセンブラで書いてあって速そう(?)だったよw
285デフォルトの名無しさん:2008/05/03(土) 10:12:11
最近発覚したtga読み込みの脆弱性は
比較的最近のd3dxにしないと駄目だけどね。
286デフォルトの名無しさん:2008/05/04(日) 00:25:15
質問です。

(わかりやすくするために、カメラの座標は0,0,0とします。)
カメラを、とある地点Aと、とある地点Bの中間の方向を向かせるために、以下の方法をやっています。

中間というのは、3次元ベクトルAとBの平均(A + B) / 2 ということではなく、
角度的な中間です。
(説明のために2Dベクトルで例えます)現在のカメラの方向からAが+20度の方向。Bが+80度の方向にあるのならば、カメラは+50度の方向を向かせたいのです。

ttp://w3e.kanazawa-it.ac.jp/math/category/kika/heimenkika/henkan-tex.cgi?target=/math/category/kika/heimenkika/naibunntenn.html
この法則を利用し、Aまでの距離とBまでの距離を利用。
lenA = D3DXVec3Length(pVecA);
lenB = D3DXVec3Length(pVecB);
D3DXVec3Lerp(pOut, pVecA, pVecB, lenA / (lenA + lenB));
としてpOutの方向を向かせれば、丁度中間の方向を向けそうです。
まず、ここまであっているでしょうか?

あっていると仮定して、次のステップ、(例えば)AとBの角度的に3:7の方向を向きたいという場合はどうすればいいでしょうか?
287デフォルトの名無しさん:2008/05/04(日) 01:01:25
角度で応用きかすなら極座標を使った方がいいような気がする
288デフォルトの名無しさん:2008/05/04(日) 12:34:56
図の角度**のところをそれぞれθ、φとおいて、二通りの求め方で面積S1、S2求めて比較
289デフォルトの名無しさん:2008/05/04(日) 15:42:44
質問よろしいでしょうか
D3DXLoadMeshHierarchyFromXを使っているのですが、Debugビルドの場合のみ
14MBほどの大きさのXファイルの読み込み時に

ハンドルされていない例外 は test.exe にあります: 0xC0000005: Access Violation。

と出てしまいます。
10回に1回くらい出ないこともあるのですが・・・
__sbh_free_block の中でエラーになっているようで、これはメモリー空間が破壊されている時に出るとのこと
なのでプログラムを最小構成にしてやってみましたが、それでもダメでした。

Releaseビルドでは問題は出ません。
また、アニメーションの数を減らして7MBくらいにするとDebugビルドでも問題は出ませんでした。
Xファイルはテキスト版でも、バイナリ版でも同様の結果でした。

何か心当たりある方はいらっしゃいますでしょうか?
環境はVC6.0+DirectX 9.0 SDK Update - (October 2004) です。
290デフォルトの名無しさん:2008/05/04(日) 18:24:27
自己解決しました。
デバッグモード時、d3dx9.libではなくd3dx9d.libをリンクすることでうまくいきました。
291デフォルトの名無しさん:2008/05/04(日) 19:04:18
質問です。
DirectXアプリケーションで、日本語入力(IME)をサポートしようと思っています。

やりたいことは、IMEの変換ウィンドウと候補一覧ウィンドウを表示するということだけなのですが、
DirectXのサンプル(CustomUI)では、独自のコントロールの実装や継承を自前で行うことで実現していました。

CDXUTControl
  ↑
CDXUTEditBox
  ↑
CDXUTIMEEditBox

特にCustomUIのような独自のコントロールを作成したいわけではないのですが、
あきらめてCustomUIと同じような実装を自前でしなければならないのでしょうか。
それとも変換ウィンドウと候補一覧ウィンドウを表示したいだけであれば、もっと楽な方法があるのでしょうか。
292デフォルトの名無しさん:2008/05/05(月) 02:20:18
D3DFILL_WIREFRAME のワイヤーフレームの描画の太さを、太くする方法ってありませんか?

Zバッファへの書き込みをOFFにした状態で2ドット以上の幅でワイヤーフレームを描き、その後通常どおり描画。
とやることで、背景との輪郭線を綺麗に描けるのを期待しているのですが。
293デフォルトの名無しさん:2008/05/05(月) 10:48:52
どんな画面だそれ
294デフォルトの名無しさん:2008/05/05(月) 11:38:21
いい加減固定機能パイプライン使うの止めようぜ
295デフォルトの名無しさん:2008/05/05(月) 11:57:59
>>293
理屈上は背景とキャラと間に線が入る感じになるかと。
ワイヤー時はZバッファへ書き込みしないようにしているので、ワイヤーフレームの後にキャラクタの描画で輪郭線以外は塗りつぶされますから。

>>294
プログラマブルシェーダで同等のことできますか?
モデルのポリゴン裏返して黒くし、法線方向に膨らませる…。っていうやつも悪くはなかったのですが、何分重くて。


スキンメッシュなので、自前でID3DXLineで引くわけにもいかないんですよ。
いかないですよね…?
変形後の頂点位置、わからないですし。

296デフォルトの名無しさん:2008/05/05(月) 16:24:37
>>295
それが速く描画できる理由になるところが俺にはわからん
297デフォルトの名無しさん:2008/05/05(月) 21:15:04
ワイヤーフレームモードでやりゃわかるが、ピクセルシェーダが呼び出される回数が圧倒的に少ないぞ
だが俺はあの線を太くする方法は知らんな
あれば結構魅力的な輪郭線描画法かもしれん
298デフォルトの名無しさん:2008/05/05(月) 21:21:27
質問
連邦VSジオンみたいなゲームでも作ろうかと3Dを本格的に始めたのですが、スペックで相談です。

あのゲームは2VS2なのでキャラが4体でてきます。
1キャラ6000三角ポリゴンくらいで作って4体を画面内に表示したところ、FPS60が維持できませんでした。

私のPCのグラボが、GF6600GTとかなり古めだというのはあるのですが、こんなもんなのでしょうか?
299デフォルトの名無しさん:2008/05/05(月) 21:35:59
実際にやってみてそうなったのなら、幻覚を見るような病気がない限りその通り。
300デフォルトの名無しさん:2008/05/05(月) 22:02:35
えーと、私のプログラムが甘いとは思うので
「それ低すぎだろw何かミスってね?」
でなければいいなと思ったのです。

こんなものですか。1キャラ2000ポリくらいにしないと、マップとかにパワーまわせませんね
301デフォルトの名無しさん:2008/05/05(月) 22:06:45
1キャラ△6000て割きすぎ
302デフォルトの名無しさん:2008/05/05(月) 22:38:29
あちゃー、割きすぎでしたか。
今まで3Dツール上でレンダリングするだけだったので、その癖ですね。
ゲーム用はやはりもっと抑えないとということですか。
ありがとうございました。
303デフォルトの名無しさん:2008/05/05(月) 22:48:30
デバッグをpするとobjbase.h': No such file or directoryと出てデバッグできません
どうすればデバッグできるようになるのでしょうか?
304デフォルトの名無しさん:2008/05/05(月) 22:49:16
>>303は誤字



デバッグをするとobjbase.h': No such file or directoryと出てデバッグできません
どうすればデバッグできるようになるのでしょうか?
305デフォルトの名無しさん:2008/05/05(月) 23:06:05
objbase.h': No such file or directoryだけだとわかりませんね
エラーメッセージ貼ります


c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Stage4.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Stage3.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Stage2.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Stage1.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Ranking.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Option.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
MyGameLib.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
Main.cpp
c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h(40) : fatal error C1083: include ファイルを開けません。'objbase.h': No such file or directory
306デフォルトの名無しさん:2008/05/05(月) 23:16:53
デバッグ?コンパイルじゃなくて?
307デフォルトの名無しさん:2008/05/05(月) 23:17:31
そのパスに、d3d9.hは実際にあるの?ないの?

パスはあるけど、ヘッダファイルだけないの?
それともパス自体ないの?
308デフォルトの名無しさん:2008/05/05(月) 23:40:39
>>306
デバッグボタンでコンパイルしてるというのでしょうか・・・?

>>307
あるとかないとか言われてもわかりません
インストールしてオプションでパス設定してデバッグしただけですから・・・
Microsoft DirectX SDK (August 2007)ファルダの中にはDeveloper Runtime Documentation Include Lib Samples Utilitiesフォルダがあります
309デフォルトの名無しさん:2008/05/05(月) 23:43:16
Windowsのパスもわからんのに、プログラム組むのは無茶だぜ…

c:\program files\microsoft directx sdk (august 2007)\include\d3d9.h
というファイルは、Windows上にファイルとしてきちんと存在してるの?
パス間違えてるんだと思うぜ?

半角スペースのあるなし
括弧の半角全角とか、きちんとやってみ。
310デフォルトの名無しさん:2008/05/05(月) 23:44:42
真性のゆとりだな
311デフォルトの名無しさん:2008/05/05(月) 23:52:45
3Dでキャラの髪の毛が動きに合わせて(自動計算で)フワってなるやつって、
動きの計算は自前でやるにしても、どうやってモデルから構造出して、計算してんのかなぁ
やったことある人いる?
312デフォルトの名無しさん:2008/05/05(月) 23:55:59
普通に自前でぼーん入れてノードを布シミュの応用で動かしてるだけじゃねーの大抵は
313デフォルトの名無しさん:2008/05/06(火) 00:02:41
d3d9のC/C++ヘッダーってファイルあります
314デフォルトの名無しさん:2008/05/06(火) 00:03:19
>>313>>309へレス
315デフォルトの名無しさん:2008/05/06(火) 00:46:22
objbase.h がないんだとさ。
PC内全検索して、objbase.hがあるか確認

あるなら、そこへもパス通せ。
ないならSDKの再インストール
316デフォルトの名無しさん:2008/05/06(火) 00:58:58
クロスシミュレーションの動きを、Xファイルにアニメーションとして取り込むことってできませんよね?
再生するだけで十分なのですが、Direct3Dでクロスシミュを簡易的に再生するのに適した方法はどんなのがありますでしょうか?
317デフォルトの名無しさん:2008/05/06(火) 01:12:24
>>315
C:\Program Files\Microsoft Platform SDK\Includeにあるみたいなんですがこれでいいんでしょうか?
318デフォルトの名無しさん:2008/05/06(火) 07:46:19
>>316
Xファイルを吐き出す側の3Dソフトに
クロスシミュのプラグインとか入れて、そのモーションで吐き出すが一番簡単


それとも自前でクロスシミュをDXで出来ていて、それをDX上でしたくてどうにか出来ない、
って事とは思えないが…一応…

前提としてD3DX関数でしかXファイル扱えないとかじゃないよね…
クロスシミュで求めた頂点で、モーフアニメーションでもすれば良いじゃん
319デフォルトの名無しさん:2008/05/06(火) 07:54:17
>>286
亀レスで申し訳ないが…

カメラ位置からA地点を結ぶベクトルA、カメラ位置からB地点を結ぶベクトルB

それぞれのベクトルA, Bを単位化して、その単位化したベクトルをAA, BBとする

AAとBBを結ぶベクトルCCを作って、そのCCの長さを任意に割合で分ける点DDを作る

カメラ位置とそのDDを結ぶベクトルが君の求めるカメラ注視点ベクトルだと思うが…
320デフォルトの名無しさん:2008/05/06(火) 08:25:59
質問させてください。
dxsdk_aug2007をインストール中に「This pre-release version of XAudio2 has expired please upgrade to tha latest version」と出るのですが、
そのままokをクリックしてインストールを終わらせていいのでしょうか?
321デフォルトの名無しさん:2008/05/06(火) 09:29:44
>>320
MSお得意のベータ版の時限装置が発動でもしてんじゃね?
xaudio2使うんじゃなければ問題無いと思うよ。
322デフォルトの名無しさん:2008/05/06(火) 09:37:46
MyGameLib.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 "void __cdecl playMovie(char const *)" (?playMovie@@YAXPBD@Z) で参照されました。
MyGameLib.obj : error LNK2019: 未解決の外部シンボル __imp__GetClientRect@8 が関数 "void __cdecl playMovie(char const *)" (?playMovie@@YAXPBD@Z) で参照されました。
D:\プログラミング参考サンプル\アクションゲームプログラミング\マスカットボーイ\ソースファイル\MuscatBoy\Debug\MuscatBoy.exe : fatal error LNK1120: 外部参照 21 が未解決です。
ビルドログは "file://d:\プログラミング参考サンプル\アクションゲームプログラミング\マスカットボーイ\ソースファイル\MuscatBoy\Debug\BuildLog.htm" に保存されました。






文字数制限にひっかかるので多少省きましたすみません
このエラーの解決策を教えてくださいお願いします
323デフォルトの名無しさん:2008/05/06(火) 10:02:45
関数宣言はあるのに実態が無いんだろ
324デフォルトの名無しさん:2008/05/06(火) 10:55:18
>>319
亀レスでも大変ありがたいです。
ただ、AAとBBを結ぶCCは直線なので、任意の割合で分けても「角度的に割合で分けた」ことにはならないと思います。
本当に角度的なものなら、DDはAAとBBを結ぶ「曲線」の上になければならないと思います。
325デフォルトの名無しさん:2008/05/06(火) 11:05:33
>>324
その通り
それよりなぜ極座標を使わないかを教えてくれ
326デフォルトの名無しさん:2008/05/06(火) 11:26:10
>>318
Xファイルから布部分を取り出して、自前でクロスシミュしてリアルタイムに描画ってのはできます。
これだと
・リアルタイムゆえ、色々な変化に柔軟に対応可能
・リアルタイムに計算するコストが必要
ですよね。

今回はキャラがきまったアニメーションしかしません。リアルタイムに計算しない方針です。

D3DXのXファイル再生サポートをD3DXAnimationControlerしか知らないのですが、
これが制御するのはボーンの動きだけですよね?
古典的クロスシミュの1つとして、布に大量にボーンを仕込んで…という方法がありますが、(D3DXを使った)Xファイル再生ではその方法しかないのかな?という疑問です。
327デフォルトの名無しさん:2008/05/06(火) 11:35:51
>>325
極座標を使うということは、一旦座標をatanなどを使って角度に直した方がいいということでしょうか?
AとBと0,0,0を含む平面を考え、その平面上でのAの角度(0度とすると計算しやすいか)と、Bの角度を求める。
という方法でしょうか?

また、今勉強中なのですがクォータニオンというものを使えば、望んでいることが簡単にできるのかとも思っているのですがどうでしょうか?
328デフォルトの名無しさん:2008/05/06(火) 11:48:14
>>327
角度で応用きかすなら角度に直した方が可読性が高いかと思って
思いついてたのはargとpolar

ごめんクォータニオンはよくわからない
329デフォルトの名無しさん:2008/05/06(火) 11:51:03
>>322
Platform SDKをインストールしていなければインストール。
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en

インストールしている場合、binとincludeとlibの優先順を確認。
ttp://forums.microsoft.com/MSDN-JA/rss.aspx?siteid=7&postID=1320640&forumID=188
330デフォルトの名無しさん:2008/05/06(火) 14:59:47
>>321
そうですか。
クリックしてみます。
ありがとうございました。
331デフォルトの名無しさん:2008/05/06(火) 15:54:51
>>324
AAとBBは単位化してるから、CCは二等辺三角形の底辺と同じなんだけど…
プロセスが必要で、結果が求まるだけじゃ駄目なのかね
332デフォルトの名無しさん:2008/05/06(火) 16:04:46
>>331
>>319だと角の2等分でしかうまくいかない
333デフォルトの名無しさん:2008/05/06(火) 16:10:04
>>328の訂正
そういや3次元だからargとpolarは使えないわw
>>327の通りです。
座標系変換の関数がなければ作ってみてもいいだろうし
334デフォルトの名無しさん:2008/05/06(火) 16:38:58
>>329
レスありがとうございます
ttp://forums.microsoft.com/MSDN-JA/rss.aspx?siteid=7&postID=1320640&forumID=188
このサイト通りにやったら>>322のエラー文は消えましたが新たにこのエラー文が出てきました
解決策を教えてくださいお願いします




LINK : fatal error LNK1104: ファイル 'd3d9.lib' を開くことができません。
335デフォルトの名無しさん:2008/05/06(火) 17:16:41
>>334
libの設定の先頭に↓は記述してる?
c:\program files\microsoft directx sdk (august 2007)\lib
336デフォルトの名無しさん:2008/05/06(火) 17:19:26
>>326
その条件なら
事前計算して、その結果をXファイルにフィードバックで良いかと

今あるか分らないが、サンプルにイルカのモデルがアニメーションするのがあって
(確か海底みたいな場所で…)
それが1Xファイルで、頂点モーフしてるフォーマットだったと思う
つまり、Xファイルは頂点モーフ出来るはずだよ

フォーマット調べて、任意のキーフレーム時の頂点情報を書き込めば
補間は確かスプラインとかリニアで種類がないけど、頂点モーフ出来るんじゃないかな

…メッシュの部分的なモーフをサポートしてるかは微妙
駄目なら駄目で、クロスシミュ適応部分だけ別ファイルにして、本体に自前で子供付けするとか
337デフォルトの名無しさん:2008/05/06(火) 17:22:28
>>335
レスありがとうございます
c:\program files\microsoft directx sdk (august 2007)\lib
これは一番上にあります
その下にPlatform SDKがあります
インクルードのdirectxも一番上にあります
その下にPlatform SDKがあります
338デフォルトの名無しさん:2008/05/06(火) 17:36:54
>>332
理解した、サンクス

>>327
ベクトル演算と3次元回転と内積でいけるような気がする

思いつきだけど
ベクトルA(どちらか)を、加算でも減算でもいいからXY成分を0にするベクトルAAを求め
AをZ成分のみにする( A(0,0,*)みたく )
そのベクトルAAをベクトルBにも適応( つまりベクトルAをZ軸とする座標へ変換 )
( 以降、その座標系の話で )

ベクトルBとXZ平面がなす角度を求め( ベクトルBからY成分をカットして作ったベクトルBBと内積で求める )
その角度でベクトルBをZ軸回転させ、ベクトルAとBをXZ平面にもっていく

ここで、XZ平面上でのベクトルAとBのなす角を求め、その角度を使って任意の比率角度を決めて
その角度で、ベクトルBを今度はY軸回転させたベクトルCを作る

最後にベクトルCを、ベクトルBBを作った逆の回転、座標変換した逆の計算をしてもどに戻せば…
スマートじゃないけど、こんな感じは?

339デフォルトの名無しさん:2008/05/06(火) 17:44:40
ムービーをWindowsXP/Vistaを対象に再生したいのですが
安定して使える関数が分からずに困っています。
現在ではどういった関数が使われているのでしょうか?
340デフォルトの名無しさん:2008/05/06(火) 17:45:55
>>338
スマートじゃなさすぎないか?w
それなら327の方法のままでいい気がするが
俺もやったことはないからツッコミだけですまんが、3Dシューティングのミサイルとかって毎フレーム相手の座標に向けて1度ずつ向きを変えるとか普通にやってそうだよな・・・
意外と方法確立されてないのか?
341デフォルトの名無しさん:2008/05/06(火) 17:50:53
>>340
自分でもスマートじゃないと思うが…

しかし、実際に327を行なう手順を記述しただけだと思うんだが
(オイラー法のみでクォータニオンを使わないで)
342デフォルトの名無しさん:2008/05/06(火) 18:09:32
>>336
それっておそらく
ttp://www.microsoft.com/japan/msdn/directx/welcome/dsmsdn/directx04162001.aspx
ですよね。確かに最初見たときかなり衝撃的でした。
でもこれは3つのXファイルのメッシュデータを、自前でモーフしてるっぽいです。

あと、DirectX9のサンプルの中にイルカのXファイルはあるのに、使用しているサンプルが見つからないのはなぜでしょうね・・・
343デフォルトの名無しさん:2008/05/06(火) 18:41:43
>>337
最後の「\x86」が足りなかったか。
c:\program files\microsoft directx sdk (august 2007)\lib\x86

このフォルダと、フォルダの中にd3d9.lib等一式が存在することを確認。
344デフォルトの名無しさん:2008/05/06(火) 18:57:07
>>343
レスありがとうございます
c:\program files\microsoft directx sdk (august 2007)\lib\x86
この設定にしたら>>334のエラー文はなくなりましたがまた>>322のエラー文が出てきました
解決策を教えてくださいお願いします
345デフォルトの名無しさん:2008/05/06(火) 19:09:29
>>344
#include <windows.h>呼んでないとか・・・w
346デフォルトの名無しさん:2008/05/06(火) 19:16:56
>>345
レスありがとうございます
もう少し詳しくお願いします
それだけだとちょっと分かりません
すみません
347デフォルトの名無しさん:2008/05/06(火) 21:04:11
>>346
その部分はもはやDirectXとは関係無いエラーだ
おそらく環境のインストールに失敗している
あとは汎用の初心者質問スレへ行った方がいい
これ以上だとスレ違いということで叩かれるよ
348デフォルトの名無しさん:2008/05/06(火) 22:15:53
すみません、DirectX上で動くゲームを作成してるんですが、
あるモーションのキーフレーム数を調べたいんです。
(無駄にキーフレームの多すぎるモーションはリダクションをしたいんです)

LPD3DXANIMATIONSETのGetNumAnimationsがそれ用の関数だと思ったんですが
どうもボーン配列の数を返しているみたいで・・・。
どうすればキーフレーム数を調べる事が出来るんでしょうか?
349デフォルトの名無しさん:2008/05/06(火) 22:40:12
すみません、Visual C++ 6.0でDirectXのXファイル読み込みをプログラムしたのですが
上手くいきません。ビルドには成功したのですが、実行してもすぐに終了してしまいます。
SDKはDirectX 9.0 Update summer 2003を使っています。
デバッグ内容も下記に記載します。分かる人、教えて下さい、宜しくお願いします。
350デフォルトの名無しさん:2008/05/06(火) 22:42:52
'ntdll.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\kernel32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\user32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\gdi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3d9.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3d8thk.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\msvcrt.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\advapi32.dll' をロードしました、合致するシンボル情報は見つかりませんでした
351デフォルトの名無しさん:2008/05/06(火) 22:44:37
'C:\WINDOWS\system32\rpcrt4.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\secur32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\version.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\winmm.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\dinput8.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\imm32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\lpk.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\usp10.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\uxtheme.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\MSCTF.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\Downloaded Program Files\CnsMin.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\shlwapi.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\imagehlp.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
352デフォルトの名無しさん:2008/05/06(火) 22:45:10
単純にループ書いてなくて一回素通りして終了するプログラムになってるとかじゃないよね?
353デフォルトの名無しさん:2008/05/06(火) 22:45:13
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\MSCTFIME.IME' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ole32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17W.IME' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\shell32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17DE.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ATOK17AE.DLL' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\comctl32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\Program Files\Trend Micro\Virus Buster 2007\TMAS_OE\TMAS_OEHook.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\hid.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\setupapi.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\wintrust.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
354デフォルトの名無しさん:2008/05/06(火) 22:45:54
'C:\WINDOWS\system32\crypt32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\msasn1.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\ntmarta.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\wldap32.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\samlib.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
'C:\WINDOWS\system32\d3dxof.dll' をロードしました、合致するシンボル情報は見つかりませんでした。
スレッド 0xF2C 終了、終了コード 0 (0x0)。
プログラム 'H:\CLUB SEE\3Dチェス\my3dlib\Debug\my3dlib.exe' はコード 0 (0x0) で終了しました。
355デフォルトの名無しさん:2008/05/06(火) 22:46:03
ググレカス
356デフォルトの名無しさん:2008/05/06(火) 22:49:20
もはや荒らし
VisualStudio使ってるなら、ブレークポイントで止めて一行ずつ実行してけカス
357デフォルトの名無しさん:2008/05/06(火) 23:13:01
mviewでXファイルを開いた時、アニメーションのリストがメニューの
Animation > Animations の下に最大50個現れると思うのですが、
Xファイルを開いただけだと何故か現れません。

Add Animationで追加オープンすると、最初に開いたXファイルのアニメーションと、追加で開いたXファイルのアニメーションが両方現れるのですが…
AddAnimationせずに、最初に開いたXファイルのアニメーションを表示する方法はありませんか?
358デフォルトの名無しさん:2008/05/06(火) 23:25:14
>>347
レスありがとうございます
インストール時にエラー文はでなかったんですけどねぇ・・・
359デフォルトの名無しさん:2008/05/06(火) 23:28:45
パスも通せない馬鹿は死んでいいよ
360デフォルトの名無しさん:2008/05/07(水) 00:37:22
>352
ループには問題なさそうですね。

>356の言う通りにしたら解決したわ、もっともブレークポイントなど使わずに
一行ずつ実行していったがな。ヒントありがとよカス。
361デフォルトの名無しさん:2008/05/07(水) 02:13:27
>>359
お前が死ねキモデブ
362デフォルトの名無しさん:2008/05/07(水) 03:13:11
みなさーん
池沼には優しくしてあげましょう
社会のゴミですが同じ人間です
363デフォルトの名無しさん:2008/05/07(水) 04:22:37
ttp://www.imgup.org/iup605620.jpg.html
コンパイル中↑こういうのが出た後に下みたいに「シンボルが読み込まれていません。」が大量に出るんですけどどうしたら出なくなりますか?

'MuscatBoy.exe': 'C:\WINDOWS\system32\ntdll.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\kernel32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\user32.dll' を読み込みました。シンボルが読み込まれていません。
'MuscatBoy.exe': 'C:\WINDOWS\system32\gdi32.dll' を読み込みました。シンボルが読み込まれていません。
364デフォルトの名無しさん:2008/05/07(水) 05:07:45
363は自己解決しました
365デフォルトの名無しさん:2008/05/07(水) 06:06:15
>>364
どうやったら解決したの?
原因は?
もう一回>>1を読んでね。
366デフォルトの名無しさん:2008/05/07(水) 14:52:25
>>365
自己解決の場合は誰に礼を言うの?w
367デフォルトの名無しさん:2008/05/07(水) 14:54:12
>>360
ヒントもらえたんだから感謝せぇよアホ
合致するシンボル情報は見つかりませんでしたってのは、
「デバッグ用にDLLを読み込んだが、特に必要な情報は無かった」
とかの意味だ。(厳密には違うかもしれんが)

それはデバッグ実行すると当たり前に出る内容であって、
そんな大量の、何の問題もない(かつDirectX無関係)の内容を貼り付けたら
荒らしとか言われても仕方無い。
368デフォルトの名無しさん:2008/05/07(水) 15:49:17
質問です
Xファイルを使ったモデルにマルチテクスチャを行ないたいのです
例えば地面に見た目用のテクスチャーと、バンプ用のテクスチャーを適用したいと思っています。

ただ、Xファイル系のサンプルを見る限りテクスチャーを2つ使うことは想定外のように見えました。
カスタムテンプレートという仕組み上、自前でそういうXファイルは作れそうですが、3DモデラーがそういうXファイルを吐いてくればれば(あまり)意味がありません。

マルチテクスチャなXファイルというのは一般的ではないのでしょうか?
LWを使ってXファイルを吐いているのですが、もし良い方法があれば教えていただけると幸いです
369デフォルトの名無しさん:2008/05/07(水) 16:24:58
ピクセルシェーダーで合成すればいいんじゃじゃね?
370デフォルトの名無しさん:2008/05/07(水) 19:17:02
今頃DirectX10のサンプルみたら、三角形ポリ描画するだけでシェーダー必要とかXファイルがサポートされてないとかアホか。
DirectX使うのは思いついたゲームをちゃちゃっと作りたいからなのに、生産性下げてどうする・・・

371デフォルトの名無しさん:2008/05/07(水) 20:28:33
質問です
頂点ブレンディングはDirectXの機能で実装するのと
頂点シェーダで実装するのとでは、どちらが一般的ですか?
372デフォルトの名無しさん:2008/05/07(水) 21:52:57
>>371
調査統計をとるようなマーケティング能力や、
規格を立ち上げる権限をもった人間がいるわけでもないのに、
そんな不確定な情報を誰とも知らない人間に聞くその意図を明確にせよ。

ロボットのように命令が無ければパンツもはけないというのなら、
一般的かどうかを聞くより、最初からあらゆる事を指示してと言えばいい。
373デフォルトの名無しさん:2008/05/07(水) 22:50:41
>>372 答えてやれよ。あんたは業界人なのけ?
374デフォルトの名無しさん:2008/05/07(水) 23:05:41
まずは一般的という基準を明確にすることから始めないといかんだろ。
375デフォルトの名無しさん:2008/05/07(水) 23:08:23
聞き方が不味かったのかな?
ここの人たちはどっちでやってますか?と言う聞き方ならまだ良かったとか?
376デフォルトの名無しさん:2008/05/07(水) 23:10:29
人それぞれ
377デフォルトの名無しさん:2008/05/07(水) 23:11:53
ターゲットマシンによるべ
あくまで古いマシンでも動かしたいなら頂点シェーダ使うのはきびしいんじゃね?
378デフォルトの名無しさん:2008/05/07(水) 23:12:24
おまえら意地悪ですね
俺はこうしてるってだけでもいいんじゃないの
379デフォルトの名無しさん:2008/05/07(水) 23:18:02
そもそもシェーダを利用するのはDirectXの機能とは言えないのか?
シェーダを利用するしないに限らず、ハードが対応していなければ、
DirectX側がエミュレーションするし、していなければハードが処理するだけで、
データを渡すのはDirectXが処理していると言える。
380デフォルトの名無しさん:2008/05/07(水) 23:20:17
行間から固定機能パイプラインorシェーダと読めたんだが違うのかな?
381デフォルトの名無しさん:2008/05/07(水) 23:20:18
つまりDirectXではなくOpenGLからシェーダを利用するかどうかという話なのだろう。
382デフォルトの名無しさん:2008/05/07(水) 23:34:58
どちらが一般的かと言われれば固定機能パイプラインだろう
なぜならそれしかなかったから
だが、いずれ消え行く技術をいまさらやってもだし
シェーダーでやっといたほうが後々まで使えるんでね?
383291:2008/05/08(木) 00:04:46
仕方が無いのでDXUTの解析から始めようと思います。
(解析して光明が見えてくればいいのですが・・・)
384デフォルトの名無しさん:2008/05/08(木) 00:51:33
馬鹿はシェーダーを使えない。それだけ。
385デフォルトの名無しさん:2008/05/08(木) 01:43:58
頂点ブレンドってスキンメッシュとかのことよね?
だとしたら、一般的とかいうより色んな制約で変わってくるんじゃね?
・自前形式ではなくXファイルを使うなら、D3DXのスキンメッシュサンプルと
 同じ方法が使える
・でもそのやり方だと行列パレット使うので関節のSLERPが出来ない(LERPになる)
 そこらへんにこだわると、必然的に自前コードで広げることになる
・でも固定機能パイプラインの行列パレットは、最近のビデオカードではほとんど
 ハードウェアサポートされてない(ソフトウェア頂点処理に頼ることになる?)
・頂点シェーダで計算する場合、シェーダ3.0までは定数レジスタが256しかないので
 1ボーンあたり3レジスタ(SLERPなら2で足りるが)だとすると80ボーンしか使えない
俺がやった限りこういう事情が絡んで来たから、色々調べつつ
自分のやりたいことと照らし合わせてたら必然的にやり方は決まるよ。
386デフォルトの名無しさん:2008/05/08(木) 09:04:59
DirectX9使ってるんですけど
ID3DXEffect::SetTexture とか ID3DXEffect::SetFloat って
コスト高いんですかね?
ループの内側で使っちゃダメかな?
387デフォルトの名無しさん:2008/05/08(木) 10:13:12
>>371
頂点シェーダでやるのが良いと思うよ
まず、ソフトウェアエミュで頂点シェーダを行なってもそれほど重くないのが1つ。
ブレンド可能数が頂点シェーダのほうが融通利くのが1つ。
他の頂点シェーダエフェクトと一緒に利用できるのが1つ。

固定パイプラインでハードウェア処理の頂点ブレンドやるとバグるグラボが少なからずある
(ドライバアップデートすればなおるんだけど、ユーザーは必ずしも…ね)
だから私は頂点シェーダ+ソフトウェアエミュ派
388デフォルトの名無しさん:2008/05/08(木) 10:22:30
>>385
横槍で質問

・頂点シェーダで計算する場合、シェーダ3.0までは定数レジスタが256しかないので
 1ボーンあたり3レジスタ(SLERPなら2で足りるが)だとすると80ボーンしか使えない

これって、1頂点へ影響するボーンが最大80って意味?
それともモデル全体を通して80ボーンが限界って意味?
389デフォルトの名無しさん:2008/05/08(木) 12:41:17
必要に応じて分離すりゃいいだけ
390デフォルトの名無しさん:2008/05/08(木) 13:11:36
DrawPrimitive1回に対して80ボーンが限界って事。
D3DXMesh関係だと其処を考慮してDrawPrimitiveを何回かに分けて256本までのボーンに対応できるようになってるだろ。
391385:2008/05/08(木) 17:00:17
うん、説明不足だったけど1回の描画では、ってこと。
>>390みたいにすれば確かに制限は無くなる。
自分はやってないからわからんけど、
事前に頂点のリンクと面の接続を考慮してメッシュを分割しておけばいいかと。
392デフォルトの名無しさん:2008/05/08(木) 17:18:49
ミス、>>389みたいにすれば。
D3DXMeshが自動で何かやってくれるのは知らない
393デフォルトの名無しさん:2008/05/08(木) 17:25:41
うわ、最近D3D始めたばっかりなんだけど、スキンメッシュってそんなに定数レジスタ使ってるなんて気づいてなかったw
D3Dのサンプル様様だなぁ…
ちゃんと26ボーン毎に分割して、正常に表示できるように調整されてるっぽ
(サンプルのSkinnedMesh)
394デフォルトの名無しさん:2008/05/08(木) 19:56:39
アプリが終了すると
Direct3D9: (ERROR) : [0] : Address 04F1E4CB
Direct3D9: (ERROR) : [1] : Address 04F1E59B
Direct3D9: (ERROR) : [2] : Address 04F1E440
Direct3D9: (ERROR) : [3] : Address 0501CCA5
Direct3D9: (ERROR) : [4] : Address 05023345
Direct3D9: (ERROR) : [5] : Address 05002898
Direct3D9: (ERROR) : [6] : Address 05016E13
Direct3D9: (ERROR) : [7] : Address 00486437
Direct3D9: (ERROR) : [8] : Address 00474CBE
Direct3D9: (ERROR) : [9] : Address 004770CA
Direct3D9: (ERROR) : [10] : Address 7C23ABCC
Direct3D9: (ERROR) : [11] : Address 7C23B209
Direct3D9: (ERROR) : [12] : Address 7C235CC1
Direct3D9: (ERROR) : [13] : Address 7C22FF89
Direct3D9: (ERROR) : [14] : Address 7C22F067
Direct3D9: (ERROR) : [15] : Address 7C22EFDE
が複数行

みたいなデバッグログ(OutputDebugStringで書けるやつ)でるんだけど
何が悪いんですか?

あと、m_pd3dDevice->GetRenderTargetで取得したやつは、
Releaseすべきですか?
395デフォルトの名無しさん:2008/05/08(木) 20:00:30
ワンスキンしか作れないとかいうウンコモデリングソフトに当たったら最後w
なんでもかんでもすべての頂点に影響与えるとかギャグですか?w>某会社の自作モデリングツール

 捨 て ち ま え よ ! (中小害虫社員(28歳♂))
396デフォルトの名無しさん:2008/05/08(木) 20:01:03
同い年ですね。
わかります。
397デフォルトの名無しさん:2008/05/08(木) 20:14:45
>>395マ板でぶちまけろ
398デフォルトの名無しさん:2008/05/08(木) 20:16:24
371です
ありがとうございます
とりあえず頂点シェーダでやってみます
399デフォルトの名無しさん:2008/05/08(木) 21:18:32
>>395
DrawPrimitiveが減らせるので逆に高速化することが可能な場合も多々。
たとえばロボットみたいなものをパーツ毎にDPするよりは、ウェイト仕込んで
ボーンでドーンと1回のDPで描く方が実は速い。
400デフォルトの名無しさん:2008/05/09(金) 00:29:29
>>395
せめてそのウンコモデリングソフトが何か書いてくれないと
401デフォルトの名無しさん:2008/05/09(金) 04:47:40
>>399
言い訳にしか聞こえないw
402デフォルトの名無しさん:2008/05/09(金) 06:45:56
どう考えてもボーンとかよくわかってない人がとりあえず
頑張ってみました的臭いするやんか?
403デフォルトの名無しさん:2008/05/09(金) 10:28:23
>>401
昨今のグラフィックカードでは常識
404デフォルトの名無しさん:2008/05/09(金) 14:53:11
スキニングの計算をCPUでやることになるから
グラフィックカードあんまり関係なくね?
405デフォルトの名無しさん:2008/05/09(金) 15:13:41
ボーンを使おうが使うまいが階層のマトリックス演算は結局行なう。

そのマトリックスをWorldとして頂点シェーダーで計算するか、
スキン用のマトリックスとして頂点シェーダーで計算するかの違いだろ。

ボーンの場合Offset用の演算が加わるが、
DrawPrimtiveのコールはマトリックスの乗算とは比較にならないくらい重い。

スキンの処理までCPUでやるっつーなら話は別だけどDirectX7でやってるわけじゃないっしょ。
406デフォルトの名無しさん:2008/05/09(金) 15:29:43
スキンの処理までCPUでやるようにしないと、この輪郭線抽出はできませんよね?
ttp://www.twin-tail.jp/contents/vsdx8/d3d/011/index.htm
407デフォルトの名無しさん:2008/05/09(金) 16:08:51
>>406
DirectX7世代でやるならそうなる。

それ以上ならもっとよい方法が存在する。
408デフォルトの名無しさん:2008/05/09(金) 20:43:33
>>407
よかったら輪郭線抽出について情報いただけませんか

Zバッファの差を見る方法や、マテリアル境界を見る方法、モデルをちょっと太らせて裏返して黒描画する方法など色々調べましたが
406のURL先ほどまで「正確」で「自在な太さ」にできる術が見つかりませんでした
409デフォルトの名無しさん:2008/05/09(金) 21:35:32
トゥーンレンダリング
410デフォルトの名無しさん:2008/05/10(土) 02:49:05
>>406のは
希望をこめて絵を修正してるって書いてあるやん
411デフォルトの名無しさん:2008/05/10(土) 03:21:23
>>408
そこまで知りたいなら金だせよ
412デフォルトの名無しさん:2008/05/10(土) 10:46:29
>>408
自分で答え書いてるじゃん。
深度バッファやマテリアルの境界を輪郭検出のアルゴリズムで線を引けばいい。
その場合1ドットのラインしか引けないわけだが、
1ドットのラインを別のバッファに書いてそのバッファを上下左右にずらして
もう1度書くと太くなるというのはわかるかい?
413デフォルトの名無しさん:2008/05/10(土) 21:09:08
>>412
もちろんその手の「太くする」方法はわかりますが、
深度バッファ法はちょっとひいったアゴのような、深度差が浅い部分に輪郭線が出ません
マテリアル法でも同様です。

モデルをちょっと太らせて裏返す法や、406のURL先のものほど「正確な」ものはなかなかありません。
414デフォルトの名無しさん:2008/05/10(土) 21:42:40
内積が正か負で判断して線引く>>406のをシェーダでかけば同等の正確さじゃないの?
415デフォルトの名無しさん:2008/05/10(土) 21:57:07
○輪郭線アルゴリズム
確かに>>406のものが
最も正確でキレイに作れそうなので、
>>406を主にすべきだな。

○ジオメトリ操作は、なるべくGPUでやりたい。
1パス目:D3DFILL_SOLIDで描画
2パス目:D3DFILL_WIREFRAMEで描画

この2パス目を、先のアルゴリズムで
輪郭線のみ描かれるようにすればいいんじゃないの。

○線の太さは任意に変更したい。
これは、2パス目を>>412の方法で太くすればいいんじゃないの。
416デフォルトの名無しさん:2008/05/10(土) 22:00:03
>2パス目:D3DFILL_WIREFRAMEで描画
>
>この2パス目を、先のアルゴリズムで
>輪郭線のみ描かれるようにすればいいんじゃないの。
書いてから気付いたけど、これはちょっと難しいかなぁ
417デフォルトの名無しさん:2008/05/10(土) 22:03:56
>>414
頂点シェーダで線を引くことはできないと思いますけど…

>>415
その方法ですと、やはりアゴなどに輪郭線を出すことができませんよね。
418デフォルトの名無しさん:2008/05/10(土) 22:05:38
>>406のものと同等の正確さというのはかなり難しいなぁ…
GPUを使ったものは、やはり速さ優先で作られてるし
419デフォルトの名無しさん:2008/05/10(土) 22:07:33
うるせえ!!!
420デフォルトの名無しさん:2008/05/10(土) 23:26:00
「自在な太さ」というのが>>406だと結構難しいはずなので(あと処理がキツイだろこれ)
結局のところ割り増しモデルを裏返し手法に落ちついちゃうんだよなぁ。
精度は落ちるけど、押し出す頂点位置を距離によらず一定になるように頂点シェーダで
調整すればそれなりの見栄えにはなる。
421デフォルトの名無しさん:2008/05/10(土) 23:31:03
>>420
I3DXLine使えば太さは楽勝じゃね?
頂点データをもとに自前で線引いてるんだから
422デフォルトの名無しさん:2008/05/10(土) 23:46:00
>>421
使ったことないので知らんが、あれでは太くなったら普通に線の一部が元モデルにめり込むか、
Z値を考慮せずに描画されるならなおさらこの手法には使えないのでは?

一ドットの線ならZバイアス使わんでも自前で射影行列なり弄れば>>406の「理想」の線は描画できるが、
それ以上の太さになるとポリラインで表現することになり、そうなればどこまで線のZ値を前に押し出せば
元のモデルと重ならずに描画できるかは簡単には見積もれないはずだ。
423デフォルトの名無しさん:2008/05/11(日) 09:25:17
>>422
ああ、ごめん。モデル側にめり込むのはご法度って考えだったのね。
俺は太さ3までだったら、モデルに1ドットめり込むだけだから別にいいやって思ってたもんで

>一ドットの線ならZバイアス使わんでも自前で射影行列なり弄れば>>406の「理想」の線は描画できるが、
よかったらこのあたり、詳しく解説してくれないか
424デフォルトの名無しさん:2008/05/11(日) 17:38:11
法線方向にプッシュして裏返すのって、特許取ってなかったっけ?
425デフォルトの名無しさん:2008/05/11(日) 21:26:54
ちょっとD3DFILL_WIREFRAMEが話題にあがったから試してみたんだが
D3DFILL_WIREFRAMEにしてもD3DFILL_SOLIDと描画時間が一緒だったんだが…
何かの間違いだろうか?
PixelShaderの呼び出し回数が段違いだと思うのに…
426デフォルトの名無しさん:2008/05/11(日) 21:46:10
なら頂点シェーダーかCPUがボトルネックなんだろ。
たいした量描画してるわけじゃないなら大抵CPUがネック。
427デフォルトの名無しさん:2008/05/11(日) 21:51:10
質問です

今、PixelShaderを使う描画を学んでおり、自分のメインPCでは正しく動作しました。
試しにと、PixelShaderに対応していない(1.0にすら対応していない)古いサブマシンに持っていって動かしたところ、正しく動いてしまいました。
ここで疑問なのですが、何故正しく動いてしまったのでしょうか?

どうやら
PixelShader = compile ps_1_1 PS();
と書いた部分が、メインPCだと正しく適用されるが、サブPCだと無視され固定パイプライン(という呼び方でOK?)のPixelShaderにより描画されているっぽいです。

これはHLSLの仕様なのでしょうか?
てっきりHLSLのコンパイルエラーとなり、fxファイルのロードに失敗するかとふんでいたのですが…
428デフォルトの名無しさん:2008/05/11(日) 21:53:26
補足です。

>ここで疑問なのですが、何故正しく動いてしまったのでしょうか?
の時点では、書いていたPixelShaderが固定パイプラインのそれと同等だったため「正しく動いているように見えた」のです。
ためしにPS()内で必ず「黒」を返すようにしたところ
・メインPCでは正しく黒を
・サブPCでは通常通りの描画を
したため「サブPCではPS()が無視され、固定バイプラインのPixelShaderが呼ばれている」と判断したのです。
429デフォルトの名無しさん:2008/05/11(日) 21:55:50
>>426
どうやらボーンによる頂点変換(ソフトウェア処理)がボトルネックだったっぽ
すまん
430デフォルトの名無しさん:2008/05/11(日) 22:36:13
確かに俺の環境も
PS2.0世代のGPUのくせに
PS3.0コンパイルのShaderが
HWで動いているな。
多分これは、PS2.0に対応とか3.0に対応ではなく
2.0、3.0で追加された機能に対応しているという話だろう。
ただアンタの言うPSの代わりに固定機能が動くというのはないな。
勘違いだろ。
431デフォルトの名無しさん:2008/05/11(日) 23:16:43
対応してなくても動作はするけど
対応してないPCじゃコンパイルはできないよね
あとピクセルシェーダーの動作って
コンパイルしたマシン(のGPU?)に依存してる?
家のPCでテストした実行ファイルを仕事場のPCで動かすと
家のPCと同じ動作するけど
コンパイルしなおすと動作が変わったりする
432デフォルトの名無しさん:2008/05/11(日) 23:29:40
>>430
お返事ありがとうございます。

>ただアンタの言うPSの代わりに固定機能が動くというのはないな。
うーん、どういじっても
PixelShader = compile ps_1_1 PS();
の PS()の中身は無視されてしまいます。

float4 f = {1.0f, 1.0f, 1.0f, 1.0f}
return f;

という単純なPS()の中身ですら、メインPCだと正しく真っ白になり、
サブPCだとPixelShader = compile ps_1_1 PS();の宣言がないがごとく振舞います。

エフェクトは
D3DXCreateEffectFromFile
でロードしています。
433デフォルトの名無しさん:2008/05/11(日) 23:34:51
D3DXが気を利かせてくれてるのかねぇ・・?
PS非対応環境なんてもはや持ってないから、アドバイスできん。すまん
434デフォルトの名無しさん:2008/05/12(月) 03:39:42
なんもエラー出てないの?
435デフォルトの名無しさん:2008/05/12(月) 15:10:21
何もエラーでないですね…。
ただ、ReleaseビルドのEXEファイル生実行ですので、次はサブPCのVC6.0上でDebug実行し、D3DXのログ出力を見てみます。
家に帰るのは夜です

正直質問した時は、あっさり
「PSが無い環境では、compile ps_1_1 PS(); って記述は無視されて、固定パイプラインとして実行されるよ」
とかくるかと思っていたのですが…
436デフォルトの名無しさん:2008/05/12(月) 22:44:35
435です。
やはり特にエラーメッセージもなく、単にスルーされているだけっぽい動作です。
どなたか心当たりあるかたいらっしゃいませんかー?

仮説
PixelShader = compile ps_1_1 PS();
などは、動作環境のサポートバージョンが、コンパイル指定したバージョン未満の場合は
(エラーを出さず)変わりに固定パイプラインを呼び出す
437デフォルトの名無しさん:2008/05/12(月) 23:55:38
>>436
はじめにサポートバージョンってわからないっけ?CAPSで
つか、何がしたいんだっけ?
438デフォルトの名無しさん:2008/05/13(火) 00:35:14
>>436
それ固定昨日と頂点定義が一致してないとランタイムで死ぬだろ
439デフォルトの名無しさん:2008/05/13(火) 09:47:00
>>437
やりたいことというより、こういう動作をするものなの?という疑問を解決するのが目的ですね。
CAPSでシェーダのバージョンはとれるので、意図しない動作を起こさないようにバージョンではじくことは可能ですね。

>>438
ちょっといまいちわかりませんが、頂点シェーダでの出力定義が「(固定パイプライン的に)普通」じゃないとランタイムエラーになるということでしょうか?
そもそも頂点シェーダでは「普通」じゃない出力はできないと思っていましたが違うのでしょうか?
(だから計算結果とかを、使ってないテクスチャーUVの中に入れるとかでごまかして渡す)
とりあえず、そんなことをしている場合は描画がしっちゃかめっちゃかになりそうですね。
440788:2008/05/13(火) 17:48:16
directXのAppwizardってVC++6の時代のものですか?
UPdate Summer2003(v9.0b)では,CD3DApplicationという汎用クラスが
あったのに最新バージョンではなくなっています.
その代わり,DXUTというフレームワークがふんだんに使われています.

directXのバージョンによってプログラミングテクニックがころころ変化して
いるように見えるんですけど(1〜2年前の参考書が最新バージョンと大きく
食い違っている),いったいどのバージョンを勉強したらお得なんでしょうか?
小生,これからdirectXを勉強しようというものです.

やっぱり,最新バージョンでSDKを使ってシコシコ書くのがベストでしょうか?
MFCのdaialogベースでdirectxを使ってみたいのですが.

あと,DXUTを解説している本やサイト(英語でも可)があったら教えてください.
441デフォルトの名無しさん:2008/05/13(火) 18:29:35
ttp://www.kohgakusha.co.jp/books/detail/978-4-7775-1272-0
これとかか?

ただし、DXUTの仕様はSDKのバージョンごとに変わってたりするんで
そのまま使えるかどうかはしらね
442デフォルトの名無しさん:2008/05/13(火) 19:48:34
>>441

ありがとうございます。早速、購入してみます。
443デフォルトの名無しさん:2008/05/13(火) 20:05:47
ID3DXLineって便利だけど
遅いの?
444デフォルトの名無しさん:2008/05/13(火) 23:29:46
>>439
例えば、自分が固定パイプラインと同じ機能をシェーダ使って実装するとしてどうなる?って話じゃねぇの
445デフォルトの名無しさん:2008/05/14(水) 23:19:22
シェーダの質問なのですが、
D3DFMT_R16FやD3DFMT_A8のように4要素のないテクスチャで
float4でtex2Dを取得した場合zやwはどんな値になるのでしょうか?
不定なのか、0が入るのか、前の値が保持されたままなのか、など教えていただけると助かります。
446デフォルトの名無しさん:2008/05/15(木) 00:14:53
ドキュメントくらいはちゃんと嫁。
float4(0, 0, 0, 1)に対して渡された要素が上書きされるイメージ。
447デフォルトの名無しさん:2008/05/15(木) 00:28:16
>>446
ありがとうございます。
ドキュメントの探し方が甘かったようです。申し訳ありません。
448デフォルトの名無しさん:2008/05/15(木) 18:07:18
http://www.geocities.co.jp/SiliconValley-Oakland/9582/GamePrg/JoyTest.lzh
のexeを実行するとちゃんと動くんだけど、ソースをVC++2008で、コンパイルするとうまく動かない。

どうも、lpDIJoyDev->QueryInterface でfalseが返ってるみたいだけど、どこ修正すればよい?

449デフォルトの名無しさん:2008/05/15(木) 19:39:30
>>448
PCに入ってるSDKのバージョンがそのソースの想定したSDKの
バージョンとあってないとコンパイルできないよ
450デフォルトの名無しさん:2008/05/15(木) 20:46:38
ごめん、コンパイルは通るけどオリジナルと挙動が違うってこと。。
451デフォルトの名無しさん:2008/05/15(木) 20:50:07
引数とかも違うだろ?
452デフォルトの名無しさん:2008/05/16(金) 12:45:26
>>450
exeがなかったので違いがわからないけどソースからビルドしたやつも普通に動作してるよ
挙動が違うとは具体的に何が違うの
453デフォルトの名無しさん:2008/05/16(金) 16:21:26
質問です。
Radeon 9600 series AGP 128MB(ドライバは ttp://ati.amd.com/support/drivers/2k/radeonx-2k.html )の環境にて、かなりおかしな挙動をしています。(OSはWindows2000)
何か情報ありませんでしょうか。
なお、その他の環境3個所くらいで試してみましたが、特に問題は見られませんでした。

・テクスチャーの表示がおかしい
256x256サイズのテクスチャーを10枚程度読み込んだあたりから、一部のテクスチャーの表示がおかしくなります。
テクスチャはD3DXCreateTextureFromFileで読んでいます。
テクスチャーが張られているモデルは、Xファイルで読み込んだ板ポリや、立方体などの単純なものです。

テクスチャーが張られているところが全体的にRGB(0,255,0)な感じに色になり、ほんのちょっとだけ元のテクスチャーの名残が見られるような、なんともバグった感じになります。
読み込むテクスチャーの数を減らすと、さっきバグって表示されていたものも綺麗に表示されます。
描画はプログラマブルシェーダを使わず、固定機能のものです。

・固定シェーダの挙動がおかしい
pDev->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_CURRENT);
pDev->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_TEXTURE);
pDev->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
pDev->SetTextureStageState(1, D3DTSS_COLORARG1, D3DTA_CURRENT);
pDev->SetTextureStageState(1, D3DTSS_COLORARG2, D3DTA_TEXTURE);
pDev->SetTextureStageState(1, D3DTSS_COLOROP, D3DTOP_MODULATE);

と設定しているのですが、
pDev->SetTexture(0, NULL);
pDev->SetTexture(1, pTexture1);
としたとき、pTexture1の色が乗算されません。

pDev->SetTexture(0, pTexture0);
pDev->SetTexture(1, pTexture1);
ではきちんと両方の色が反映されるようです。

Radeon 9600は比較的新しいボードですし、むしろ超古いGeForce2MX400とかではまともに表示されます。何か原因が思い当たる方いらっしゃいますでしょうか。
454デフォルトの名無しさん:2008/05/16(金) 16:37:56
伝説巨人RADEON
455デフォルトの名無しさん:2008/05/16(金) 16:52:15
使い方がおかしい
456デフォルトの名無しさん:2008/05/16(金) 17:01:16
>>455
どこか、>>453の中に使い方がおかしいことを示す情報があったでしょうか?
ご教示願えればありがたいです
457デフォルトの名無しさん:2008/05/16(金) 17:14:54
ATIとnVIDIAの違いなんじゃね
458デフォルトの名無しさん:2008/05/16(金) 17:43:47
>>453の追加情報です。

pIDirect3D9->CreateDevice(adapter, D3DDEVTYPE_REF, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING | D3DCREATE_MULTITHREADED, ¶m, &pDevice);
REFモードならバグりようがあるまい。と思って試してみようとしたのですが、
RADEON環境だとこの生成に失敗しました。

…RADEONというものは、思いのほかDirect3Dと相性が悪いのでしょうか?
459デフォルトの名無しさん:2008/05/16(金) 19:18:00
>>453
SetTexture(0, NULL)してるのに、ステージ0でテクスチャ参照したら駄目だろう。

When a texture stage has D3DTSS_COLORARG1 equal to D3DTA_TEXTURE and
the texture pointer for the stage is NULL, this stage and all stages after it are not processed.

ARG1にD3DTA_TEXTUREをしておいて、テクスチャにNULLを設定するとそのステージ
以降が無効になる仕様だが、ARG2については何も書かれていないので未定義かも。
460デフォルトの名無しさん:2008/05/16(金) 19:27:31
>>459
なるほど。ARG2がテクスチャ、かつNULLなときに後のテクスチャを参照してくれていたのは
GeForceが「たまたま」そう定義していたからであったわけですね。
気をつけます。

ちなみにそこに気をつけるよう改良してみましたが、1番目の「・テクスチャーの表示がおかしい」は相変わらずです。
461デフォルトの名無しさん:2008/05/16(金) 20:04:30
>>460
それもなんかおかしいんじゃねぇの?w
基本的にnVidiaのボードは確かに未定義や
おかしな部分を変な風に救っちゃう設定だからRADEONで開発したほうがいいぜ
俺も開発のときにnVidiaのボード使ってて苦労した
462デフォルトの名無しさん:2008/05/16(金) 20:16:19
>>459
知らなかったw
463デフォルトの名無しさん:2008/05/16(金) 20:24:29
固定シェーダの恐怖だな
nVidiaとその他一部のボードでは動くんだけど
それ以外ではうんともすんとも言わないとかいう状況がありえる恐怖
(納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw)
HLSL使うようになってからそういう苦労は一応消えた

固定シェーダ止めるとこの辺はグッと楽になる
464デフォルトの名無しさん:2008/05/16(金) 20:27:22
>(納期まで一週間とかいう状況ではじめてRADEONで動かして画面真っ黒になったときは血の気が引いたw) >
いやあああああああ
465デフォルトの名無しさん:2008/05/16(金) 21:05:12
>>461
なるほど、とりあえずRADEONの購入は検討してみます

>>463
それは血の気が引きそうですね
私も公開するゲームを作っているので、なるべくRADEONにも対応したいところです
全てHLSLで書くのも検討していますが、「・テクスチャーの表示がおかしい」の件は、HLSLを使った描画の部分でも発症しているので困ったものです…
466デフォルトの名無しさん:2008/05/16(金) 21:47:12
DirectXの勉強をはじめたいのですがもう固定機能パイプライン?は無視してHLSLとかプログラマブルな
シェーダーの勉強を始めたほうがいいのでしょうか?
467デフォルトの名無しさん:2008/05/16(金) 21:55:47
自分の開発環境がプログラマブルシェーダに対応しているなら、そっちのみでいいと思われる。
VertexShaderは最低でもソフトウェアエミュレートができるし、
PixelShaderにしてももう対応していないグラボなんて存在しないと思っていい。




でもオンボは対応してねーんだよなぁ('A`)
468466:2008/05/16(金) 21:58:34
MSのカンファレンスでもらったVS2008スタンダードにGe7900gs、OSはXPです。
固定機能はさすがにいいですかね。
469466:2008/05/16(金) 21:59:39
ありがとうございました。
470デフォルトの名無しさん:2008/05/16(金) 22:03:59
皆さんノートPCのことも考えてあげてください
もしくはこの世から全てのオンボードPCを破壊してくださいマジでもう
471デフォルトの名無しさん:2008/05/16(金) 22:15:54
>>452
vc++2008ではまんまではコンパイルとおらなかったので、DInput.cppの

63行目 ret = DirectInput8Create(hinst,DIRECTINPUT_VERSION,IID_IDirectInput8,(void**)&lpDInput,NULL);
115行目 ret=lpDInput->EnumDevices(DI8DEVCLASS_GAMECTRL,InitJoystickInput,lpDInput,DIEDFL_ATTACHEDONLY);

に修正してコンパイルとおしたんだけど、126行目がfalseを返してくるの。
472453:2008/05/16(金) 22:29:39
色々アドバイスありがとうございました。

>・固定シェーダの挙動がおかしい
この件ですが、RADEON上だけでなく、GF上でもREFモードだとうまく表示できませんでした。
>>459さんのアドバイスがクリーンヒットだったようで、気をつけながら直したところ、REFでも綺麗に表示されるようになりました。
RADEON上でpTexture1が乗算されるようになったようです。
(ただし、pTexuter1自体がバグっているため、乗算はされたものの、おかしなテクスチャが乗算されています)

今後はREFモードでちょくちょくチェックしながらやっていきます。


現在は、RADEON使いと連絡がとれなくなってしまったため、
「・テクスチャーの表示がおかしい」については後日また調査して、報告します。
どうしても治らない場合はまた相談させていただくかと思いますが、その時はよろしくお願いします。
473デフォルトの名無しさん:2008/05/16(金) 22:36:29
お疲れさん
ちゃんと報告してくれる質問者は歓迎だぜ
474デフォルトの名無しさん:2008/05/16(金) 23:08:47
ウホッここを覗いててよかった
ラデオン買ってくる
475デフォルトの名無しさん:2008/05/17(土) 07:41:55
>>471
DIrectX 7以下じゃないと動かないよ
8にするなら全部書き換えろ
476デフォルトの名無しさん:2008/05/17(土) 07:49:36
>>448
Dinput.hに
#define DIRECTINPUT_VERSION 0x0700
を追加
477デフォルトの名無しさん:2008/05/17(土) 20:09:42
関係ないけど、DirectInputってウイルスバスターが不正変更で〜って怒るとない?
お兄さんたちはどうしてるのかな?
478デフォルトの名無しさん:2008/05/17(土) 20:12:54
あ、あれってDirectInputのせいなんだ。。。

僕の作ったソフトも怒られるから気になってたけど。。。
479デフォルトの名無しさん:2008/05/18(日) 16:32:53
ウイルスバスターはDirectInput使うと怒るのね
友人にテストしてもらったら
「不正な変更とか出る ウイルスだろこれ?」
とか言われたお

ネットワーク対応ゲームでも作ろうかと思うんだが、
DirectPlay使うのとWinSock使うのとどっちがいいんだろ
DirectPlyaはWinSockに比べるとダメだという話をよく聞くけど
どこがどうだめだかよくわかんね
手軽に実装するならDirectPlayのほうが楽そうにも感じる
そこら辺詳しい人いませんか?
480デフォルトの名無しさん:2008/05/18(日) 17:25:02
あんま詳しくないが、TCP使えないらしいお。
そういった制限があるから、やっぱ「お手軽通信」なイメージはある。
Winsockは、アプリケーションが使うTCP/IPの基本かつ全てだから
DirectPlayに出来てWinsockに出来ないことはない。
そういう意味だとオモ<Winsockに比べるとダメ

本当にTCPが使えないのなら、オンラインRPGには無理なだ。
481デフォルトの名無しさん:2008/05/18(日) 18:00:21
今右ドラッグで3Dオブジェクトを回転させるのをやっていて、とりあえず
D3DXQuaternionRotationYawPitchRoll(&q,マウスのX変移,マウスのY変移,0);
とやってそれっぽい動きにはなってるんですが、どうもメタセコとかと操作感が違うんですよね。
ドラッグ開始時にXYの回転軸を作って、それに対する回転てやりたいんですが
何使ったらいいですか?
482デフォルトの名無しさん:2008/05/18(日) 18:11:10
>>481
RotationYawPitchRollは角度が非常に小さければ任意軸周りの回転に
近い動きをするが、本来は全く違うもの。
マウスの移動量とZ軸で外積を取って、その軸周りの回転を使う。
483デフォルトの名無しさん:2008/05/18(日) 18:20:19
>>482
親切にありがとうございます。意味はなんとなく分かるんですが、頭がついて来れなくて・・・
で、それはZ回転が起こらない場合にのみ使えるんですよね?多分(今回はそれでもいいですが)
484デフォルトの名無しさん:2008/05/18(日) 19:57:07
>>479
色んな通信に対応しすぎてて、初期化が遅いのが一番の不満かな<Play
といってもPlay使ってたのはDirectX7の頃だから、改善されてるかもしれんが。

WinSockなら全ての通信を自分で把握できるのが強み。
485デフォルトの名無しさん:2008/05/18(日) 20:27:13
>>484
DirectPlayは廃止されて久しい。
WinSockを叩くのが一番無難で楽しい。
486デフォルトの名無しさん:2008/05/18(日) 20:32:54
WinSockだとセッションとかのゲーム的な概念がないから
そこらへんも全部自分で実装しなきゃならないんだよね?
WinSockのネットゲームで使えそうなお手ごろサンプルがあるといいんだけど
487デフォルトの名無しさん:2008/05/19(月) 03:08:12
質問です。
DirectXを使って2Dゲームを作ってみようと思ってMSDNのリファレンスを見ていたところ、
CreateVertexBuffer()で頂点バッファを作ってLockとUnLockの中で頂点を処理していました。
ですが、別のホームページにはこれらを使わずに描画してるページもありました。

2Dの場合はCreateVertexBufferを使わずに描画したほうがいいのでしょうか?
それともCreateVertexBufferを使わなくても描画出来るという解釈でいいのでしょうか?
488デフォルトの名無しさん:2008/05/19(月) 03:22:35
別にどういうやり方しても構わないよ。
ただ、
・頂点バッファをビデオメモリ上、AGPメモリ上に作ると描画が速い
・が、そういう場所に作った頂点バッファをLockするのは重い(ビデオカードの処理を止めるから)
・システムメモリ上に作った頂点バッファのロックなら遅くない(多分。)が、
 それは頂点バッファ作らない方法と同じこと。ビデオカードから遠いので描画は遅い

毎フレーム書き換えるような頂点配列なら、システムメモリに置くか
頂点バッファ使わずにやるのがのがいいんじゃないかと。
検証とかしたことないので間違ってたら指摘ヨロ
489デフォルトの名無しさん:2008/05/19(月) 03:26:37
チラシの裏にでも書いてろ
490487:2008/05/19(月) 03:43:14
>>488
なるほど、どっちの処理が重いかで使い分けるといいみたいですね。
ありがとうございます。
491デフォルトの名無しさん:2008/05/19(月) 10:26:00
>>488
追加⇒DYNAMICとDISCARDフラグを組み合わせると描画もLockも速いがメモリを食う。
492デフォルトの名無しさん:2008/05/19(月) 13:56:52
>>489
なるほど、チラシの裏ですね
よくわかりました
493472:2008/05/19(月) 19:22:45
色々アドバイスいただいた>>453です。
>>459さんのアドバイスによる修正のおかげか、RADEON上でも綺麗に表示されたそうです。
ありがとうございました。

D3DTSS_COLORARG1 にTEXTURE
D3DTSS_COLORARG2 にCURRENT
なるべくこうするのが吉。というわけですね。
大抵の初心者サイトがこうしている一方、時々は逆も見かけるようです。
他の人が同じ失敗しませんように…。
494デフォルトの名無しさん:2008/05/19(月) 19:35:23
チェックしたら見事に失敗してたわ
SDKをもう一回全部読み直したほうがいいかもなー・・・
495デフォルトの名無しさん:2008/05/19(月) 20:06:53
演出について質問
キャラが地面に着地した際、演出として着地点のまわりに衝撃波を立てたいと思っています
例えるなら、牛乳の入ったコップに牛乳を一滴おとした時にできる、王冠のようなものです

こういう演出はどのようにして実装するのが良いでしょうか?
今まではボーンアニメまでしかやったことがないのですが、モーフィングという技術のほうがより良さそうな気がしています
496デフォルトの名無しさん:2008/05/19(月) 23:56:15
>>495
スケーリングで十分
497487:2008/05/20(火) 00:09:01
>>492
調べてみたら動的に確保したメモリを静的に確保したように見せるとのことだったんですが、
これはVRAMとAGPメモリに確保して同期させるという解釈でいいのでしょうか?
498487:2008/05/20(火) 00:09:52
すいません>>492ではなく>>491でした
499デフォルトの名無しさん:2008/05/20(火) 01:53:49
>>497
昔はそうなんだが、現在のVGAだと諸々の理由でシステムメモリを介したコピーを
行っているものが多いので、動的な頂点バッファはほとんど意味を成さなくなっている。
経験で言うならシステムメモリよりも頂点バッファを使う方がパフォーマンスが高くなる
傾向があるのは確かだが、大半は大した性能差があるわけでもないし、
そもそも適切に扱うためのフラグ設定が頂点バッファはわかりにくいので、
個人的にはシステムメモリ(DrawIndexPrimitiveUP等)で実装することをお勧めする。

2Dスプライトの実装なんぞDrawPrimitiveのバッチ処理さえしておけば
それ以上は深く考えんでも良いと思うぞ。
500デフォルトの名無しさん:2008/05/20(火) 08:28:59
AGPメモリを使うか否かで動的なデータは速度に大差が出るぞ
501デフォルトの名無しさん:2008/05/20(火) 12:44:39
非同期で処理させるかの違い
502デフォルトの名無しさん:2008/05/20(火) 19:02:00
まあ、自分のゲームでやってみるのが一番
つーのは想定している状況によりけりって感じだから
なんでも使える汎用ルーチンなんて作ろうと考えないで状況に応じて対処したほ
503487:2008/05/20(火) 20:53:38
>>499-502
2Dの処理にそこまで考える必要はないけど、
詳しく知りたい場合は自分のゲームで実装して調べたほうが早い、とのことなので、
時間に余裕があるときに調べてみたいと思います。
色々ありがとうございます!
504デフォルトの名無しさん:2008/05/20(火) 21:17:01
環境にもよるんじゃないか
505デフォルトの名無しさん:2008/05/20(火) 21:49:34
WinSockだとポート空けるのをユーザー側に頼まなければならないので
UPnP対応してるDirectPlayつかうことにしたぽ
506デフォルトの名無しさん:2008/05/20(火) 22:42:13
UPnPの対応はDirectPlayに頼らなくても簡単に出来るぞ
507デフォルトの名無しさん:2008/05/20(火) 22:55:18
>>506
http://www.bosuke.mine.nu/neta/upnp.shtml
これためしてみたけどルータがふるくてだめだった
しかしDirectPlayだとポート開放しなくても通信できる

もっといい方法があるならおしえてくださいませ
508デフォルトの名無しさん:2008/05/20(火) 22:56:06
Direct3D9.0のデバイスロストからの復帰で
・D3DPOOL_DEFAULTのテクスチャ解放
・D3DXFONTのOnLostDevice()呼び出し     この2つは順番適当
・D3DXSpriteのOnLostDevice()呼び出し

   pDevice -> Reset(&Param);

・D3DXSpriteのOnResetDevice()呼び出し
・D3DPOOL_DEFAULTのテクスチャ確保
・D3DXFONTのOnResetDevice()呼び出し     この2つは順番適当
・レンダーステートの回復

てやってるんだけど、画面真っ暗です。これ以外に何やるんでしょう?
あと順番に決まりはあるんでしょうか?
509デフォルトの名無しさん:2008/05/20(火) 23:03:40
>>508
確保したリソースの解放をちゃんとしましょう。
Debug Runtimeでエラーメッセージの確認をしましょう。
510デフォルトの名無しさん:2008/05/21(水) 20:30:26
>>506
ひょっとして upnp.h とか使うの?
ネット探しても具体的なやりかたが乗ってるところがないのが困る
511デフォルトの名無しさん:2008/05/21(水) 23:15:17
>>510
ttp://www.bosuke.mine.nu/neta/upnp.shtml
おもくそ有名なサイトがあるわけで
ぐぐろうよ
512デフォルトの名無しさん:2008/05/22(木) 00:12:19
お前は空気読め
513デフォルトの名無しさん:2008/05/22(木) 02:01:13
「頂点ベースの描画」という言葉の意味がよく分かりません
対になるものは何でしょうか?
514デフォルトの名無しさん:2008/05/22(木) 16:48:56
ポリゴンで描画(3つの頂点)で描画と思ったらいいんじゃね?
ポリゴン2個で四角形になるお
515513:2008/05/22(木) 16:53:09
>>514
知識不足ですみませんが、そうでない描画の方法があるのでしょうか?
516デフォルトの名無しさん:2008/05/22(木) 16:56:14
つーか、「ポリゴンで描画で描画」ってなんだよ。
517デフォルトの名無しさん:2008/05/22(木) 17:25:02
そもそも
「頂点ベースの描画」なんて聞いたことがない
518デフォルトの名無しさん:2008/05/22(木) 17:28:55
>"ポリゴンで描画で描画"との一致はありません。
>"頂点ベースの描画"の検索結果 1 件中 1 - 1 件目 (0.14 秒)
>"頂点ベース" の検索結果 約 148 件中 1 - 10 件目 (0.24 秒)
519デフォルトの名無しさん:2008/05/22(木) 17:59:10
頂点シェーダーでライト当てるかピクセルシェーダーでライト当てるかって事でないん?
そのくらいしかない気がするんだが。
520デフォルトの名無しさん:2008/05/22(木) 19:50:11
>>513
どこで頂点ベースって聞いたんだよ?

>そうでない
DirectDrawのスプライト描画のことじゃね?

さいきんのゆとりはDirectX7以前を知らんのか
521デフォルトの名無しさん:2008/05/22(木) 19:50:44
ポリゴンで描画の間違い
522デフォルトの名無しさん:2008/05/22(木) 22:30:57
そもそもDirectXにスプライトなど存在しない
523デフォルトの名無しさん:2008/05/22(木) 22:39:14
ジオメトリベースド
イメージベースド
524508:2008/05/22(木) 23:22:56
バックバッファの解放と確保
ステンシルの解放と確保も付けたんですが、まだPresent(0,0,0,0)がD3DERR_DEVICELOSTを
出してきます。何が足りないんでしょうかT-T
525デフォルトの名無しさん:2008/05/22(木) 23:27:27
それは作った本人にしかワカリマセン。
526デフォルトの名無しさん:2008/05/22(木) 23:29:53
POOL以外で作ったテクスチャとか頂点とか全部削除する
527デフォルトの名無しさん:2008/05/22(木) 23:32:30
>>526
StateBlockとかもだな。

EffecとかFontとかSpriteも中でStateBlock作ってるからロスト対策が要るけどなー
528508:2008/05/22(木) 23:45:28
フロントバッファは何もしなくていいんでしょうか?StateBlockは作ってるつもり
はないんですが・・・何か他に暗黙的なものがあったら教えていただけないでしょうか?
529デフォルトの名無しさん:2008/05/22(木) 23:52:57
スレ住人が超能力に目覚めるよりはソースを出す方が解決は早い思います。
530デフォルトの名無しさん:2008/05/22(木) 23:53:04
D3DX〜系のLostDevice()は全部やってる?
531デフォルトの名無しさん:2008/05/23(金) 00:16:03
DX10で作ればおk
532デフォルトの名無しさん:2008/05/23(金) 00:17:15
Resetしてないんだろwww
533508:2008/05/23(金) 00:43:08
>>528ソースのみですか?関係ないクラスを除いた抜粋でいいですか?
>>530フォントとスプライトなら呼んでます。
>>532Resetからの返り値も出力してるので多分大丈夫だと思います・・・
534デフォルトの名無しさん:2008/05/23(金) 00:53:32
ResetはPresenがD3DERR_DEVICELOST以外を返した後の話だから関係なくね?
535508:2008/05/23(金) 00:58:54
ttp://ccfa.info/cgi-bin/up/src/up19318.zip
なんかいろいろ言われそうで怖い・・・よろしくお願いします。
536デフォルトの名無しさん:2008/05/23(金) 12:09:02
現在、大学3年でシェーダーの勉強をしています。
それで、データの可視化の研究をしてみたいと思うようになったのですが、シェーダーの出番ってありますか?
無駄になるのもなあと思っているのですが。
OpenGLも少し勉強したことはあったのですが、可視化の分野はどちらを使ったほうがいいでしょうか?
また、仮にシェーダーを使う場合、どのような研究のネタがあるでしょうか?
537デフォルトの名無しさん:2008/05/23(金) 13:04:30
どう可視化したいのかも書かずに質問とな?
538デフォルトの名無しさん:2008/05/23(金) 13:10:17
と言うか、綺麗に見せたきゃ使うような物だからあんまり意味なくね?
539デフォルトの名無しさん:2008/05/23(金) 14:29:49
>>535
common.h無いいわれるお
できればプロジェクトもあげてほすぃ
デバッグしやすい
540デフォルトの名無しさん:2008/05/23(金) 15:47:51
関係ないが Graphics::drawSprite のBegin End の対応がおかしい
541508:2008/05/23(金) 19:03:13
>>539
ttp://ccfa.info/cgi-bin/up/src/up19342.zip
プロジェクトはBCCのしかなかったので、ついてません。申し訳ないです。
>>540
多分治ってると思います(?
C++と窓とDirectX同時に勉強してたんで、拙いところがたくさんありますが
542デフォルトの名無しさん:2008/05/23(金) 23:08:12
現在ブロック崩しを製作中なのですが、もし「20個あるブロックがなくなったら」という状況を表現するために下記のように打ったら、「error C2106: '=' : 左のオペランドが、左辺値になっていません」とエラーが出ました。
どうすればいいのでしょうか。

if(block1==0&&block2==0&&block3==0&&block4==0&&block5==0&&block6==0&&block7==0&&block8==0&&
block9==0&&block10==0&&block11=0&&block12==0&&block13==0&&block14==0&&block15==0&&
block16==0&&block17==0&&block18==0&&block19==0&&block20==0)
543デフォルトの名無しさん:2008/05/23(金) 23:12:19
すいません、正式に言うと「ブロックがなくなったら」ではなく、「ブロック変数がゼロになったら」でしたね
544デフォルトの名無しさん:2008/05/23(金) 23:25:17
block11=0
545508:2008/05/23(金) 23:26:17
よくこの釣り間違い探しをやるな
546デフォルトの名無しさん:2008/05/23(金) 23:26:42
>>544
intした名前が「block11」だったのがまずかったってことですか?
547デフォルトの名無しさん:2008/05/23(金) 23:40:00
>>546
マジで言っているならプログラミングなんてやめて旅にでも出ることをお勧めしておく。
548デフォルトの名無しさん:2008/05/23(金) 23:42:28
>>547
今気がつきました=が一つしかありませんでしたね
初歩的なミスでした
549デフォルトの名無しさん:2008/05/23(金) 23:43:40
もっと根本的に変数使いすぎ
配列など、別のアプローチを考えれ
550デフォルトの名無しさん:2008/05/23(金) 23:46:02
いやあ、恥ずかしいです…
551デフォルトの名無しさん:2008/05/23(金) 23:48:11
配列はおろか、ブロックの数をカウントするカウンター作ったほうがいいだろ…。あとここDirectXスレ…
552デフォルトの名無しさん:2008/05/23(金) 23:51:29
おっとここはDirectXスレだったな
釣られちまったぜ
553デフォルトの名無しさん:2008/05/24(土) 01:25:59
>>545
誰もやってない悪寒。
少なくとも俺はソースがあまりにひどかったので1度動かして消した。
554デフォルトの名無しさん:2008/05/24(土) 11:40:55
この前RADEONだと色々厳密という話しがでたので、RADEON買って来て試してみた
今まで遊びで作ってたほとんどのゲーム、まともにうごかねえw
色々見直そう
555デフォルトの名無しさん:2008/05/24(土) 12:02:08
Radeon、Geforce両方をDebugRuntimeでチェックするのがベスト。
nVidiaのドライバーは空気を読見すぎるのが困る。
しいていうならタグが変でも一応見れちゃうIEと手厳しいネスケの違いみたいなもんか。
556508:2008/05/24(土) 12:18:10
>>553
545のは直上の人に言った言葉です
ていうか、特に何がやばそうでしたか?
557デフォルトの名無しさん:2008/05/24(土) 13:05:57
>>556
まずアプリの終了時にバックバッファ解放してないだろ。
Getしたものは全部Releaseしろ。

あとSDKいれてるならDebugRuntimeで試せ。
それなら終了時に解放してなかったりD3Dエラーが出たときにデバッガで落ちるようになる。
558デフォルトの名無しさん:2008/05/24(土) 14:31:53
CComPtrマンセー
559デフォルトの名無しさん:2008/05/24(土) 16:51:30
俺はこんな感じでやってるわ

class ICallbackDeviceReset
{
public:
ICallbackDeviceReset();// std::setでつくられたグローバルリストに登録
virtual ~ICallbackDeviceReset();// std::setでつくられたグローバルリストから解除

virtual OnLostDevice()=0;
virtual OnResetDevice()=0;
};

デバイスのロスト>リセット時に呼び出されたいクラスは、このクラスを継承するようにすれば
自動的に呼び出されるようになる。
560508:2008/05/24(土) 16:59:16
>>557
バックバッファの解放とはGraphicsオブジェクトにセットしたポインタをリリースしろということでしょうか?
それならばGraphicsオブジェクト終了時に自動解放されています。
ところが、デバッグモードで見たらMemory still allocated! Alloc count = 94の文字がorz
しかもAllocIDが出ないので、何がまずいのか分かりませんでした・・・
CreateDeviceの際にパラメータに書いてあるバックバッファやステンシルバッファといった物は
明示的な解放はいらないですよね?

>>559std::setがstd::listなだけでまったく同じことしてます。
561デフォルトの名無しさん:2008/05/24(土) 17:06:50
>>560
listに入ってないリソースを疑うか
listの処理そのものを疑え。
562508:2008/05/24(土) 17:27:19
リリース忘れはどうやらスプライトのようでした・・・
これで先のエラーは出なくなったんですが、Ctrl+Del+Altを押した時に
Direct3D9: (ERROR) :Device is in an invalid state. Only Reset, TestCooperativeLevel or Release could be called
がひたすら出てしまいました。デバイスロストからの復帰に失敗してるんでしょうが、なにぶんメッセージの意味が分かりません

>>561どうやらlistが怪しいようです・・・。ここをもうちょい詰めてみます。
563デフォルトの名無しさん:2008/05/24(土) 17:54:12
>>562
listだと、アドレスを登録する時に
・重複が怖い(コンストラクタでのみ自動登録されるなら心配ないが)
・解放時の検索速度が、setのほうが圧倒的に速い
って利点があるぜ。

ソース見ようとしたけど404だったんで突っ込んだアドバイスしてあげられないな。
もう一回UPする気ない?(スプライト修正版を)
564デフォルトの名無しさん:2008/05/24(土) 17:54:58
なんか日本語があからさまにおかしいが、脳内補完してくれ。
setのほうがいいよってことで(;´Д`)
565デフォルトの名無しさん:2008/05/24(土) 17:58:53
メッセージの意味は、

デバイスが不正な状態になってます。
この場合、Reset、TestCooperativeLevel、Releaseのどれかのメソッドしか呼び出せません。

つまり、まぁデバイスがロストしてるよと。復帰させるか、あきらめろと。
566508:2008/05/24(土) 18:01:32
>>563
リストどうやら間違ってませんでした。
ttp://ccfa.info/cgi-bin/up/src/up19435.zip
よろしくお願いします。
567デフォルトの名無しさん:2008/05/24(土) 18:16:31
oggがどこで生成されるのか謎だからあくまで予測なんだが

デバイスを作成したスレッドと、デバイスをリセットしようとするスレッド。
違うスレッドになってね?
全部リソース解放してても、スレッドが違うと失敗するんだが。
568デフォルトの名無しさん:2008/05/24(土) 18:26:22
すまん、oggの作成場所発見したわ。
同じスレッド上だな。

しかし綺麗なソースだな。
うちの部下どもに爪の垢を煎じて飲ませてやりたいわ

パッと見問題はなさそうな分、とりあえずD3D関連の生成物を全部カットしてリセットして、問題なければ一部だけ生成するようにしてリセットしてみて…
ってやっていくしかないなぁ
569デフォルトの名無しさん:2008/05/24(土) 18:47:42

Graphics& GameWindow::getGraphics(){
if(device != NULL && g.target->target == NULL){
device->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&(g.target->target));
}
return g;
}

ここのバックバッファをReleaseしてないのが原因じゃねーか?
570508:2008/05/24(土) 19:03:26
>>569できたお
ありがとうございました。

ところでテクスチャからサーフェイスをGetしていた場合Releaseの順番てどちらからでも問題ないですか?
571デフォルトの名無しさん:2008/05/24(土) 19:07:54
作ったのと逆の順で解放するのが良い。
そうしなかった場合不具合が起きるかは未検証だが、プログラムでは逆順解放が基本。

サーフェイスは描画前に取得して、描画終わったらさっさとReleaseしちゃいな。
取得にほとんど時間かからないから。
572デフォルトの名無しさん:2008/05/24(土) 19:42:45
CComPtrとか使えって言ってんだろ。初歩的なミスが綺麗さっぱりなくなるぜ?
573508:2008/05/24(土) 19:50:08
>>572
CComPtrってデバイスロストでもリリースとかしてくれるんですか?
なんか話のポイントが違う気が・・・
574デフォルトの名無しさん:2008/05/24(土) 19:50:52
>>572
確保しっぱなしだったから、結局はデバイスリセットの時に正しく解放できなかったと思うぜw

そういや508よ。
「ベース メンバ初期化リストで使用されました」
のワーニング出てたぞ。直しておけよ。
575デフォルトの名無しさん:2008/05/24(土) 20:04:05
warningをちゃんと潰す、DebugRuntimeでエラーがない事を確認する、
nVidiaのドライバはATiに比べるとかなりエラーに甘いのでちゃんと
nVidiaとATiの両方で動作確認をしっかり行なう。
576508:2008/05/24(土) 20:39:35
>>574マジすか・・・BCCでは出なかったのに、工夫してみます。
本当に親切にありがとうございました。ノシ
577デフォルトの名無しさん:2008/05/24(土) 21:13:16
デバッグの警告レベルを最大にしたら
(WARN) :Ignoring redundant SetTextureStageState
が出まくるんだけど・・・
かといって、デフォルト値使われるのかと思ってコメントアウトしたら全然違う動作しやがる
578デフォルトの名無しさん:2008/05/24(土) 21:42:26
同じのを何度も設定してるんでないの?
最大レベルだとどうでもいいwarningが大量にでるから1レベル下がいいよ。
579デフォルトの名無しさん:2008/05/24(土) 21:50:56
あるねー>どうでもいいwarning
なんか最近のVCで昔ながらのstr〜関数を使うだけで
警告出しやがるようになりやがったし
VC作った奴の感性がちょっとわからなくなった
リソースわけられないとかそっちの方をどうにかしてほしいのに
余計なもんばっかり増えていくな
580577:2008/05/24(土) 21:52:09
何度も設定はしていないけど、
一番最初に描画される時にも出てるから、そこで警告出るんならデフォルト値使われてるのかな、と思ったんだけど、
ちゃんと設定しないときちんと描画されない。
余計な警告は無視する方が吉みたいですね
581デフォルトの名無しさん:2008/05/24(土) 21:59:51
警告でウザイのは、例外を使ったときのだな。
わかって使ってるのに
582デフォルトの名無しさん:2008/05/24(土) 22:25:58
>>580
それはデフォルト値が使われているという警告じゃなくて、
Aという値を前回セットしたにも関わらず、同じ値をセットしたときに起きる。
フレームをまたいでもチェックされる。
583577:2008/05/24(土) 22:36:24
いやだから、一番初めにセットした時に出るってことは、デフォルト値とかぶってるんじゃないのか、
と思ってたってこと
584デフォルトの名無しさん:2008/05/25(日) 00:22:38
DirectXで両面ポリゴンは、描画可能なのでしょうか?
585デフォルトの名無しさん:2008/05/25(日) 00:26:38
可能です!
586デフォルトの名無しさん:2008/05/25(日) 00:41:07
ありがと。
エクスポートがうまくいかなかったのかな…。

もしかして、なにか設定が必要ですか?
587デフォルトの名無しさん:2008/05/25(日) 00:47:21
自己レスです。
LW使ってたのですが、付属プラグインは片面になってしまうそうで・・・。
LWからのエクスポートで、何か方法を知っていたら教えてください。
588デフォルトの名無しさん:2008/05/25(日) 01:13:55
実行時のD3DのSetRenderState()の設定次第なんだが・・・
589デフォルトの名無しさん:2008/05/25(日) 01:23:46
LWでダブルサイド指定じゃなく、
ちゃんと倍の頂点使って裏のポリゴンを作っておく

エクスポート時に、ダブルサイド指定のポリゴンを
裏ポリ用頂点を作ってくれるエクスポーターなんて知らんね…

UVやらマテリアルやら関係なく、ただ両面描画しれてば良いだけなら
>588の言う通り
590デフォルトの名無しさん:2008/05/25(日) 01:45:51
とりあえずD3DRS_CULLMODE(ですよね?)を指定しておき、
あとで裏にポリゴンを作ろうと思います。
ありがとうございました。
591デフォルトの名無しさん:2008/05/25(日) 06:32:23
Xファイルを出力、編集するソフトって何がありますか?
592デフォルトの名無しさん:2008/05/25(日) 09:44:08
メタセコイア
有料版でもインポート・エクスポート以外は使える。
その.mqoをLEで読み込めば・・・・
593デフォルトの名無しさん:2008/05/25(日) 10:23:25
現状、メタセコでモデル作成。POSERでBVH作成。LWで合成してXファイルで出力
ってやってるわ
594デフォルトの名無しさん:2008/05/25(日) 11:26:51
DLL_APIってなんですか?DLLを作る命令?
595デフォルトの名無しさん:2008/05/25(日) 12:04:04
>>594
マルチすなや。
596デフォルトの名無しさん:2008/05/25(日) 16:40:33
デバイスロスト時ってもしかしてSetTextureStageStateで設定した情報も失われてる!?
597デフォルトの名無しさん:2008/05/25(日) 18:53:43
Presentしたらステート必ずセットし直すか、ステートブロックでも使え。
598デフォルトの名無しさん:2008/05/25(日) 18:57:10
Xファイルに出力したカメラのアニメーションを利用したいのですが、どうすればいいのでしょうか?
599デフォルトの名無しさん:2008/05/25(日) 19:06:22
>>597
ステートブロックはデバイスロストしたら一緒にロストすんぞ。

>>598
どうもこうもアニメーション情報を読んで再生する。
600デフォルトの名無しさん:2008/05/28(水) 03:43:28
フルスクリーンのときにスクリーンサイズを600×400にするとCreateDeviceに失敗し、
640×480などのサイズにすると成功するんですが、どういった理由でこうなるのですか?

LPDIRECT3D9 p_d3d;
D3DPRESENT_PARAMETERS d3dpp;
D3DDISPLAYMODE d3ddm;

p_d3d = Direct3DCreate9(D3D_SDK_VERSION);
m_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);

ZeroMemory(&m_D3Dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.BackBufferCount = 1;
m_D3Dpp.Windowed = TRUE;
m_D3Dpp.BackBufferFormat = d3ddm.Format;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
// ここまで同じ設定

d3dpp.BackBufferWidth = 600;
d3dpp.BackBufferHeight = 400;
// これをCreateDeviceに指定すると失敗する

d3dpp.BackBufferWidth = 640;
d3dpp.BackBufferHeight = 480;
// これをCreateDeviceに指定すると成功する
601デフォルトの名無しさん:2008/05/28(水) 05:26:43
600x400のモードをデバイスがサポートしてないだけじゃないの?
関数の戻り値とか調べてください
602デフォルトの名無しさん:2008/05/28(水) 08:55:42
600x400なんて画面モード、存在するのか?
603デフォルトの名無しさん:2008/05/28(水) 12:36:49
>>600
グラフィックボードで使える解像度じゃないからだよ
EnumAdapterModes( )でそのデバイスで使える解像度を列挙できるからその中から選べ
604デフォルトの名無しさん:2008/05/28(水) 17:09:35
>>602
PC-98時代の遺産だな。仕事で出会う確立はもはやレアだろ。
605デフォルトの名無しさん:2008/05/28(水) 17:31:36
PC-98でも横は640だし・・・
606604:2008/05/28(水) 17:54:34
をや??・・・640×400と見間違えた。
607600:2008/05/28(水) 20:59:35
>>601-606
なるほど、使用出来る解像度の問題だったんですね。
ありがとうございます。

ついでに質問なんですが、解像度は現在のディスプレイの解像度を使ったほうがいいのでしょうか?
それとも各ディスプレイごとに使用出来る解像度を調べて、自分のプログラムにあった解像度を選んだほうがいいのでしょうか?
608デフォルトの名無しさん:2008/05/28(水) 21:09:54
>>607
他のゲームを参考に汁
どっちのタイプもあるよ
自分の合う方法を探せ
609デフォルトの名無しさん:2008/05/28(水) 21:18:53
320×240,640×480,800×600,1024×768のどれかなら、
必要な解像度を動作環境に明記しとけば大丈夫。
一般的な解像度はこの辺だからな。
610デフォルトの名無しさん:2008/05/28(水) 21:21:45
そういや、2Dゲーは解像度固定が、3Dゲーは解像度可変が多いよな。
611デフォルトの名無しさん:2008/05/28(水) 21:30:33
ポリゴンは解像度に依存しにくいからな
612600:2008/05/29(木) 01:10:37
>>608-611
他のゲームの解像度と一般的な解像度と開発環境などと相談して決めるのがよさそうなので、
そこらへんを考慮しつつ可変か固定か決めてみたいと思います。
ありがとうございました。
613デフォルトの名無しさん:2008/05/29(木) 12:25:43
>>609
320×240
↑はWindowsではぜんぜん一般的じゃないっぽ
614デフォルトの名無しさん:2008/05/29(木) 12:37:57
320x240でスクリーンショット撮ってみた
http://neko-loader.net/pict/src/neko22282.jpg
615デフォルトの名無しさん:2008/05/29(木) 12:55:35
出来ないとはいってないってw
オンボードとかだとこけるやつが結構あるって話
無理に使う必要もないしね
616デフォルトの名無しさん:2008/05/29(木) 12:56:04
>>614
快適にWindowsライフが過ごせそうですね
617デフォルトの名無しさん:2008/05/29(木) 13:37:54
せっかくだからVisualStudioとかでやってほしかったぜ
618デフォルトの名無しさん:2008/05/29(木) 14:14:49
320x240は画面プロパティからは選べなくても、内部的にサポートしてる場合が多いよ。
というか、サポートしてないのみたことないな…。
同人ゲームで恐縮だが、EFZという格闘ゲームがフルスク320x240固定なんだが、動作しないって人聞いた事ない
619デフォルトの名無しさん:2008/05/29(木) 15:31:40
256色を使えないXPが無いのと同じだよな
620デフォルトの名無しさん:2008/05/29(木) 15:43:50
>>618
ゲーム画面が320x240でも、
640x480で画面作って拡大して描画してる場合もあると思う。

グラフィックボードがしょぼくてソフトウェアレンダリングな同人が流行ってた頃、
このサポートはどこでもやってたような気がする。
621デフォルトの名無しさん:2008/05/29(木) 17:32:40
http://www.tasofro.net/cgi-bin/cbbs00/cf.cgi?mode=all&mo=1834&namber=1832&rev=0&page=0

[1832] 【技術サポート】 起動できません-

■親トピック/記事引用■

□投稿者/ ミステイク -(2007/01/03(Wed) 21:22:48)

はじめまして、本日EFZを買ったのですが、インストールした後、起動できませんでした。
起動させると、画面が真っ暗になって「320※240の解像度の設定に失敗しました」と表示されます。
どうすれば起動できるのでしょうか?
もしかすると、解像度に問題があるのかもしれませんが・・・。

OSはXp、解像度は最低でも800×600です。


EFZワロス
622デフォルトの名無しさん:2008/05/29(木) 17:33:40
と思ってたが、640x480もサポートしないディスプレイとかあるのか。
引き延ばしできないノートとかでありそうだな。
レアすぎるから、
これは無視してもいいか。
623デフォルトの名無しさん:2008/05/29(木) 17:43:20
>>609
明記が必須かも試練。w
624デフォルトの名無しさん:2008/05/29(木) 18:11:11
>>622
EeePCがダメだった希ガス>640*480
あと、Pivot使っていると480*640は選択できるが640*480は選択できなくなる。
625デフォルトの名無しさん:2008/05/29(木) 18:14:37
まぁ、最近のビデオチップはハードウェア的にはどんな解像度でもいけるが、
ドライバで制限してるだけなんだけどね。
626デフォルトの名無しさん:2008/05/29(木) 18:41:46
サポートするのは、最近だけじゃねえよ
627デフォルトの名無しさん:2008/05/29(木) 20:17:09
>>621
そうそうそうそう
解像度の最低ラインが800x600になったおかげで
昔のフルスクリーンのゲームが起動できなくなったのな
後、256色のゲームも起動不可
628デフォルトの名無しさん:2008/05/29(木) 20:56:57
つかWindowsXPは640x480を正式サポート対象外にしてた憶えがあるぞ
あやふやだけど
629デフォルトの名無しさん:2008/05/30(金) 10:24:06
うっそ、640x480+16色 はハードが絶対サポートしてるんじゃねーのかよw
ドライバいれてない時や、セーフモード時はどうなってんだそれ
630デフォルトの名無しさん:2008/05/30(金) 10:26:33
winならMSの標準ドライバがインストールされてるしょ
631デフォルトの名無しさん:2008/05/30(金) 11:20:48
XP以降は画面のプロパティで選択できないように制限かけてるだけで
640*480が使えないわけじゃないよ。8bitカラーだって使える。
632デフォルトの名無しさん:2008/05/30(金) 12:18:09
>>627
間違っています。
以上。
はい次の方。
633デフォルトの名無しさん:2008/05/30(金) 14:48:58
uzeeeeeeeeeee
結局、普通に640x480使えねーのがあるってことでいいじゃないか
634デフォルトの名無しさん:2008/05/30(金) 14:55:07
あるの?
635デフォルトの名無しさん:2008/05/30(金) 15:10:35
>>633
いや、ほんとに640x480が動かないPCなんてあるの?って話なんだが。
確たるソースある?
636デフォルトの名無しさん:2008/05/30(金) 15:23:53
637デフォルトの名無しさん:2008/05/30(金) 15:28:23
640x480の解像度にできない -OKWave
http://okwave.jp/qa2299134.html
638デフォルトの名無しさん:2008/05/30(金) 15:33:46
>>637
思いっきり9x系からXPに移ったPC初心者の書き込みじゃねーかw
639デフォルトの名無しさん:2008/05/30(金) 15:35:56
DirectXで640x480に設定できないのかという話じゃないのかね
640デフォルトの名無しさん:2008/05/30(金) 15:50:10
641デフォルトの名無しさん:2008/05/30(金) 16:33:11
>>635
動く、動かない、という話じゃなくXPで640x480はサポートできないだろって話
WinXPの通常使用のシステム要件に、「800x600以上対応のVGAが必要」というのがある以上、
640x480でWinXPが動かなくても、XPで800x600未満が選択できないPCがあったとしても
「それは残念でした。640x480を使うので、Win2000とかで動かしてみてください」と
返すのが正常、という話。
642デフォルトの名無しさん:2008/05/30(金) 17:36:35
>>641
意味わからん

「XPの動作には800x600以上対応のVGAが必要」であることと、
XPで640x480でフルスクリーンモードのデバイスが作れないこと。
これらはイコールではないでしょ。

「XP用のドライバでは640x480をサポートしなくても構いません」と規定されているのかという話をしてるの。
643デフォルトの名無しさん:2008/05/30(金) 17:56:37
おまえらもういいだろうw
644デフォルトの名無しさん:2008/05/30(金) 19:02:55
ところで本当は何について話していたの?
645デフォルトの名無しさん:2008/05/30(金) 19:16:22
2Dゲーの解像度のサポートを何処までやるか?だったっけ?
646デフォルトの名無しさん:2008/05/30(金) 21:04:30
古いエロゲーがどこまで動くかですよあやよさん
647デフォルトの名無しさん:2008/05/30(金) 21:30:02
>>641
OS的に選べないようにしてるだけで、グラボのプロパティからなら
余裕で320x240とか選べるようになってる。

つまりDirectX利用可能。
648デフォルトの名無しさん:2008/05/30(金) 21:44:09
ちょっとまて、俺、今普通に640x480解像度のDirectXつかったゲームしてるんだが、XP64bitで。
649デフォルトの名無しさん:2008/05/30(金) 21:45:56
もういいよお前ら
自重しろ
650デフォルトの名無しさん:2008/05/30(金) 21:53:47
>>635
インクレティブマシーンが動かなくなってる
まず256色に変更できない
ディスプレイはサポートしてる

いま、こんな状況
651デフォルトの名無しさん:2008/05/30(金) 22:29:32
256はわかったから、640はどうなんだよ
652デフォルトの名無しさん:2008/05/30(金) 23:49:00
>>650
だから、変更できないってなんだよ…
画面プロパティからは変更できないだろ、XPとか使ってれば。

ここはDirectXスレだっての
653デフォルトの名無しさん:2008/05/31(土) 04:02:15
DirectXのスレで画面プロパティとかアホですか
654デフォルトの名無しさん:2008/05/31(土) 04:37:37
>>652
だから、アプリの方でエラーがでちまって起動できないっての
655デフォルトの名無しさん:2008/05/31(土) 06:30:42
256はわかったから、640はどうなんだよ!
656デフォルトの名無しさん:2008/05/31(土) 06:36:12
>>651,655
うるせー
657デフォルトの名無しさん:2008/05/31(土) 07:03:44
どうなんだと聞いている
答えろ
658デフォルトの名無しさん:2008/05/31(土) 07:31:58
今日はここに沸いてるのか
659デフォルトの名無しさん:2008/05/31(土) 10:06:09
640×480は256色しかサポートしてないってメーカーPCも昔あったな

まぁ結局の所解像度決め打ちにしてるなら動く解像度を動作環境内に書いておけってことだ。
Windowsなんてタダででもいろんな環境がありすぎるんだから全部テストなんて出来ん。
解像度くらいはプロパティから数値が見えるんだから環境限定でいいだろ。
グラボのDXサポート状況に比べればどうと言うことはない
660デフォルトの名無しさん:2008/05/31(土) 10:08:28
フルスクリーンじゃなくて窓を開いて640×480の256色モードとかなら
XPもサポートしてるよ

Delphi Graphic Secretsという本を持っているんだがここでいろいろな
画面モードを実験している
661デフォルトの名無しさん:2008/05/31(土) 22:20:22
LPD3DXSPRITE::DrawとLPDIRECT3DDEVICE9::DrawPrimitiveを両方使ってるのですが
前者より手前に後者を描画するにはどうすればいいですか?
描画の順番変えても必ずスプライトが前になってしまいます
662デフォルトの名無しさん:2008/05/31(土) 22:23:07
Z
663661:2008/05/31(土) 22:59:42
解決しました
位置のZ座標指定してもうまく処理されないと思ったらClearするときにZバッファ指定してなかっただけでした。
スプライトのZ座標は描画順だけらしいので交錯させる等複雑な描画をしたい時は完全にDrawPrimitiveの方に統一するしかないですか?
664デフォルトの名無しさん:2008/06/02(月) 15:22:51
SetRenderState( D3DRS_ZENABLE , FALSE );
3DやらないならZバッファ使わんだろ
使ってもいいけど
使わん方が早いだろ
ついでにステンシルバッファも作らなくていいし
クリア時もZ消さなくていいし
665デフォルトの名無しさん:2008/06/02(月) 20:16:47
>>664
Zテストの前から描画って2Dだとそんな効果ねぇっけ?
666デフォルトの名無しさん:2008/06/02(月) 21:18:21
>>665
半透明や加算合成を一切使わず、抜き色で使うアルファ値も
エッジにAA効果を持たせない二値限定のスプライトが前面に多く
描画されると仮定できる状況なら、大幅にフィルレートを稼げるかもね

でなけりゃただの逆効果
667デフォルトの名無しさん:2008/06/03(火) 01:02:57
>>666
α値が0%(不透過)のところだけZバッファだけ書き込んでなんとかならんかったっけ?
668デフォルトの名無しさん:2008/06/03(火) 02:25:36
>>667
だからカラーキー目的で二値しかアルファ値使ってなけりゃ、アルファテストでいけるよ

でもエッジにアンチェリ(段階的なアルファ値の適用)使った時点で駄目だし、
当然アルファブレンドも使えないしで、2Dスプライトの描画において深度バッファで
速度が稼げるってのは結構レアケースだと思うよ
669デフォルトの名無しさん:2008/06/03(火) 03:29:40
>>668
α値が1のときだけ〜って処理いけんかったっけ?
まあ、いけたとしてもそんなに早くないか・・・
670デフォルトの名無しさん:2008/06/03(火) 09:54:29
かなり重いピクセルシェーダーを使わない限り深度バッファでの高速化って恩恵ないだろ
671デフォルトの名無しさん:2008/06/03(火) 13:21:37
もしくは、点を打つのが激重なグラボ
672デフォルトの名無しさん:2008/06/03(火) 19:07:07
俺のディスプレイ
最低解像度800x600だった
でも、640x480できたお
673デフォルトの名無しさん:2008/06/03(火) 20:03:27
>>671
なんだその存在価値のなさげなグラボは
674デフォルトの名無しさん:2008/06/04(水) 00:19:51
自分で定義した頂点情報をDrawPrimitiveで表示するときや、
読み込んだXファイルをDrawSubSet()で表示するときなどにmaterialを設定しても描画に反映されません

D3DXCreateSphere()等で取得したメッシュをDrawSubSet()する場合は反映されます
materialを有効にするにはSetMaterial()以外に何か設定が必要なのでしょうか?
675674:2008/06/04(水) 01:53:23
すいません、自己解決しました
D3DRS_DIFFUSEMATERIALSOURCEでマテリアルを参照するよう設定するのを忘れていました
676デフォルトの名無しさん:2008/06/04(水) 19:25:36
ビルドは上手くいくのに実行するとすぐに終了されてしまいます
DirectX 9.0 SDK Update (Summer 2003)
に変えてからこうなりました
以前はSummer 2004を使っていたのですが不具合が色々あったので変えました

もしかしたらDirectXの設定がおかしいのかもしれませんわかる方いたら教えていただきたく思います
677デフォルトの名無しさん:2008/06/04(水) 19:36:42
ブレークポイントしかけて、ステップ実行してみれば?
678676:2008/06/04(水) 19:58:37
すみません
BCC Developerを使っているのですがブレークポイントの設定の仕方がわかりません…
679デフォルトの名無しさん:2008/06/04(水) 20:01:10
>>678
VC(正規OSならタダでダウンロード可能)にしてやってみるか
printfをおきまくれ
680676:2008/06/04(水) 20:10:01
VCは以前インストールしようとしたのですが
「サーバとの接続を再度確立します」と表示されてインストールできなかったのでやめました

自分で組んだプログラムではなく、サンプルをダウンロードして実行しようとしただけなのでコードに問題は無いと思います
Summer 2004で実行したときは大丈夫でしたが
Summer 2003に変えてからおかしくなりました

おそらくDirectXの設定を間違えていると思うのですが…
681デフォルトの名無しさん:2008/06/04(水) 20:14:09
なんだバージョンダウンかよ
DX関数に必要なDLLがないんじゃね?
682676:2008/06/04(水) 20:29:59
診断ツールではsystem.dlがないとありましたが
調べてみるとそこまで必要なものではないようでした

サンプルがSummer 2003を対称にしているのでDLLが足りないわけでもないと思います
683デフォルトの名無しさん:2008/06/04(水) 20:34:51
>>680
IE7か割れOSだろ?
684デフォルトの名無しさん:2008/06/04(水) 20:35:37
BCCはVCといろいろ違いがあるんで
BCC対応のライブラリを作るなり取ってくるなり手間が必要だったような気がするが
685676:2008/06/04(水) 20:38:01
firefoxですがIE6が入ってます
OSはノートの正規品です

もともと古いPCなのでグラボの性能が低いのが原因かもしれませんが
Summer 2004で実行できたので…
686デフォルトの名無しさん:2008/06/04(水) 20:57:38
>>685
いくつか関数の仕様が変わったもんがあったような気がするけどそこは直した?
ビルド通らないと思うけど
687デフォルトの名無しさん:2008/06/04(水) 21:01:17
2004のサンプルを2003で動かそうとしてんだろ?
足りないもんとかあるんじゃね?
変なコントロールまわりなんかやけに9.0初版のときより豪勢になってるし
バージョンダウンで動かそうとするのなんて時間の無駄じゃね?
688676:2008/06/04(水) 21:06:24
ビルドは通ります
エラーもありません

サンプルは2003用のです
2004からコンパネでDirectXが設定できなくなっていたので
2003にしました
689デフォルトの名無しさん:2008/06/04(水) 21:21:30
最終奥義「クリーンインストール」
690デフォルトの名無しさん:2008/06/05(木) 01:07:03
実行してすぐに落ちてるんなら普通に戻り値調べたらなんか出てそうだけどな
ちゃんとエラーチェックしてる?w
691デフォルトの名無しさん:2008/06/05(木) 01:33:17
CとC++ってどう違うの?
692デフォルトの名無しさん:2008/06/05(木) 01:33:50
CのインクリメントがC++
693デフォルトの名無しさん:2008/06/05(木) 02:47:21
サンプルは環境によって落ちるものは落ちる、市販のゲームとは違うよ
サンプルの実行に拘る理由がよく分からない
694デフォルトの名無しさん:2008/06/05(木) 03:34:04
質問です.
MPEG-2を取り扱うアプリケーションを作成したいんですが.
Directshow()で可能だとは思うんですが.
マニュアルはありますか?
695デフォルトの名無しさん:2008/06/05(木) 03:38:32
>>693
言ってることも割れ臭いし
目的もなく2003だしで正直胡散臭いよねw
696デフォルトの名無しさん:2008/06/05(木) 04:39:25
>>694
英語で良いならWindows SDKのドキュメントにある
日本語ならDirectX9 SDKの古いドキュメントがまだMSからダウンロードできたはず
場所の検索は自分でやってネ
697デフォルトの名無しさん:2008/06/05(木) 19:21:39
DirecctX SDK(Mar 2008)とVS2005を使っています。
使っている参考書は
http://www.amazon.co.jp/dp/4839912475/
です。
この本ではDirectXのアプリケーションウイザードがVSに追加されているのですが、私の環境では追加されませんでした。
VS→SDKの順にインストールしました。
最近のバージョンだとDiretctXのアプリケーションウイザードは削除されたのでしょうか?
698676:2008/06/05(木) 19:38:46
2004 Summerにしたら実行できました
2003にしようと思ったのもコンパネから設定変えたかっただけなのでこのまま2004でいこうと思います

DirectX勉強してるサイトのサンプルだったんで何とか実行したかったんです
原因はわかりませんでしたが色々とありがとうございました
699デフォルトの名無しさん:2008/06/05(木) 19:47:21
>>697
結構前に廃止された
たぶん2004年のどっか

>>698
最近のは確かにコンパネに設定が追加されなくなったが
DirectX UtilitiesのなかにDirectX Control Panelってものがあってだな
昔コンパネから設定できたことと同じことができるんだぜ?
700676:2008/06/05(木) 19:55:53
>>699
教えていただきありがとうございます
ただ、2004にはないようです
最新のはPCの性能的に難しそうなのでこのまま我慢することにします

ちなみに5年くらい前のpentiumVです
701デフォルトの名無しさん:2008/06/05(木) 23:15:42
シェーダーを使ってトゥーンシェード(逆引き500に載ってる方法)をやろうとしているのですが、
一部を除き真っ黒になってしまいます。
どういう時にこうなるのでしょうか?
702デフォルトの名無しさん:2008/06/05(木) 23:35:18
ごめんオレエスパーじゃないし
703デフォルトの名無しさん:2008/06/05(木) 23:45:32
DirectPlayがサポート打ち切られたとかマジですか
704デフォルトの名無しさん:2008/06/05(木) 23:56:33
DirectX SDKドキュメントのなんと1ページ目にDirectPlay is deprecatedの一文がッ!
705デフォルトの名無しさん:2008/06/06(金) 00:00:11
2007年6月あたりのSDKがサポートラスト。
ランタイムは当分のこるだろうけど。
706デフォルトの名無しさん:2008/06/06(金) 00:18:28
9cはもう終わりか?

10の時代なのか?
707デフォルトの名無しさん:2008/06/06(金) 00:55:02
9cの時代のままです
708デフォルトの名無しさん:2008/06/06(金) 03:23:42
10はVISTA限定という暴挙にMSが出たからね
おかげで10の普及は相当に遅れるだろうね
709デフォルトの名無しさん:2008/06/06(金) 20:22:26
XPみたいに皆にブーブー文句言われながら8年後位には普及してるよ
710デフォルトの名無しさん:2008/06/06(金) 20:28:15
そう思っていた時期がMeにもありました
711デフォルトの名無しさん:2008/06/06(金) 20:30:34
細かいバージョンを見れば、MSは失敗作をけっこう出してるよ
そしてすぐに無かったことにしている
SEとかCEとか3.0とかMMCとか、NTとか
Vistaもそんな感じ
712デフォルトの名無しさん:2008/06/06(金) 20:34:44
そりゃXPよりブーブーいうだろ
基本的に全てのアプリはDirectXで組んでくださいっていうスタンスなんだから
713デフォルトの名無しさん:2008/06/06(金) 20:38:04
              __
           ,...-‐:"´:.:.::.:.::.:.``:‐,,、
      ,.-..,、/:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:`、  _
     /:.:.:./:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:';;´::.:.l
    l:.:.:.:.:.l:.:.:.:.:.:.:.:.:.:/|:.:.:.:.:.:.:.:.::l、:.:.:.:.::.:.:.:.:l:.:.:.::|
.    |:.:.:.:.:l:.:.:.:.:.:.:.::.::/ |:.;:.:.:.:.:.:.;l:l l:.::l;:.:.:.:.:.:l:.:.:.:;l,
    |:.:.:.:.:.|:.:.:.:.:.::l:.:/ |:|.l:.:.:::.:.:l|l  |:.:ll:.:.:::.::.ll:.:.:.::|i
.   |:.:.:.:.:l|:.:.:.::.::l.|/` 、|l l:.:::./l _,,.-l:j´l:.:.:.:.:| l:.:.:.:lii
   l:.:.:.::.:l i/l:.:.:l |l‐ェ-ュ,` l:://´ェ--,-,.l:.:.:lヽ l:.:.::.l.ii
.   l:.:.:.:.:;l l (l:.:.:.lヽゝ_ノ  '"  ゝ_ノノ.l:.::l,l l .|;:.:.:.l.ij 
   l:.:.:.::.lij `ゞ::.:l ,、,       ∧/l:.:.l/ j|:.:.:.:l.ii
.  |:.:.:.:.:|.ii   ';:.:l、     '   .  ,l::/   l.l:.:.:.l.i|
.  |:.:.::;.;| ii   ヾl >、.   0   , イl:/、   | |:.:.:.l li
.  |:.:.:.|i| ji,.-ィ'´l `l ` ‐-‐ '´  l  l``l‐-l、|:.:.:.l ij
  |:.:.:.:|i|'´/ l  ヽ `、      /  /  l  .l |:.:.:.| i|
 すとーっぷ。>>712は素早く変な空気を作るねぇ…
 >>709より不安な子を見つけたよ。
714デフォルトの名無しさん:2008/06/07(土) 02:02:40
DX9、C++でのテクスチャに関する質問です。
テクスチャのクラス(CTexture)を作り、コンストラクタに画像ファイルのパスを渡してクラス内でテクスチャ(Texture)を生成しています。
CTextureのデストラクタでTextureを削除するようにし(delete Texture)、メモリの解放を試みているのですが
その状態でCTexture* で作ったオブジェクトを削除すると、ヒープが壊れているというエラーが出ます。
多重deleteでエラーが出ることは調べてわかったのですが、
if(Texture) delete Texture;
としているにも関わらずエラーが出るので困っています。
どのようにしてテクスチャが占有したメモリを解放すればよいのでしょうか?
715デフォルトの名無しさん:2008/06/07(土) 02:18:42
>>714
見事にスレ違いだ。
そして君のやりたいことは多分こうだ。

if (Texture) { delete Texture; Texture = NULL; }
716デフォルトの名無しさん:2008/06/07(土) 02:40:27
>>715
できました、ありがとうございます!!そしてごめんなさいでしたァ!!
717デフォルトの名無しさん:2008/06/07(土) 05:40:52
delete Texture;
Texture = NULL;

これでおk
delete NULL;は合法
ま、どのみちスレチ
718デフォルトの名無しさん:2008/06/07(土) 12:22:05
http://www.h2.dion.ne.jp/~takusoft/directx8/d3d/chapter1/sec07/d3d_07.html
のサンプルプログラムを参考にお勉強しているのですが
画面の頂点情報を動的に変えるために
頂点バッファを確保する箇所

VOID* pVertices;
if( FAILED( g_pVB->Lock( 0, sizeof(g_Vertices), (BYTE**)&pVertices, 0 ) ) )
return E_FAIL;
memcpy( pVertices, g_Vertices, sizeof(g_Vertices) );
g_pVB->Unlock();

を処理で何回も経由させる場合
以前に確保したメモリはどのように解放してあげれば良いのでしょうか?
よろしくお願い致します。
719デフォルトの名無しさん:2008/06/07(土) 12:33:41
確保も何もそれはロックしてるだけだと思うが・・・。
あと頻繁にロックするならDYNAMICで作ってDISCARDでロックしろ
720デフォルトの名無しさん:2008/06/07(土) 12:53:13
なるほど、メモリのロックという概念をよく分かってませんでした
動的に確保してるわけでは無いんですね
同じところに何度も上書きしてる感じなのかな?
DYNAMIC と DISCARD は調べてみます
ありがとうございました
721デフォルトの名無しさん:2008/06/07(土) 14:07:06
Direct3DのX-ファイルとテクスチャに関しての質問なんですが。
Xファイルのモデルを作って、それにプログラムでテクスチャ座標を設定して一つのアイテムを作成するのではなく。
モデリングソフトでモデルを作ってる段階で、視覚的にテクスチャを設定して、その情報が入ったXファイルとテクスチャを読みこませて
テクスチャ座標をいちいち設定しなくてもアイテムを表示させたりって出来ないんですかね?

なんだか大体の本はモデルの読み込みと表示は説明してても、モデルの作成からテクスチャの設定部分が余り説明されてないので分かり辛い…
DirectXで使うことを前提とした3Dの本とかってないですかね?

長々と読み辛い文章スマソ。
722デフォルトの名無しさん:2008/06/07(土) 15:58:36
メタセコイアとかで普通にやればそうなると思うんだけど
723デフォルトの名無しさん:2008/06/07(土) 16:02:06
>>721
キミが求めている情報を知りたいのならプログラムの本ではなくデザインの本を買うべきだよ。
DirectXだのOpenGLだと自前レンダラーだの関係なくそれはグラフィックデータの話だ。
724デフォルトの名無しさん:2008/06/07(土) 16:28:31
>>721
普通にモデリングソフト触ればわかるだろが

ちなみにXファイルの中にマテリアルってもんがあって
そのなかにたくさんテクスチャ設定できるようになってるじゃん

構造でいうと

Xファイルx1
  メッシュxN
   マテリアルx1
     テクスチャx1
   モデルのUVx1

な感じになってるのか?(バンプ(マルチテクスチャ2枚以上考慮外)とか考えないと)
Xファイル1つにメッシュがたくさんあって
メッシュ1つにつきマテリアルとUVが1つずつあって
マテリアル1つにつきテクスチャが1つあると・・・

だから、Xファイル1つにテクスチャは複数ある構造がいまのXファイルなわけよ
725デフォルトの名無しさん:2008/06/07(土) 16:38:42
メッシュに対するマテリアルの数に制限はないぞ
726デフォルトの名無しさん:2008/06/07(土) 16:45:35
>>725
そうだっけ?
あーでもそうなってる気もするな

でも実用性なくね?
どの頂点がどのマテリアルか決定しなきゃいけないから
読み込むときにマテリアル単位でメッシュわけなきゃいけないな
この辺はモデリングソフト次第って感じ?
727デフォルトの名無しさん:2008/06/07(土) 17:12:08
モデリングの段階でテクスチャやマテリアル毎に
わざわざメッシュを分けて作る方が現実的じゃないだろ。

実際D3DXMeshでも属性テーブルって形式でマテリアル毎に分割して描画するようになってる。
728デフォルトの名無しさん:2008/06/07(土) 17:25:37
XFileに組み込んだマテリアルやテクスチャって1回XFileから読み込んで
デバイスにセットする方法しかないの?
729デフォルトの名無しさん:2008/06/07(土) 18:27:13
デバイスにセットしないでどうやってレンダリングするのかと
730デフォルトの名無しさん:2008/06/07(土) 18:50:41
>>727
メッシュ1つのマテリアル毎にテクスチャが違うって状況か?
あんまり違いがないならメッシュ1つに付きテクスチャ1枚な
俺の経験だとそんなモデルは重過ぎて動かねぇ

まあ、いまソースみたら俺もできるように組んであるけどなw
スキンメッシュでかなり苦労してた記述がみられるw

スキンメッシュのデータはマテリアルごと描画できるデータになってねぇのなw
抜けてんだな>Xファイルの担当者
731デフォルトの名無しさん:2008/06/07(土) 19:00:24
>>730
何を言ってるかわからねえがスキンメッシュだろうなかろうが同じように描画できるが・・・。
顔の表情とかをテクスチャ差し替えでやろうと思ったら顔だけテクスチャ別にするだろjk
732デフォルトの名無しさん:2008/06/07(土) 19:31:24
>>731
ボーンと頂点を結びつけるインデックスがそうはなってないと思ったが

>>731
メッシュで分けちゃってるな俺んとこのデザイナさん
もちろんプログラムではなんでもできるようにしてあるが
733デフォルトの名無しさん:2008/06/07(土) 20:42:08
>>731
インデックスとマテリアルは関係ないじゃろ。
最終的にはポリゴン1つ1つにマテリアルのインデックスが振られているんだから
それを使ってマテリアル毎に分解して再構成するだけ。
っていうかD3DXで読み込めば全部やってくれるけんど。
734デフォルトの名無しさん:2008/06/07(土) 20:42:37
>>733
>>731じゃねえ>>732だ。
735デフォルトの名無しさん:2008/06/07(土) 21:14:17
>>733
>それを使ってマテリアル毎に分解して再構成するだけ
この作業が面倒臭いって話だな
インデックスがメッシュごとだから、自前で読み込むときは
1回マテリアルごとに直す必要があるな
736デフォルトの名無しさん:2008/06/07(土) 22:22:43
737デフォルトの名無しさん:2008/06/07(土) 22:52:14
>>736
そんなの貼っても割れ厨にはどうせ見れないぞw
738デフォルトの名無しさん:2008/06/07(土) 22:54:40
739デフォルトの名無しさん:2008/06/07(土) 22:59:26
ああ、そういう事か。
犯罪者の都合は考慮しないよ。
740デフォルトの名無しさん:2008/06/07(土) 23:07:03
>>738
ランタイムのウェブインストーラーや開発キット、ヘルプなんかは
ウィンドウズの正規OSでないと落とせなくなった
なのでたまにこのスレで「落とせません」とか「見れません」とか
「わかりません」とかいう奴はほぼすべて割れ厨
741デフォルトの名無しさん:2008/06/07(土) 23:11:28
PC買えばOS付いてくるのに割れ厨って意外と多いのな
742デフォルトの名無しさん:2008/06/08(日) 04:24:44
オンラインゲームをやってるんですが
directxを前のverに戻したらパフォーマンスって下がりますか?
743デフォルトの名無しさん:2008/06/08(日) 04:51:37
744デフォルトの名無しさん:2008/06/08(日) 15:05:13
安全に Release メソッドを呼ぶマクロとして
SAFE_RELEASE のようなものを見かけますが、

// safe release
#define RELEASE(p) ( (p) ? ( (p)->Release(), (p)=NULL ) : (0) )

このマクロで何か問題ありますか?
参照を使った関数だと BCC に注意されたので
745デフォルトの名無しさん:2008/06/08(日) 16:17:37
>>744
翻訳しないで原文ママのエラーメッセージを。
746デフォルトの名無しさん:2008/06/08(日) 17:35:36
DirectShowを使ってGUIのメディアプレイヤーを作っているのですが、
IMediaSeeking::GetDurationで再生時間を取得すると、
3分33秒より長いファイルはオーバーフローして負の値になってしまいます。
IMediaPosition::get_Durationで取得しようとすると、E_NOTIMPL(実装されていない)が帰ってきます。
3分33秒より長いファイルの再生時間を取得するにはどうすればいいのでしょうか?

開発環境はVisual Studio 2005 Pro、言語はCです。
747デフォルトの名無しさん:2008/06/08(日) 17:37:54
最小のコードくらい出せカス
748デフォルトの名無しさん:2008/06/08(日) 17:38:00
CComPtr使いなさい
749746:2008/06/08(日) 17:49:53
>>747
IGraphBuilder *pGraph;
IMediaControl *pMediaControl;
IMediaSeeking *pSeek;
IMediaPosition *pMediaPosition;
REFTIME length;
REFERENCE_TIME TotalTime;

CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
   IID_IGraphBuilder, (void **)&pGraph);
pGraph->QueryInterface(IID_IMediaControl, (void **)&pMediaControl);
pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pSeek);
pGraph->QueryInterface(IID_IMediaPosition, (void **)&pMediaPosition);

pGraph->RenderFile(FileName, NULL);

pMediaPosition->get_Duration(&length);
pSeek->GetDuration(&TotalTime);

こんな感じです。
750デフォルトの名無しさん:2008/06/08(日) 20:43:53
REFERENCE_TIME は普通に使ってる分にはオーバーフローしないが
どこかで int にキャストされてるんじゃね
SetTimeFormat 指定しておいたほうがいいんじゃねえ
751デフォルトの名無しさん:2008/06/08(日) 23:34:30
DirectMusicを最近扱っているのですが、
GetGlobalParam(GUID_PerfMasterVolume, reinterpret_cast<void*>(&V), sizeof(V))で
何故かE_INVALIDARGが返ってきて音量の取得ができません。
不正な引数とありますが、どれが不正な引数なのでしょうか?(Vはlong型です)

ちなみに、この処理を行う前にパフォーマンスの作成、パフォーマンスとシンセサイザーの初期化、
ローダーの作成を行っています。
752デフォルトの名無しさん:2008/06/08(日) 23:41:48
>>751
msdnによると以下のようにあるけど、SetGlobalParamは使用済み?

>SetGlobalParam が rguidType について一度も呼び出されたことがない場合、このパフォーマンスが現在処理している
>グローバル データ リストの中に、rguidType がない可能性がある。その場合、このメソッドは E_INVALIDARG を返す。
>つまり、どのパラメータにも、GetGlobalParam を使って取得できるデフォルト値があると想定しないこと。

753デフォルトの名無しさん:2008/06/08(日) 23:47:46
質問です
ttp://richa850.hp.infoseek.co.jp/programming/dx9_01.html
ここを参考に、後述のプログラムを書いたのですが、少なくともRADEON9600SEで画面がおかしくなります。
正しい方法はどうやればいいのでしょうか?
・APIリファレンスを読んだところ、MultiSampleTypeなどは以前のものと一緒でなければならないとあったので、上記ページでは決め撃ちになっているのを修正しました
・画面がおかしくなるを具体的に言うと、テクスチャが壊れていたり(正しいテクスチャの一部が緑や白のペンキでラクガキでもされたように塗りつぶされてる)、まったく描画されなかったりです
・old.Widthが中途半端な値(672とか)だったりすると、OSごと巻き込んで落ちます。(PC再起動がかかります)


D3DSURFACE_DESC old;
CComPtr< IDirect3DSurface9 > pCurrentDepthStencil;
pDev->GetDepthStencilSurface(&pCurrentDepthStencil);
pCurrentDepthStencil->GetDesc(&old);

//  新しく作ったテクスチャーの大きさと、現在の深度ステンシルの大きさを比較.
if ((old.Width < descNewTexture.Width) || (old.Height < descNewTexture.Height))
{
  // 深度ステンシルを作り直す。
  CComPtr< IDirect3DSurface9 > pNewDepthStencil;
  pDev->CreateDepthStencilSurface
  (
    __max(descNewTexture.Width, old.Width),
    __max(descNewTexture.Height, old.Height),
    old.Format, old.MultiSampleType, old.MultiSampleQuality, TRUE, &pNewDepthStencil, NULL
  );
  pDev->SetDepthStencilSurface(pNewDepthStencil);
}
// 上記を行なっただけではまだ問題はおこらず、下記を行なうと発症します。
// 上記だけ、もしくは下記だけだと問題はおきません。
pDev->GetSwapChain(0, &pSwapChain)
pSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &pRenderTarget);
pDev->SetRenderTarget(0, pRenderTarget);
754デフォルトの名無しさん:2008/06/08(日) 23:56:19
>>752
ありがとうございます、使用しておりませんでしたorz
デフォルト値がないのですね、なぜこんな仕様になっているのやら…orz
755デフォルトの名無しさん:2008/06/09(月) 08:10:40
変数でも何でもとりあえず初期化しやがれとしか言い様が無い
756デフォルトの名無しさん:2008/06/11(水) 18:45:36
Ver9あたりからボタンとかテキストボックスのような
コントロールのようなものが使えるようになってるみたいなんだが
あれってなんて名前でしょうか?

使い方書いてあるHP検索したいわけだが
なんて検索したらいいかわからんのです
757デフォルトの名無しさん:2008/06/12(木) 01:16:45
DXUT
758デフォルトの名無しさん:2008/06/12(木) 19:35:52
dxutに未来はあるのでしょうか?
759デフォルトの名無しさん:2008/06/12(木) 19:50:35
モデルの、パーツだけ別のモデルに差し替えることって
なんという言葉でしたっけ
760デフォルトの名無しさん:2008/06/13(金) 09:36:07
void PartsDakeSashikae_to_OtherModel(void) { return; }
761デフォルトの名無しさん:2008/06/13(金) 11:24:56
#define PDtoOM PartsDakeSashikae_to_OtherModel
PDtoOM();
762デフォルトの名無しさん:2008/06/13(金) 14:05:08
>>760-761
面白いと思ってやってるのか?
763デフォルトの名無しさん:2008/06/13(金) 16:35:41
自前の画像を使ってボタンを作るとき、レスポンス(押しっぱなし)
の頻度をループ数とタイマーのどちらで制御すべきだと思いますか?
764デフォルトの名無しさん:2008/06/13(金) 16:48:27
タイマー
ループにして何か良いこと有るの?
765デフォルトの名無しさん:2008/06/13(金) 17:38:24
ループだとFPSに依存するから怖いよ
766763:2008/06/14(土) 03:46:37
thx
やっぱりそうなんだ。
処理落ちすることって前提なのね。
767デフォルトの名無しさん:2008/06/14(土) 04:33:41
メッセージで処理しろよ。つーかwinプログラミング覚えろよ。
768デフォルトの名無しさん:2008/06/14(土) 10:52:37
軽いゲームならfps依存でかまわんと思うよ。
ただ、その処理をカウンタで実装したところで
タイマーと比べて簡単になるとは思わんが。
769767:2008/06/14(土) 20:46:38
>>767
プロシージャのタイマーより
クラス内でtimeGetTime()使ったほうがいいだろ?
770デフォルトの名無しさん:2008/06/14(土) 20:56:25
変な人がおる・・・
771デフォルトの名無しさん:2008/06/16(月) 21:19:24
IDirect3DBaseTexture9から画像サイズって取れますか?
IDirect3DTexture9じゃないです
772デフォルトの名無しさん:2008/06/16(月) 21:41:00
取れないよ。
取れないけど・・・どういう状況でその要求が出てくるんだ?
まともな設計してりゃありえないと思うんだが。
773デフォルトの名無しさん:2008/06/16(月) 22:01:16
シェーダークラスで
GetTextureで0のテクスチャの幅と高さを
シェーダーに渡したかったのです。

Textureは、普通のテクスチャだったり、RENDER_TARGETだったりするし、
サイズを別に持たせたくなかった(メモリけちった)のです
無理っぽいので、別個に渡すようにします。
774デフォルトの名無しさん:2008/06/16(月) 22:24:40
あぁ、GetTextureからという話ならIDirect3DResource9::GetTypeで判別して
各継承クラスにキャストすりゃいいだけだよ。
775デフォルトの名無しさん:2008/06/16(月) 22:44:20
普通のテクスチャもRENDER_TARGETも同じIDirect3DTexture9だとおもうけんど
776デフォルトの名無しさん:2008/06/16(月) 23:35:37
ボ、ボリュームテクスチャも作るつもりだもん
777デフォルトの名無しさん:2008/06/16(月) 23:44:20
お前かわいいな
ちょっとこっち来いよ
778デフォルトの名無しさん:2008/06/18(水) 16:26:38
LPDIRECT3DDEVICE9から
ライトのポジションは、GetLightから取れるのですが、
カメラのポジション取得は、できるのでしょうか?
無理ですか?

779デフォルトの名無しさん:2008/06/18(水) 22:23:47
カメラのポジションも当然取得できる。
つか出来ないわけねーだろ。
780デフォルトの名無しさん:2008/06/18(水) 23:08:03
カメラの「位置じゃなくビュー行列が取れるだけだから
そっからカメラの位置は計算しないといかんけどな
781デフォルトの名無しさん:2008/06/18(水) 23:16:51
782デフォルトの名無しさん:2008/06/19(木) 03:55:17
やっぱ、シェーダでカメラの位置が必要になるので
カメラ行列生成情報は、グローバルで持っておくべき?
あと、ビルボード行列も
783デフォルトの名無しさん:2008/06/19(木) 04:27:29
>>782
同じことで悩んでる人発見
カメラのクラスってどこに配置すればいいんでしょうね
784デフォルトの名無しさん:2008/06/19(木) 10:01:29
カメラを管理するクラスをワールドを管理するクラスが持つだろJK
785デフォルトの名無しさん:2008/06/19(木) 13:49:00
カメラはワールドに複数配置できて、
アクティブな奴を切り替え出来るように作っておくとデバッグにも便利
786デフォルトの名無しさん:2008/06/19(木) 15:43:47
その発想は無かった
787デフォルトの名無しさん:2008/06/19(木) 18:54:51
>>786
素人乙
788デフォルトの名無しさん:2008/06/20(金) 00:22:34
いろいろ3Dツールを使って試しているのですが
分からないことがあるので質問です。

例えばメタセコイアでpng形式のアルファ付きテクスチャをポリゴンに張ると
レンダリング結果はテクスチャの透明部分はポリゴンも透明になりますが
xファイルに出力してビューワで見ると透明部分は白色表示になってしまいます
これはxファイルにはテクスチャのアルファは無視(白と認識)されるという事なのでしょうか?
789デフォルトの名無しさん:2008/06/20(金) 00:32:36
1) メタセコにおいて、テクスチャマップとアルファマップの両方を指定している場合、
xファイルはマルチテクスチャをサポートしていないので、xファイルに保存した段階で
アルファマップの情報は失われる。

2) そのビューワ(何のビューワか知らんが)がテクスチャのアルファ値を無視しているだけ。
790デフォルトの名無しさん:2008/06/20(金) 01:07:04
>>789
1に関してはテクスチャは1枚しか使用していません。
メタセコイアの材質設定で「模様」のテクスチャにアルファ付きのpng画像を指定した場合と
材質設定の「透明」に白黒のbmp画像を指定した場合の両方を試しましたが
どちらもメタセコイア上で透明に見えていた部分はxファイルで白になっていました。

2に関してはSDK付属のMeshViewerを使って見ていました。
一応自作のプログラム上でも表示を試しましたが
ビューワと同様でアルファの影響は見られませんでした
(DirectX初心者な自分が作ったプログラムなので
それ自体にアルファに関する抜けがある可能性もありますが)

透過効果を使ったxファイルのサンプルでもあればいいのですが
現状では表示するプログラム側に誤りがあるのか
3Dツール側の設定が足りてないのか分からずなんとも・・・
791デフォルトの名無しさん:2008/06/20(金) 01:22:24
PNGのアルファってかなり怪しかった気がするんだけど。
素直にDDSを使う方がいいと思われ。
792デフォルトの名無しさん:2008/06/20(金) 01:29:36
失敗しているとしたら、テクスチャの読み込み段階でアルファ値をわざわざ削ってしまっているか、
レンダーステートおよびテクスチャステージステートの設定が適切でないか、だ。

後者の方が圧倒的に多いパターンなんだけど、
このへん実はピクセルシェーダ使った方が余程わかりやすかったりするんだよねぇ。
793デフォルトの名無しさん:2008/06/20(金) 03:02:14
>>785
おまえ頭いいな
794デフォルトの名無しさん:2008/06/20(金) 03:09:58
なんだかんだで
DirectGraphicsのほとんどの要素をラッピングしたクラスが必要なんですね。
たいへんですね
795790:2008/06/20(金) 08:34:24
>>791
DDS形式使っても無理でした(つД`)

>>792
レンダーステートとテクスチャステージステートは
特に設定していなかったので、レンダーステートに
D3DRS_ALPHABLENDENABLE設定してみたのですが
結果は変わらず。
テクスチャステージステートはデフォルトでイイと思うのですが
この辺の設定も自信無いので違ってたらご指摘お願いします orz

ちなみに使用してるSDKのバージョンは2004/Oct
796デフォルトの名無しさん:2008/06/20(金) 09:31:11
>>795
半透明描画はSRCBLENDとDSTBLENDの設定とCOLOR_OPの設定もちゃんとやらないと話が始まらないぞ。
797デフォルトの名無しさん:2008/06/20(金) 09:40:18
>>795
まずはテクスチャのα値をちゃんと参照する方法を覚えろ。

しかしコンパイル済みMeshViewはテクスチャのα値無視するのは確かに不適切だよな
ソース入ってるから自分でリコンパイルすりゃいいんだけど、メニューでON/OFFくらいつけといてほしかったわw
798790:2008/06/20(金) 10:18:37
>>796,797
d、やっと出来ました!ヽ(`Д´)ノ

pD3DDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
pD3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );

この二行が抜けてました、ってか
D3DRS_SRCBLENDALPHAとD3DRS_DESTBLENDALPHAの定数と勘違いして使って混乱してました(つД`)ゴメンナサイ
テクスチャステージステートはとりあえずデフォルトでも大丈夫でした。
それにしてもMeshViewerはα反映しないんですね
お陰でデータの方に問題があるのかと勘違いして無駄な時間を・・・orz
799デフォルトの名無しさん:2008/06/20(金) 13:04:01
今さっき、テクスチャのαを適用するようにしたMeshViewを作ったわ
2008だとそのままじゃコンパイル通らなくて、いろいろめんどかった

てか、存在しないヘッダファイルをincludeするなよサンプルなのにって思った
800790:2008/06/20(金) 20:58:27
昼に解決したと思って放置してたものを弄ってて
背景透けたと思ってたら、バックグラウンド(クリア色)は
透明ポリゴン越しに透けて見えたけどすぐ後ろに別ポリゴン置いたら
そのポリゴン無視してバックグラウンドの色が表示されてることに気づいた・・・orz
801790:2008/06/20(金) 22:44:21
ぁぁ・・・Zバッファ有効にしてたら透過が上手くいかず
Zバッファ無効にすると前後関係を自動処理してくれないから
自前で描画順序を制御しなけりゃいけないって事かな(;´-`)
802デフォルトの名無しさん:2008/06/20(金) 22:45:39
半透明 Zバッファ
でぐぐりまくりんぐ
803790:2008/06/20(金) 22:52:38
つい先ほどからぐぐりまくりんぐです。
初歩の初歩みたいな疑問をグダグダ書き連ねて申し訳なさ爆発です。
804デフォルトの名無しさん:2008/06/20(金) 22:55:09
昨今の事情を鑑みるからには、半透明でモデルを書くな。
使うなら見た目は諦めるか深度ピーリングでもしろ。

頂点処理なんてアホほど浮いてるんだしアルファで抜くより全部
ポリゴンのほうが圧倒的に最近の主流だったりはする。
805デフォルトの名無しさん:2008/06/20(金) 23:01:57
あおりじゃなく、深度ピーリングってなんのことだ?
あと、「半」透明じゃなくて、アルファ値を使った「透過」がやりたいだけなら、アルファテスト使えばよくね?
806デフォルトの名無しさん:2008/06/20(金) 23:04:45
>>804
頂点処理が浮いてるっていうのは、
大抵の場合ピクセルシェーダが忙しくて、頂点シェーダが遊んでるってことですか?
どうやったらコアの稼働率?を調べることが出来るんでしょうか?
807デフォルトの名無しさん:2008/06/20(金) 23:09:24
>>806
まだそんなことを気にするレベルに至って無い
順番にやっていけ

半透明とZバッファの相性の悪さは昔からの命題
一般的には半透明の描画だけリストに登録しておいて、完全不透明の描画が全て終わった後、カメラから遠い順に描画していく
std::multimap<float, IAlphaDraw*> でリストつくると楽だよ
floatがカメラからの距離
IAlphaDrawは半透明描画の描画インターフェースを提供するインターフェースクラス
808デフォルトの名無しさん:2008/06/20(金) 23:16:35
>>806
NV PerfHUD
809デフォルトの名無しさん:2008/06/21(土) 00:41:46
なんか2度書きってなかったっけ?
810デフォルトの名無しさん:2008/06/21(土) 00:43:03
不透過の物体を描画するときはZバッファをONにしてカメラに近いほうから描いていくと速いぞ
811デフォルトの名無しさん:2008/06/21(土) 00:53:12
エフェクトやパーティクルなんかは別として、
モデル自体の半透明処理はかなりの例外扱いだからなぁ。

被写界深度やモーションブラーなんかもやれないし
特殊な条件以外で使うようなものじゃない。
812デフォルトの名無しさん:2008/06/21(土) 07:11:37
2Dゲーでかなりの枚数を重ねようとしてるなら
正直、PCのグラボではフィルレートがまったく足りてないと思う
813デフォルトの名無しさん:2008/06/21(土) 09:28:27
3Dでもハイレゾで普通にバンプ、スペキュラ、シャドウとかやってると
普通にピクセルシェーダーカツカツになるよ。

逆に頂点は数百万クラスになってきてるけど、今は統合型アーキテクチャが主流だしどうなることやら。
814デフォルトの名無しさん:2008/06/21(土) 09:56:02
うんうん頂点シェーダはなにやっても落ちないわ
でもピクセルシェーダはα物をちょっと拡大して表示するだけでもう処理落ちはじめやがんの

これってなんで?
PS2とかだとそんなことなかった気がすんだけっちょ
815デフォルトの名無しさん:2008/06/21(土) 10:02:18
PS2はフィルレートバカじゃん。
使うテクスチャも16色や256色のパレットが殆どだし。
そもそも解像度も640x480より小さいしなー。
816デフォルトの名無しさん:2008/06/21(土) 10:14:13
頂点毎に呼ばれるVSと違ってPSはピクセル毎に呼んでるはずだから
解像度あげたらエライ負担になるだろ
817デフォルトの名無しさん:2008/06/21(土) 11:29:23
DirectXについて料金のことですが
これって無料でダウンロードできるんですか?
818デフォルトの名無しさん:2008/06/21(土) 11:48:48
いいえ。MicrosoftとNDA契約を結んだあと
利用目的に応じたライセンス料を支払う必要がありますん。
819デフォルトの名無しさん:2008/06/21(土) 11:55:28
初心者質問スレなんだから意地悪しないでググレカスでいいじゃないか・・・
820デフォルトの名無しさん:2008/06/21(土) 12:13:01
ダウンロードセンター行けば無料か有料化は一瞬で分かるだろ
821デフォルトの名無しさん:2008/06/21(土) 13:48:25
やべ、俺NDAのサインしてねぇ。

あれ、誰かきた。
822デフォルトの名無しさん:2008/06/21(土) 13:51:09
DrawPrimitiveを使った描画で消失点を画面中央以外にするにはどうすればいいですか?
823デフォルトの名無しさん:2008/06/21(土) 13:54:02
>>822
Projection 行列をいじる
824デフォルトの名無しさん:2008/06/21(土) 14:28:40
>>823
即レスありがとうございます。
色々調べてみたのですがよくわかりません。
D3DXMatrixPerspectiveFovLHの他に座標変換するのですか?
825デフォルトの名無しさん:2008/06/21(土) 14:31:09
>>824
D3DXMatrixPerspectiveOffCenterLHとか使うといい。
826デフォルトの名無しさん:2008/06/21(土) 15:19:14
>>825
できました。ありがとうございました。
827デフォルトの名無しさん:2008/06/21(土) 18:38:44
boost::intrusive_ptr<IDirect3DVertexBuffer9> spVB;
とVBを確保したのですが、
pd3dDevice->CreateVertexBuffer(sizeof(D3DTLVERTEX)*4, 0, D3DFVF_2DVERTEX, D3DPOOL_DEFAULT, m_pVB.get(), NULL );
と、作るときにダブルポインタに出来ません・・・
IDirect3DVertexBuffer9* buf=spVB.get();
pd3dDevice->CreateVertexBuffer(sizeof(D3DTLVERTEX)*4, 0, D3DFVF_2DVERTEX, D3DPOOL_DEFAULT, &buf, NULL );
と渡す以外の方法で良い方法ありませんか?
intrusive_ptrを使うのが悪いのだろうか・・・
828デフォルトの名無しさん:2008/06/21(土) 18:44:15
CComPtr使えよ
829デフォルトの名無しさん:2008/06/21(土) 18:50:29
>>828
ありがとうございます。
DXUTを使ってるので、
atlbase.hをインクルードするときに
Need to include strsafe.h after tchar.h
って言われるのでIntrusiveに逃げようかと思ったんですが、
やはりDXUT.hの中に入れ込んででもCComPtrのほうが良いのでしょうか。。
830デフォルトの名無しさん:2008/06/21(土) 19:12:50
その程度のリソースは余計な事せずにそのまま管理すりゃいいだろ・・・
831デフォルトの名無しさん:2008/06/21(土) 19:19:23
>>827
&(spVB.get())じゃダメなのか?
832デフォルトの名無しさん:2008/06/21(土) 19:38:10
>>829
何を嫌がってるのか理解できんが、だったらintrusive_ptrをそのまんまぱくって

T** ptr_ptr() { return &px_; }

みたいなのを付け足したのを自前でこしらえたらいいじゃん。

>>831
こらこらw
833デフォルトの名無しさん:2008/06/21(土) 19:44:39
>>830-832
ありがとうございます。
やはり普通にCComPtrを使うことにしました。
>>832
の意見は大変参考になりました。
ありがとうございました。
834デフォルトの名無しさん:2008/06/21(土) 19:52:30
>>827
CreateVertexBufferに渡すのは素のIDirect3DVertexBuffer9*で、
それを使ってintrusive_ptrを初期化すればいいかと。
835デフォルトの名無しさん:2008/06/21(土) 20:51:57
>>829
その警告だったら、DXUT.hの中でATLのヘッダ読み込めば出ないけどね。
ATL使うのがデフォなら、DXUT.hに追加してプリコンパイル済みヘッダと
使用するのもありだと思うけど。
836835:2008/06/21(土) 21:00:56
ああ、すまん。上のレス読んでなかった。
DXUT.hの中で読み込めばいいのは知ってたのか。
typoしたんだが直すまでもないな。
837デフォルトの名無しさん:2008/06/21(土) 21:21:45
>>833
CComPtrはかなり独立したテンプレートクラスだから、コピペでパクるのもいいぜ?
ってか俺はそうしてる。
なぜならVS2008にはatlbase.hが入ってないからだ;;
838デフォルトの名無しさん:2008/06/22(日) 00:05:48
スマートポインタって不必要になったら自動で削除っていうけど
不必要になったときっていつなんだ?
スタティックで参照されると一生消えないんだろうか?もしかして
839デフォルトの名無しさん:2008/06/22(日) 00:08:19
俺はデータを管理するクラス経由でアクセスするようにしてるから
vector、list、set、map、stringくらいしか使ってないな・・・。
840デフォルトの名無しさん:2008/06/22(日) 00:09:51
>>839
setとmapってどういうときに使うの?
841デフォルトの名無しさん:2008/06/22(日) 00:26:04
>>838
参照がなくなった時だろ。
842デフォルトの名無しさん:2008/06/22(日) 00:57:07
>>838
普通はプログラムの終了時だと思うぞ
843デフォルトの名無しさん:2008/06/22(日) 02:27:49
>>840
mapは外部ファイルから読み込みするリソース(シェーダー、テクスチャ、モデル)なんかを
二重に読まないようにファイル名をキーにインターフェイス突っ込んどいて参照カウンタで管理に。

multimapとかmultisetなんかはパーティクルとかの挿入ソート代わりに。
844デフォルトの名無しさん:2008/06/22(日) 07:02:25
>>837
入ってないのExpress Editionだけだろ
845デフォルトの名無しさん:2008/06/22(日) 10:15:19
しかも2008に限らず無料版でATLが入っていたことなどないはず・・・・あ、2003(コンパイラのみ提供)はATLありだったっけ?
846デフォルトの名無しさん:2008/06/22(日) 11:05:11
>>842
じゃあ、うっかりスタティックで参照しやがった馬鹿が開発チームにいたら
デフォでリークし続けるってこと?
参照あってもこっちが削除したいっていったら強制的に削除してほしいときは
どうしたらいいだろうか?
847デフォルトの名無しさん:2008/06/22(日) 11:14:10
参照があるのに削除したらスマートポインタの意味がないじゃん。
848デフォルトの名無しさん:2008/06/22(日) 11:18:44
プライオリティ設定できないの?
優先度高の奴が残ってるときだけ参照あったら削除しないで
優先度低の奴は残ってても強制執行・・・みたいな
849デフォルトの名無しさん:2008/06/22(日) 11:44:55
weak_ptrみたいなの?
850デフォルトの名無しさん:2008/06/22(日) 12:17:08
>>846
言ってることがよく分からんが
その「スタティックな参照」を行ってるスコープから出れば解放されるんじゃないの
一番大きいスコープ=プログラム(プロセス)
スコープから出る=プログラムの終了
851デフォルトの名無しさん:2008/06/22(日) 12:52:04
>>850
スコープから出る時にデストラクタが呼ばれるならそれはLocal変数であってStatic変数ではない罠。
852デフォルトの名無しさん:2008/06/22(日) 14:54:23
>>851
スコープは例えただけで、関数内スタティック変数が関数抜けると
解放されるとかそういう意味で言ったんじゃないんだ
分かりづらい例えですまんかった

「プログラム終了時に消えると思う」に対して「スタティック参照したらリークするんじゃ」
って話だったから終了時に消えるって事を押したんだが
関数内スタティックが関数抜けても消えないっていうのを問題にしているのかね>>846
853デフォルトの名無しさん:2008/06/22(日) 16:32:05
>>846
参照カウンタの概念は理解してるか?
それとグローバルスコープ(プログラム終了)を抜ける時に
グローバル変数やスタティック変数のデストラクタが呼び出されて
解放されることも。
854デフォルトの名無しさん:2008/06/22(日) 17:30:45
その辺りは実際に書いて試してみたほうが早いよね
855デフォルトの名無しさん:2008/06/22(日) 18:06:10
要はバッサリ削除したいのに
使いもしないスタティック参照がインスタンスを消させなくしているから
どーでもいいような優先度の参照に関してはつかんでても無視して強制的に削除したいということだよ
856デフォルトの名無しさん:2008/06/22(日) 18:57:20
普通に管理クラスつくって自分でマネージメントした方がいいと思うけど。
DirectX関係のインターフェイスは余計な事しないでシンプルに扱ったほうがいい。
857デフォルトの名無しさん:2008/06/22(日) 20:19:39
>>855
weak_ptr
858デフォルトの名無しさん:2008/06/22(日) 23:01:47
そもそも使いもしないスタティック参照がいて
かつ参照がいるのに強制削除って状況がおかしいよ。
859デフォルトの名無しさん:2008/06/23(月) 00:03:08
確かに・・・リソースの強制削除なんて特異な状況聞いたことないな。
単にまともな管理が出来ていないだけにしか聞こえないな。
860デフォルトの名無しさん:2008/06/23(月) 01:48:29
>>858
シーンを何回も呼ぶ(ロードアンロードを繰り返す)んだけど
そのうちの1シーンがスタティックでポインタを保持してるところが多いのよ
いらなくなったらそのシーンは破棄するんだけどプログラム自体はスタティック参照だから
残るのよこれが
範囲が広すぎて修正不可能だからどうすんべーって感じなわけ
861デフォルトの名無しさん:2008/06/23(月) 04:37:39
staticにした時点で間違ってると言うことだNE
862デフォルトの名無しさん:2008/06/23(月) 09:51:22
シーンが破棄されるときに、デストラクタから開放するべきなんじゃ?
てか破棄されうるシーンがスタティックなポインタを持ってるっておかしくね?
863デフォルトの名無しさん:2008/06/23(月) 11:17:03
>>846のレスからすると何か変な勘違いを前提にして、
強制削除とやらをしなければならないと思っているような気がするが。
>>838からの流れなんだろうけど、その後の他の人のレスと
話が噛み合っていない。

そもそも、リソースの管理に問題ありというのには同意。
864デフォルトの名無しさん:2008/06/23(月) 13:04:07
スタティック参照って言葉でややこしくなってる気が
865デフォルトの名無しさん:2008/06/23(月) 16:01:33
オンボードビデオカードだと
CreateDeviceでD3DCREATE_HARDWARE_VERTEXPROCESSINGが失敗すると思ってよいのでしょうか?

また、ビデオカードを使ってる環境でオンボードでも動作するように開発するには
D3DCREATE_SOFTWARE_VERTEXPROCESSINGで初期化を行えばあとはCPU速度次第ということになるのでしょうか?
866デフォルトの名無しさん:2008/06/23(月) 16:21:38
>>865
少なくともここ1年以内のIntel製オンボードは
D3DCREATE_HARDWARE_VERTEXPROCESSINGでも通るぞ

恐らくだが3年前の物でも通ると思う
867デフォルトの名無しさん:2008/06/23(月) 16:53:54
>>866
ありがとうございます
自分の環境が945Gなのですが駄目でした
この環境で動作させるには、頂点数やライティングに気をつければよいのでしょうか?
868デフォルトの名無しさん:2008/06/23(月) 17:59:50
>>867
頂点数とライティング、あとはVRAMを食いすぎないようにすれば十分な速度は保てると思う。
オンボードグラボは基本的にメインメモリからVRAMを取るから十分にメモリを積んでない
システムでVRAM食いすぎると酷いことになる。
でかいテクスチャを何枚も使ったりしないで簡単な3Dエフェクト程度の利用だったら
特に問題なく動くんじゃないかな。
869デフォルトの名無しさん:2008/06/24(火) 00:10:48
intelGMAは未だにピクセルシェーダはサポートするけど
頂点シェーダはサポートしない(HW頂点処理ができない)んじゃなかったっけ
870デフォルトの名無しさん:2008/06/24(火) 00:21:24
ピクセルシェーダー/バーテックスシェーダー2.0に対応していない
グラフィックボードって何年前ぐらいの物ですか?
871デフォルトの名無しさん:2008/06/24(火) 00:28:07
GeForce3とかRadeon8500とかだな
872デフォルトの名無しさん:2008/06/24(火) 12:26:00
873デフォルトの名無しさん:2008/06/24(火) 15:23:12
この前GF5200FXで動かしたら、ピクセルシェーダ2.0に対応してるのはいいけど物凄い遅さでびっくりした
(PS処理省いたらめちゃくちゃ軽くなった)
874デフォルトの名無しさん:2008/06/25(水) 20:02:31
D3D10でD3D9のD3DPERF_BeginEventに相当するものってありますか?
875デフォルトの名無しさん:2008/06/27(金) 17:12:50
bmp形式の画像ファイルを背景色の代わりに表示させることってできますか?
876デフォルトの名無しさん:2008/06/27(金) 17:15:34
>>875
スプライトなり何なり使って画像を描画

Zバッファだけクリア

後はお好きなようにどうぞ
877デフォルトの名無しさん:2008/06/27(金) 17:26:45
>>876
できました!
ありがとうございました。

878デフォルトの名無しさん:2008/06/28(土) 01:10:00
えええ
879デフォルトの名無しさん:2008/06/28(土) 07:25:15
D3DXLoadMeshFromXInMemory のオプションで指定するD3DXMESH列挙型にはどんな意味があるのでしょうか?
色々と試してみたのですが、パフォーマンスに影響があるようには思えないのですが
880デフォルトの名無しさん:2008/06/28(土) 08:02:10
HLSLの組み込み関数「ddx(x)」ついての質問です。
SDKのヘルプには、
スクリーン空間の x 座標について、x の勾配を返します。
とありますが、具体的にどんな計算をしているのですか?
教えていただけないでしょうか?
881デフォルトの名無しさん:2008/06/28(土) 14:04:28
英語では、Returns the partial derivative of x
xの偏微分を返すって書いてるね。
882デフォルトの名無しさん:2008/06/28(土) 15:43:46
>>881
レスありがとうございます。

x方向の傾きを返してくれるみたいですね。
その傾きを求めるための具体的な値が、どのようなものなのか、
わからなくて困っています。

傾き == 高さ / 距離 の「高さ」と「距離」は、
どんな値が使われるのか知りたいです。

どなたか、よろしくおねがいします。
883デフォルトの名無しさん:2008/06/28(土) 16:29:24
プログラムと一緒にd3dx9_?.dllとかをダウンロードさせたいのですが、どのような形式なら
配布してよいんでしょうか?cabですか?
884デフォルトの名無しさん:2008/06/28(土) 17:00:26
>>883
添付して配布は、ライセンス的に面倒なことになるんじゃなかったかな。
ウェブインストーラへのリンクを出せばいいと思う。
885デフォルトの名無しさん:2008/06/28(土) 17:23:59
>>882
HLSLのddx()/ddy()は、PSのdsx/dsyに対応する。
dsxのマニュアルには、レンダリングターゲットのx 方向の変化割合とあるので
↓か、それに近い形になるんじゃないかなあ

float2 delta = 1.0f / rendertarget.size;
float1 dsx = ( pixelcolor( x+delta.x, y ) - pixelcolor( x, y ) ) / delta.x;
float1 dsy = ( pixelcolor( x, y+delta.y ) - pixelcolor( x, y ) ) / delta.y;
886デフォルトの名無しさん:2008/06/28(土) 17:58:22
>>883
http://msdn.microsoft.com/en-us/library/bb174600(VS.85).aspx
http://msdn.microsoft.com/en-us/library/bb219742(VS.85).aspx
ファイル単体ならライセンス違反だが、最小構成なら2MB程度の添付で済む。

ファイル単体で添付できるにこしたことはないんだが、MSは自分らのランタイムを
プライベート配布されるのを嫌う傾向があるからなぁ。
887デフォルトの名無しさん:2008/06/28(土) 21:55:22
まあ、なんかトラブルあったら、クレームは全部MSに来るわけだしな。
動かない、なんとかしろ、しか言わないキチガイにつきあうよりは、
自分トコから一括ダウソにしておいたほうがまだしもマシってことだろう。
888デフォルトの名無しさん:2008/06/29(日) 14:32:56
firefoxみたいなブラウザの画面をテクスチャにするにはどうしたらいいでしょうか?

win32APIを使うべきなのかDirectXを使うべきなのかもよくわからないです
889デフォルトの名無しさん:2008/06/29(日) 19:38:35
両方使え
890デフォルトの名無しさん:2008/06/29(日) 20:46:44
これからDirectXの勉強をしようと思ってるんですけど、
SDKはどのバージョンを使えばいいのでしょうか?
9.0c以降多すぎてよく分からないです
開発環境や実行環境のサポート状況で適当に選んじゃっていいのかな
891882:2008/06/30(月) 00:53:27
>>885
レスありがとうございます。

実際に値を入れて、いろいろと調べてみます。
892デフォルトの名無しさん:2008/06/30(月) 23:13:30
コンパイルすると以下のようなエラーが出ます
サンプルプログラムなのでソースにエラーはないと思います
調べましたが原因が分かりません
よろしければどなたか御教授いただけないでしょうか?

エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 113: '_D3DCOLORVALUE' の宣言が複数見つかった
エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 60: 一つ前の '_D3DCOLORVALUE' の定義位置
エラー E2146 c:\Borland\Bcc55\include\d3dtypes.h 130: 宣言には識別子が必要
エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 132: '_D3DRECT' の宣言が複数見つかった
エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 70: 一つ前の '_D3DRECT' の定義位置
エラー E2146 c:\Borland\Bcc55\include\d3dtypes.h 149: 宣言には識別子が必要
エラー E2238 c:\Borland\Bcc55\include\d3dtypes.h 151: '_D3DVECTOR' の宣言が複数見つかった
エラー E2344 C:\Program Files\mdsdk\Include\d3d9types.h 51: 一つ前の '_D3DVECTOR' の定義位置

以下略
893デフォルトの名無しさん:2008/06/30(月) 23:18:22
>>890
日本語マニュアル必須なら2004OCT
不要なら最新版使っとけ
894デフォルトの名無しさん:2008/06/30(月) 23:38:23
まだBCC使ってるやつ居るのか…
895デフォルトの名無しさん:2008/06/30(月) 23:44:44
BCCはDirectXに対応してないハズ
どうしてもBCCがいいなら昔のバージョンを使うしかない
VC使えばいいと思うよ
896デフォルトの名無しさん:2008/06/30(月) 23:49:53
BCCからVCへの移行は難しい物なのでしょうか?
897デフォルトの名無しさん:2008/07/01(火) 00:08:51
やってから言え
どうしてお前が難しいと思うか予想しなければいけないんだ?
898デフォルトの名無しさん:2008/07/01(火) 00:09:35
VCはISO準拠度が高いので
もし、移植できないコードがあれば、それはコードが間違ってるってことだから
安心して修正していいよ
899デフォルトの名無しさん:2008/07/01(火) 00:10:25
分かりましたVCを導入してみます
900デフォルトの名無しさん:2008/07/01(火) 01:18:06
どうせ趣味グラマだろ?
正規版OSならタダなんだから導入も糞もないだろ
901デフォルトの名無しさん:2008/07/03(木) 10:53:32
恐ろしいことに2005年以降でもExpressEdition+PlatformSDKを無視して
BCCを使う入門書(笑)や入門サイト(爆)は実在するんだ…
902デフォルトの名無しさん:2008/07/03(木) 12:02:15
古いサイトが更新されてないだけではなく?
903デフォルトの名無しさん:2008/07/05(土) 12:26:00
HDVファイルの任意のタイムコードの場所を表示する(orビットマップファイルで吐き出す)
コマンドラインのプログラムを作らないといけなくなったのですが、DirectShowベースで
実現可能でしょうか?

C:\> showHDV.exe /pid 10 /timecode 00:00:00:25 test.m2t ← こんな感じ
904デフォルトの名無しさん:2008/07/05(土) 16:36:09
スレ違い。
とりあえずSDK読んで考えろ。
905デフォルトの名無しさん:2008/07/05(土) 19:54:26
http://www.greenwood.co.jp/~k-aki/article/sslib2_dsound/source/sslib2/dsound/StreamSoundBuffer.cpp
上記のソースコードですが、CStreamSoundBuffer::Create内でCComPtrを二箇所使用しています。
CComPtrはググってみたところ、スマートポインタの一種と出ました。間違いないでしょうか?
また、bufferはサウンドバッファでm_pStreamBufferに受け渡されているので解放されないのに対し、
notifyは何にも受け渡されないので解放(Release)されてしまうように思われます。
IDirectSoundNotifyはIDirectSoundBufferと異なり解放されても問題ないのでしょうか?
906デフォルトの名無しさん:2008/07/05(土) 20:07:00
言葉が足りなかったので
IDirectSoundBufferはサウンドの再生時に必要になるので必要な間にReleaseすると問題になります。
であれば、IDirectSoundNotifyは通知位置を設定するのに使ったので解放すると設定無効にならないのでしょうか?
907デフォルトの名無しさん:2008/07/05(土) 21:48:18
自己解決しました。
http://msdn.microsoft.com/ja-jp/library/cc370470.aspx
上記を見るかぎり、解放しても問題なさそうですね。
908デフォルトの名無しさん:2008/07/05(土) 23:32:35
>>904
あんまり有益じゃないアドバイスですね。
一応スレにはルールがありますので、ルールに則った回答をお願いします。
909デフォルトの名無しさん:2008/07/05(土) 23:57:59
このスレは初心者と優しい人とギスギスした人で成り立ってます
プログラマーって極端だな
910デフォルトの名無しさん:2008/07/06(日) 00:14:16
最近のSDKではDirectX9の更新が無いようですが、
最後に更新されたのはどのバージョンですか?
911デフォルトの名無しさん:2008/07/06(日) 00:25:20
d3dx9_xx.dllのバージョンが上がっている以上、
今でも更新されているとお考えください
912デフォルトの名無しさん:2008/07/06(日) 02:14:10
マスターアップ前のPGは生理痛の時の女と一緒
つまり、女のPGは大変てこった
913デフォルトの名無しさん:2008/07/06(日) 14:48:39
ロックできる指定サイズのサーフェィスってどうやってつくんの
914デフォルトの名無しさん:2008/07/06(日) 19:57:19
質問です。

DirectSoundでプライマリバッファのボリュームをいじると、Windowsアプリケーションの「ボリュームコントロール」でコントロールできるWavのところに反映されてしまうようでいまいちよろしくありません。
ゲーム終了時に元に戻すことも考えましたが、ゲーム中にユーザーが「ボリュームコントロール」からいじってたら〜と考えるとこれでも不適当かと。

なので、いったん
「ゲームのBGMや効果音のセカンダリバッファ」 > 「セカンダリバッファ」 > プライマリバッファ
と、1つセカンダリバッファをかませたいのです。

DirectXのヘルプを読むと「ほとんどのバッファの場合、出力先はプライマリ バッファと呼ばれるミキシング エンジンである」
とあったため、工夫すればセカンダリをかませることはできそうなのですが、良い手法はありますでしょうか?
915デフォルトの名無しさん:2008/07/06(日) 20:21:20
マスターボリュームをいじるプログラムにするな
以上!
916デフォルトの名無しさん:2008/07/06(日) 20:48:58
AOE2はゲーム終了時とかフォーカス喪失時にボリューム元に戻すような仕様だったな
大企業でさえそれなんだから別に気にしないってのも一つの手だとは思うが
どうしても嫌ならManagedDirectXのセカンダリバッファがヒントになるかもしれん
917デフォルトの名無しさん:2008/07/06(日) 22:12:01
丁度DirectSoundで盛り上がってるみたいで便乗を
現状、効果音を多重に鳴らす際にDuplicateSoundBufferを使ってます
でもこれ、鳴り終わるまではReleaseしちゃいけないので面倒です

今はここのイベント通知処理を利用し
ttp://msdn.microsoft.com/ja-jp/library/cc370470.aspx
play時にDuplicateSoundBufferで複製。ついでにstaticなリストにCComPtrでくるんで追加。
再生が終わったらリストからはずす(よって開放される)
という感じに実装しています

でもこれが異常に面倒。とてもほかの方々がそうやってるとは思えません
そもそもDuplicateSoundBufferについてぐぐるにひっかからなさすぎ(26件)

みなさん多重に再生する必要がある効果音などは、どのようにしているのでしょうか?
918デフォルトの名無しさん:2008/07/06(日) 22:13:30
>>917補足です
再生が終わったらイベントが通知され(登録したコールバック関数が呼ばれ)、そこでリストからはずすようにしています。
リストが壊れないようにクリティカルセクションでかこってやったり、かなり面倒なんですよね
一度作ってしまえばあとは使うだけとは言え・・・
919デフォルトの名無しさん:2008/07/06(日) 22:25:27
効果音を鳴らすたびに作って解放するのかと逆に問いたい
920デフォルトの名無しさん:2008/07/06(日) 22:58:09
Managedの話で悪いが俺は最大同時再生数と同じ数だけセカンダリバッファ作っちゃってるわ
再生終了はコールバックじゃなくて毎フレームのポーリングで対処してる
少なくとも俺のPCでは遅延とかメモリ食いすぎとかは起こってない
921デフォルトの名無しさん:2008/07/06(日) 23:02:08
>>920
私もそんな感じの作りにしてます
他で使うメモリに比べればサウンドで持っていく割合とか微々たるもんだしって感じに思えたので
922デフォルトの名無しさん:2008/07/06(日) 23:05:54
>>920
デュプリケートって内部的にカーソルとかその辺のインターフェイスがコピーされるだけで、
実体のサウンドファイルは1つのままだと思うだけどまさか全メモリコピーなのか?
923デフォルトの名無しさん:2008/07/06(日) 23:10:06
>>922
なん・・・だと・・・?
今まで全メモリコピーだったわけだが
SDKのリファレンス見たらそんなような事書いてあるな
どう考えてもDuplicateSoundBuffer使ったほうが効率的じゃねえか・・・
924デフォルトの名無しさん:2008/07/07(月) 07:05:25
>>923
お前w
昔のDirectX7本とかじゃこの手のは当たり前にのってるのに、最近はおざなりだよなー
925デフォルトの名無しさん:2008/07/07(月) 19:46:01
directxのapiで音声入出力のメモリに直接アクセスする手段ってありますか?
926デフォルトの名無しさん:2008/07/07(月) 23:35:32
DuplicateSoundBufferに対応していないサウンドボードがまだありそうな気がする・・・
927925:2008/07/07(月) 23:35:36
自己解決
928デフォルトの名無しさん:2008/07/07(月) 23:50:55
自己解決したときにその情報を出さないやつが、なんで質問して情報を出させようとするんだろうな
929925:2008/07/08(火) 00:08:35
>>927は自分じゃありません
930デフォルトの名無しさん:2008/07/08(火) 00:10:42
「DuplicateSoundBuffer」がサウンドカードの機能だと思っている人が居たことに衝撃。
931デフォルトの名無しさん:2008/07/08(火) 00:48:58
マルチポストに答えてやったら、別スレで「自己解決しました」って
報告してるのを見たときは吹いた
932デフォルトの名無しさん:2008/07/08(火) 07:05:59
>>930
ちげーの?
「ドライバだよ!」とかいう言葉遊びは簡便な
933デフォルトの名無しさん:2008/07/08(火) 10:01:37
>>932
いやDirectXが処理してる。
音を出すのはサウンドカードだが音のデータをサウンドカードに流してるのはCPUだぞ。
デュプリケートは1つのバッファに対してどこ部分をプライマリにコピーするかって
情報をもったインターフェイスが増えているだけの話だからぶっちゃけ全部CPU処理だぜ。

不安ならセカンダリをLOCALで作成してDirectSound自体をCPU処理固定にすると
環境依存のバグが発生しなくなるのでお勧め。

元々サウンドカード上の専用メモリとかISA時代の転送が遅かった時代のカードにしかないし。
934デフォルトの名無しさん:2008/07/08(火) 10:29:22
>>933
おいおい、そりゃ「DirectXでソフトウェアエミュレート」すればDirectXの仕事だけどさw
普通に使ってればDuplicateSoundBufferの命令をうけて(ハード上なり、PCのメインメモリー上なりに)バッファを確保するのはサウンドカード・ひいてはそのドライバの仕事だぜ?
だからこそ、DuplicateSoundBufferは必ず成功するとは限らないんじゃないか。
935デフォルトの名無しさん:2008/07/08(火) 12:46:43
実際に動作しないサウンドカードの製品名を挙げてくれ。
そもそもいったいいつの時代の話をしているんだ?
936デフォルトの名無しさん:2008/07/08(火) 12:48:19
動かないハードがあるとして、その場合はソフトウェアで勝手にやってくれないもんなの?
937デフォルトの名無しさん:2008/07/08(火) 14:33:49
具体的名称までは聞いたことないが、
「PCゲー作ってる会社でのよくあるサウンド関係のトラブルはそれだから注意しな」
と付き合いのある会社から言われたな

ちなみにSDKサンプルでも、きちんとDupできないならCreateでごまかすように組んである
自動ではやってくれない
938デフォルトの名無しさん:2008/07/08(火) 19:12:39
>>937
>DupできないならCreateでごまかす

それこそまさにISAの時代の話じゃなくて?

オンボードReadtek、USB外付け音源、サウンドブラスター、
MonsterSound あたりはテストしたが、そんな大きな不具合に遭遇したこと無いな。

それより、ASIO にした方が良いのかぁ、と思ったことは何度かある。
939デフォルトの名無しさん:2008/07/08(火) 20:24:02
そういうわけで完全ソフトウェア処理のXAudio使えや愚民共、と相成りました
940デフォルトの名無しさん:2008/07/08(火) 22:11:27
XACTがないと早送りや巻き戻しすらできないあれか
941デフォルトの名無しさん:2008/07/08(火) 23:04:51
今時クエリーインタフェイスとか
愚民杉
942デフォルトの名無しさん:2008/07/08(火) 23:53:19
今も昔もそもそもDirectSoundにハードウェアのまともな対応を期待する方が愚。
かなり初期の頃からDirectSoundだけはソフト処理でやるのが鉄板になってたはずだぞ。
943デフォルトの名無しさん:2008/07/08(火) 23:57:24
DirectSoundをソフト処理って、どういう意味合いで言ってるんだみんな?
IDirectSoundBufferの確保時に、フラグでDSBCAPS_LOCSOFTWAREをいれるってこと?
944デフォルトの名無しさん:2008/07/08(火) 23:57:25
選べるようにしておけばいいだけの話だろ
945デフォルトの名無しさん:2008/07/09(水) 00:08:35
たしか、DirectSound ってサウンドカードのメーカーのあまりものグダグダさに、
マイクロソフトが嫌気がさして、ソフトウェア処理でこれからは行く、とかっていう
記事を見た気がする。

Vista DirectSound HAL で検索をかけるといろいろ出てくる。

Windows は DTM 系のソフトが弱いってのはこの辺りが原因なのかねぇ?
ローランドあたりが先陣切ってやってくれないとね。
946デフォルトの名無しさん:2008/07/09(水) 00:17:57
VistaのMIDIへの冷遇は忘れねえ
947デフォルトの名無しさん:2008/07/09(水) 00:25:19
>>943

そういうこと。
たとえば最初の3つはサウンドカードのメモリに確保されていて、
その後はメモリが足りなくてシステムメモリに確保された場合に、
ミキシングが絶望的な状況になる。

いまどきのCPUならSSEとかMMXあたりでミキシングできるし、
10個20個程度ミキシングしてもCPUの負荷なんざ1%も食わないのでサウンドカードは
ただの音声出力装置以外の機能は期待しない方がいいと思われ。

そもそもサウンドカードに専用メモリ乗ってたのってCPUからの転送が遅かったISA時代だしな・・・。
948デフォルトの名無しさん:2008/07/09(水) 01:24:23
soundblasterの割と最近のサウンドカードがスタティックバッファ持ってるけど、あれが使える状況ってあるのかな
949デフォルトの名無しさん:2008/07/09(水) 09:59:42
DSBCAPS_LOCSOFTWAREフラグたてておけば、DuplicateSoundBufferは必ず成功するのかな?
みんなわりと音楽系はそんなに気をつかってないんだね
950デフォルトの名無しさん:2008/07/09(水) 22:49:22
SOFTWARE でもサイズが大きいと失敗する。
正確には、Duplicate の時は成功するが Play の瞬間に失敗するようになる。
951デフォルトの名無しさん:2008/07/09(水) 22:52:48
>>947
今のCPUをもってしても遅延が絶望的に大きいのが欠点。
外部入力への反応での遅延は致命的。
ASIO であってもまだ不満。

952デフォルトの名無しさん:2008/07/10(木) 00:19:59
DirectSoundでDuplicateして鳴らすなんて普通はゲームのSEだろう。
その程度なら1,2フレ遅れたところでたいした問題ないよ。
953デフォルトの名無しさん:2008/07/10(木) 01:45:29
>>951
ASIO がだめってどんなんだよ・・・。

ゲームの場合は少し前からSEを鳴らし始めればいいわけで。
954デフォルトの名無しさん:2008/07/10(木) 15:47:38
音ゲ厨と60fps厨が組み合わさった怪物だろう
955デフォルトの名無しさん:2008/07/10(木) 18:54:55
> 外部入力への反応

って書いてあるから、サウンドエフェクタとかボイスチャットみたいに
リアルタイムにキャプチャーした音を加工するやつじゃね?
956デフォルトの名無しさん:2008/07/10(木) 21:49:55
ゲームとマジDTMとはまた違うからなぁ
957デフォルトの名無しさん:2008/07/11(金) 00:10:26
ボイスチャットなんざネットワーク介して時点で遅れてるんだから関係ないだろ
958デフォルトの名無しさん:2008/07/11(金) 00:38:21
出力だけ同期してりゃいいんだよ
959デフォルトの名無しさん:2008/07/14(月) 17:58:10
質問です。

DirectSoundには、Direct3Dの
D3DCREATE_MULTITHREADED
のような、スレッド間利用に関するフラグのようなものはありますでしょうか?

どうも別スレッドでwavを読み込ませた時に「うまく読み込めない場合がごくまれにある」のです
私自身のたんなるミスの可能性も高いですが
960デフォルトの名無しさん:2008/07/14(月) 21:02:14
>>959

>DirectSoundには、Direct3Dの
>D3DCREATE_MULTITHREADED
>のような、スレッド間利用に関するフラグのようなものはありますでしょうか?

SDKのドキュメントをみたらどうだい?

>私自身のたんなるミスの可能性も高いですが

そう思うならデバッグしたらどうだい?
961デフォルトの名無しさん:2008/07/14(月) 21:32:24
>>960
お前はいつも役に立たないなぁ
962デフォルトの名無しさん:2008/07/14(月) 21:32:29
>>960
すいません。言葉足らずでした
ドキュメントはさらってみましたが「無い」と確信することができませんでした

ミスの可能性のほうももちろん調査中です。
ですが現状、SDKのサンプルをコピペしてテストしている状況でして、原因となりそうなのが
「DirectSoundを生成したスレッド以外のスレッドで、音のロードを行った」
くらいしか思いつかない状態なのです
963デフォルトの名無しさん:2008/07/14(月) 23:35:48
>>961
お前が言うなよ

>>962
「うまく読み込めない場合」って具体的に何?
言葉が足りないのはそっちじゃないの?
964デフォルトの名無しさん:2008/07/14(月) 23:39:10
スレの趣旨理解しようぜ
知ってる人がいれば教えればいいだけの質問なんだから
965デフォルトの名無しさん:2008/07/15(火) 00:17:29
>>959
俺は別スレッドロードで失敗したことがないのでわからにい。
ファイル読み込みのルーチン自体がスレッドセーフじゃない可能性もありそうだ。
966デフォルトの名無しさん:2008/07/15(火) 08:48:48
DirectX9で
Sprite->Draw()
IDirect3DDevice->DrawPrimitive()
の両方でテクスチャを変形させて表示したときスプライトの方はアンチエイリアシングみたいな色の補間が効いてたんですが
これって仕様と思っていいんでしょうか?
よくわかってない素人ですがよろしくお願いします
967デフォルトの名無しさん:2008/07/15(火) 10:12:30
>>966
FilterTypeは変更できる
グラフィックボードのドライバにも依存
968デフォルトの名無しさん:2008/07/15(火) 10:59:54
>>965
なるほど、別スレッドでのロードで失敗したことがない方がいらっしゃるということは、
単純に私のコードの問題そうです。

ちょっとネットで別サンプルを探してみるとします。
ありがとうございました。
969デフォルトの名無しさん:2008/07/15(火) 11:44:59
スキンメッシュのOBBの作り方で、ボックスの作る部分なのですが、
ttp://www.nomuraz.com/denpa/prog005.htm#IDPROG0028
ぐぐったり色々調べたのですが、解説してあるサイトは上記のところくらいしか見つからなく
海外でも検索してみたのですが、サンプルがおいてあるような
ところまでたどりつけませんでした。
サンプルがおいてあるサイト等ありましたらおしえてください。

970デフォルトの名無しさん:2008/07/15(火) 12:00:52
ありがとうございました
971969:2008/07/15(火) 12:07:36
自己解決しました
972デフォルトの名無しさん:2008/07/15(火) 12:17:35
>>971
事故解決した内容を詳しく!
後でログを見る人の為にも
973デフォルトの名無しさん:2008/07/15(火) 12:48:30
>>972

>>971は偽者でまだ解決してません。
アニメーションメッシュならできましたが・・・
974デフォルトの名無しさん:2008/07/15(火) 12:54:07
ふつうに>>969のとこにソースあるじゃん
975デフォルトの名無しさん:2008/07/15(火) 12:55:33
PointSpriteでマウスとのあたり判定処理は出来ますか?
976デフォルトの名無しさん:2008/07/15(火) 13:49:58
>>973
DirectX逆引き大全500の極意: 紀伊國屋書店BookWeb
http://bookweb.kinokuniya.co.jp/htm/4798013161.html

977デフォルトの名無しさん:2008/07/15(火) 13:59:21
960が延々と粘着してるんだな
こういうやつって通報してアク禁にしてもらうことってできねーのかな?
978969:2008/07/15(火) 14:01:23
>>974
そこのソースではサイトにかいてあるようにうまくいかなかったなのです
あと、ヘッダーファイルもなかったですし・・・

>>976
アニメーションXファイルは、その本を買ってきて実現しました。
いま、スキンメッシュのXファイルをやってるのですが
これがうまくいかなくて困っているのです
979デフォルトの名無しさん:2008/07/15(火) 14:05:59
>>969
そこのサイトのヤツでOBBもとめるのはうまくいったよ、多少問題が出るから適当に手直しはしたが。
最小二乗法でOBBもとめるところさえ使えればボーン毎にOBB作るのなんてただの単純作業だし。
980デフォルトの名無しさん:2008/07/15(火) 14:06:48
960は、いらない子
981デフォルトの名無しさん:2008/07/15(火) 16:18:05
>いま、スキンメッシュのXファイルをやってるのですが

だからXファイルは使うなと何度言えば分かるんですか!!
いい加減にしてください!
982デフォルトの名無しさん:2008/07/15(火) 16:32:06
>>981
Xファイルと同じくらい手軽に扱えるフォーマットと、ライブラリができないと、それは無理ってもんだぜ
983デフォルトの名無しさん:2008/07/15(火) 16:40:31
xファイルの表示って、モデリングソフトやエクスポーターの違いで速度全然変わってきたりしますか?
984デフォルトの名無しさん:2008/07/15(火) 16:58:36
>>983
それを知るためには Xファイルのフォーマットを知る必要がある。
だから、それを聞きたいときには

「X ファイルのフォーマットの詳しい解説をしているサイトってありませんか?」

と聞いた方が良い。
985デフォルトの名無しさん:2008/07/15(火) 17:12:25
>>984
どうせ最後には「Xファイルから独自フォーマットへの変換(ry」だしな。
986デフォルトの名無しさん:2008/07/15(火) 17:25:30
Xファイルの駄目っぷりを分かりやすく解説してるサイトってありますか?
987デフォルトの名無しさん:2008/07/15(火) 17:31:03
>>986
スキンメッシュが使えて対応ソフトの多さやDirectX上での扱いやすさを考慮した場合決してダメなフォーマットではない。

仕様が古いのとソフトによっては出力形式にクセがあるのが欠点なだけだ。
シェーダーがんがん使うような用途には厳しいのは確かだが商用レベルを目指すのでも無ければ問題ない。

逆にXファイルのダメさを語ったところでMAYAとかXSIみたいな高価なソフトを所持していて
専用のエクスポートプラグインを書けるようなスキルがなけりゃ結局Xファイル使うことになるよ。
988デフォルトの名無しさん:2008/07/16(水) 17:53:59
Xファイルとそれのアレンジ設定用ファイルあればいいじゃん
989デフォルトの名無しさん:2008/07/16(水) 22:42:57
専用のエクスポータ程度かけないスキルでアプリを作る?
おいおい冗談よせよ
990デフォルトの名無しさん:2008/07/16(水) 22:56:12
でもエクスポーターなんて作ってたらゲームとか全然進まないよ

エクスポーターはお前に任せるから俺はゲーム作りたい
991デフォルトの名無しさん:2008/07/16(水) 23:08:09
ゆとり乙
992デフォルトの名無しさん:2008/07/16(水) 23:09:03
ゆとりで構いません、ゲームつくりたいです
993デフォルトの名無しさん:2008/07/16(水) 23:23:33
ツクールマジおすすめ
994デフォルトの名無しさん:2008/07/16(水) 23:59:52
エクスポーターなんて半日かからんだろうに・・・。
と思ったけどここは初心者スレなんだよな。
正直、Xファイルに身体を合わせる方が俺には難しい。
995デフォルトの名無しさん:2008/07/17(木) 08:06:30
対象ソフトのプラグイン用のAPIの解析と、情報の取り方を調べるだけで、
とても半日では終わらないんだが、作ったことが無い奴ほど適当なことを吠えるな。
996デフォルトの名無しさん:2008/07/17(木) 11:00:03
俺の場合、マップデータのエクスポーターは仕様考えたり調整こみで2ヶ月以上かかった
スキンメッシュは3日もあれば出来た。
自分でフォーマット作ったらxファイルとか2度と使う気にならなくなる。
997デフォルトの名無しさん:2008/07/17(木) 11:08:53
SDKサンプルのMeshFromObjから手をつけるのがオヌヌメ
あとはこことか
ttp://www.inframez.com/

いきなり独自フォーマット作るとか初心者には無理。
既存フォーマットを独自で読み込んでるうちに自分が作りたいものに対して効率の良い
フォーマットが分かってくる。

998デフォルトの名無しさん:2008/07/17(木) 13:33:18
.
999デフォルトの名無しさん:2008/07/17(木) 13:36:43
.
1000小倉優子 ◆YUKOH0W58Q :2008/07/17(木) 13:37:16
1000ならジュースでも飲むか
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。