【C++】 DirectX初心者質問スレ Part14 【C】at TECH
【C++】 DirectX初心者質問スレ Part14 【C】 - 暇つぶし2ch1:デフォルトの名無しさん
07/09/08 22:21:46
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part13 【C】
スレリンク(tech板)

2:デフォルトの名無しさん
07/09/08 22:22:28
【関連サイト】

MSDN DirectX
URLリンク(www.microsoft.com)

DirectX Home Page
URLリンク(www.microsoft.com)

BBX (掲示板)
URLリンク(isweb8.infoseek.co.jp)

DXライブラリ置き場
URLリンク(homepage2.nifty.com)

Lamp:ゲーム開発とその学習をサポートするミドルウェア
URLリンク(lamp.sourceforge.jp)

TWINTAIL LOVERS.
URLリンク(www.twin-tail.jp)

Pastel's Laboratory
URLリンク(www.roy.hi-ho.ne.jp)

GamDevPukiWiki - DirectX総合スレ (過去ログ等)
URLリンク(gamdev.org)

GamDevPukiWiki - 3DCG製作ソフト (過去ログ等)
URLリンク(gamdev.org)

ゲームを作るための素材を集めよう まとめサイト
URLリンク(paw.my-sv.net)

3:デフォルトの名無しさん
07/09/09 07:27:58
スマートポインタの話題禁止

4:デフォルトの名無しさん
07/09/09 08:36:08
読み込んだメッシュを描画高速化のために最適化しようと考えているのですが
上手くいっているのか分かりません。

D3DXLoadMeshHierarchyFromXでメッシュを読み込んだ後にOptimize関数を
使ってメッシュを最適化しているのですが、速度が全然変わってないように
思えます。

D3DXLoadMeshHierarchyFromXを実行した際に
「 Miss rate before optimization: 1.000000 」
というデバッグメッセージが流れているのでD3DXLoadMeshHierarchyFromX内で
既に最適化処理をしているという事でしょうか?

5:デフォルトの名無しさん
07/09/09 13:11:51
D3DPOOL_DEFAULTなテクスチャをLockしてる間に
デバイスをロストしたらUnlockしないとマズー?


6:デフォルトの名無しさん
07/09/09 14:04:31
ロストには

①.D3DDeviceがロストするとき(この場合はPOOLなんとかで作ったものも関係なく死ぬw)
②.リソースだけがロストするとき(この場合はPOOLなんとかで作ったもんは中途半端に生きている)

の2つがあって対処方法は2つ

Ⅰ.それぞれの場合に対してキチンと対処する
つまり、①の場合の対処はD3DDeviceまで一度完全に破棄して、すべて作り直す
②の場合の対処はD3DDeviceは生きているので死んだリソースだけチェックして
死んだリソースのみ復旧作業を行う

Ⅱ.①も②もD3DDeviceまで一度完全に破棄して、すべて作り直す

大抵は面倒なのでほとんどの人はⅡの方を選ぶと思う
復旧にゲームの仕様まで絡むときもあるので注意して組むこと
諦めるのも手ではある

7:デフォルトの名無しさん
07/09/09 15:19:23
>>6
Thanks!

8:5
07/09/09 15:42:13
追加で質問なんだが
D3DDeviceがロストすると
D3DPOOL_DEFAULTなテクスチャの中身はあきらめ?
GPGPUみたいなことをやりたいんだが。


9:デフォルトの名無しさん
07/09/09 17:13:21
>>8
D3DDeviceがロストするとすべてが駄目

10:デフォルトの名無しさん
07/09/09 17:40:58
>>9
ども

11:デフォルトの名無しさん
07/09/09 21:57:31
D3DXCreateTextureFromFileExでテクスチャを読み込む時にサイズを指定して
テクスチャの解像度を元のリソースより低めにして読み込んでるんだけど、
そのまんまの解像度で読み込んだ時と描画FPSが変わらない気ガス

元のリソースの方の解像度を変えないと描画速度変わりませんか?
高解像度と低解像度のリソース用意するのメンドクサイのですが・・・

12:デフォルトの名無しさん
07/09/09 22:21:14
見当違いで無意味な最適化の努力で悩むのが初心者の特徴



13:デフォルトの名無しさん
07/09/09 22:23:13
違う。脱初心者の背伸びを温かく見守るべき

14:デフォルトの名無しさん
07/09/10 05:25:00
今、DirectX SDKについてくる、チュートリアルを見ながら勉強しています。
Tut04_Litghs(円柱がくるくるまわるやつ)をいじっていろいろ試しているのですが、
D3DXMatrixPerspectivForLHで射影変換行列を得るときに、
第4引数の、近い方の前方投影面を小さな値にすると円柱の外側の面が欠けたように見えるのは
なんでなんでしょうか?
0.00008fぐらいにすると少し欠けて見えて、0.00001fにすると半分が消えたようになって見えます。

もともとは近い投影面が0でもいいのかどうかということが知りたくて、0にしたら半分が欠けてしまって、
いろんな値で試したらこうなったのですが、欠けてしまうことの理由がよく分からないです。
なぜなのでしょうか?

15:デフォルトの名無しさん
07/09/10 06:41:02
>>14
最終的にZn~Zfが0~1になるように変換されるので、Zf/ZnがZバッファの
精度に影響する。

Znを0にしてしまうと計算上すべてのZが同じ値になってしまうので、Zバッファが
全く機能しなくなる。

16:デフォルトの名無しさん
07/09/10 06:43:44
>>5さんではありませんがリソースだけのロストがあるんですか・・
デバイスロストしか知らなかった。

便乗してすみませんが質問してもいいですか。
ID3DResource9にロストを調べるAPIがないようなのですが
ロストしたことを知るにはどうしたらよいのでしょう?

17:デフォルトの名無しさん
07/09/10 07:04:07
俺がやってたときはIsLostとかあった気がするけどねw

18:16
07/09/10 07:59:12
>>17
レスありがとうございます。
DX8,DX9のヘルプを見てみたのですが
自分が探した範囲では IsLost 見つからないです。
DX8/9で関係がありそうなのはGet/SetPriority, Preload あたりでしょうか。
生成時にSetPriorityでそこそこ高い値を設定してGetPriorityで0が返ったら
管理下にないのでPreloadを実行?ですかね・・。よくわからないです。

19:デフォルトの名無しさん
07/09/10 11:32:55
ID3DXCreateBoxで作ったメッシュから
自力で頂点を集めて自力でワイヤー表示したいです。(RenderStateの設定とか使わずに)
おおかたうまく表示できているのですが、何本か正しくない飛び出た線が描かれてしまいます。
まったく原因が分からないんですが、やり方は正しいでしょうか?

****************************************
//頂点宣言など
struct Face{
D3DXVECTOR3 v0;
D3DXVECTOR3 v1;
D3DXVECTOR3 v2;
};

struct VERTEX{
D3DXVECTOR3 v;
};
#define FVF_VERTEX (D3DFVF_XYZ)

std::vector<Face> g_vecFaces;

***********************************
//描画部分
for(int i=0;i<g_vecFaces.size(); i++){
g_pD3DDev->DrawPrimitiveUP(D3DPT_LINESTRIP,3,g_vecFaces[i].v0,sizeof(VERTEX));
g_pD3DDev->DrawPrimitiveUP(D3DPT_LINESTRIP,3,g_vecFaces[i].v1,sizeof(VERTEX));
g_pD3DDev->DrawPrimitiveUP(D3DPT_LINESTRIP,3,g_vecFaces[i].v2,sizeof(VERTEX));
g_pD3DDev->DrawPrimitiveUP(D3DPT_LINESTRIP,3,g_vecFaces[i].v0,sizeof(VERTEX));
}



20:19
07/09/10 11:33:59
つづき
*****************************************
//頂点集め
D3DXCreateBox(g_pD3DDev,2.0f,2.0f,2.0f,&g_pBox,NULL);

//バーテックスバッファ取得
BYTE* vb;//先頭のポインタ
g_pBox->LockVertexBuffer(D3DLOCK_READONLY,(void**)&vb);

//FVFサイズ取得
DWORD FVFSize;
FVFSize = D3DXGetFVFVertexSize(g_pBox->GetFVF());

std::vector<D3DXVECTOR3> vertices;
D3DXVECTOR3 *v;
for(unsigned int i=0;i<g_pBox->GetNumVertices();i++){
v = (D3DXVECTOR3*)( vb + (FVFSize * i) );
vertices.push_back(*v);
}

g_pBox->UnlockVertexBuffer();
unsigned short *ib = NULL;
g_pBox->LockIndexBuffer(D3DLOCK_READONLY,(void**)&ib );
for(UINT i=0; i<g_pBox->GetNumFaces()-1; i++){
Face face;
face.v0 = vertices[*ib++];
face.v1 = vertices[*ib++];
face.v2 = vertices[*ib++];
g_vecFaces.push_back(face);
}
g_pBox->UnlockIndexBuffer();
ここまで

21:19
07/09/10 12:01:53
for(UINT i=0; i<g_pBox->GetNumFaces()-1; i++){

じゃなくて

for(UINT i=0; i<g_pBox->GetNumFaces(); i++){

でした。
試行錯誤していろいろ弄ってたのが残ってました。

22:4
07/09/10 15:25:42
>>12
そのとおり最適化について全然分かっていない初心者なので、どの当たりが
見当違いなのかご指摘お願いします。

DX90SDKのOptimizeMeshを見ながらやっているのですが、階層構造の
スキンメッシュの場合だと、サンプルのソースをそのまま使う事も
出来ず困っています。
せめて勘違いしている部分だけでも・・・!

23:11
07/09/10 15:34:27
漏れも最適化したいけど全然分かっていないのでアドバイス頼む!

24:デフォルトの名無しさん
07/09/10 18:45:58
複数アニメーションのXファイルをmeshviewerで保存するとモーションの
順番が逆転するんだけど、これって防ぐ方法ってないの?

25:デフォルトの名無しさん
07/09/10 18:49:34
meshviewerってXファイルを書き出す時にメッシュの形でエラーのある部分を
修正する機能があって重宝しているんで、ちょっと困ってる

26:デフォルトの名無しさん
07/09/10 18:57:09
>>15
なるほど。0~1に変換されるというところが分かってませんでした。
ありがとうございました。

27:デフォルトの名無しさん
07/09/10 19:32:46
画面上に半透明な四角を表示するにはどうしたら良いですか?

28:デフォルトの名無しさん
07/09/10 22:54:00
チュートリアルをきちんとやると出来るようになります。

29:デフォルトの名無しさん
07/09/11 00:40:55
D3DXMatrixTranslation()などで指定する移動量って単位は何なんでしょうか??

30:デフォルトの名無しさん
07/09/11 00:59:32
単位は自分で決めた通りのもの

31:デフォルトの名無しさん
07/09/11 02:07:45
meshviewerってソースあるんだろ。好きなように改造すれば

32:デフォルトの名無しさん
07/09/11 11:32:48
directXで3Dクイズゲームを作っています。
回答は、画面上にキーボードから打ち込んで
答えるようにしたいと思っています。

そこで質問なんですが、3Dポリゴンが表示されている画面上にいっしょに
テキストボックスやボタンを表示するにはどうしたらよいですか?

33:32
07/09/11 11:37:00
例ですが、
URLリンク(nichiyo-web.hp.infoseek.co.jp)
このことわざ蛍のようにテキストボックスを表示したいということです。

34:デフォルトの名無しさん
07/09/11 12:04:43
>>33
SDKにそのまんまのクラスあったような‥‥

35:デフォルトの名無しさん
07/09/11 12:12:33
D3DXの使いにくい機能を使うか、
フルスクリーンにしないことを前提に標準コントロールを使うか、
自前で実装するか。

36:デフォルトの名無しさん
07/09/11 12:40:55
か、
DXUTのテキストボックス使うか、
DXUTのソース参考に自分で実装するか、
あきらめる。

Vista対応も考えるとなるとIME周りが非常に面倒。

37:デフォルトの名無しさん
07/09/11 13:14:15
>>32
IDirect3DDevice9::SetDialogBoxModeを使えばフルスクリーンでもGDI関係と
一緒に使えるが、テキストボックスやボタンを子ウィンドウとして作成しても
問題ないかは試したことがないな。

38:デフォルトの名無しさん
07/09/11 13:22:59
>>37
子ウィンドウをクリップするよう気をつけてPresentしないと塗りつぶされちゃうよ

39:デフォルトの名無しさん
07/09/11 17:54:23
逆に言うと上書きに気をつければ使えるってことか

40:29
07/09/11 19:06:10
>>30
ありがとうございました。
メートル単位でやってみることにします。

41:デフォルトの名無しさん
07/09/12 16:33:59
光跡を描画したいんですが、簡単な方法はありませんか?

42:デフォルトの名無しさん
07/09/12 18:10:04
まずは簡単の基準を明確にせよ。

43:デフォルトの名無しさん
07/09/12 18:11:31
むずかしくてもいいので教えてください

44:デフォルトの名無しさん
07/09/13 17:34:27
directplayを使ってローカルのマシン同士で通信を行うプログラムを
組んでいます。

通常の"169.254.205.100"等のIP同士で通信を行う場合は上手くいくのですが
"192.168.1.2"や"192.168.1.3"等のようにルータから割り当てられたIPだと
マシン同士の接続ができません。

しかしながら、人のDirectPlayプログラムのサンプルを実行してみると、
ルータによって割り当てられたIP同士でも通信できる物があるので、
上手くすれば自分のプログラムでも接続できるようになるとは思うのですが、
自分の力ではどうにも限界です。(サンプルのソースが公開終了してたり動作しなかったり)

ルータによって割り当てられたIPアドレス同士で通信を行うにはどうしたらよいのでしょうか?

45:デフォルトの名無しさん
07/09/13 18:21:49
出来ないのが逆に不思議

46:デフォルトの名無しさん
07/09/13 18:37:13
サンプルソースを幾つか集めてみた中で、ちゃんと接続出来る物の他に
出来ないものもあったのでプログラムの組み方次第で接続出来る様に
なるとは思うのですが・・・。

47:44
07/09/13 21:28:28
なんとか解決できました。

デバッグ(F5)によってプログラムを実行させるた際と、実行(Ctrl+F5)
によって動作させた場合で動作が異なっていたのがバグの原因だったようです。

動作が異なっていた部分はHost関数とConnect関数なのですが、なぜデバッグ実行と
通常実行とで動作が異なっていたかが気になります…、とはいえ一応解決です。
ありがとうござました。

48:デフォルトの名無しさん
07/09/13 23:04:36
DirectPlayってとっくにMicrosoftに見捨てられてなかったの?


49:デフォルトの名無しさん
07/09/13 23:14:35
> Microsoft DirectPlay は不適切となっており、新しいアプリケーションを開発する際それを
> 使わないことを、Microsoft は強く推奨します。その代わり、拡張された Microsoft Windows
> ネットワーク テクノロジを、ゲーム開発者は使うべきです。

もうぶち切れですよ(サポートが)

50:デフォルトの名無しさん
07/09/14 09:26:46
>>41
レンダリングターゲット以外に
画面サイズのテクスチャを2枚用意する

まず光跡以外の部分をレンダリングターゲットにレンダリングする

(そのときのZバッファの値をつかって)←発光部分が常に見えているならいらない
テクスチャ1に発光部分をレンダリングする

テクスチャ1を適当に透明度上げてテクスチャ2にレンダリングする

テクスチャ2をレンダリングターゲットに加算合成する

テクスチャ1と2を入れ替える
(つまり前回の発光部分に新しい発光部分を書き加える)
以下繰り返し

51:デフォルトの名無しさん
07/09/15 13:26:19
>>50
ありがとうございます。
自分でも調べた結果、サンプルでもその方法で光跡を描画していました。

自分がやりたかったのは発射された弾の後で跡を残しながら飛んでいくというやつなので
その方法ではやりにくいです

2Dなら複数描画して先に描画したものを徐々に半透明にしていくことで
自分のやりたい感じのことができるんですが
3Dで描画(メッシュ)している場合でもそれと同じ方法でやれるものなんでしょうか?

52:デフォルトの名無しさん
07/09/15 14:51:20
むしろ2Dは3Dの一部だから基本的に2Dでやってることは3Dで出来る。
なんか変だな。
DirectXの場合、2Dは3Dを平面にしただけと言うべきか。


53:デフォルトの名無しさん
07/09/15 15:21:06
ミサイルの煙(曲がるレーザとか)なら、2Dなら平面で楽だけど3Dになると何故か筒状にする人がいたり。
別に3Dだからって煙も3Dにする必要は無く、
ビルボード(常にカメラのほうを向いている面)にして描画してやれば2Dと同じことが表現できる。
この方法だとカメラの目の前からミサイルが飛んでいくと煙が細い線になってしまうので、
ビルボードで描画された煙+それとは別の独立した煙を描画するなど対応する必要がある。

これができれば
3Dシューティングであればミサイルの数を多くして煙の数を増やす→1つのミサイルの煙を出来るだけ軽く
ロケットの打ち上げを見せ場にしたい→描画する自体を煙の数を増やしてロケットから大量の煙を出しているように見せる
など、あとは自分がしたいことに合わせて調節していけばいい。

54:デフォルトの名無しさん
07/09/15 15:54:32
光跡と行っても具体的に何を描きたいのか、
3Dの軌跡データをどういうケースでどうレンダリングするか、紙の上で考えてみるといいかと。
俺も今からやるとこなんだけど(・∀・)アヒャ

55:デフォルトの名無しさん
07/09/15 20:27:43
なぜメッシュだとできないと思ったのかが不思議だ

56:デフォルトの名無しさん
07/09/15 21:35:01
>>53が言うような感じで面倒なケースがあるからだろ。

57:デフォルトの名無しさん
07/09/15 21:52:18
慣れれば大したことじゃないけど、分からない状態で組み立てていくと難しく感じるかもね。
やってることはシンプルなんだけど。

58:デフォルトの名無しさん
07/09/15 21:57:09
メッシュビューアーで見ると普通なのにメッシュとして読み込んで動かしてみると暗いって言うのは
法線の入れ忘れなんですか?
ライトをFALSEにすると若干明るくなりますが

59:デフォルトの名無しさん
07/09/15 21:59:52
そのぐらいデータを見れば分かるだろ。

60:デフォルトの名無しさん
07/09/15 22:06:56
どうやら法線がないようでした
法線を計算して入れるのってどういう風にやればいいんでしょうか?

61:デフォルトの名無しさん
07/09/15 22:09:46
何らかのツール使ってるなら情報出されてないので答えようが無いのは承知の通り。
自分で入れるなら面に対して垂直方向に法泉を入れればいいだけ。

62:デフォルトの名無しさん
07/09/15 22:11:18
メタセコイア+RokDeBoneです
今まで作ったのは勝手に法線入ってあったのになぁ・・・

63:デフォルトの名無しさん
07/09/15 22:12:48
D3DXは使いたくないんですぅってこだわりがないなら
D3DXComputeNormals なんてのもある

64:デフォルトの名無しさん
07/09/15 22:16:38
あ、すいません
法線はXファイルのMeshNormalsっていうのですよね?
これだとベクトルがたくさん書いてあるので法線は入っているみたいです

65:デフォルトの名無しさん
07/09/15 22:22:24
解決しました

>DirectX9の固定機能パイプラインのデフォルト設定では、
>頂点ごとに色が設定されている場合は、それをディフューズ色として使用し、
>設定されていない場合は、代わりにマテリアル(D3DMATERIAL9)の色を使用するようになっています。
>頂点色がある場合に、あえてマテリアルの色を頂点色にしたい場合は以下のようにします。
>g_pd3dDevice->SetRenderState( D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL );

これを適用したら、ちゃんと表示されました

66:デフォルトの名無しさん
07/09/15 22:23:23
データに入っているならプログラムが悪い
ファイルの読み込み
ライトの設定
描画の方法
この辺をかいてみそ?

67:デフォルトの名無しさん
07/09/16 01:28:34
D3DXFONTなんですが、これで描画するとものすごく遅いですよね
これってDrawText関数を呼び出す回数を減らせばちょっとでも早くなりますか?

たとえば

m_pText->Draw( "あいうえお" );
m_pText->Draw( "かきくけこ" );

とするより

m_pText->Draw( "あいうえおかきくけこ" );

とやった方が速度的には早いんですか?

68:デフォルトの名無しさん
07/09/16 01:57:23
>>67
それで速度アップは無理だろうな
ロード字に使う文字だけ一文字ずつテクスチャに描き込んでおいて一気に描画しろ

69:デフォルトの名無しさん
07/09/16 08:14:16
>>67
DirectX9cのD3DXSPRITEを用いたD3DXFONT->DrawTextは
結構実用的な速度だったけど、それじゃ駄目なの?
あと、必ず同じ文字を出すなら>>68の方法でやった方が早いよ。

70:デフォルトの名無しさん
07/09/16 12:45:30
>>69
DirectX10だとどうすればいいの?


71:デフォルトの名無しさん
07/09/16 15:54:46
>>70
コンシューマなら使う文字をテクスチャとして用意して使っている。
DirectXだからってわざわざWindows(IME)が用意しているものを使おうとしていること自体が変じゃないかな。
便利さを取って速度を捨てるか、面倒くさくても速度を取るかはその人次第だけど。



72:デフォルトの名無しさん
07/09/16 16:24:42
Direct3D9EX(Vista専用の拡張9)だとフォント用の1bitテクスチャがあった希ガス。
あとそれを使った描画メソッドも。

73:デフォルトの名無しさん
07/09/16 16:49:05
・フォントのライセンスどうしよう
・解像度を可変させたいが、作り置きのフォントが伸びてぼけるのはみっともない気がする
(個人製作なら)自前フォントを作るのが手間的に無理

74:デフォルトの名無しさん
07/09/16 16:54:40
>>71
フォントとIMEは何の関係もない。
変なのはお前の頭。

75:デフォルトの名無しさん
07/09/16 20:09:15
2D で画面がスクロールする描画をするときは、Sprite で背景画像をスクロールする分ピクセルをずらすのですか?

76:デフォルトの名無しさん
07/09/16 20:25:41
テクスチャが小規模、例えばそのエリアでは1枚のテクスチャしか使わないのであれば
画面サイズのメッシュを用意してテクスチャ座標をずらすだけでも表現できる。
これの応用で2枚のメッシュを使うことにより複数のテクスチャに対応できる。
手段に正解は無いのでまず適当に作ってから自分の好きなように調整すればヨロシ

77:デフォルトの名無しさん
07/09/16 20:49:37
背景を筒状にしてしまうのも手だな

78:デフォルトの名無しさん
07/09/16 20:55:25
それはD3DXCreateCylinderとかで作ってテクスチャを貼り付けるとゆう事ですか?

79:デフォルトの名無しさん
07/09/16 21:28:35
方法は自由。
「~ですか?」ではなくまずやってみろ。


80:デフォルトの名無しさん
07/09/16 22:18:16
なんでいちいちD3DXの機能が出てくるのか馬鹿の思考は理解できない。

81:デフォルトの名無しさん
07/09/16 22:55:48
D3DPOOL_DEFAULTなテクスチャがロストしたかどうか
調べるにはどうしたらいい?

82:デフォルトの名無しさん
07/09/16 23:03:19
>>81
リソースが個別にロストするなんて事は無い。
デバイスがロストしたら再構築不可能なリソースは全て無効になる。

83:デフォルトの名無しさん
07/09/16 23:04:46
東京から大阪まで行くのはどうすればいいか → 自分で決めろ
車の場合、高速道路を利用すべきかどうか  → 自分で決めろ

こんな感じの疑問を問いたい気持ちは分かるが、間違ってでも自分で判断してくれ
失敗は成功の元 プログラミングに関してはこの言葉が当てはまるから、無謀でもどんどん失敗して欲しい
・・・と思うのは俺だけでいい(´・ω・`)

84:デフォルトの名無しさん
07/09/16 23:06:42
お説教もいらないから。

85:デフォルトの名無しさん
07/09/16 23:10:48
>>82
>>6は嘘?

86:デフォルトの名無しさん
07/09/16 23:11:21
>>83
はじめの5行が無かったら素晴らしいレスだったのに

87:デフォルトの名無しさん
07/09/16 23:28:43
>>85
大嘘

88:デフォルトの名無しさん
07/09/16 23:30:54
>>1-88は全部嘘

89:デフォルトの名無しさん
07/09/17 00:00:31
おまえもうそかよ?

90:デフォルトの名無しさん
07/09/17 00:04:14
何を信じて生きていけばいいの?

91:デフォルトの名無しさん
07/09/17 00:04:50
信じる者は騙される

92:デフォルトの名無しさん
07/09/17 00:13:18
>>88がしんじつであるとすると
>>1-88はぜんぶうそになる
>>88はうそつきであるから
>>1-88はしんじつに…
もういいかんがえるのつかれた

93:デフォルトの名無しさん
07/09/17 00:15:09
安物RPGのダンジョンの謎解きみたいだな

94:デフォルトの名無しさん
07/09/17 03:55:13
>>81
だから、デバイスがロストするときとリソースだけロストするときがあるの
デバイスがロストするとリソースも死亡
リソースだけロストしたときはデバイスは生きてる

95:デフォルトの名無しさん
07/09/17 04:00:40
BBXで説明されてるな
URLリンク(bbx.hp.infoseek.co.jp)


96:デフォルトの名無しさん
07/09/17 07:43:20
>>94
リソースだけロストするなんて事はない。
嘘もいい加減にしろ。

97:デフォルトの名無しさん
07/09/17 09:22:03
・実体験に基づき、リソースだけロストする状況に遭遇したことがない。
・DirectXの仕様から推測し、リソースだけロストする状況が想定できる。

という葛藤。
前者は、そう言えるほど十分に広い事例を試したのかという問題がある。

98:デフォルトの名無しさん
07/09/17 09:47:00
>>96
研究が足り無いな
普通に動かしてりゃ2つの動作があることに気がつくだろ普通
それと、BBXのmasaさんのレス読んだのか?

【こっから】
ちょっとややこしいのですが、
リソースを再作成する必要が生じるタイミングには、
大きく二種類の状態があります。

まず、テクスチャ/頂点バッファ/スワップチェーンなど、
アダプタ(ビデオカード)内の VRAM のみが破棄され、
D3D ランタイムの D3D デバイス管理は生きているというケース。
#極簡単に言えばウィザードで生成されたコードの
#CD3DApplication::m_pd3dDevice ポインタが有効である時

ヘルプに書かれている「デバイスの消失」はこれです。
この場合、ハードウェア内の、つまり VRAM に置いたデータのみが消失しています。
#ウィンドウサイズの変更などで簡単に起こります。

もう一つは、D3D ランタイムの管理する D3D デバイス自体が
完全に破棄/再作成される場合です。
【ここまで】

99:デフォルトの名無しさん
07/09/17 10:04:57
>>98
デバイスがロストでデバイスのインタフェイス自体が使えなくなるわけじゃない。
勘違いも甚だしい。

100:デフォルトの名無しさん
07/09/17 10:23:10
>これは、モニタ解像度/色数の変更、フルスクリーン化など
>「ディスプレイの表示モードが変化した場合」や、
>HAL-->REF などのデバイスの切り替えで行われます。

これ大嘘だから。
実際に試してみれば分かるけど、手動管理のリソース開放とResetだけで動く。
デバイスインタフェイス自体を再作成する必用はない。

101:デフォルトの名無しさん
07/09/17 10:31:02
ウインドウモードとフルスクリーンの切り替えなんて、
パラメータを変えて普通にリセットすれば切り替わるだろ。
いちいちデバイスを作り直している奴の方が少ないと思うが。

102:デフォルトの名無しさん
07/09/17 14:37:33
xファイルを他の形式、dxf・mqo・3dsとかメタセコイヤで読み込める形式に変換してくれるツールってないかなあ?
形状だけで良いんだけど

YJPコンバーターって奴見つけたけど1600円もするから、なんかフリーであればいいな

103:デフォルトの名無しさん
07/09/17 14:48:10
メタセコで変換するんじゃだめなの?
何がしたいのかよく分からん

104:デフォルトの名無しさん
07/09/17 14:49:52
xファイルしかないモデルがあって、メタセコじゃXファイルインポート出来ないだよね~

105:デフォルトの名無しさん
07/09/17 15:22:53
昔のDirectXにmemtime(.exe)ってツールが在ったらしいのですが、
どこかに落ちてませんか? く、くっください!!!!!

106:デフォルトの名無しさん
07/09/17 16:48:21
ちょっとさがしてみるよ

107:デフォルトの名無しさん
07/09/17 16:55:02
DirectDraw絡みの、VRAM・システムメモリの組み合わせ毎の速度測定ツール
だった記憶がある。こんなの今更要るの?

108:デフォルトの名無しさん
07/09/17 17:02:42
DXSDK3のbinにあったけどゆそうしゅだんは?

109:107
07/09/17 17:18:01
>>108 熱烈感謝
ココにアップお願いします。
URLリンク(www.uploda.net)

>>107
ココを見て興味わいたのです
URLリンク(www.sun-inet.or.jp)

110:デフォルトの名無しさん
07/09/17 17:35:48
>>109
けいたいからあっぷしてみるよ
ちょっとまってて…

111:デフォルトの名無しさん
07/09/17 18:07:54
>>110
お願いします。

112:デフォルトの名無しさん
07/09/17 18:10:59
>>111
あっぷできたよかくにんよろしく
URLリンク(ud.gs)
ぱすはふぁいるめい
かくちょうしはてきすとになっているから
きおつけてねw

113:デフォルトの名無しさん
07/09/17 18:36:35
>>112
熱烈感謝です。無事ダウンロードできました。有難うございました。
ぺコリ、ペコリ、ペコリ

114:デフォルトの名無しさん
07/09/17 19:31:17
>>99-101
は?何が言いたいの?
デバイスのロストはその2種類でいいでしょ?

115:デフォルトの名無しさん
07/09/17 22:58:30
馬鹿の書いた掲示板の書き込みを馬鹿が信じる典型的な例だな。

116:デフォルトの名無しさん
07/09/17 23:38:37
>>115
masaさんはダブルスティールの人だよ
デバイスロストが2種類あるっての正しいでしょ?
俺もこの辺すげー苦労した覚えあるし

D3DDeviceを各オブジェクトで保持する組み方してたから
そこの辺軒並み組み直しになった希ガス

このときはじめてポインタ保持はグローバル変数と同じぐらいの大罪だと知って死んだw

117:デフォルトの名無しさん
07/09/17 23:48:05
>>116
BBX見てる奴でMasaを知らない人間は少数だと思うが、
誰々が言ってることなんだから正しい、とかそういう考えはよくないぞ

118:デフォルトの名無しさん
07/09/17 23:49:36
デタラメをここまで盲目的に信じるとはもやは救いようがない。

119:デフォルトの名無しさん
07/09/18 00:09:30
>>117
いや、だから、馬鹿じゃないってただそんだけだよ
だれにだって間違いはあるだろうし、別に盲信してるわけじゃないよ

>>118
だから何が間違ってるっていいたいの?
デバイスロストが2パターンあるところはいいんだよね?

120:デフォルトの名無しさん
07/09/18 00:17:16
>デバイスロストが2パターンあるところはいいんだよね?
全然良くない。
馬鹿を盲信する一方、その他の人間の話を全く聞かないな。

121:デフォルトの名無しさん
07/09/18 00:19:09
だれか正解をまとめてくれ

それか住民全員を納得させられるような攻撃力のあるリソースを提示してくれ

122:デフォルトの名無しさん
07/09/18 00:28:07
>>120
え?詳細まで書けよ

D3DDeviceの指す先が変わってることってあるよな?
これは確実にあるよな?
なぜなら、俺が各オブジェクトに保持してほぼ全ソース修正する原因がこの出来事だから覚えてる
この件があって以来、ポインタ保持は絶対にしないと心に決めた出来事がこれだからだ

っつーことはデバイスが生きてて、リソースが死ぬって状況がないって言ってる?

123:デフォルトの名無しさん
07/09/18 00:29:35
>>119
自らがReleaseして使えなくしているのを、パターンの一つに含めている時点でおかしい。
デバイスのインタフェイスを開放することをデバイスロストとは言わない。

あとは>>6
>②の場合の対処はD3DDeviceは生きているので死んだリソースだけチェックして
>死んだリソースのみ復旧作業を行う
そもそもロストの原因を知る術も、個別にどのリソースが使用不能なのか確認するAPIも存在しない。
チェックできないのにどうやって特定のリソースのみ復旧できるんだ?

124:デフォルトの名無しさん
07/09/18 00:31:37
>>121
俺のソースはそのBBXのしかない

デバイスロストは2種類あると思った
で、俺が対応したのは2種類ともD3DDeviceを作り直して解決する方法
つまり、デバイスが破棄されても、リソースだけ死んでも、
デバイスまで一度破棄して、デバイスから作り直す方法
昔のソースだけど製品として出荷したのはそういうコメントになってるし

125:デフォルトの名無しさん
07/09/18 00:32:05
>>122
肝心の「なぜなら」の説明が、「~心に決めた出来事がこれだから」てwww
自分の体験談かよwwww

126:デフォルトの名無しさん
07/09/18 00:34:10
IDirect3DDevice9とそれ以前で違うって可能性ない?
だとしたらここまでみんなの記憶が混乱してるのも頷けるんだけど。

127:デフォルトの名無しさん
07/09/18 00:37:10
>>123
>そもそもロストの原因を知る術も、個別にどのリソースが使用不能なのか確認するAPIも存在しない。
>チェックできないのにどうやって特定のリソースのみ復旧できるんだ?
実は俺のとった対応方法はデバイスを作り変えるっていう2つの方法に対応できる方法だけなので
各リソースの有無を判別して復旧させることはしてないから
各リソースごと判別っていうのは俺はやってないからそこは嘘なのかも

覚えてるのはりソースだけ死んで(一部か全部かは知らない)デバイスが生きている場合と
デバイスからまるごと死ぬ場合があるってところだけ
各リソースがってところにひっかかってるなら俺の嘘かもしれないので気にしなくていいス

128:デフォルトの名無しさん
07/09/18 00:38:45
>D3DDeviceの指す先が変わってることってあるよな?
意味不明


129:デフォルトの名無しさん
07/09/18 00:40:41
>>126
この方式になったのは8からで、デバイスロストの仕様はそこから変わっていない。

130:デフォルトの名無しさん
07/09/18 00:41:21
>>126
POOL_MANAGEDを設定することで確実に死ななくなってる可能性はあるね
だから、デバイスが死んだときだけ気にすればいいっていう

SDKのサンプルが復旧時にPOOL_MANAGEDであるかどうかしか見てないから
もしかしたらデバイスが死んだときしか気にしなくていいのかもね

131:デフォルトの名無しさん
07/09/18 00:42:56
>>129
仕様はそうかもしれないけど挙動もそうなのかな?
なんかやけにSDKのサンプルがしつこく死なない気がするんだけど
前は解像度切り替えするだけで真っ黒だった希ガス

132:デフォルトの名無しさん
07/09/18 00:43:53
デバイスロストしてもデバイスインタフェイスが使えなくなることも死ぬこともない。
そもそもインタフェイスが死んだらロストしたことを知ることも出来ないし、
メンバを呼び出した時点で例外を出してアプリが落ちる。

133:デフォルトの名無しさん
07/09/18 00:54:56
>>132
あー、そうだ
俺がアフォでした

D3DDeviceを捨てて作り直してるのは俺なのなw
でも、D3DDeviceが死んだら作り直すしかないから、
結果各オブジェクトでD3DDeviceを保持してると困るってことで
別にD3DDeviceが違うもんになるわけじゃないのなw

すいませんでした

134:デフォルトの名無しさん
07/09/18 00:57:04
どうしようもないオチが…

135:デフォルトの名無しさん
07/09/18 01:01:21
>>121
一応まとめてみたんで貼る。なんかもう解決しちゃってるぽいんで無視してくれ。


例のBBXのMasaの投稿を読み直してみたけど、彼は別に間違ったことは言っていない。

彼が言っているのは、あくまで「リソースを再作成する必要が生じるタイミング」が二種類ある、
ってことだけ。つまり、
1) デバイスがロストした時
2) プログラマが意図的にデバイスを開放した時
だと言っている。

問題なのは、この記述を「ロストが二種類ある」と誤って解釈してしまっている一部のスレ住人だ。
何故か、上の1)2)を「リソースのロスト」と「デバイスのロスト」などと区別してしまっているようだ。

DirectXのヘルプで書かれている「デバイス消失時の~」ってのは要するに 1) の状態のことだ。
2) の状態のことを、ロストだとか消失だとか普通は言わない。

さらに混乱の元となっているのは、上のBBXのスレッドが、DirectXのサンプルフレームワークを
前提にした議論になってること。
本来ならプログラマが明示的にデバイスを開放しない限り 2) は起こりえないのだが、
サンプルフレームワークではHAL→HELの切り替えなどのタイミングでこれを内部で自動的に
行っているらしく、一部の住人がこれを
「もう一つのロスト状態」だとか「デバイスの指す先は勝手に変わることがあるよな?」
などと勘違いしている、という訳だ。

136:デフォルトの名無しさん
07/09/18 01:05:57
>>135
なんかよくわかんね

状態だけでいうと
テクスチャのデータが吹っ飛んで一部のオブジェクトが黒くなっちゃうときと
Presentの関数が失敗するときってのは同じ現象でいいわけ?

137:デフォルトの名無しさん
07/09/18 01:11:41
>>129

確かにD3D8からっぽいね。
URLリンク(msdn.microsoft.com)

>デバイスを処理状態に戻せない場合、アプリケーションはデバイスが元に戻るまで待機します。
>この場合、アプリケーションは IDirect3DDevice8::Resetを使用して、デバイス リソースをすべて削除し、
>デバイスを破棄する必要があります。
>その後、初期化の場合と同じように IDirect3DDevice8::CreateDevice を使用してデバイスを
>再作成する必要があります。
>アプリケーションを開発する場合は、デバイスの消失に対応するために 1 つのコード パスで
>アプリケーションを開発することをお勧めします。このコード パスは、
>起動時のデバイスの初期化に使用されるコード パスとほぼ同じになります。

しかし微妙に意味不明だなこれ。
どうせしばらくResetできなさそうなら、
いったん管理リソースも解放してメモリ節約しようって意味かいな?

ただそのちょっとあとにこういう一文も。

>デバイスをリセットできず、廃棄してから再作成する必要がある場合は、
>リソースもすべて再作成する必要があります。

問題はどういう場合にその「必要」があるか、か。

138:137
07/09/18 01:21:18
あーもしかしてこういうことか。

(1)フルスクリーンでアプリケーションを作る。
(2)Alt+TABをフォーカスを失わせる
(3)この時点でIDirect3DDevice9::TestCooperativeLevelはD3DERR_DEVICELOSTを返す。

問題はここから。
IDirect3DDevice9::Resetを使えば確かにフルスクリーンからウィンドウモードに
デバイス再構築無しでモード変更は可能。
が、TestCooperativeLevelがD3DERR_DEVICENOTRESETを返すまではResetは呼べない。

つまり、いったんAlt+TABでフォーカスを再取得できれば
D3DERR_DEVICENOTRESET→Reset→ウィンドウモード、のコンボが使えるけど、
フォーカスを得ないままウィンドウモードに変更しようと思ったら
いったんデバイスを破棄しないとダメぽと。

どう?

139:デフォルトの名無しさん
07/09/18 01:35:52
>>138
んなこと誰も議論してないんだが。
一人で勝手に議題をすり替えといてどう?なんて言われてもなあ

ちなみに>>137の"必要"ってのは日本語版では訳がいまいちで分かりづらいが、
単にD3DPOOL_DEFAULTなリソースのことを言っている

140:デフォルトの名無しさん
07/09/18 01:37:52
>>139
んじゃとりあえず>>101へのレスってことにしといてちょ。

141:デフォルトの名無しさん
07/09/18 01:43:32
亀レス乙
ところで>>6とか>>114は同一人物なのかね?

142:デフォルトの名無しさん
07/09/18 01:44:43
>>141
そうですよ

143:デフォルトの名無しさん
07/09/18 01:50:38
>>6>>114
ネ申

144:デフォルトの名無しさん
07/09/18 02:12:58
TestCooperativeLevelがD3DERR_DEVICENOTRESETを返すときって言うのはGPU側のコンテキストが無効になっている。
ちなみに、GPU側のコンテキストってのはVRAM上のリソース等(DEFAULTのリソースと考えて構わない)。
ただし、ランタイムがCPU側に対応するコンテキストを持っているから、これをReset()のまえに開放してあげなくてはいけない。

で、Reset()が失敗する場合は、ランタイム側がデバイスコンテキストすらも無効化してしまっている場合。
この場合はランタイムが全てを諦めてしまっているのでCPU側のリソース(MANAGED、SYSTEMMEM、SCRATCH)も全て無効化されてしまっている。
よって、全てを開放し、参照カウントを元に戻して、デバイスの削除を行い、全てを新デバイスから再初期化しないといけない。

つまり2段階って言うのは、最初がGPU側、次がCPU側って事。


145:デフォルトの名無しさん
07/09/18 02:42:22
>>144
つまりReset()が失敗する場合は、MANAGED、SYSTEMMEM、SCRATCH全部アウトで、
>>139の「単にD3DPOOL_DEFAULTなリソースのことを言っている」ってのは誤読ってこと?

146:デフォルトの名無しさん
07/09/18 02:59:10
亀レスついでに。>>100

HALからREFへの変更はD3DDEVTYPE変えないといけないんで
Resetじゃ無理だけよ。

>>100が抜き出したところだけ見るとできてしまうように見えるので
誤解する人が出てこないよう一応指摘しとく。

あとはBehaviorFlagsの変更もResetじゃ無理か。
ロストと関係なくてスマソ。

147:デフォルトの名無しさん
07/09/18 05:14:53
たかがデバイスロストの対応だけでこの有様。
Windowsは腐ったジャムみたいだな。

148:デフォルトの名無しさん
07/09/18 06:24:12
ここでDirectXにドップリ漬かっている俺が登場。

普通に使っている分には、D3DDeviceが使えなくなることは無いが
アプリケーション実行中にnViewのモードを切り替えるような無茶な
ことをしたら、Resetではどうしようもなくなった。

あと試してはいないが、プライマリモニタの切り替えとか、無効化も
駄目っぽい気がする。物理的に別のビデオカードにプライマリが
移ることもあるしね。

149:デフォルトの名無しさん
07/09/18 06:52:48
POOL_MANAGEDなんてあんなメモリばかすか食った挙句
失敗してるんじゃ世話ねぇよこいつって感じ
結局、POOL_DEFAULTにして何かあったらD3DDeviceから作り直しするのが
一番楽だしコスト的にいいってのが昔の俺の結論だった・・・っぽい?w

150:デフォルトの名無しさん
07/09/18 08:43:04
POOL_MANAGEDは内部的に転送にUpdateSurfaceに相当する機能が使えそうなんだけど
そうなるとPOOL_DEFAULTに比べてCPUパフォーマンスが良くなるんじゃない?

151:デフォルトの名無しさん
07/09/18 10:53:05
パフォーマンス重視で動的に更新するのが前提ならAGPメモリ上に置くのが常識なのに、
試しもしないで>>150みたいな適当なことをほざく馬鹿はなんとかなんとかならんのか?

152:デフォルトの名無しさん
07/09/18 11:02:43
2chに厳正な書き込みを期待する馬鹿もなんとかならんかな。

153:デフォルトの名無しさん
07/09/18 11:24:31
ドキュメント見てないけど、
D3DPOOL_MANAGEDってD3D10じゃないよね?
10からはデバイスロストしないから

154:デフォルトの名無しさん
07/09/18 12:43:21
まだいじってないけど
10ならデバイスロストしなくなった?

155:デフォルトの名無しさん
07/09/18 14:26:53
画面の描画をウィンドウの範囲をしてしてする方法はありますか?
たとえば、1つのウィンドウの半分だけに3Dの画面を表示して、
片方の画面は文字入力用のテキストエディタのようにするような。

156:デフォルトの名無しさん
07/09/18 16:08:08
10どころか9Exから簡単にはデバイスロストしなくなった。
もちろん無茶すればロストするよ。
例えばアプリ実行中にドライバーをアップデートするとか。

>>150
それ完璧に考え方が逝ってるから勉強し直しといで。


157:デフォルトの名無しさん
07/09/18 16:21:53
>>156
いい加減無責任な発言は控えろよな。

158:デフォルトの名無しさん
07/09/18 16:29:04
>アプリ実行中にドライバーをアップデートするとか。
>アプリ実行中にドライバーをアップデートするとか。
>アプリ実行中にドライバーをアップデートするとか。

159:デフォルトの名無しさん
07/09/18 17:11:03
>>157
極論だが、至って分かりやすくて自分のアプリでもデバイスロストをテストするときに
デバイスマネージャーからドライバーを無効にしたりしてせめてエラー処理をテストするのは当然だけどな。


160:デフォルトの名無しさん
07/09/18 17:13:20
今日のお題はドライバーのアップデートとデバイスロストの関係についてw

161:デフォルトの名無しさん
07/09/18 17:16:33
>>159は本物のプログラマ

162:デフォルトの名無しさん
07/09/18 17:28:52
いや本物じゃなくても普通それくらいはするだろ?
ドライバーを無効にする、ハードウェアアクセラレーションを切る、くらいは
やってテストしとかないと怖くて公開できないよ。

流石に実行中にドライバを更新するなんてテストはしたことないけどな

163:デフォルトの名無しさん
07/09/18 17:36:26
どうやら真性です。本当にあり(ry

164:デフォルトの名無しさん
07/09/18 17:49:13
真性だな

165:デフォルトの名無しさん
07/09/18 17:50:55
>>162
ドライバーを更新するのとドライバーを無効にするってのは実行中のアプリからすると同じ意味だよ。
XPしか使っていないなら分からないかもしれないが、Vistaだとリブートなしでドライバー更新できるから、
更新するとまずはじめに現在のドライバーが無効化された後、アンインストールされ、その後新しいドライバーがインストールされる。


166:デフォルトの名無しさん
07/09/18 18:00:51
>>156
>>165

これね。

URLリンク(www.microsoft.com)
>再起動なしのドライバ アップグレード

VistaではDirect3D描画アプリが大幅に増えた。
DWMは実質フルスクリーンアプリ相当だし
WPFアプリもオフスクリーンサーフェイスにD3D9Exで描画してる。

再起動なしのドライバアップグレードを実現するためには、
ドライバが対応することも当然ながら
D3Dを使うアプリがDevice Removedからの復帰コードを持つことも重要。

そこの対応が甘いと、Windows Updateを実行したらアプリが落ちたって羽目になる。

167:デフォルトの名無しさん
07/09/18 18:11:25
そうだな5分に10回はWindowsUpdateするからな。
必要だな。

168:デフォルトの名無しさん
07/09/18 18:29:27
>>166
フルスクリーンアプリが起動したり、リモートデスクトップで接続されたりしてもデバイスロストしたかも。


169:デフォルトの名無しさん
07/09/18 18:29:54
どうせデバイスロストなんて頻繁に起こるものではないのだから、
残存リソースの再利用に拘るほどのものじゃないだろ。貧乏臭すぎ。

ってかこの話は >>81 が発端てことで良いんだよね?

170:デフォルトの名無しさん
07/09/18 18:55:56
次はスマートポインタの是非を語ろうぜwww

171:デフォルトの名無しさん
07/09/18 19:03:56
>>170 (゚∀゚)カエレ!

172:デフォルトの名無しさん
07/09/18 21:11:09
この仕様だとPOOL_MANAGEDがなんのためにあるのか謎

173:デフォルトの名無しさん
07/09/18 21:27:01
これだけは言える。管理を放棄してスマートポインタで逃げる事ばかり
考える奴は脳の病気。確実に逝っちゃってる人間の考え。

174:デフォルトの名無しさん
07/09/18 21:34:19
>>173
実際すさまじいバグり方するよなw
メモリの解放忘れだけにしとけって感じだ

175:デフォルトの名無しさん
07/09/18 21:48:36
test

176:81
07/09/18 21:50:01
おお、やっと書き込めた。規制の巻き添え食らってた。
俺の最初のレスからここまで議論になるとは思わなかった。
正直レベル高すぎてついていける気がしないw

177:デフォルトの名無しさん
07/09/18 21:55:24
しょーもない口論だからついていかなくていいよ。
質問に対する正解は>>6です。

178:デフォルトの名無しさん
07/09/18 22:00:34
>>1-177
お前らはデバイスロストの話をいちいち蒸し返さないと死ぬ呪いにでもかかっているのか?

179:デフォルトの名無しさん
07/09/18 22:04:43
>>178
なんで俺まで捲き込んでんだよ
俺をデバイスロスト厨と一緒にすんな

180:デフォルトの名無しさん
07/09/18 22:06:04
>>177
少しは面白いネタを用意しろよ。
それじゃ外しまくり。

181:デフォルトの名無しさん
07/09/18 22:08:38
>>180
ごめん、再挑戦してみる。

182:81
07/09/18 22:24:55
ちなみに>>5も俺だ。

183:デフォルトの名無しさん
07/09/18 22:29:03
>>182
さんざん考えてそれかよ
やっぱりだめ。つかさらに外してる。

184:デフォルトの名無しさん
07/09/18 22:34:26
つかさちゃんとちゅっちゅしたいよ~

185:デフォルトの名無しさん
07/09/18 22:37:42
ばるさばるさばるさばるさみこみこす~

186:デフォルトの名無しさん
07/09/18 22:38:44
>>178
>>105-113

187:デフォルトの名無しさん
07/09/18 23:03:56
>>183
俺は>>177じゃないぞw

188:デフォルトの名無しさん
07/09/18 23:24:52
俺って誰だよ

189:デフォルトの名無しさん
07/09/18 23:37:03
>>188
   _ _
  ( ゚∀゚)
  (  ∩ミ  オレオレ
   | ωつ,゙
   し ⌒J


190:デフォルトの名無しさん
07/09/19 00:41:35
>>177
正しくは>144だろ。>6もよく読むとなんか変。


191:デフォルトの名無しさん
07/09/19 01:10:27
>>190
どこが変か書けよ

192:デフォルトの名無しさん
07/09/19 01:13:23
とりあえず簡易的対策でかつ商品レベルで出すにはリソースはすべてPOOL_DEFAULTで作っておいて
なんか起きたらD3DDeviceから作り直すってことでFA?

193:デフォルトの名無しさん
07/09/19 01:14:49
>>191
>>85

194:デフォルトの名無しさん
07/09/19 01:43:22
NowLoadingという画面をアニメーション使って描画している時に
マルチスレッドを使ってタイトル画面とかのシーン(クラス)を読み込ませるようにしたんですが、
プログラムを起動すると問題なく動作する時もあれば、頂点バッファやテクスチャの
読み込みが失敗して時々おかしくなってしまいます・・・

マルチスレッドを使わなければ読み込みも正常終了して問題なく動くので
明らかにそのロード用のスレッドで何かやらかしていると思うのですが、
何回かに1回起こるという現象なので原因が分かりませんorz

pD3DDevice->CreateVertexBuffer( 4*sizeof(VERTEX2D), D3DUSAGE_WRITEONLY,VERTEX2D_FVF, D3DPOOL_MANAGED,&pBuffer, NULL);
D3DXCreateTextureFromFileEx(pDevice, filename, 0, 0, 0, 0, D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_FILTER_NONE,D3DX_DEFAULT,0xff00ff00,NULL,NULL,&pTexture);

この関数がおかしな動作をしてるっぽいです。
D3DXCreateTextureFromFileExが時々E_OUTOFMEMORYを返して来ます。
↑と同じ関数で使って他のバッファやテクスチャをずらずらと作成してるんですが、正常に終了したヤツとそうでないのが
あってますます意味が分かりません・・・


どなたかヒント下さいorz

195:194
07/09/19 01:50:04
ロード用スレッド内部では、

if(scenetitle == NULL)
{
scenetitle = new SceneTitle;
scenetitle->Create(pD3DDevice);
}

こんなのがずらずらと書き並べてあるだけです。


/* ロード用スレッド シーン作成 */
hThread = (HANDLE)_beginthreadex(NULL, 0, CreateScene, NULL, 0, &dwThreadId);

この後すぐ、
Sleep(1300);
を追加するとどうやらこのバグ起きないようです。
でもこれをするとNowLoadingの意味がないんです・・・(´・ω・`)

196:デフォルトの名無しさん
07/09/19 01:55:34
デバイス作成する時に
D3DCREATE_MULTITHREADED
とか要るんじゃなかったっけ

今はいらないのかな

197:デフォルトの名無しさん
07/09/19 02:04:43
>>166
お前さん見事なもんだな。
俺なら「ドライバ更新する場合はアプリを一度終了してください」という文章で終わらす
そうしないとロストでアプリサスペンド(と書いてもいい?)したとき、
更新前と更新後の挙動が変わった場合のことまで追いかけなくてはならなくなる。

D3D10だとある程度ルールはあるんだろうが、そこまでするのはお断り

198:デフォルトの名無しさん
07/09/19 02:07:08
>>196
そのフラグは単なるヒント。
そのフラゲで環境によっては何かが変わるかもしれんし、変わらなくても文句は言えない。

199:194
07/09/19 02:29:17
>>196
ちょおおおおおおおお!!
そのフラグ1つで全てが解決しました。

デバイス作成の辺りはコピペ以降全然かまってなかったので盲点でした。
こんなに早く的確なヒントありがとう!!

200:デフォルトの名無しさん
07/09/19 06:43:26
>>193
だからどこが?

201:デフォルトの名無しさん
07/09/19 07:53:44
>>192
俺は作り直すにしても、POOL_MANAGEDがいいかなと思う。
UMAやTurboCacheまで考慮したテクスチャマネージメントは難しいし、
最近の先読みレンダリングならドライバの方がプログラマよりも正確に
テクスチャの使われ方を把握することが可能だから、VRAMのやりくりは
任せてしまった方が良いんじゃないかな。

202:デフォルトの名無しさん
07/09/19 08:32:41
>>201
その問題より単純にメモリを食うことで遅くなってる場合のほうが多いっぽい
それと全部システムメモリにとっておくってのは個人的にやりすぎだと思うし思想に賛同できない
んで重要なデバイスロストに関しては対応できてないとかいうマヌケっぷり
こんなもんいらんわw

203:デフォルトの名無しさん
07/09/19 09:18:23
xfileの仕様が詳しく書いてあるサイトってありますか?


204:デフォルトの名無しさん
07/09/19 10:12:04
「シェーダー」の定義がよくわかりません
狭義では陰影を計算してテクスチャーを擬似立体化するらしいですが、
色々と読んでみれば別のこともできるみたいです。
(というか法線マップが使われるようになったのは近年になってからのはず)
頂点シェーダーは別にポリゴン数(頂点数)を出すために活動するわけでも、
ピクセルシェーダーはテクスチャー情報を扱うわけでもないんですよね?

具体的にシェーダー(ストリーミングプロセッサ)は何をするんですか?

205:デフォルトの名無しさん
07/09/19 10:16:09
テクスチャがシステムメモリから直接表示されるらしいw

206:デフォルトの名無しさん
07/09/19 10:45:27
>>200
>>135

207:デフォルトの名無しさん
07/09/19 10:49:00
>>203
URLリンク(msdn.microsoft.com)

>>204
実際に使ってみればわかるだろ

208:デフォルトの名無しさん
07/09/19 10:50:26
こっちだった
URLリンク(msdn.microsoft.com)

209:デフォルトの名無しさん
07/09/19 11:10:18
>>204
いままで固定機能パイプラインで
半ば自動的に処理されていた部分をある程度自由に
プログラムできるように(又はプログラムしなくてはいけなく)なった

頂点シェーダでは
頂点データを2D画面に表示できるようになるまでの
座標変換とライティングまでを行い
ピクセルシェーダーでは
頂点シェーダから渡された頂点データを元に
ポリゴンをピクセル単位に分解して
最終的に描画される色を決定する

210:デフォルトの名無しさん
07/09/19 11:39:26
>>207
ありがとうございmす


211:デフォルトの名無しさん
07/09/19 12:53:17
>>135は普通に嘘っぱちだろ

212:デフォルトの名無しさん
07/09/19 12:56:08
>>211は大嘘

213:デフォルトの名無しさん
07/09/19 14:25:52
>>213は嘘

214:デフォルトの名無しさん
07/09/19 15:00:53
>>92に戻る

215:デフォルトの名無しさん
07/09/19 16:10:33
いちいち蒸し返す意味がわからん

216:デフォルトの名無しさん
07/09/19 16:11:41
デバイスロスト厨は>>133で懲りて降参したんじゃないの?
まだ仲間がいるわけ?

ロストは2種類あるだの、これは嘘あれは嘘だの、いい加減うざいんだが。

217:デフォルトの名無しさん
07/09/19 16:36:10
誰か綺麗にまとめてくれ
現象と対処を箇条書きで頼む

218:デフォルトの名無しさん
07/09/19 16:40:48
そもそも発端の質問文>>81に肝心の「現象」が書かれていないので
まとめようがない。

219:デフォルトの名無しさん
07/09/19 16:49:22
まとめ
Q. >>81
A. >>59

220:デフォルトの名無しさん
07/09/19 18:07:16
>144が正解で、>6は惜しいけど>82の指摘が正しい。

>>192
プロならPOOL_DEFAULTが当然。
なんかおきたらPOOL_DEFAULTのリソースを解放後にResetを行う。
Resetが失敗したときに初めてデバイスを最初から作り直し。


221:デフォルトの名無しさん
07/09/19 18:09:45
D3DCREATE_MULTITHREADEDは重要。
このフラグはランタイムのAPIがスレッドをシリアライズするかどうかの違いになる。
複数スレッドから同じデバイスに対してAPIを呼び出すと場合には必修。
そうじゃないとランタイムが保持しているコンテキストに不整合が発生する。


222:デフォルトの名無しさん
07/09/19 18:31:20
自らプロと名乗る輩ほど信用ならないものはない

223:デフォルトの名無しさん
07/09/19 18:32:26
すげー勉強になるわ

頓珍漢なレスも多いけど、丁寧にスレ読んでいけば
深い知見を持った人が書いたと思しきレスもちゃんとあってすげー癒されるわ

224:デフォルトの名無しさん
07/09/19 18:35:41
>>223
URLリンク(up2.viploader.net)

225:デフォルトの名無しさん
07/09/19 18:41:44
ほわっつずぃすインザワールド?

226:デフォルトの名無しさん
07/09/19 19:07:46
モコモコチュンチュン

227:デフォルトの名無しさん
07/09/19 19:37:49
>>222
二重否定があまり良くないので対偶を

信用できる輩ほど、自らプロとは名乗らない。

228:デフォルトの名無しさん
07/09/19 19:49:00
>>224
壁紙にしたわ

229:204
07/09/19 22:13:07
>>207
それは無理です・・・

>>209
すると従来までは固定パイプライン(シェーダー)というものが存在して、
それが最近はプログラマブルになったという認識でいいのでしょうか?

230:デフォルトの名無しさん
07/09/19 22:19:43
>>229
おk
プログラマブルシェーダが登場したのはDirectX8から。
DirectX8と9は固定機能もシェーダも同時に使えて双方のステートなんかも混在してたんだが
DirectX10(Vista以降)からはシェーダのみになって固定機能は完全に削除された。

こういうのが知りたいのなら何か一冊本を買ってみるといいよ。オススメはないけどねw

231:デフォルトの名無しさん
07/09/19 22:24:27
>>229
チュートリアルにしたがって1回動かしてみればすべてが解決すると思うぜ

232:デフォルトの名無しさん
07/09/19 22:41:32
フル2DでRPG作成している者ですが
DirectDrawかDirectGraphics
どっちがいいと思われますか?
DirectDrawはとっつきやすく比較的簡単です

DirectGraphicsにおいて2Dの扱いは3Dの付属というか
ただテクスチャ貼れりゃいいみたいな扱いを受けてますが・・・
しかし円滑にフェードや半透明、回転、拡大縮小を実現するには
DirectGraphicsをやるべきだと僕個人は思ってます・・・

皆さんの意見を参考にしたいのでご教授をお願いいたします


233:デフォルトの名無しさん
07/09/19 22:43:16
>>232
わかってんならさっさとそうしろ

234:デフォルトの名無しさん
07/09/19 22:53:03
>>233
ん?いや、俺が聞きたいのはみんなはどう思ってるのかなってだけです^^;;;;
なんだこの人はwwwwwwwwwww

235:デフォルトの名無しさん
07/09/19 22:58:25
>>234
落ち着け、そしてsageろ
>>233はDirectGraphicsに触ったこともなさそうだからしょうがないだろ?空気嫁

俺はフル2Dはずいぶん前におさらばしたからなぁ~・・・・
まぁDirectGraphicsは基本3Dのためにあるようなもんだってのがわかってるようだし
素直にDD(DirectDraw)にしとき

DDにはDDのいいところがあるし、フェードとかやりたいんならロックすりゃいいんじゃないの?


236:デフォルトの名無しさん
07/09/19 23:04:08
>>234
ん?いやいや、誰に聞くまでもなくあなた様のおっしゃるとおりの状況なのですよ
現状でDirectDrawを使う選択肢は無いと結論付けていいです
これは速度の問題とクオリティの問題が大きいです
昔は320x240とか640x480ぐらいでよかったんですけどね
いまって最低でも800x600で、現実の線で1024x768とか当たり前っしょ?
2Dだときついですよ2Dだと

GDI+という選択死もありますが、これは回転、拡大縮小、半透明と
個別には速度もそれなりで問題なくできるんですが、回転+半透明とか回転+拡大縮小とか
合わせ技でNGです
DirectDrawだとこれらを全部自作する手間もはっきりいって今はもう失われ死技術といって過言ではないでしょう
よしんば、その技術を見つけたとしてもあんまりいい結果にはなりません(主に速度で)

ということでわかってもらえたでしょうか?

237:デフォルトの名無しさん
07/09/19 23:06:56
>>234
少々口は悪いが>>233は一つの意見だろ?俺も同感だし。

回答者に対して「なんだこの人は」はないだろう・・・

238:デフォルトの名無しさん
07/09/19 23:14:08
>>236 なんだこの人はwwww、これがキ印の人か

239:デフォルトの名無しさん
07/09/19 23:20:34
もうこの流れじゃマトモな答えは返ってこないな

240:デフォルトの名無しさん
07/09/19 23:22:14
恥ずかしいことをおっおっ聞きしますが...
MFCはだめぽと言われたのですが、
VC++2005EEでDirectXって使えるでしょうか?><

241:デフォルトの名無しさん
07/09/19 23:23:56
なんでわざわざ古いのを使おうとするんだ?
DirectDrawなんかありえんだろ
DirectDrawはGraphicsに吸収されただけで消滅したわけじゃ・・・消滅したか
2Dに扱いがひどいって?なぜそう思うのかわからん

242:デフォルトの名無しさん
07/09/19 23:25:02
自演だか成りすましだか知らないけど
一瞬にして流れを変えた>>232の破壊力だけは認める

もう誰もデバイスロストの事なんか覚えちゃいない

243:デフォルトの名無しさん
07/09/19 23:31:11
>>242
デバイスロストは現象、対処ともに綺麗にまとまったからもういいっしょ

244:デフォルトの名無しさん
07/09/19 23:33:51
>>242
結局わからなかったんだろ?ヘボはひっこんでろよwwww

245:デフォルトの名無しさん
07/09/19 23:37:29
>プロならPOOL_DEFAULTが当然。
>なんかおきたらPOOL_DEFAULTのリソースを解放後にResetを行う。
>Resetが失敗したときに初めてデバイスを最初から作り直し。
こうやってみるとデバイスロストも大して対応難しくないな

246:デフォルトの名無しさん
07/09/19 23:37:40
DirectDrawにはDirectDrawのいいところがあるんでは?
文字出力や画像出力のやりやすさとか
特殊なエフェクトを頻繁に塚わないのであればDirectDrawでいいんでは?
半透明とかいっぱい使えば綺麗ってわけでもなし

素材>=アイデア>>>エフェクト


247:デフォルトの名無しさん
07/09/19 23:44:29
慣れてるほうでやればいいだろ
そんなもん聞くな

248:デフォルトの名無しさん
07/09/19 23:47:17
>>246
ないって
すべてが遅いし
同じことDirect3Dでもっと綺麗にできるし
基本的な3D機能ならサポートされてないグラボのほうがめずらしい

249:デフォルトの名無しさん
07/09/19 23:51:27
>>244
俺は質問に対して真っ先に間違いを指摘したんだけどな

250:デフォルトの名無しさん
07/09/20 00:23:47
はじめのほうでデバイスロストが2種類ないっていってた厨房か?
デバイスロスト2種類あったじゃん
Resetかかる奴としける奴とで

251:デフォルトの名無しさん
07/09/20 00:27:54
DirectDrawはバイリニアフィルタ付きで画像を描画したい時に便利だった。
UYVYとかYUY2も大抵変換無しで使えるので、画像・動画デコーダの試験アプリには重宝した。

もし SetStretchBltMode(BILINEAR) とか用意されたら用済みだったろうけどね。

252:デフォルトの名無しさん
07/09/20 00:30:18
>>232,235
>DirectGraphics
そもそもそんな物は存在しない

253:デフォルトの名無しさん
07/09/20 00:34:36
>>250
もう何度も書かれているが、Resetが失敗する状況のことをロストとは言わない。
少なくともヘルプでは、その状況のことを"Lost"、「ロスト」、「消失」などとは呼んでいない。
>>135 >>144あたりを読み直しましょう。

254:デフォルトの名無しさん
07/09/20 00:37:32
URLリンク(www.google.co.jp)
URLリンク(www.google.co.jp)


255:デフォルトの名無しさん
07/09/20 00:45:40
人生相談
お金もあってカッコいい男と仲良くなれそうなのですが、
勝手知った昔からの彼氏(重度のオタです)との腐れ縁の方が
もし結婚しということになったとしても
なんだかんだいって長続きしそうな気がするのは分かりきっているのですが、
私はどうしたらよいでしょうか。

256:デフォルトの名無しさん
07/09/20 00:50:21
固定シェーダとかDirectGraphicsとか、世の中には謎の技術が多数存在する。
しかしそれは残念ながら、頭にウジの涌いた馬鹿にしか扱えない。

257:デフォルトの名無しさん
07/09/20 01:00:58
やべ、俺そういうの普通に扱えてるわ。

ということは・・・(((( ;゚Д゚))))

258:デフォルトの名無しさん
07/09/20 01:24:22
>>245
スマートポインターとか使って全ての関係を隠蔽し始めると、、、難しくなるよな。


259:デフォルトの名無しさん
07/09/20 01:25:30
>>254
600件近くも全世界に向けて赤っ恥を晒し続けているんだな

260:デフォルトの名無しさん
07/09/20 01:36:21
その600件のうち一件は俺のページな件について。

明日からちゃんと学校行きます・・・

261:204
07/09/20 01:39:43
>>230-231
了解しました。何か本買ってきます

262:デフォルトの名無しさん
07/09/20 05:31:13
コロコロ変な言葉作るMSが悪い。俺はただの犠牲者。

263:デフォルトの名無しさん
07/09/20 07:44:38
他人のせいにするゆとり世代

264:デフォルトの名無しさん
07/09/20 07:58:25
>>252
お前もしかして
DirectGraphicsじゃなくて
DirectXGraphicsだ、とかそういうことを主張したいわけ?
URLリンク(msdn.microsoft.com)


上げ足とるにもほどがあるだろ?
質問スレ、しかも初心者スレなのにちょっとウザいかな?とか空気読めて無いかな?とか考えないわけ?
お前嫌われてるだろ?w

265:デフォルトの名無しさん
07/09/20 08:18:09
>>264
こういう開き直り方をする奴って、プライドだけ高くて全然成長しないんだよな

266:デフォルトの名無しさん
07/09/20 08:25:19
>>265
たった一文字ついてないだけでなにをそんなにこだわってるの?
俺、お前みたいなのめちゃくちゃ嫌いなんだわ

267:デフォルトの名無しさん
07/09/20 09:28:38
お前らそんな事で言い合ってたら俺みたいなのが参加してしまうぞ

268:デフォルトの名無しさん
07/09/20 09:37:55
>>266
1文字でも間違えるとエラーになる世界にいるから
気になるんじゃないか?

269:デフォルトの名無しさん
07/09/20 09:46:00
A : DirectGraphics じゃなくて DirectX Graphics な。
B : そうか今度から気をつける。
これで済む話なのに煽り文句を入れるから荒れるんだよ。

270:デフォルトの名無しさん
07/09/20 12:34:15
別に質問者じゃないけど見てて腹が立つ
こんな本質とかけ離れた所指摘して悦に入ってる馬鹿みるたびに叩き殺したくなる

271:デフォルトの名無しさん
07/09/20 12:40:01
そしてごく一部の馬鹿のせいで間違った用語が初心者に氾濫していくと。

272:デフォルトの名無しさん
07/09/20 12:42:52
キチガイ>>270が来たーーーーーっ

キチガイってほんと怖いね。



273:デフォルトの名無しさん
07/09/20 12:45:15
しょせん2ちゃん
キチガイはおまえだ>>272

274:デフォルトの名無しさん
07/09/20 12:48:45
お前もキチガイだろ>>273

275:デフォルトの名無しさん
07/09/20 12:49:20
>>274
お前もな

276:デフォルトの名無しさん
07/09/20 12:52:47
>>275 いや、俺はキチガイだが殺そうとは思わんよ

キチガイでも重度となると、何してもいいから羨ましいよ>>275

277:デフォルトの名無しさん
07/09/20 13:52:03
おしえてください。DirectXをはじめようとおもってDirectX付属のチュートリアルをサンプルフレームワークで実行しようとしています。
三角形がでるだけの単純なやつなんですけど、三角形がぼろぼろになってでてしまいます。
チュートリアルのプロジェクトはちゃんと表示されるので、自分でサンプルフレームワークにいれるときに失敗していると思うのですが、
どのへんが悪いのかさっぱりわかりません。以下、移植時にいじったコードです。どこかおかしいですか?

#define DXUT_AUTOLIB
#include <dxstdafx.h>
#pragma comment(lib, "..\\dxut\\release\\DXUT.lib")

struct CUSTOMVERTEX
{
  FLOAT x, y, z, rhw;
  DWORD color;
};
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZRHW|D3DFVF_DIFFUSE)
LPDIRECT3DVERTEXBUFFER9 g_pVB = NULL;

278:277
07/09/20 13:52:54
HRESULT CALLBACK OnCreateDevice(IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext)
{
  CUSTOMVERTEX dxvertices[] =
  {
    { 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, },
    { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
    { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
  };

  if (FAILED( pd3dDevice->CreateVertexBuffer(3 * sizeof(CUSTOMVERTEX), 0, D3DFVF_CUSTOMVERTEX, D3DPOOL_DEFAULT, &g_pVB, NULL)))
    return E_FAIL;

  VOID* pdxvertices;
  if (FAILED(g_pVB->Lock(0, sizeof(dxvertices), (void**)&pdxvertices, 0)))
    return E_FAIL;
  memcpy(pdxvertices, dxvertices, sizeof(dxvertices));
  g_pVB->Unlock();

  return S_OK;
}

void CALLBACK OnFrameRender(IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext)
{
  pd3dDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0);
  if(SUCCEEDED( pd3dDevice->BeginScene())) {
    pd3dDevice->SetStreamSource(0, g_pVB, 0, sizeof(CUSTOMVERTEX));
    pd3dDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
    pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);
    pd3dDevice->EndScene();
  }
  pd3dDevice->Present(NULL, NULL, NULL, NULL);
}

279:277
07/09/20 13:53:47
void CALLBACK OnDestroyDevice(void* pUserContext)
{
  SAFE_RELEASE(g_pVB);
}

INT WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
  DXUTSetCallbackDeviceCreated(OnCreateDevice);
  DXUTSetCallbackDeviceDestroyed(OnDestroyDevice);
  DXUTSetCallbackFrameRender(OnFrameRender);

  DXUTInit(true, true, true);
  DXUTCreateWindow(L"hoge");
  DXUTCreateDevice(D3DADAPTER_DEFAULT, true, 640, 480, NULL, NULL);
  DXUTMainLoop();

  return DXUTGetExitCode();
}

280:デフォルトの名無しさん
07/09/20 15:00:04
フルスクリーンかどうかはどうやって判別するのでしょう?

281:デフォルトの名無しさん
07/09/20 15:02:29
視認

282:277
07/09/20 15:09:59
理由がわかりました。

  CUSTOMVERTEX dxvertices[] =
  {
    { 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, },
    { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, },
    { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, },
  };

の位置が悪いようです。どうもお世話様でした。

283:デフォルトの名無しさん
07/09/20 21:19:13
URLリンク(msdn.microsoft.com)
ここの
>デバイスには、常に、カラー バッファが関連付けられていなければならない。
ってどういうこと?

284:デフォルトの名無しさん
07/09/20 21:22:28
>>283
描画する先が存在しなかったらどうすればいいと言うんだ?
何が疑問なのかさっぱり分からん。

285:デフォルトの名無しさん
07/09/20 21:24:48
>>284
その文の前の文からの繋がりが分からない、って言ってるんじゃないかね?

前の文には、SetRenderTargetにNULLを渡すこともできると書いてあるのに、・・・
ってことでは

286:デフォルトの名無しさん
07/09/20 21:34:55
>>284,285
すまん。
カラーバッファってサーフェイスのことか。
ものすごく勘違いしてた

287:デフォルトの名無しさん
07/09/20 22:48:41
英語版でがんばってるけど、やっぱり日本語ヘルプもそろそろ更新してほしいな
もう3年も経つのに・・・

288:デフォルトの名無しさん
07/09/20 22:55:28
今まで日本語版だけあったのが奇跡なんだと思え

289:デフォルトの名無しさん
07/09/20 23:04:56
はい。

290:デフォルトの名無しさん
07/09/20 23:06:13
MSに許可貰って日本語訳した本でも売れば専門学校がガシガシ買って儲かりそうだけどな。

291:デフォルトの名無しさん
07/09/20 23:12:10
何年かかるんだよw出来た頃にはとっくに新しいSDKが出てる

そんなことするなら自動翻訳するか初音ミクに歌わせたほうがマシだ。

292:デフォルトの名無しさん
07/09/20 23:56:02
だからアメにプラットフォーム奪われるのは危険なんだって昔から言ってたのに。
絶対自分の国の開発者を有利にするに決まってるんだから。

293:デフォルトの名無しさん
07/09/20 23:58:27
奪われる?

294:デフォルトの名無しさん
07/09/21 00:41:49
PC98でエロゲしか出てなかった国なんだから滅びても仕方ない



295:デフォルトの名無しさん
07/09/21 01:17:12
PC98て 表示色数4096色中16色 VRAMプレーン方式 スプライト機能なしの素敵ハードか

296:デフォルトの名無しさん
07/09/21 01:30:03
OUT 168,8
ってやると200ラインモードでも画面が綺麗になるんだぜ

297:デフォルトの名無しさん
07/09/21 07:59:00
>>292
ほとんどインド人だろがw

298:デフォルトの名無しさん
07/09/21 14:00:02
>>297
インド人多いけど、結局、上は白人だよ。

299:デフォルトの名無しさん
07/09/21 16:43:43
>>298
誤解されがちだけど、インド人は大部分がコーカソイド(白人)です。
モンゴロイド(黄色人種)ではありません。

人種は肌の色で決まるわけではないので悪しからず。

300:デフォルトの名無しさん
07/09/21 19:11:42
>>299
誤解してるのは君

301:デフォルトの名無しさん
07/09/21 21:39:28
よくわからないがXbox360ユーザーは非国民ということで

302:デフォルトの名無しさん
07/09/21 21:43:01
俺はアーリア人だから問題ないな

303:デフォルトの名無しさん
07/09/21 22:00:45
>>302
それは誤解

304:デフォルトの名無しさん
07/09/22 06:16:50
こんなスレで質問していないで、早く試行錯誤でバグ回避策を見つける仕事に戻るんだ!
何?やる気がありません?なら辞めろや、他の派遣雇うからw


305:デフォルトの名無しさん
07/09/22 09:17:59
脳内社員か。
派遣デバッガはレポート書いて提出したら仕事終わりで、
こんなところうろうろしてねえよ。



306:デフォルトの名無しさん
07/09/22 17:24:48
>>305
それは誤解
つうか偏見

307:デフォルトの名無しさん
07/09/23 00:09:04
>>306
だが現実

308:デフォルトの名無しさん
07/09/23 17:02:11
マ板でやれ

309:デフォルトの名無しさん
07/09/23 17:04:07
>>308
それも誤解

310:デフォルトの名無しさん
07/09/23 20:04:31
次の初心者まだ~?チンチン
みっくみくにしてやんよ

311:デフォルトの名無しさん
07/09/23 20:35:30
俺は教えてだぁりんの方が好きだな

312:デフォルトの名無しさん
07/09/24 06:59:25
おはようございます、動画処理について研究している者です。
VisualStudio2005を使い、処理プログラムを作成していきたいのですが、第一段階の目標として
「実時間(ストリーム)でカメラから撮影している動画をPCに表示する」を掲げています、
参考図書として[はじめての動画処理プログラミング-Win32APIとDirectXで実装する動画処理の基礎-]
 →URLリンク(www.cqpub.co.jp)
を使って勉強したのですが、この本では「DVカメラを~/USBカメラを~/IEEE1394で~」と書いてあります、
しかし自分の研究室にあるカメラはそのようなものではなく(URLリンク(up2.viploader.net))
このような古いタイプでした、IEEE1394規格でもありません AVALDATA社という所のこのようなボードを使って
URLリンク(www.avaldata.com) 一応取り込み・表示する事はできるのですが
応用力の無い私にはここからどうやって弄ればいいのか分かりません、
これがDVカメラならなんとかなりそうだったのですが…“まずどうすればいいか”を教えて頂ければ幸いです。
分かり辛い質問で申し訳ありません、そちらから聞きたい事があればどうぞ質問してください。

313:デフォルトの名無しさん
07/09/24 07:15:05
個人研究? 教官に聞けないの?

314:デフォルトの名無しさん
07/09/24 07:23:27
URLリンク(www.google.co.jp)

315:デフォルトの名無しさん
07/09/24 07:40:59
技術的な質問ならともかく、研究への応用について尋ねられてもなあ

316:デフォルトの名無しさん
07/09/24 07:43:10
>>312
たぶん、それについている「専用のSDK」とやらを使うしかない

317:312
07/09/24 08:08:10
やはり自分でSDKを使っていくしかないですか・・・
正直関数の説明書を見ても意味不明なのですが、
まぁもう少し頑張ってみたいと思います。
ぶっ続けで研究してたので今から休憩に入りますがもしかしたら
今晩くらいにまた質問させて頂くかも知れません、その時は宜しくお願いします。

318:デフォルトの名無しさん
07/09/24 08:27:21
SDKの関数を使って、SDKが使用しているバッファを一旦取り出し
DirectShowなり他のライブラリのバッファに突っ込むようなことをすれば
後者のAPIが使えて古い独自SDKに振り回されなくてすむようになる。
速度的に問題が無ければな。

余談だが、古い機材や糞SDKを使わざるを得ない状況を打開する経験ってのは
社会に出てからも何か役に立つんじゃないか。社会のことはよくしらねーけど。

319:デフォルトの名無しさん
07/09/24 13:51:30
もうダイレクトXわけわかんなすぎ!
たすけてよぉ~!!

320:デフォルトの名無しさん
07/09/24 14:04:09
つ OpenGL

321:デフォルトの名無しさん
07/09/24 14:50:09
画面を徐々に暗くしていく処理(フェードアウト?)を一番簡単にやるにはどうしたらいいですか?

322:デフォルトの名無しさん
07/09/24 15:15:07
>>321
あからじめ徐々に暗くするムービーを用意→再生

323:デフォルトの名無しさん
07/09/24 15:16:27
圧縮率も最強になるだろうし結構実用的だと思うぜw>ムービー

324:デフォルトの名無しさん
07/09/24 15:28:50
画面サイズの真っ黒な板を
一番手前において徐々に透明度を下げる

325:デフォルトの名無しさん
07/09/24 15:30:40
ユーザがモニタのあかるs

326:デフォルトの名無しさん
07/09/24 15:35:15
>>322
ツマンネ

>>323
馬鹿じゃねーの

>>324
偉い

>>325
くだらん

327:デフォルトの名無しさん
07/09/24 15:35:42
エロCGと同じフォーマットでグラデーションの一枚絵をたくさん用意→スクリプトで絵を切り替え。


328:デフォルトの名無しさん
07/09/24 15:47:27
おまえらどんなレベルのゲーム作れんのよ

329:デフォルトの名無しさん
07/09/24 15:58:13
ダダシン先生みたいなのですぅ!

330:デフォルトの名無しさん
07/09/24 16:10:31
>>324
この方法でいけそうです
ありがとうございました

331:デフォルトの名無しさん
07/09/24 16:10:51
このスレは無能な奴に限ってえらそうですね

332:デフォルトの名無しさん
07/09/24 16:44:59
すいません、さっきの続きの質問なんですが

フェードインをフェードアウトをまとめたクラスにいろんな場面からアクセスしたいんですが
こういう場合はやはりグローバル変数にするしかないですかね?

333:デフォルトの名無しさん
07/09/24 16:48:59
あほや・・・あほがおる!!

334:デフォルトの名無しさん
07/09/24 16:54:49
それはDirectXの質問ではないが、
グローバル変数でもSingletonでも好きなようにやれ。
フェードでまとめる以外にも、パーティクル等のエフェクト機能の一部という実装もある

335:デフォルトの名無しさん
07/09/24 17:34:50
グローバルにしておきます
ありがとうございました

336:デフォルトの名無しさん
07/09/24 18:04:19
それってなんか
クラスの作り方を間違えてる希ガス

337:デフォルトの名無しさん
07/09/24 18:20:02
とりあえずなんでもクラスにまとめてしまうもんで;;
何か他に良い設計ありますか?

338:デフォルトの名無しさん
07/09/24 18:38:32
各シーンから呼び出されるものではなく
システムの中に
シーンの切り替えなどを一括に管理する部分(クラス)を作って
そこから呼び出されるべきものではないかと思う

DirectXの話じゃなくて設計の話なので板違い
荒れる前に他行った方が良いぞ

339:デフォルトの名無しさん
07/09/24 18:43:52
おお、なるほど!
ありがとうございます

340:デフォルトの名無しさん
07/09/24 18:48:37
>>332
引数で渡すとかないのか?ウンコ?

341:デフォルトの名無しさん
07/09/24 18:52:14
引数で渡すのはスマートじゃないですからっ><

342:デフォルトの名無しさん
07/09/24 19:34:35
>>341
そんなのどこの本に書いてあったんですか?
グローバル変数なんて1つ使っただけでもう設計も糞もないんですよ?

343:デフォルトの名無しさん
07/09/24 19:42:05
本に書いてないとダメなのか?

344:デフォルトの名無しさん
07/09/24 19:45:10
糞っぽい。
フェードアウト完了のイベントで関数呼び出すという発想もないようだな。


345:デフォルトの名無しさん
07/09/24 19:49:59
そもそもゲームの設計に関して
きちんと書かれてる本なんて見たことない

これといった正解もないし
会社ごとに違うのは当たり前
社内でさえ基礎研究がきちんと全体に浸透してることなんて
ほとんどないからプロジェクトごとで違ったりするし
あまり深く考えずに
とりあえず今の自分の技術で最善と思われる方法をとればよろし
後で、あーすればよかったとか
こーすればもっと良くなるとか、そういうのを繰り返して上達するものだ

346:デフォルトの名無しさん
07/09/24 19:57:57
じゃあタスクシステムに一家言ある御仁に頼む↓

347:デフォルトの名無しさん
07/09/24 19:58:59
>>342
個人で作ってるので自分がコードを見てスマートかどうかですよ

348:デフォルトの名無しさん
07/09/24 20:02:32
>フェードアウト完了のイベントで関数呼び出す
??

349:デフォルトの名無しさん
07/09/24 20:04:54
>>343
少しは参考にするべきだと思うぜ
引数が多いと駄目なんて記述はどこの本読んでもない

それとシーンの管理だけどこの辺はちょっと考えて設計したほうがいいと思うぜ
現行

フェード処理S→→→フェード処理E
シーン1→シーン2・・・ ・・・シーンN

の可能性があるならフェードってつまり何?
シーンってつまり何?
ってちゃんと考えておいたほうがいいぜ
ロードのタイミングも考慮してね

その結果

フェード処理S→フェード処理E→→→→フェード処理S・・・
シーン1ロード→シーン2ロード→シーン1→シーン2→シーンアンロード→シーン?ロード・・・ ・・・シーンN

ってなるかもしんねーしw
とにかく色んな場面を考えてみろ

350:デフォルトの名無しさん
07/09/24 20:49:05
DIrectX日本語or英語版がDLできるところありませんか。・

351:デフォルトの名無しさん
07/09/24 20:49:24
>>346
タスクシステムこそ
ゲーム業界にのみ伝わる現代の魔術
連綿と口伝によってのみ受け継がれ
変化し、進化と退化を繰り返す
その亜流は数知れず、もはやその全てを語れるものはいない

352:デフォルトの名無しさん
07/09/24 20:50:33
"DIrectX"をgoogleで検索するとトップページにこんなのが!
URLリンク(www.microsoft.com)

353:デフォルトの名無しさん
07/09/24 20:57:11
退化と進化

進化という言葉が進歩を意味しないのは、生物学上は当然なのであるが、一般には誤解されやすい部分である。

今日の学校教育においてすら、国語教育の場では進化の反対語として退化を教える例がしばしば認められる。
しかし、退化は生物の個々の器官に対して使われる言葉である。したがって、その生物全体について使われる
進化と対応するものではなく、退化に対する言葉は『発達』である。

354:デフォルトの名無しさん
07/09/24 21:52:06
で?

355:デフォルトの名無しさん
07/09/24 21:55:40
>>353
勝手に話を生物学上に限定してんじゃねーぞドカス

356:デフォルトの名無しさん
07/09/24 22:00:29
>>355
生物学に限定しようがしまいが、退化は進化の対義語ではない。

って俺は小学校か中学校で習った覚えがあるんだが、お前らは習わなかったのか?

357:デフォルトの名無しさん
07/09/24 22:03:56
せめてDirectXの話で揉めようや

358:デフォルトの名無しさん
07/09/24 22:05:31
しんか しんくわ【進化】

(名)スル

(1)〔evolution〕生物は不変のものではなく、長大な年月の間に次第に変化して現生の複雑で多様
  な生物が生じた、という考えに基づく歴史的変化の過程。種類の多様化と、環境への適応に
  よる形態・機能・行動などの変化がみられる。

(2)物事が次第に発達していくこと。

>>351は(2)>>353は(1)を言ってる。それだけ。~~国語の時間糸冬~~


359:デフォルトの名無しさん
07/09/24 22:09:22
はいはいそうですか

360:デフォルトの名無しさん
07/09/24 22:18:43
つーか、おまいら
>>351の突っ込み所はそこじゃないだろw

361:デフォルトの名無しさん
07/09/24 22:19:18
誤解が多いが「退化」は進化なんだけどな。
環境に適応して無駄な部分が無くなるのが退化で、それは進化の一種。

362:デフォルトの名無しさん
07/09/24 22:21:08
>>351は的を得てるだろ

363:デフォルトの名無しさん
07/09/24 22:22:58
× 的を得る
○ 的を射る

364:デフォルトの名無しさん
07/09/24 22:23:35
○的を射る ×的を得る
○当を得る ×当を射る

365:364
07/09/24 22:24:43
(*'A`)

366:デフォルトの名無しさん
07/09/24 22:27:53
このスレDirectXはさっぱりだが国語の勉強にはなるな

367:デフォルトの名無しさん
07/09/24 22:30:52
マ板、ム板は
予想の斜め上あたりで議論が繰り広げられるから
面白いなw

368:デフォルトの名無しさん
07/09/24 22:33:50
>>363-364
キースっ!キースっ!♥

369:デフォルトの名無しさん
07/09/24 22:39:48
…(*'A) (A`*)…

370:デフォルトの名無しさん
07/09/24 22:41:56
…(*'AA`*)…

371:デフォルトの名無しさん
07/09/24 22:42:31
…(*'A`*)…

372:デフォルトの名無しさん
07/09/24 22:43:42
       _,,,  
      _/::o・ァ  さきほどお見苦しい映像が
    ∈ミ;;;ノ,ノ   流れましたことをお詫び申し上げます
      ヽヽ

373:デフォルトの名無しさん
07/09/24 22:44:24
融合してるし!w

374:デフォルトの名無しさん
07/09/24 22:44:27
この流れワロタ

375:デフォルトの名無しさん
07/09/24 22:44:33
良くなろうが悪くなろうが、ある種が時間とともに変化することを「進化」いう。
その「進化の過程において」、ある一部の器官が縮小、あるいは消滅することを「退化」という。

DirectX7→8、ってのは進化の例。
その「進化の中で」、DirectDrawが消えた、ってのが退化の例。


376:デフォルトの名無しさん
07/09/24 22:46:41
>>375
空気嫁w

377:デフォルトの名無しさん
07/09/24 22:47:36
>>375
お前には失望した

378:デフォルトの名無しさん
07/09/24 22:49:51
>>375は自重できずに自分のことばっか喋って相手を幻滅させるタイプ

379:デフォルトの名無しさん
07/09/24 22:52:18
>>375の人気に嫉妬www

380:デフォルトの名無しさん
07/09/25 01:18:39
DIrectX7の日本語or英語版がDLできるところありませんか。・

381:デフォルトの名無しさん
07/09/25 01:32:20
>>350

382:デフォルトの名無しさん
07/09/25 02:04:10
>>380
URLリンク(www.vb-fun.de)

383:デフォルトの名無しさん
07/09/25 02:08:09
>>382

ありがとうございます。DLしておきます。
SDKじゃなくてランタイムがいいんですが、今はSDKしか手に入りませんか?
なさそうならSDK入れることにします。

384:デフォルトの名無しさん
07/09/25 02:14:01
DirectX Run-Time Only

385:デフォルトの名無しさん
07/09/25 02:18:20
>>351
保存した

386:デフォルトの名無しさん
07/09/25 02:35:33
>>383
DX7がでた頃のエロゲーでもかってくるんだ

387:デフォルトの名無しさん
07/09/25 03:13:45
あの頃のエロゲはDirectXを使わないことが何か偉い事という価値観だったんじゃないの?


388:デフォルトの名無しさん
07/09/25 05:47:36
>>319
URLリンク(fatalita.sakura.ne.jp)

389:デフォルトの名無しさん
07/09/25 10:27:17
DirectX 9なんだけど 最新版ってどれになるの?
日付新しいのとかあるから わけわからなくなってます・・・

これ入れとけ!っての教えてください。

390:デフォルトの名無しさん
07/09/25 10:35:39
ランタイムのことなら Microsoft サイトから DirectX ランタイムウェブインストーラ
SDK なら 2007 August あたりなんじゃね?
詳細は Microsoft のサイトの DirectX ページにアクセク。

391:デフォルトの名無しさん
07/09/25 20:39:54
それはありえない。
VC6や.Net2003対応してない

392:デフォルトの名無しさん
07/09/25 20:45:05
2003はPlatform SDK入れればいいよって固定シェーダの人が言ってた

393:デフォルトの名無しさん
07/09/25 20:45:42
VS2005EE入れればいいだけじゃね

394:デフォルトの名無しさん
07/09/25 22:44:52
重いからやだ

395:デフォルトの名無しさん
07/09/25 22:48:11
2005軽いじゃん。

ヘルプ重いけど。

396:デフォルトの名無しさん
07/09/25 23:38:56
ぜったいやだ

397:デフォルトの名無しさん
07/09/25 23:43:24
結局何がやりたいんだ?

398:デフォルトの名無しさん
07/09/26 00:48:48
2003はまだサポートされてるんじゃ?

399:312
07/09/26 05:22:18
おはようございます、2日前の>>312です。
AVALDATA社のSDK説明書にサンプルプログラムとして「画像の連続入力」
というのもがあったので書いて実行してみたのですが(↓画像)の状態になるだけで
取り込んでいるはずの画像が表示されません…
表示もできるようにコードを書き換えて頂けませんでしょうか、
宜しくお願いします。m(__)m

実行結果 URLリンク(up2.viploader.net)
コード等 URLリンク(www12.axfc.net)


400:デフォルトの名無しさん
07/09/26 05:59:53
そのボードを持ってる奴がこのスレにいる可能性はどれくらいだと思う?

401:デフォルトの名無しさん
07/09/26 06:10:13
もともと表示まで行うサンプルではないようだ。贅沢を望むな。
GrabCallbackFuncでファイルにでも書き出せば。


402:399
07/09/26 06:33:45
GrabCallbackFuncとは何ですか? 検索しても引っかからないのですが・・・

403:デフォルトの名無しさん
07/09/26 06:38:21
自分がアップしたサンプルコードすら読んでないとは恐れ入る。
GrabCallbackFuncはFile_1605\rg\sample2.cの中の関数だよ。

404:402
07/09/26 06:54:09
アップしたコードの中でしたか・・・お恥ずかしい限りです、
正直難しい用語だらけで処理の流れがよく理解できていないのです
このGrabCallbackFunc(){~}の中に何かを付け加えると表示や書き出しができるということでしょう、
何処に何と付け加えるのか教えて頂けないでしょうか・・・


405:404
07/09/26 08:47:36
表示方法・・・どなたか教えていただけないでしょうかorz

406:デフォルトの名無しさん
07/09/26 09:18:42
>>405
GrabCallbackFuncが呼び出される時の引数を全部吐き出させろ。
そもそも呼び出されているかどうかすら怪しいし。
あと、Acap関数呼び出したらAcapGetLastErrorCodeでとりあえずエラーが無いか確認。
こういう時は、得られる情報を全て吐き出させてみるのが基本だ。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch