[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 12/06 18:57 / Filesize : 237 KB / Number-of Response : 929
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん [2007/09/08(土) 22:21:46 ]
※回答する人も、質問する人も必ず読んでください

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

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

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

【C++】 DirectX初心者質問スレ Part13 【C】
pc11.2ch.net/test/read.cgi/tech/1182351826/

2 名前:デフォルトの名無しさん mailto:sage [2007/09/08(土) 22:22:28 ]
【関連サイト】

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

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

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

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

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

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

Pastel's Laboratory
ttp://www.roy.hi-ho.ne.jp/pastel/home/index.html

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

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

ゲームを作るための素材を集めよう まとめサイト
paw.my-sv.net/index.html

3 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 07:27:58 ]
スマートポインタの話題禁止

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

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

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

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


6 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 14:04:31 ]
ロストには

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

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

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

U.@もAもD3DDeviceまで一度完全に破棄して、すべて作り直す

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

7 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 15:19:23 ]
>>6
Thanks!

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


9 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 17:13:21 ]
>>8
D3DDeviceがロストするとすべてが駄目

10 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 17:40:58 ]
>>9
ども



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

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

12 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 22:21:14 ]
見当違いで無意味な最適化の努力で悩むのが初心者の特徴



13 名前:デフォルトの名無しさん mailto:sage [2007/09/09(日) 22:23:13 ]
違う。脱初心者の背伸びを温かく見守るべき

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

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

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

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

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

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

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

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

19 名前:デフォルトの名無しさん [2007/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 [2007/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 [2007/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 mailto:sage [2007/09/10(月) 15:25:42 ]
>>12
そのとおり最適化について全然分かっていない初心者なので、どの当たりが
見当違いなのかご指摘お願いします。

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

23 名前:11 mailto:sage [2007/09/10(月) 15:34:27 ]
漏れも最適化したいけど全然分かっていないのでアドバイス頼む!

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

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

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

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

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

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

30 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 00:59:32 ]
単位は自分で決めた通りのもの



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

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

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

33 名前:32 [2007/09/11(火) 11:37:00 ]
例ですが、
nichiyo-web.hp.infoseek.co.jp/page004.html
このことわざ蛍のようにテキストボックスを表示したいということです。

34 名前:デフォルトの名無しさん mailto:sage [2007/09/11(火) 12:04:43 ]
>>33
SDKにそのまんまのクラスあったような‥‥

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

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

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

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

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

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

40 名前:29 mailto:sage [2007/09/11(火) 19:06:10 ]
>>30
ありがとうございました。
メートル単位でやってみることにします。



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

42 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 18:10:04 ]
まずは簡単の基準を明確にせよ。

43 名前:デフォルトの名無しさん mailto:sage [2007/09/12(水) 18:11:31 ]
むずかしくてもいいので教えてください

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

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

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

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

45 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 18:21:49 ]
出来ないのが逆に不思議

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

47 名前:44 mailto:sage [2007/09/13(木) 21:28:28 ]
なんとか解決できました。

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

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

48 名前:デフォルトの名無しさん mailto:sage [2007/09/13(木) 23:04:36 ]
DirectPlayってとっくにMicrosoftに見捨てられてなかったの?


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

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

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

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

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

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

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

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



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

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

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

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


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

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

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

55 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 20:27:43 ]
なぜメッシュだとできないと思ったのかが不思議だ

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

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

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

59 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 21:59:52 ]
そのぐらいデータを見れば分かるだろ。

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



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

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

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

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

65 名前:デフォルトの名無しさん mailto:sage [2007/09/15(土) 22:22:24 ]
解決しました

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

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

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

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

たとえば

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

とするより

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

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

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

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

70 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 12:45:30 ]
>>69
DirectX10だとどうすればいいの?




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



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

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

74 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 16:54:40 ]
>>71
フォントとIMEは何の関係もない。
変なのはお前の頭。

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

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

77 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 20:49:37 ]
背景を筒状にしてしまうのも手だな

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

79 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 21:28:35 ]
方法は自由。
「〜ですか?」ではなくまずやってみろ。


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



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

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

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

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

84 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 23:06:42 ]
お説教もいらないから。

85 名前:デフォルトの名無しさん [2007/09/16(日) 23:10:48 ]
>>82
>>6は嘘?

86 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 23:11:21 ]
>>83
はじめの5行が無かったら素晴らしいレスだったのに

87 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 23:28:43 ]
>>85
大嘘

88 名前:デフォルトの名無しさん mailto:sage [2007/09/16(日) 23:30:54 ]
>>1-88は全部嘘

89 名前:デフォルトの名無しさん [2007/09/17(月) 00:00:31 ]
おまえもうそかよ?

90 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 00:04:14 ]
何を信じて生きていけばいいの?



91 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 00:04:50 ]
信じる者は騙される

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

93 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 00:15:09 ]
安物RPGのダンジョンの謎解きみたいだな

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

95 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 04:00:40 ]
BBXで説明されてるな
bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=32&vew=15


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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

106 名前:デフォルトの名無しさん [2007/09/17(月) 16:48:21 ]
ちょっとさがしてみるよ

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

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

109 名前:107 mailto:sage [2007/09/17(月) 17:18:01 ]
>>108 熱烈感謝
ココにアップお願いします。
www.uploda.net/18.php

>>107
ココを見て興味わいたのです
ttp://www.sun-inet.or.jp/~yaneurao/intensive/diw1.html

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



111 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 18:07:54 ]
>>110
お願いします。

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

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

114 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 19:31:17 ]
>>99-101
は?何が言いたいの?
デバイスのロストはその2種類でいいでしょ?

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

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

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

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

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

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

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

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

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



121 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:19:09 ]
だれか正解をまとめてくれ

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

122 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:28:07 ]
>>120
え?詳細まで書けよ

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

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

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

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

124 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:31:37 ]
>>121
俺のソースはそのBBXのしかない

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

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

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

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

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

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


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

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

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



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

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

133 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:54:56 ]
>>132
あー、そうだ
俺がアフォでした

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

すいませんでした

134 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 00:57:04 ]
どうしようもないオチが…

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


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

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

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

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

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

136 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 01:05:57 ]
>>135
なんかよくわかんね

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

137 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 01:11:41 ]
>>129

確かにD3D8からっぽいね。
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpdndrive/htm/directx12192000.asp

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

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

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

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

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

138 名前:137 mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 01:35:52 ]
>>138
んなこと誰も議論してないんだが。
一人で勝手に議題をすり替えといてどう?なんて言われてもなあ

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

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



141 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 01:43:32 ]
亀レス乙
ところで>>6とか>>114は同一人物なのかね?

142 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 01:44:43 ]
>>141
そうですよ

143 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 01:50:38 ]
>>6>>114
ネ申

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

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

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


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

146 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 02:59:10 ]
亀レスついでに。>>100

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

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

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

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

148 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 06:24:12 ]
ここでDirectXにドップリ漬かっている俺が登場。

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

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

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

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



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

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

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

154 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:43:21 ]
まだいじってないけど
10ならデバイスロストしなくなった?

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

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

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


157 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 16:21:53 ]
>>156
いい加減無責任な発言は控えろよな。

158 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 16:29:04 ]
>アプリ実行中にドライバーをアップデートするとか。
>アプリ実行中にドライバーをアップデートするとか。
>アプリ実行中にドライバーをアップデートするとか。

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


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



161 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:16:33 ]
>>159は本物のプログラマ

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

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

163 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:36:26 ]
どうやら真性です。本当にあり(ry

164 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 17:49:13 ]
真性だな

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


166 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 18:00:51 ]
>>156
>>165

これね。

ttp://www.microsoft.com/japan/msdn/windowsvista/general/AppComp.aspx#appcomp_topic17
>再起動なしのドライバ アップグレード

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

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

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

167 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 18:11:25 ]
そうだな5分に10回はWindowsUpdateするからな。
必要だな。

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


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

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

170 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 18:55:56 ]
次はスマートポインタの是非を語ろうぜwww



171 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 19:03:56 ]
>>170 (゚∀゚)カエレ!

172 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 21:11:09 ]
この仕様だとPOOL_MANAGEDがなんのためにあるのか謎

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

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

175 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 21:48:36 ]
test

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

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

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

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

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



181 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:08:38 ]
>>180
ごめん、再挑戦してみる。

182 名前:81 mailto:sage [2007/09/18(火) 22:24:55 ]
ちなみに>>5も俺だ。

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

184 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:34:26 ]
つかさちゃんとちゅっちゅしたいよ〜

185 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 22:37:42 ]
ばるさばるさばるさばるさみこみこす〜

186 名前:デフォルトの名無しさん [2007/09/18(火) 22:38:44 ]
>>178
>>105-113

187 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 23:03:56 ]
>>183
俺は>>177じゃないぞw

188 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 23:24:52 ]
俺って誰だよ

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


190 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 00:41:35 ]
>>177
正しくは>144だろ。>6もよく読むとなんか変。




191 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 01:10:27 ]
>>190
どこが変か書けよ

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

193 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 01:14:49 ]
>>191
>>85

194 名前:デフォルトの名無しさん [2007/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 [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 01:55:34 ]
デバイス作成する時に
D3DCREATE_MULTITHREADED
とか要るんじゃなかったっけ

今はいらないのかな

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

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

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

199 名前:194 mailto:sage [2007/09/19(水) 02:29:17 ]
>>196
ちょおおおおおおおお!!
そのフラグ1つで全てが解決しました。

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

200 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 06:43:26 ]
>>193
だからどこが?



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

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

203 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 09:18:23 ]
xfileの仕様が詳しく書いてあるサイトってありますか?


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

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

205 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 10:16:09 ]
テクスチャがシステムメモリから直接表示されるらしいw

206 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 10:45:27 ]
>>200
>>135

207 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 10:49:00 ]
>>203
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/reference/xfile/xfilereference.asp

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

208 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 10:50:26 ]
こっちだった
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/reference/fileformat/xfileformat.asp

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

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

210 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 11:39:26 ]
>>207
ありがとうございmす




211 名前:デフォルトの名無しさん [2007/09/19(水) 12:53:17 ]
>>135は普通に嘘っぱちだろ

212 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 12:56:08 ]
>>211は大嘘

213 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 14:25:52 ]
>>213は嘘

214 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 15:00:53 ]
>>92に戻る

215 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 16:10:33 ]
いちいち蒸し返す意味がわからん

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

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

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

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

219 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 16:49:22 ]
まとめ
Q. >>81
A. >>59

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

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




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


222 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 18:31:20 ]
自らプロと名乗る輩ほど信用ならないものはない

223 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 18:32:26 ]
すげー勉強になるわ

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

224 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 18:35:41 ]
>>223
ttp://up2.viploader.net/upphp/src/vlphp070252.jpg

225 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 18:41:44 ]
ほわっつずぃすインザワールド?

226 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:07:46 ]
モコモコチュンチュン

227 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:37:49 ]
>>222
二重否定があまり良くないので対偶を

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

228 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 19:49:00 ]
>>224
壁紙にしたわ

229 名前:204 [2007/09/19(水) 22:13:07 ]
>>207
それは無理です・・・

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

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

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



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

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

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

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


233 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 22:43:16 ]
>>232
わかってんならさっさとそうしろ

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

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

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

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


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

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

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

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

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

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

239 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 23:20:34 ]
もうこの流れじゃマトモな答えは返ってこないな

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



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

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

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

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

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

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

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

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


247 名前:デフォルトの名無しさん mailto:sage [2007/09/19(水) 23:44:29 ]
慣れてるほうでやればいいだろ
そんなもん聞くな

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

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

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



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

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

252 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 00:30:18 ]
>>232,235
>DirectGraphics
そもそもそんな物は存在しない

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

254 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 00:37:32 ]
www.google.co.jp/search?num=100&hl=ja&q=Direct-Graphics&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
www.google.co.jp/search?num=100&hl=ja&q=DirectX-Graphics&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja


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

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

257 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:00:58 ]
やべ、俺そういうの普通に扱えてるわ。

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

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


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

260 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 01:36:21 ]
その600件のうち一件は俺のページな件について。

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



261 名前:204 [2007/09/20(木) 01:39:43 ]
>>230-231
了解しました。何か本買ってきます

262 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 05:31:13 ]
コロコロ変な言葉作るMSが悪い。俺はただの犠牲者。

263 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 07:44:38 ]
他人のせいにするゆとり世代

264 名前:デフォルトの名無しさん [2007/09/20(木) 07:58:25 ]
>>252
お前もしかして
DirectGraphicsじゃなくて
DirectXGraphicsだ、とかそういうことを主張したいわけ?
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/dxgraphics.asp


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

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

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

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

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

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

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



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

272 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:42:52 ]
キチガイ>>270が来たーーーーーっ

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



273 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:45:15 ]
しょせん2ちゃん
キチガイはおまえだ>>272

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

275 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 12:49:20 ]
>>274
お前もな

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

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

277 名前:デフォルトの名無しさん [2007/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 [2007/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 [2007/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 名前:デフォルトの名無しさん [2007/09/20(木) 15:00:04 ]
フルスクリーンかどうかはどうやって判別するのでしょう?



281 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 15:02:29 ]
視認

282 名前:277 [2007/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 名前:デフォルトの名無しさん [2007/09/20(木) 21:19:13 ]
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/reference/d3d/interfaces/idirect3ddevice9/setrendertarget.asp
ここの
>デバイスには、常に、カラー バッファが関連付けられていなければならない。
ってどういうこと?

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

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

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

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

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

288 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:55:28 ]
今まで日本語版だけあったのが奇跡なんだと思え

289 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:04:56 ]
はい。

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



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

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

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

293 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:58:27 ]
奪われる?

294 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 00:41:49 ]
PC98でエロゲしか出てなかった国なんだから滅びても仕方ない



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

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

297 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 07:59:00 ]
>>292
ほとんどインド人だろがw

298 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 14:00:02 ]
>>297
インド人多いけど、結局、上は白人だよ。

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

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

300 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 19:11:42 ]
>>299
誤解してるのは君



301 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 21:39:28 ]
よくわからないがXbox360ユーザーは非国民ということで

302 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 21:43:01 ]
俺はアーリア人だから問題ないな

303 名前:デフォルトの名無しさん mailto:sage [2007/09/21(金) 22:00:45 ]
>>302
それは誤解

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


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



306 名前:デフォルトの名無しさん mailto:sage [2007/09/22(土) 17:24:48 ]
>>305
それは誤解
つうか偏見

307 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 00:09:04 ]
>>306
だが現実

308 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 17:02:11 ]
マ板でやれ

309 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 17:04:07 ]
>>308
それも誤解

310 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 20:04:31 ]
次の初心者まだ〜?チンチン
みっくみくにしてやんよ



311 名前:デフォルトの名無しさん mailto:sage [2007/09/23(日) 20:35:30 ]
俺は教えてだぁりんの方が好きだな

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

313 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 07:15:05 ]
個人研究? 教官に聞けないの?

314 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 07:23:27 ]
www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP237JP238&q=directshow+capture

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

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

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

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

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

319 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 13:51:30 ]
もうダイレクトXわけわかんなすぎ!
たすけてよぉ〜!!

320 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 14:04:09 ]
つ OpenGL



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

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

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

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

325 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 15:30:40 ]
ユーザがモニタのあかるs

326 名前:デフォルトの名無しさん [2007/09/24(月) 15:35:15 ]
>>322
ツマンネ

>>323
馬鹿じゃねーの

>>324
偉い

>>325
くだらん

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


328 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 15:47:27 ]
おまえらどんなレベルのゲーム作れんのよ

329 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 15:58:13 ]
ダダシン先生みたいなのですぅ!

330 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 16:10:31 ]
>>324
この方法でいけそうです
ありがとうございました



331 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 16:10:51 ]
このスレは無能な奴に限ってえらそうですね

332 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 16:44:59 ]
すいません、さっきの続きの質問なんですが

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

333 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 16:48:59 ]
あほや・・・あほがおる!!

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

335 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 17:34:50 ]
グローバルにしておきます
ありがとうございました

336 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:04:19 ]
それってなんか
クラスの作り方を間違えてる希ガス

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

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

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

339 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:43:52 ]
おお、なるほど!
ありがとうございます

340 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:48:37 ]
>>332
引数で渡すとかないのか?ウンコ?



341 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 18:52:14 ]
引数で渡すのはスマートじゃないですからっ><

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

343 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 19:42:05 ]
本に書いてないとダメなのか?

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


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

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

346 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 19:57:57 ]
じゃあタスクシステムに一家言ある御仁に頼む↓

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

348 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 20:02:32 ]
>フェードアウト完了のイベントで関数呼び出す
??

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

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

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

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

その結果

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

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

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



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

352 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 20:50:33 ]
"DIrectX"をgoogleで検索するとトップページにこんなのが!
www.microsoft.com/japan/windows/directx/default.mspx

353 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 20:57:11 ]
退化と進化

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

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

354 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 21:52:06 ]
で?

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

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

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

357 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:03:56 ]
せめてDirectXの話で揉めようや

358 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:05:31 ]
しんか しんくわ【進化】

(名)スル

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

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

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


359 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:09:22 ]
はいはいそうですか

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



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

362 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:21:08 ]
>>351は的を得てるだろ

363 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:22:58 ]
× 的を得る
○ 的を射る

364 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:23:35 ]
○的を射る ×的を得る
○当を得る ×当を射る

365 名前:364 mailto:sage [2007/09/24(月) 22:24:43 ]
(*'A`)

366 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:27:53 ]
このスレDirectXはさっぱりだが国語の勉強にはなるな

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

368 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:33:50 ]
>>363-364
キースっ!キースっ!♥

369 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:39:48 ]
…(*'A) (A`*)…

370 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:41:56 ]
…(*'AA`*)…



371 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:42:31 ]
…(*'A`*)…

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

373 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:44:24 ]
融合してるし!w

374 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:44:27 ]
この流れワロタ

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

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


376 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:46:41 ]
>>375
空気嫁w

377 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:47:36 ]
>>375
お前には失望した

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

379 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 22:52:18 ]
>>375の人気に嫉妬www

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



381 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 01:32:20 ]
>>350

382 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 02:04:10 ]
>>380
www.vb-fun.de/cgi-bin/loadframe.pl?ID=vb/directx/directx7/dx7_sdk.shtml

383 名前:デフォルトの名無しさん [2007/09/25(火) 02:08:09 ]
>>382

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

384 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 02:14:01 ]
DirectX Run-Time Only

385 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 02:18:20 ]
>>351
保存した

386 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 02:35:33 ]
>>383
DX7がでた頃のエロゲーでもかってくるんだ

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


388 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 05:47:36 ]
>>319
ttp://fatalita.sakura.ne.jp/TubeRPG/

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

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

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



391 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 20:39:54 ]
それはありえない。
VC6や.Net2003対応してない

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

393 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 20:45:42 ]
VS2005EE入れればいいだけじゃね

394 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 22:44:52 ]
重いからやだ

395 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 22:48:11 ]
2005軽いじゃん。

ヘルプ重いけど。

396 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 23:38:56 ]
ぜったいやだ

397 名前:デフォルトの名無しさん mailto:sage [2007/09/25(火) 23:43:24 ]
結局何がやりたいんだ?

398 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 00:48:48 ]
2003はまだサポートされてるんじゃ?

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

実行結果 ttp://up2.viploader.net/upphp/src/vlphp072228.jpg
コード等 ttp://www12.axfc.net/uploader/93/so/File_1605.zip.html


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



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


402 名前:399 mailto:sage [2007/09/26(水) 06:33:45 ]
GrabCallbackFuncとは何ですか? 検索しても引っかからないのですが・・・

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

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


405 名前:404 mailto:sage [2007/09/26(水) 08:47:36 ]
表示方法・・・どなたか教えていただけないでしょうかorz

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

407 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 10:31:04 ]
AVALか……

408 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 10:45:22 ]
大学のレベルも落ちたもんだな

409 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 11:02:27 ]
そもそもDirectXと無関係なのにいつまで迷惑をかけ続けるつもりなんだ?
本当に自分のことしか考えないやつだな。

410 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 20:07:25 ]
OpenGLのglPushAttrib()とglPopAttrib()みたいに、
簡単に状態を保存したり復帰したりする方法はありますか?



411 名前:410 mailto:sage [2007/09/26(水) 20:20:42 ]
自己解決しますた
IDirect3DStateBlockのCapture()とApply()がそうだったのですね

412 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:27:26 ]
>>408
安心しろ某医大は毎年新人歓迎会でス○トロ祭りをやるらしい
程度の低さをいうなら昔からだ・・・w

413 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 21:32:27 ]
>>412
   /⌒ヽ        ,r-、
   l   }      /  /
   ヽ  r -−- 、 /   /
    y'´_,,_   _ ヽ、 /
    / /,r=、  ,'ニヽ Y
    } ( ● )l (,●)  l
   _L_ ̄ | 二rニ'7
    ヽ-フ `ーー'`´、 /
   /〈  < ̄/ ̄ Y、<スカト○祭だなんて、最近の大学はレベルたけえな
     )ヽ、 ̄, '´ / \
   _,_L      | ヽ

414 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:30:33 ]
デバイス○ロスト祭り

415 名前:デフォルトの名無しさん mailto:sage [2007/09/26(水) 22:54:36 ]
>>414
おちつけ、なんもかんもあってないw
○も意味不明になってるw

416 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 02:00:20 ]
最近になってDirectXを使い始めたのですが、
DirectGraphicsで簡単に画面に2Dテクスチャを表示できる、DPD3DXSPRITEですが、
貼付けた画像がどうしても歪んでしまいます(元の画像よりも大きくなってしまう)。
読み込む画像の辺の長さが2の累乗でなければならないという情報もネットで見つけたのですが、
もっと自由な元画像のサイズで、表示の際の大きさ指定をピクセル単位で出来るような方法はないのでしょうか?

417 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 02:10:10 ]
>>416
ないなら自分で作ればいいじゃないか

418 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 03:37:48 ]
D3DXSpriteを初心者が使うと変な副作用やバージョン違いに悩まされ
自殺することが多いのでお勧めできません。

419 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 03:52:25 ]
質問してもいいですか?
DirectX9をダウンロードは出来たのですが、インストールが出来ません。
何度やっても、もう一度実行するか、ネットワーク接続を確認しろという画面が出ます。
何が悪いのでしょうか?

機種はVaio lx52gのMeです。

420 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 04:09:21 ]
>>419
落としたのがWebインストラーで
ネットワークにつながってないって落ちじゃ



421 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 05:06:34 ]
てか、久々にD3DXSpriteいじったらほんとに色々仕様が変わっててワロタ
デバイスロストとか色々対応してないけど後は自分で考えるんだ

class MySprite{
  MySprite( LPDIRECT3DDEVICE9 dev, TCHAR* file ) ;
  ~MySprite(){
    if(tex)tex->Release() ;
    if(sprite)sprite->Release() ;
  }
  void Draw(float x, float y, float w, float h ) ;

  LPD3DXSPRITE sprite ;
  LPDIRECT3DTEXTURE9 tex ;
  D3DXIMAGE_INFO info;
} ;
MySprite::MySprite(LPDIRECT3DDEVICE9 dev, TCHAR *file):sprite(NULL),tex(NULL)
{
  D3DXGetImageInfoFromFile(file, &info);
  D3DXCreateTextureFromFileEx(dev,file,info.Width,info.Height,
    1,0,D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,D3DX_DEFAULT,0,NULL,NULL,&tex);
  D3DXCreateSprite ( dev, &sprite ) ;
}
void MySprite::Draw(float x, float y, float w, float h)
{
  sprite->Begin(0) ;
  3DXMATRIX scale, trans ;
  D3DXMatrixScaling ( &scale, ((w==0)?info.Width:w)/(float)info.Width, ((h==0)?info.Height:h)/(float)info.Height, 0.0f ) ;
  D3DXMatrixTranslation ( &trans, x, y, 0 ) ;
  sprite->SetTransform(&(scale*trans)) ;
  sprite->Draw ( tex, NULL, NULL, NULL, 0xffffffff ) ;
  sprite->End() ;
}

422 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 06:05:23 ]
業界標準のOpenSpriteライブラリとかないのかよ

423 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 06:14:30 ]
業界標準はD3DXSPRITEなんて使いません

424 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 07:04:47 ]
いらねーよな
入門書もやらずになんか表示しようとするから
そんな機能ほしいと思うんだろ

そんなもん使って表示したところで次になんかつながらないから
なにかあるたびにいちいち詰まる
こんなクラス使ってる奴ゲーム作るところまでいかないだろ

425 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 08:11:26 ]
とりあえずは、D3DXSpriteで便利にやってみて、速度とかやりたい事の壁で
どうしようもなくなったら自前の処理に移れば良い。

ここは初心者スレなんだから、玄人ぶっても滑稽だよ。

426 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 08:14:33 ]
>>425
初心者スレだからこそ、まずはキチンと入門書を追ってもらいたいと思う
そしたらDrawPrimitiveでの描画を通るはずだし、
こんな質問は絶対にでないと思う

427 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 09:35:19 ]
ぇ、ていうか
わざわざ答えてもらってるのに
質問者が超便利関数とかを期待してて
>>422みたいな態度とったのかと思ったけど違うの?

428 名前:416 mailto:sage [2007/09/27(木) 11:30:40 ]
質問に答えて頂きありがとうございました。
とりあえず今やりたいと考えていることは2Dで出来るため、
パラパラと本を読んで一番初めに目についたSpriteに飛びついたわけでしたが
あまり使われない方法のようですね・・。
>>426さんの言うようにDrawPrimitiveでの描画についても調べてみたいと思います。

>>421
丁寧にありがとうございます。大変参考になりました。

429 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 11:40:12 ]
>>428
スプライトが歪んでいる場合、ID3DXSprite使うのやめるよりも前に
テクスチャの読み込み段階で歪んでいないか一応チェックね。
あれはデフォルト指定すると勝手にテクスチャサイズを
二の二乗に切り上げて、画像を拡大したテクスチャを作るから。

430 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 15:22:35 ]
DirectXのAPIはいわゆる最小インターフェースってやつだろ。
手っ取り早くゲーム作りたい向きには不親切極まりない。

あんまプログラミング経験のないやつが、やりたいことを速攻でやりたいなら、
何か他人の作ったライブラリ漁ったほうがいいんじゃね?
俺は自分でやってるから詳しくないが。



431 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 21:55:30 ]
DirectSoundで音を鳴らしたいのですが、
初っ端からつまづいてしまいました・・・。
VC++2005でビルドしようとすると、以下のようなエラーが出ます。

1>Source1.obj : error LNK2001: 外部シンボル "_IID_IDirectSoundCaptureBuffer8" は未解決です。
1>Source1.obj : error LNK2019: 未解決の外部シンボル _DirectSoundCaptureCreate8@12 が関数 _main で参照されました。

dsound.hのインクルード、dsound.libへのリンクもオプションで設定しているのですが、
どこがマズいのでしょうか??

432 名前:デフォルトの名無しさん mailto:sage [2007/09/27(木) 23:20:33 ]
dxguid.libとリンクしていないとこがマズいです。

433 名前:431 mailto:sage [2007/09/28(金) 07:39:04 ]
>>432
ありがとうございます。
しかし、確認してみたところ、dxguid.libが含まれているディレクトリをライブラリディレクトリとして
設定できていました・・・。

434 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 07:55:19 ]
ディレクトリを設定するだけじゃ意味無いだろ。

dsound.libをリンクするように設定してるんだろ?
同じようにdxguid.libをリンクしろ、って言ってるの。

435 名前:デフォルトの名無しさん [2007/09/28(金) 08:59:17 ]
すみません
UDXライブラリを使いたいのですがdirectX最新版ではつかえませんか
サンプルのXファイルが表示しません

436 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 09:15:46 ]
UDXライブラリって何だよ
ライブラリならここじゃなくサポート掲示板なりで質問するべきでは?

437 名前:デフォルトの名無しさん [2007/09/28(金) 09:19:12 ]
>>436
UDXライブラリは2002年ころにfinal版が出て更新されていません ほかに聞けるところがないです

438 名前:デフォルトの名無しさん [2007/09/28(金) 09:50:00 ]
>>436
他のライブラリをいくつか調べたのですがUDXがもっとも手軽だと思います
これだけのソースでXファイルが表示できます
参考サイト 
f42.aaa.livedoor.jp/~waku/pukiwiki14/?UDX
www.geocities.co.jp/SiliconValley-SanJose/8134/


#include"udx.h"
CMesh m;

void StartUp(){
SetVPos(VEC3(0, 0, -10));
m.Load("test.x"); }

void MainLoop(){
BeginScene();
m.Render(&MTX_FRONT);
ShowCameraInfo(0,0);
EndScene();
MouseLook(0.5);}

void CleanUp(){}

439 名前:デフォルトの名無しさん [2007/09/28(金) 09:59:07 ]
先日近所のスーパーでアニメのような3D表示するカードゲームをみました。
どうやらカートゥーンシェードというものらしいです。
DirectXでこのカートゥーンシェードを表示する勉強をしてみたいので、
仕組みの解説やライブラリを、Googleでカートゥーンシェードや、CartoonShadeを検索しても
それらしい情報が見つからないです。
みなさん、どこから情報を集めておられますか。先輩方、教えてください。

440 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 10:03:41 ]
>>435
2002年に更新停止してるとかそんなマイナーなライブラリをなんの断りもなく持ち出すな

俺らにそのなんちゃらライブラリを使って試せと?



441 名前:デフォルトの名無しさん [2007/09/28(金) 10:08:01 ]
>>439
ttp://www.google.com/search?num=100&hl=ja&inlang=ja&newwindow=1&ie=Shift_JIS&oe=Shift_JIS&q=DirectX+%83g%83D%81%5B%83%93+&lr=

442 名前:デフォルトの名無しさん [2007/09/28(金) 10:10:32 ]
>>440
使っている人がいたら動作環境を教えてもらいたいです
ライブラリ付属の線や四角は表示できるんですけど・・Xファイルが見えないです
あと、UDXに興味があったら使って動くか試してもらいたいです

443 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 11:33:43 ]
>>442
ライブラリっていうかXファイルの問題じゃね?
そのライブラリはほんとに
すべてのXファイルの読み込みに対応してるのか?
Xファイルはテンプレート定義だから
よっぽど丁寧につくってないとXファイルによって読めないとかざらにある
メッシュのみOK、アニメーション付きは×とかな
人に試せというまえに
表示までの流れのどこでコケてるのかくらい調べてこいよ

444 名前:デフォルトの名無しさん [2007/09/28(金) 11:44:23 ]
>>443
ライブラリ付属のXファイルとソースでコンパイルまでは行くのですが画面に出ません

445 名前:430 mailto:sage [2007/09/28(金) 11:45:50 ]
そうか、ライブラリに頼ってもこういう結果になる世界だったか……。
認識がチクロやサッカリンより甘かったわ。

昔のSDKでは動くのかな。動くならでそれで我慢するなり、
そうでなければ別のに乗り換えるしかないんじゃね。

446 名前:デフォルトの名無しさん [2007/09/28(金) 12:12:34 ]
>>442ですが
WindowsのバージョンはXP SP1
DirectXのバージョンは最新版(2007/7くらいのやつ)
DirectX SDKは8.1です UDX最終バージョンに合わせました
画面が全く出ないわけではなく、文字や線とかはかけます
もしかしたら、SDKも最新したらいいんですかね

447 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 12:15:21 ]
だから、一言で表示されないといわれても
色々あるわけで・・・

・そもそもファイルが読み込めてない
・読み込めてるが座標変換がされてない
・座標変換されてるがカメラの範囲内にない
・カメラの範囲内にあるがでか過ぎて(小さすぎて)みえない
・あるべき場所にはあるが光源が無い
・透明になってる
・カリングの設定が間違ってる,etc,etc

どこで失敗しているのかくらいデバックできるだろ?
それがわからなければ直しようが無い
これは環境云々の問題じゃないぞ

448 名前:デフォルトの名無しさん [2007/09/28(金) 12:22:50 ]
>>447
サンプルをそのまま使っているんですよ 見えないサンプルって無いと思います

449 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 12:29:13 ]
>>448
あのなぁ

あんたがどういう環境でやってるのか知らんが
たとえば使ってる文字セット
がユニコードなのかマルチバイトなのかが違うだけで
Xファイル内のテクスチャファイル名が読めなかったりするんだぞ?

ライブラリに合わせて環境をかえるんじゃなくて
環境にあわせてライブラリを変えることを考えろよ

450 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 12:36:22 ]
馬鹿はほっとこうぜ



451 名前:デフォルトの名無しさん [2007/09/28(金) 12:54:42 ]
ありがとうございました
UDX動きました
実行ファイルの生成される位置にXファイルがないだけでした


452 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 13:54:46 ]
ださすぎw

453 名前:デフォルトの名無しさん [2007/09/28(金) 15:00:47 ]
www.rupan.net/uploader/download/1190959146.zip

UDXで人物を表示したんですけどメタセコでみるのより画像が悪すぎです
どうしてですか?

454 名前:453 [2007/09/28(金) 15:01:47 ]
パスは 0 です

455 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 15:15:25 ]
光源を設定してないとかじゃネーノ ( ´_ゝ`)

456 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 15:16:17 ]
>>453
D3DX8BOR.DLLが見つからなかったため、このアプリケーションが開始できませんでした

お前もう、いい加減にしとけよ

457 名前:デフォルトの名無しさん [2007/09/28(金) 15:25:49 ]
>>456
www.rupan.net/uploader/download/1190960639.zip
PASS 0
これでみれますか?

>>455
光源はいってるかよくわかりません サンプル書き換えただけなので 入れてみます

458 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 15:54:11 ]
>>457
フルスクリーンはマジ簡便

見た限り光源計算がされてない
Xファイル自体に法線情報がはいってないので
ライブラリー内で
法線データがないときに自前で生成しているのか?とか
しているとして
ライトの設定がちゃんとしてあるか確認だな


459 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 16:32:12 ]
ぜんぜん簡単に使えてないところがミソ

SDKのチュートリアルから地道にやったほうがよっぽど近道なのに、
そうやって手を抜こうとするから基本的なことすら理解できずに余計な苦労をする。

460 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 16:56:11 ]
DirectXを一から勉強する方法教えてくれ!!
俺は燃えているぞおおおお!!



461 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 17:00:53 ]
>>460
これを最初から最後まで読むといいよ
msdn.microsoft.com/library/ja/DirectX9_c/directx/graphics/programmingguide/programmingguide.asp

462 名前:デフォルトの名無しさん [2007/09/28(金) 17:12:01 ]
マウスとカーソルで動かせます これだけのことを生DirectXでやったら大変でしょ?コードは↓これだけ
www.rupan.net/uploader/download/1190966958.zip

#include"udx.h"
CMesh m;CObject o;
void StartUp(){
SetVPos(VEC3(0, 1.5, -5));
m.Load("0.x");
o.SetMesh(&m,VEC3(0,0,5));}

void MainLoop(){
MouseLook(0.2f);
BeginScene();
ON_HOLD(DIK_LEFT) o.RotY(0.05f);
ON_HOLD(DIK_RIGHT) o.RotY(-0.05f);
ON_HOLD(DIK_UP) o.RotZ(-0.05f);
ON_HOLD(DIK_DOWN) o.RotZ(0.05f);
o.Render();

devSetLighting(FALSE);DrawAxis();
devSetLighting(TRUE);
BeginFont();
ShowCameraInfo(0,0);
EndFont();EndScene();}

void CleanUp(){}

463 名前:デフォルトの名無しさん [2007/09/28(金) 17:14:05 ]
>>458
なんかテクスチャーがあると絵が変になるみたいです
462はテクスチャー無しです メタセコが変なXファイルを生成しているのかUDX側なのか不明です

464 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 17:20:51 ]
ここはDirectXの質問スレであって
ライブラリの使い方の質問スレじゃないんだか
そんなの、ライブラリ製作者に聞けよ

465 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 17:25:37 ]
>>463
もうこれで最後な
メタセコでXファイル出力するときに
法線(スムージング)とUVマップの
チェック項目にチェックをいれろ

これでだめなら
お前のライブラリの使い方が悪い
基本を理解してないのに使おうとしても
応用が利かないってことがもうわかっただろ?

466 名前:デフォルトの名無しさん [2007/09/28(金) 17:28:29 ]
できましたサンクス

467 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 17:29:33 ]
マイクロソフトによる講演「Windows Vista ゲーム開発」、数多くの国内PCゲームが躓いたIME問題は、SDKサンプルのささいなバグだった!?
www.watch.impress.co.jp/game/docs/20070927/wv.htm

468 名前:デフォルトの名無しさん [2007/09/28(金) 17:44:41 ]
>>441
ありがとうごぢゃいます。勉強させていただきます。

>>467
DXUTでIMEエディットボックスが利用できなかったのでおれの環境おかしいのかなぁとおもってましたが、
よくわかりました。教えてくれてありがとうございます。

469 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 18:19:19 ]
Xファイルが大量にUPされてるサイトとかない?
モデル作れないorz

470 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 20:19:45 ]
お金くれれば作ってあげる。
キャラ一体30万でいいよ。



471 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 20:42:45 ]
30万とかぼったくりだろ。
俺だったら1ポリ1000円でいいよ。

472 名前:デフォルトの名無しさん mailto:sage [2007/09/28(金) 21:07:18 ]
な、なら俺は1頂点500円だ

473 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 01:25:24 ]
ここ2,3日の質問レスはどれも死ねと回答したくなるような代物だった。
俺は何を思って初心者スレにいたのだろう。
たぶん俺はここにいるべきではないのだ。
自分のゲームを作る仕事に戻ったほうがいい.....



474 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 02:59:38 ]
そうだ帰れ帰れ

475 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 06:23:48 ]
>>473
そう思っただけでまったく回答なんてしてなかったんだろ?
ここにいるべきではないな

476 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 07:58:53 ]
>>473はスカトロの話題で進んでほしかったらしいよ

477 名前:431 mailto:sage [2007/09/29(土) 11:36:28 ]
>>434
あ・・・なるほど(汗)
おかげさまでできました!
ありがとうございました!

478 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 12:44:30 ]
>>475
そのとき回答していない=ここにいるべきではない
とはならないだろ。回答できるだけの知識があって、回答できる質問がないかここに見に来たけどむかつく質問しかない、って言ってるんだから、それが理由で去るなら、このスレは回答者を一人失っただけ。回答者は答えなくても何も困らない。

技術的に初心者なのはぜんぜん構わないが、質問者として初心者なやつには答える気は全く起こらない。

479 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 17:31:23 ]
DirectSoundでサウンドボードに入力される音声を再生したいです。
キャプチャバッファを作りWAVファイルに録音する方法は分かったのですが、
リアルタイムに再生する方法が分かりません。
おそらくセカンダリバッファに入力音声を入れて
(バッファのポインタ)->Play();
とすれば良いと思うのですが、キャプチャデバイスからの音声をセカンダリバッファに
放り込むやり方が分かりません。
ググっても、キャプチャデバイスを使うものは再生無しで録音するものばかりです・・・。

ご助言、よろしくお願いいたしますm(_ _)m

480 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 17:51:38 ]
ストリーミング再生の事?
www2.muroran-it.ac.jp/circle/mpc/program/windows/spti_cdda/spti06.html



481 名前:479 mailto:sage [2007/09/29(土) 18:23:16 ]
>>480
ストリーミング再生です。
そのページは読んでみたのですが、音楽CDの読み込みに特化しているようで
参考になりませんでした。

482 名前:デフォルトの名無しさん mailto:sage [2007/09/29(土) 19:19:57 ]
結局のところ、録音バッファと再生バッファの両方をロックしてmemcpyで終わりだろ。
何を悩んでいるんだ?

483 名前:toshi mailto:sage [2007/09/30(日) 00:30:09 ]
自分の理解の為に、3D知識についてwikiやhtmlページにまとめようと思っています。
(^o^;
本やWEBを参考に下記ページのようにまとめてみました。ぶしつけですが、
もし宜しかったら、皆様に間違いや補足知識の指摘を頂けないでしょうか?
toshi104.odap.jp/cgi-bin/3Dprogram/2007-09-28.html
辛口で構わないのですが、始めて3日足らずの初心者なので、間違いや不備は
沢山あると思います。どうぞ宜しくお願い致します。
(※リンクはしばらく残しておきます。)(※掲示板も設置しました)
(※宣伝ではないですよ。趣味です。ゲーム好きです。)


484 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 00:46:18 ]
一番辛口に言うと
「チラシの裏にかいとけ」


一応斜め読んで気になったのは
FVFっていずれ使われなく(使えなく)なるんじゃね?とか
射影座標とスクリーン座標がごっちゃになってそうとか

485 名前:toshi mailto:sage [2007/09/30(日) 01:35:47 ]
レス感謝です。
>「チラシの裏にかいとけ」
あはは、そうですね。でもレス感謝です。

>FVFっていずれ使われなく(使えなく)なるんじゃね?
そうなんですか?頂点フォーマットですよね?他にどんなのがあるのでしょう?
一応DirectX9.0関連の本やWEBで一般に使われていたので・・・。
差し支えなければ、教えて下さい。

>射影座標とスクリーン座標がごっちゃになってそうとか
なるほどー、射影座標っていうのがあるんですね。勉強になります。
本に書いてありませんでした。でも、遠近法等を表現する「平行投影」「透視投影」
のハナシはありました。つまり、スクリーン座標前の変換である「プロジェクション変換」に含んでしまっているみたいですね。
どもです。

486 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 03:42:38 ]
>>478
ごちゃごちゃいいわけウザイw

例え自分の正義に基づいてどうであっても
他人がお前をウザイと思えばお前の中でどうであってもウザイことに変わりはない

お前が知らないから答えられなくても、
お前が知っていて答えなくても質問者にとってはどうでもいいことだ

それにお前の望む質問者なんてもんは多分ほとんどいないといいきれるほど稀な存在だろう
初心者なんてのは色々ひっくるめて初心者なんであって
技術の部分「だけ」が足りない奴なんてのはほとんどいないといっていいだろう
そういう奴等をあらかた無視して色々お膳立てしてあって
「ハイ、後は、この部分の回答だけ貰えばOKなんです」
なんて状態になるわけない
こんなのいたら質問スレになんてくるわけない
多くの初心者は総合的に初心者であることがほとんど

要は俺がいいたいことは
現実にない状況(理想)を勝手に望んでそれを当然のこととするのはウザイ
ってことだ

まあ、ウザイだけで、正しいとか正しくないとかは問題じゃないからねw
好きにやりなよw

487 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 03:43:29 ]
とりあえず寝ればいいんじゃね

488 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 10:28:26 ]
>>485
プロジェクション変換は
スクリーン座標に変換するものではなく
ビュー変換から射影座標に変換するためのもの
そこからさらにVierport変換をかけて
ようやくスクリーン座標になる
Direct3Dの場合は
Viewport変換はViewpotの設定にしたがって
デバイスが勝手にやってくれるので忘れられがちだけど


でも、こんなのをまとめたところで
「で?」っていう感じがしないでもないんだが・・・

489 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:11:12 ]
自分の知識を整理するって意味では有用じゃないの

他人からしたらあまり意味ないけど

490 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:17:52 ]
そんな時のためにチラシの裏があるんだよ



491 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 14:27:51 ]
ダイレクトX死ね

492 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 15:12:53 ]
>>486
ごちゃごちゃ言いわけしてるのは君w
まあどうでもいいけど

493 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 18:40:21 ]
XFileフォーマットに関して質問です。

現在D3DXを使わずにXファイルの書き出しをしています。
しかし、圧縮バイナリ"xof 0302bzip0032"の後の8バイトが何を指しているのか
分からずつまずいています。
前4バイトはおそらく解凍後のバイナリサイズだと思うのですが
残りの4バイトが分からないのです。

ご存知の方いらっしゃいましたらご教示お願いします。




494 名前:479 mailto:sage [2007/09/30(日) 18:54:05 ]
>>482
おかげさまでできました。
ありがとうございましたm(_ _)m

495 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 22:08:33 ]
新ねエーきょうみねええーあひゃひゃひゃ
今からここは初心者の性根を叩き
なおすつういみのしょしんしゃすれになるぜーーー


496 名前:デフォルトの名無しさん mailto:sage [2007/09/30(日) 22:12:46 ]
新ねえー興味ねええあひゃひゃひゃふあ
つうかいまからここは初心者の性根を叩きなおす
といういみでのしょしんしゃすれになったから

497 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 00:15:27 ]
>>446
>>451
>>453
>>454
>>457
>>462
>>463
割れOS使ってんなよ

498 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 00:39:14 ]
最近のSDKはダウンロード時にチェックされんのか
あんま意識してなかったけどそういやそうだった

だから古いのを使いたがるのね

499 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 07:31:45 ]
古いSDKを使いたがる奴=割れ厨ってことだな

500 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 11:59:59 ]
XP SP1で止まってる奴は十中八九割れ



501 名前:デフォルトの名無しさん [2007/10/01(月) 15:19:08 ]
テクスチャって2の累乗の正方形じゃないとダメみたいなことを
聞いたことがあったようななかったような気がするんですが、
そんな仕様ってありましたっけ?
CreateTextureFromFileとかで普通に読み込んで表示できてるんですが・・・

502 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 15:37:21 ]
>>501
かつて、そういうGPUがあった。

503 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 15:57:57 ]
>>501
TextureCaps の D3DPTEXTURECAPS_POW2 フラグと
D3DPTEXTURECAPS_SQUAREONLY フラグが立っているときがそれ。

504 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 16:34:19 ]
>>503
全然気にせず作っていた、、、どの世代のGPUってそんな制限あったんだろう?
そのCAPってDX9だけどDX10にはCAPがないからその制限ないのかな?


505 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:15:20 ]
>>504
2の累乗制限に関しては
・条件付きnon-pow-2サポート
・無条件non-pow-2サポート
の2種類がある。
ttp://msdn2.microsoft.com/en-us/library/bb172513.aspx

[条件付きnon-pow-2サポート]
D3DPTEXTURECAPS_POW2==TRUE && D3DPTEXTURECAPS_NONPOW2CONDITIONAL==TRUEのとき

[無条件non-pow-2サポート]
D3DPTEXTURECAPS_POW2==FALSE && D3DPTEXTURECAPS_NONPOW2CONDITIONAL==FALSEのとき

これとは別に、テクスチャの縦横サイズをそろえる必要があるかどうかの
D3DPTEXTURECAPS_SQUAREONLYフラグがある。

PixelShader 3.0への対応条件に
・D3DPTEXTURECAPS_SQUAREONLYがFALSEなこと
・条件付きまたは無条件のnon-pow-2テクスチャをサポートすること
が含まれているので、PixelShader 3.0対応ハードなら基本的に問題ない。
ttp://msdn2.microsoft.com/en-us/library/bb219845.aspx

C:\Program Files\Microsoft DirectX SDK (August 2007)\Samples\C++\Direct3D\ConfigSystem\CardCaps.pdf
にCAPS一覧がある。

>そのCAPってDX9だけどDX10にはCAPがないからその制限ないのかな?
ない。

またIDirect3DDevice9ExはPixel Shader 3.0対応は必須ではないが、
条件付きまたは無条件のnon-pow-2テクスチャをサポートすることは必須になっている。
Aeroが使える環境では必ず何らかのnon-pow-2テクスチャサポートがある。


506 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:38:22 ]
この制限があった有名なビデオカードは3dfx社のVoodooだよね。
もう10年近く前のカード。DX9では本来対応すべきなんだろうけど
今ならフラグをチェックして制限があれば「対応外」としてもかまわない気がする。

507 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:52:17 ]
そしてVoodoo以外はその制限があるカードが確認できない、都市伝説と化している。
あると主張する人が具体的な製品名を挙げることが出来た例は皆無。

508 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:58:52 ]
C:\Program Files\Microsoft DirectX SDK (August 2007)\Samples\C++\Direct3D\ConfigSystem\CardCaps.xls
から調べてみた。
April 2006時点のものらしいので、ドライバのアップデートで変わってるかもしれないことに注意。

[D3DPTEXTURECAPS_SQUAREONLY]
そんなカードは無い。

[pow2のみ]
Pixomatic, Permedia 3, Wildcat VP870, ViperII Z200, 315, Xabre, TNT 2

[conditional non-pow2]
Millennium G450, DeltaChrome, Volari Family, 865G, 945G, RADEON 7000, RADEON 7200, MOBILITY M9,
RADEON 8500, RADEON 9000, RADEON 9100 IGP, RADEON 9200, MOBILITY FIRE GL, RADEON 9600,
RADEON 9700 , RADEON 9800, X300, X700, X800 , X850, X1800, GeForce 2, GeForce4 MX, GeForce3 Ti500,
GeForce4 Ti4200, GeForce FX 5200, GeForce FX 5900

[unconditional non-pow2]
Parhelia, GeForce 6200, GeForce 6800, GeForce 7800, Quadro FX 4400

>507
[pow2のみ]に挙げた7つは制限を持つらしい。
まあいまさら考慮する必要がないと思うけど。

509 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 18:59:16 ]
二乗制限はまだ結構あるっぽい
正方形制限は今時ほぼなし

って事で大丈夫?

510 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 19:07:25 ]
>>509
pow2 textureのみサポートはほぼ無くなったけど
条件付きnon-pow2テクスチャサポートの「条件」の部分を忘れやすいので注意という感じ。

A device that exposes this capability can use such a texture if all of the following requirements are met.
・The texture addressing mode for the texture stage is set to D3DTADDRESS_CLAMP.
・Texture wrapping for the texture stage is disabled (D3DRS_WRAP n set to 0).
・Mipmapping is not in use (use magnification filter only).
・Texture formats must not be D3DFMT_DXT1 through D3DFMT_DXT5.

ある程度大規模になってくるとDXTはどうしても使いたくなるので
商用ゲームなんかでは2の累乗を前提としたライブラリにしてると思う。
個人とかデモ用途なら、上の条件を踏まなければたいてい大丈夫。



511 名前:510 mailto:sage [2007/10/01(月) 19:19:11 ]
まあ大規模って言っても色々あるか。

とにかく条件付きnon-pow2テクスチャサポートのカードは去年の段階でも結構残ってる。
圧縮テクスチャとかミップマップを必須と思うなら
ライブラリレベルで2の累乗化を考慮しておいた方が良いよという感じ。
あと背景のテクスチャとかでテクスチャアドレッシングモードやラッピングモードを弄りたいという場合も
2の累乗化しておいた方が良い。

まあドキュメントにはダメって書いてあっても実際には動いちゃうケースもありそうな気はするけど。

そんな機能は使わんというのなら多分気にする必要はない。

512 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 20:29:03 ]
でもどうせなら2の累乗にしておくのが速度的には無駄がない悪寒。
# いや、DirectXは詳しくはないんですがGPUのアーキテクチャ的にね

513 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 20:39:35 ]
>>512
確かにテクスチャキャッシュは2の累乗を前提としている可能性はあるかもね。

とはいえいつも「気楽にやりたい派」と「厳格に行きたい派」の対立なので
必要な情報だけしめして後は各自に任せるでいいんじゃないかと。
ミップマップや圧縮テクスチャを使ったことないって人もいるだろうし。

514 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:23:07 ]
そんなこと言っても、自作ゲームの一枚絵を256x256で分割してる人今でもいるんじゃね?
手挙げてみ。

515 名前:デフォルトの名無しさん mailto:sage [2007/10/01(月) 21:48:13 ]
まぁでも普通はきりのいい2の累乗で描くだろうからな。
で、正方形でなくてもいいってなら
とくに制限は無いようなもんか。

516 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 00:27:31 ]
Error: 外部シンボル 'DirectDrawCreateEx' が未解決
と、メイク時表示されます。
window.hとddraw.hをインクルードしているんですが何が不備なんでしょうか?
BCC devで、Borlandコンパイラ使っています。

517 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 00:34:52 ]
>>516
どうみてもリンク時のエラーです。本当にあ(ry

リンカにddraw.libを参照させろ。あとdxguid.libも必要になりそうな予感。
BCCなんぞしらんから、方法は自分で調べれ。

518 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 07:24:21 ]
最近
DirectX以前の問題の質問が多いな

519 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 08:29:34 ]
bcc32用DirectX SDK
ttp://www.clootie.ru/cbuilder/index.html#DX_CBuilder_SDKs

520 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 08:32:15 ]
インポートライブラリだけならimplibで生成できるけどD3DXとかのスタティックライブラリは上の使わないとbcc単独では無理
(VC++とBCBにobjの互換性がない)



521 名前:デフォルトの名無しさん [2007/10/02(火) 09:25:52 ]
>>519
上のやつ以外にdirectX SDKも必要


522 名前:デフォルトの名無しさん [2007/10/02(火) 09:56:15 ]
ゲーム画面のジャギーを消したいんで、CreateDeviceのとき
D3DPRESENT_PARAMETERDの”MultiSampleType”に
D3DMULTISAMPLE_2_SAMPLESを設定してるんですが、
UI用に2Dの変換済みポリを描画するときにはアンチがかかってほしくないです。

こういうときはどうしたらいいでしょうか?

523 名前:デフォルトの名無しさん [2007/10/02(火) 19:07:22 ]
MultiSampleTypeは随時切り替えられるようなメソッドってないですよね?

524 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 19:24:55 ]
D3DRS_MULTISAMPLEANTIALIAS


525 名前:デフォルトの名無しさん mailto:age [2007/10/02(火) 22:47:17 ]
C++でdirectx9を使っている素人です。

1 バックバッファクリア
2 予めファイルから読み込んでいた小さな正方形テクスチャをバックバッファに並べてマップを作る
3 予めファイルから読み込んでいたプレイヤー用のテクスチャをマップ上に描画
4 バックバッファをサーフェイスに転送し表示

1〜4を繰り返す中で3の表示位置をずらすことで移動を表現しているのですが、
2を毎回行うためやたら処理が遅くなります。
そこで予め大きなテクスチャに小さなテクスチャを並べてマップを作っておいてそれを2で
バックバッファに貼り付けようと思うのですが方法が見つからず困ってます。

D3DXCreateTextureで作成したテクスチャにD3DXCreateTextureFromFileで読み込んだ
テクスチャを並べるにはどうすればよいのでしょうか?
LockRectして描画は思っているのとは違う気がします・・・

526 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 22:55:32 ]
>>525
なんでわざわざロード時に作る必要あんの?
HDDなんて広大なんだから、あらかじめフォトショップでくっつけておけよ

527 名前:525 mailto:sage [2007/10/02(火) 23:07:38 ]
>>526
ランダム要素を取り入れるため動的に生成できたらなと^^;
でかいマップを作って部分ずつ表示したほうが楽でしょうか

528 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:09:14 ]
>>525
つーか、それってなんかおかしくね?
どんだけマップ並べたらパフォーマンスが落ちるんだよw

テクスチャを1枚描画するたびに
BeginSceneとEndSeneを毎回読んでるとか
座標を更新するのに
毎回ロックして直接書き込んでるとか
そういうアホな落ちじゃねぇの?

529 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:20:38 ]
つーか525ってRPGでマップ描画するときの定石じゃね?

530 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:26:09 ]
>>525
いまどき何も考えずベタにチップ描画しても、たいして負荷があるとは思えないけど。
2をどうやってるのか描くんだ。たぶん犯人はそこだ



531 名前:525 mailto:age [2007/10/02(火) 23:36:20 ]
g_d3ddev->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 0.0, 0);
g_d3ddev->BeginScene();
if(!g_d3dsp)
{
 D3DXCreateSprite(g_d3ddev, &g_d3dsp);
}
g_d3dsp->Begin(NULL);

// ここでマップを描いてる(つもり)
for(int y = 0 ; y < SCREEN_GRID_Y_MAX ; y++) {
 for(int x = 0 ; x < SCREEN_GRID_X_MAX ; x++) {
  RECT rc = {0, 0, 32, 32};
  D3DXVECTOR3 center(0, 0, 0);
  D3DXVECTOR3 pos((float)(x * GRID_WIDTH), (float)(y * GRID_HEIGHT), 0);
  g_d3dsp->Draw(g_map_texture, &rc, ¢er, &pos, 0xFFFFFFFF);
 }
}

// ここでプレイヤーを描いてる(少しずつ動かす)
RECT rc = {0, 0, 32, 32};
D3DXVECTOR3 center(0, 0, 0);
D3DXVECTOR3 pos(hoge_x, hoge_y, 0);
g_d3dsp->Draw(g_player_texture, &rc, ¢er, &pos, 0xFFFFFFFF);

g_d3dsp->End();
g_d3ddev->EndScene();
g_d3ddev->Present(NULL, NULL, NULL, NULL);

>>529ですです。win32apiでHDCとかでガリガリ書いたことがあるのですがDirectXならもっと簡単にできるのではと。

晒すけど怒らないでね♥

532 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:40:47 ]
なんで毎回D3DXCreateSpriteしてるん?

533 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:41:20 ]
テクスチャ座標を適切に設定した頂点リストを作れば一発で描画できるだろ。

534 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:42:44 ]
さげ

535 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:45:38 ]
チュートリアルをすっ飛ばしてID3DXSpriteなんか使うから余計なところで苦労することになる。

536 名前:デフォルトの名無しさん mailto:sage [2007/10/02(火) 23:51:03 ]
>>532毎回じゃないっす。ウィンドウ最小化して戻したときにResetした時ぐらいです。

見よう見まねでよくわかってないです・・・わかるように教えれ・・・。

537 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:01:39 ]
>>536
5行目!おまえは自分のソースもよめねーのか

538 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:25:19 ]
ポインタがnullだったらになっているから毎回やっているわけではないだろう。

とりあえずはID3DXSpriteを使うのをやめれば解決するだけの話。

539 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:43:55 ]
>>531
これ、解像度1024x768?
だったら

1024/32で32
768/32で24
32x24で768回DrawPrimitive呼んでるからこれやると遅くなるよ

あらかじめフォトショップでチップを配置してマップにしろ
それかロード時にチップからチップEX(極小チップを
もうちょっとまとめた単位、理解できる?分子→原子→中性子みたいな関係だw)
テクスチャを作成(これはできるよな?)

仕組みがゲームの仕様に食い込んでるから
もし仕事でやってるなら企画とデザイナに相談しないと駄目だな
速度に問題がでなくてかつ汎用性を維持した程度にチップをある程度まとめなきゃ駄目だろ
極小単位のチップって絵的な問題だろ?でもマップの汎用性の単位のチップはもっとでかいだろ?
そこの仕様をカッキリきらんとどうにも身動きとれないね
難しいのはプログラムじゃなくて仕様がふにゃふにゃだからだな

540 名前:525 mailto:sage [2007/10/03(水) 01:01:27 ]
>>539
画面いっぱい使っているわけではないので400回くらいです。
個人的に製作してるので仕事ではないです。

今までずっと変態御用達エディタでガリガリC書いてコマンドラインでコンパイルしてたんですが、
VisualC++とDirectXでゲームでも作って見ようかと思ったのがきっかけです。
CとWin32APIでガリガリするよりはよほど建設的だと感じますが、わけわからんw

頂点とかで混乱してたところにspriteなんて便利そうななもの見つけたばっかりにとんだ・・・
現在spriteを使わないように書き換えています。
なかなかエラーが取れない;



541 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 01:03:48 ]
DirectSoundでの効果音の管理など、いろいろな場所で読み込みや
再生の関数を使う必要がある場合、クラスにまとめず、ばらばらの関数として
使用できる設計にするべきなのでしょうか?何かいい方法があれば教えてください

542 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 01:23:10 ]
Visual C++2005で
ttp://www.h2.dion.ne.jp/~takusoft/directx8/d3d/chapter1/sec01/d3d_01.html
のコードをコンパイルしたらエラーがいっぱいでてくるんですが・・・
最初に #include "stdafx.h" を、ソースに追加しましたか?とでて
そのとおりにしたら
識別子が足りないとか、型指定がありませんとか
どうすればいいのでしょうか?

543 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 01:35:35 ]
古い情報を参照するのをやめるか、エラー事に自分で一つ一つ対処するか。

544 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 04:39:41 ]
->Releaseで落ちちゃうってことはつまりどういうことですかね?

545 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 07:03:09 ]
インタフェースがすでに存在していないとか

546 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 07:25:06 ]
インタフェースがまだ存在していないとか

547 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 07:41:23 ]
デバッグで見てみたらIUnknownの中の
__vfptrの中が(エラーです:式を評価できません)ってなってました
これはつまり・・・>>545>>546ということでしょうか?


548 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 07:51:24 ]
つーか、
なにが、いつ、どうやって落ちるのか
書いてもらわんとわかんね

549 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 09:09:45 ]
LPDIRECTSOUNDBUFFER8のリリース時になります
ちゃんとこれで音も鳴らせるんですが、終了時にまとめて解放するところで引っかかります
エラーメッセージはこんなんです↓
(実行ファイル名) の 0x0....... でハンドルされていない例外が発生しました:
0x0.......: 場所 0x0....... を読み込み中にアクセス違反が発生しました

550 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 12:21:15 ]
デバッカが使えるなら
いつまでそのポインタが有効で
いつからそのポインタが無効になってるかわかるんじゃねえの?



551 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 12:36:51 ]
「どこで」解放しようとしてるかも重要かもね

クラスのデストラクタとか
コールバックとか別スレッドで解放しようとすると
設計が悪いと無効なポインタ場合もあるし

552 名前:525 mailto:sage [2007/10/03(水) 14:06:36 ]
あれからspriteを使うのをやめて
SetFVF SetTexture DrawPrimitiveUp
を使って表示してみましたが描画は遅いままでした。
一枚絵にしても遅い。
んで、VMwareから出して実行したところ早い早いw
原因はVMwareです。
どうもお騒がせしました_| ̄|○

553 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 14:35:39 ]
>>552
氏ね

554 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 17:06:35 ]
あらかじめ書いとく

>>552の人気に嫉妬

555 名前:デフォルトの名無しさん [2007/10/03(水) 18:52:21 ]
誰か、D3DXMatrixTranslationとSetTransformをわかりやすくオレに教えてーー!!。



556 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 19:11:00 ]
>>555
俺が教えて欲しいよ!!ばーか!!!

557 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 19:12:09 ]
っ 線形代数の教科書

558 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 21:24:02 ]
>>555
平行移動用の4x4行列を作るのにD3DXMatrixTranslationなんて要らない。
シェーダで組むからSetTransformも要らない。


559 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 21:29:30 ]
初心者が自分の覚えたところまでの復習のついでに立ち上げたような
糞みたいな入門サイトでも読んでるのか

560 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:43:33 ]
いままで頑張ってきたけどもう無理
ごめんみんな、俺ライブラリ使います



561 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 06:14:18 ]
>>559
それ俺のサイトw

562 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 21:24:23 ]
ピクセルの輝度値をもとに処理をかけたいのですが、この場合、各ピクセルに対し
RGB→YUV変換(Yのみ)の計算を施さないといけないのでしょうか?
それとも、もっと高速に変換してくれるDirectXのAPIがあったりするんでしょうか?
よろしくお願いします。

563 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 01:00:34 ]
>>562
DirectXそのものにはYUVはサーフェイスの確保とか簡単なことしかサポートしてないし、現状だとDX9だけしかサポートしてない。
VistaならDXVA2とDX9を組み合わせると良いかもね。


564 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 11:06:31 ]
HLSLでnoise関数が使えませんというか使うとコンパイルが通りません。
こちらのページでは普通に使えそうに書かれているのですが、
msdn2.microsoft.com/en-us/library/bb509629.aspx

こちらのページではnot yet implimentedとなっています。
msdn2.microsoft.com/en-us/library/bb509611.aspx

やっぱり使えないのでしょうか。同等の事を行う一番手っ取り早い方法はないでしょうか。

565 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 17:51:16 ]
DirectShowで再生してる動画の上にテキストを置きたいんですけど(ニコニコ動画みたいな感じに)
普通に再生している動画をSetWindowPositionでウィンドウに表示させて、そのウィンドウの子ウィンドウとして
スタティックコントロールを動画の上に置こうとすると、動画の下に隠れてしまいます。
WS_EX_TOPMOSTを指定しても隠れてしまいました。

そこで、SetWindowPositionでウィンドウに動画を表示させるのをやめて
グラバフィルタでフレームを取得して、フレームを取得するごとに呼ばれる
コールバック関数内で取得したフレームをウィンドウに再描画するという形にしたところ
スタティックコントロールが上手く見えるようになりました。

しかし、今度は動画の再生が進むうちに動作が重くなってしまい、コマ飛びが起きるようになってしまいました。

コマ飛びが起きないような方法はないでしょうか。


566 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 18:50:01 ]
DirectShowからイメージデータだけDIBで受け取って、後から合成すればいい。

567 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 20:44:59 ]
Xファイルから読み込んだメッシュを徐々に透明にしていくにはどうしたらいいですか?

568 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 20:50:14 ]
モルダーあなた疲れてるのよ

569 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 21:29:02 ]
人体消失現象は絵空事ではない。

570 名前:デフォルトの名無しさん mailto:sage [2007/10/06(土) 21:32:36 ]
徐々だったら、アクトン・ベイビーのスタンド能力の発現でいける



571 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 00:14:41 ]
おまえらちゃんとおもしろいこと言えんじゃん

572 名前:toshi(485) mailto:sage [2007/10/07(日) 00:37:07 ]
>>488
レス感謝。・・・回答頂いたのにレス遅くなりました。
2ちゃんアクセス規制に巻き込まれた・・・。
>プロジェクション変換はスクリーン座標に変換するものではなくビュー変換から射影座標に変換するためのもの
なるほど。スクリーン座標前の変換である「プロジェクション変換」って記述はNGですね。本では、射影座標とプロジェクション変換が一緒になっていた(^^;)。WEB見たら理解出来ました。
勉強になります。ありがとうございました。m(_ _)m
ちなみにhtmlの方も修正しました。なかなか勉強になっています。皆様に感謝です。
toshi104.odap.jp/cgi-bin/3Dprogram/2007-09-28.html

573 名前:565 mailto:sage [2007/10/07(日) 16:59:46 ]
>>566
ありがとうございます。
後から合成すれば確かに負荷とかの問題はクリア出来そうなんですけど
最終的にはストリーミング動画再生を行いたいので、イメージデータを受け取って
すぐに再生したいんです…。

何か他に方法はないでしょうか・・・。

574 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 17:16:48 ]
だからリアルタイムにイメージデータを取得して、合成したのをその場で再生すればいいだろ。
いったい何を言ってるんだ?

575 名前:565 mailto:sage [2007/10/07(日) 17:33:16 ]
そうすると565で書いたグラバフィルタでフレームを取得して再生っていうのと変わらなくないですか?
合成っていう部分がよく分かっていないのでしょうか。

576 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 17:35:24 ]
だから一度DIBに落として、DIB側で合成を終わらせた後にそれを描画するだけ。
余計なコントロールを使う必用は微塵もない。

577 名前:565 mailto:sage [2007/10/07(日) 18:06:41 ]
度々申し訳ありません。

/*コールバックしてもらうための自前のクラス*/
class mySampleGrabber: public ISampleGrabberCB
{
public:
/*コンストラクタ*/
mySampleGrabber(){}
/*目的の関数*/
HRESULT STDMETHODCALLTYPE BufferCB(double SampleTime, BYTE *pBuffer, long BufferLen){
g_pImageBuffer = (long *)pBuffer; //画像データを受け取るバッファのポインタ
g_BufferSize = BufferLen; //画像データを受け取るバッファのサイズ
InvalidateRect(hWnd, NULL, FALSE) //メインウィンドウの再描画;
return S_OK;
}
/*使わないので実装なし*/
HRESULT STDMETHODCALLTYPE SampleCB(double SampleTime, IMediaSample *pSample){
return S_OK;
}
/*ここは本当は実装するべき?*/
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject){
return S_OK;
}
STDMETHODIMP_(ULONG) AddRef(){
return S_OK;
}
STDMETHODIMP_(ULONG) Release(){
return S_OK;
}
}
このクラスのBufferCBメソッドをコールバック関数としてイメージを取得する度に呼び出しているんですけど
これだとDIBに落として合成を終わらせた後に描画するだけという処理にはならないのでしょうか。;

578 名前:565 mailto:sage [2007/10/07(日) 18:09:09 ]
すみません、インデントがずれてしまいました。

/*コールバックしてもらうための自前のクラス*/
class mySampleGrabber: public ISampleGrabberCB
{
public:
/*コンストラクタ*/
mySampleGrabber(){}
/*目的の関数*/
HRESULT STDMETHODCALLTYPE BufferCB(double SampleTime, BYTE *pBuffer, long BufferLen){
g_pImageBuffer = (long *)pBuffer; //画像データを受け取るバッファのポインタ
g_BufferSize = BufferLen; //画像データを受け取るバッファのサイズ
InvalidateRect(hWnd, NULL, FALSE) //メインウィンドウの再描画;
return S_OK;
}
/*使わないので実装なし*/
HRESULT STDMETHODCALLTYPE SampleCB(double SampleTime, IMediaSample *pSample){
return S_OK;
}
/*ここは本当は実装するべき?*/
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject){
return S_OK;
}
STDMETHODIMP_(ULONG) AddRef(){
return S_OK;
}
STDMETHODIMP_(ULONG) Release(){
return S_OK;
}
}


579 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 18:19:37 ]
こっちで聞いた方がいいんじゃないかしら。

DirectShowと戦うスレ Part 2
pc11.2ch.net/test/read.cgi/tech/1162913156/

580 名前:デフォルトの名無しさん mailto:sage [2007/10/07(日) 18:28:53 ]
データを受け取るだけで何もしないのに表示されたらそれは魔法だ。



581 名前:562 mailto:sage [2007/10/07(日) 20:28:05 ]
>>563
なるほど。
ありがとうございました。

582 名前:デフォルトの名無しさん [2007/10/10(水) 13:24:52 ]
すみません。質問です。
 DirectX 9.0をインストール仕様と努めましたがインストールできません。
どうすれば宜しいでしょうか?教えてください。

583 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 13:59:57 ]
>>582
ランタイムの話ならすれ違い
あとOSくらいちゃんと正規品買おうな

584 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 14:57:30 ]
>>582
DLページで「続行」か「Continue」って書いてあるボタン押せ。エラー出たら正規のWindows買え。

585 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 17:52:04 ]
いや、いまなんだか知らんけどダウンロードセンターつながらないのよ
詳細が出てるかと俺もここに来た訳だがしばらく待ってみるか

586 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 19:22:57 ]
割れ厨は消えればいいと思うよ

587 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 21:28:04 ]
OS割れるとか愚かすぎる

588 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:19:37 ]


589 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 22:38:17 ]
aol.okwave.jp/qa3351661.html
これか?

590 名前:デフォルトの名無しさん mailto:age [2007/10/12(金) 01:47:53 ]
DirectXのサンプルをいろいろ見てると、メッシュを表示するときに
自前でDrawIndexedPrimitveとかを呼んでるのと
DrawSubsetを呼んでるのがあるんですけど、
この二つで出来ることに違いってあるんでしょうか?
(ボーンブレンディングはDrawSubsetじゃ出来ない、とか)



591 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 08:14:47 ]
たとえばモーフィングとかシャドウマップ用の
頂点のストリームを複数持って必要な部分だけ切り替えるとか


592 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 11:49:55 ]
DrawSubsetも最終的にはDrawIndexedPrimitive呼んでるんじゃないの?

593 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 23:24:39 ]
爆発や水面の波などの表現方法を紹介した書籍やサイトはありませんでしょうか。
自分で練ったところで内部的には大して変わらなかったり
いわゆるHow to本だと1通りだけしか書かれてないなど、
エフェクト周りの知識が深まらないという状態になっています。


594 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 23:30:29 ]
>>593
sample見れ

595 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 00:01:09 ]
ゲームの体験版やってみる
たまにテクスチャやシェーダが読めるものもあるし。


596 名前:デフォルトの名無しさん [2007/10/15(月) 00:05:07 ]
誰が勉強や研究やるっつったよ
良いパクリ元教えろっての

597 名前:デフォルトの名無しさん [2007/10/15(月) 01:12:32 ]
RenderMonkeyとか、nVidiaのそれとか
良いパクリ元になるよ

598 名前:デフォルトの名無しさん [2007/10/15(月) 01:32:00 ]
>>596
馬鹿かお前、
どのゲームもエフェクトなんて上からムービーかアニメーションモデル被せて終了なんじゃボケ
アルファなんて重ねたらトータルコスト跳ね上がるんじゃボケ
PC移植したときにアルファ処理弱いんじゃボケ
パクリも糞もどこも横一線でムービー被せて終了なんじゃボケ
爆発だって、水面だって、木漏れ日だって、よくみりゃムービーなんじゃボケ
カメラ固定しろボケ
一番軽いのがそれなんじゃボケ
デザイナにすべてまかせたほうが効率いいんじゃボケ
いまどきプログラムでメガデモ気取りでそんなもん作ってるアフォチョーキモイんじゃボケ
汎用性ちょっとつけりゃムービーもテクスチャなんじゃボケ
つまり

モデルロード→アニメーション

で終了
プログラマの介入一切無し、完

599 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 12:22:30 ]
時代はラスタスクロール

600 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 13:32:47 ]
>>598
ス☆テ☆キ☆



601 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 21:29:26 ]
なるほど、欧米に技術が追いつかないわけだ

602 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 23:26:05 ]
普通に考えたらGemsじゃね?
パクリ云々いってるやつに理解できるかどうかは分からんが

603 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 02:16:58 ]
でもムービーにもZとか入れられるからほとんどプログラマが手を入れる必要ってないよね

604 名前:デフォルトの名無しさん mailto:age [2007/10/16(火) 17:12:31 ]
VisualC++とDirectX9.0SDKでHLSLで頂点シェーダとか書いてみてるんですけど、
.fxファイルをvisualStudioのエディタ上でシンタックスハイライト表示する方法
(プラグインみたいのとか)ってありませんか?
黒一色だと見づらくてはかどらんのです

605 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 18:58:18 ]
>>604
こんなんはどーよ
ttp://www.shuta.net/e374.html


606 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 20:09:36 ]
リファレンスデバイス上でピクセルシェーダーって動くのでしょうか?
もし動くのなら、どのように実現しているのでしょうか?

607 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 20:31:22 ]
どなたか
>>493お分かりになる方いらっしゃいませんか?

608 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 21:12:01 ]
これ?
ttp://sora.cc.nagoya-u.ac.jp/t4369/fortran/DirectX/Xfile.htm


609 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 21:37:04 ]
圧縮format非対応 これで実用上十分に解決
まあSDKに圧縮フォーマットのも入ってるが、あれはそれ以前にsdkmeshとか当たり前に使われてるしな。

610 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 21:50:01 ]
Xファイルなんて使ってるのは雑誌かネット上のエフェクトサンプルと同人ソフトくらいだ



611 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 23:45:38 ]
結局XFileのバイナリフォーマットは公開されてないんだろ?
そんなのわかる訳ないよ

612 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:01:24 ]
>>611
え、ヘルプに書いてなかったっけ?テキストもバイナリも。
かなり前に読んだ覚えがあるんだが・・・

613 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:27:24 ]
圧縮形式がアンドキュメンテッド


614 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:42:07 ]
バイナリをzlibってるだけじゃないの?

615 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:48:47 ]
いいから仕様書か検証結果を張れよ。
俺は調べたことないから知らないがな

616 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 00:54:49 ]
なんで俺が検証せにゃならんのだ
Xファイルなんか興味ねーし使ってもねーよ

617 名前:仙人 [2007/10/17(水) 02:51:28 ]
DirectX ゲームグラフィックスプログラミング Ver.2.1 Vista
\2800 SoftBank Creative
第6章 スペシャルエフェクト(頂点系)波のシミュレーション
<求めよ!さらば与えられん 片っ端から漁れ>
<情報は'∞' 奢るなかれ '0'から初めよ>
<た易いNETに頼るな 100万払って1を知れ>

618 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 05:14:37 ]
た易い.NETに頼るな 100万払ってCOMを知れ

619 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 08:04:44 ]
>>617
これの2.0持ってるけど、新しく章が増えたのね。

620 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 18:34:49 ]
USBカメラからの画像をキャプチャして、jpg形式などで保存できるようなプログラム
を作成したいのですが、お勧めの書籍などありましたらご教授願えないでしょうか。
directxには触れたこともない初心者なのですが、これは無謀というものでしょうか?



621 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 18:35:42 ]
>>620
できんことはないと思うが、それはDirectXと関係ない気がするなあ。

622 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 18:49:33 ]
>>621
googleなどでキャプチャについて調べているとdirectshowを使えばよいと書いて
あったので、こちらに質問をさせてもらったのですが…。

623 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:01:08 ]
DirectShowはDirectXからは除外されました。

624 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:02:08 ]
>>622
調べたのならなら分かっていてもおかしくはないと思うが、現在
DirectShowはDirectXの一部としては扱われていない

DirectShowスレで質問しましょう

625 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:04:31 ]
>>623
>>624
申し訳ありません、そうさせていただきます。
ご迷惑をおかけしました。

626 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:09:34 ]
いいじゃねーか。馬鹿じゃねーの?>>623-624
たとえば年寄りに大宮市のこと聞かれて「今は大宮市は存在しませんのでわかりません( ̄へ ̄)」とか答える馬鹿をみたらどうおもう?
ちっちぇーよちっちぇーよなあ、おまえら。

627 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:12:43 ]
>>625
「directshow sample」でぐぐると、参考になるかもな。がんばれよ

628 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:42:27 ]
>>626
DirectShowスレも見てれば分かると思うが、
あっちの方が質の高い回答が返ってくるくる可能性が高い。

普通に誘導しただけでなぜ馬鹿呼ばわりされにゃならんのか

629 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 19:50:26 ]
>>628
ごめんなさい

630 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 20:17:24 ]
いまのDirectShowはDirectXより敷居が高いからなぁ
Video for Windowsを使うのも一つの手かもね


参考サイト
www1.bbiq.jp/kougaku/link_videocap.html



631 名前:デフォルトの名無しさん mailto:sage [2007/10/17(水) 23:43:10 ]
数年前、DirectShowは大量の分け分からんクラスと用語でやる気なくしたトラウマがあるんだ


632 名前:607 mailto:sage [2007/10/18(木) 22:49:24 ]
>>608
すみません、違います。
>>609
やっぱりそれが現実的ですね、ありがとうございます。
>>611
ググればすぐに出てきますよ。

633 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 07:55:49 ]
>>611
たしかに見つかりにくいので今回は貼ってやろう
msdn.microsoft.com/library/ja/default.asp?url=/library/ja/DirectX9_c/directx/graphics/reference/fileformat/xfileformat.asp

634 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 07:58:58 ]
>>493
>Microsoft DirectX 9.0ヘッダー
>注 圧縮データ ストリームは現在サポートされていないので、ここでは詳しく示さない
ワロスw

635 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 22:51:29 ]
ファイルの読み込み速度で言えば

バイナリフォーマット>>>>>>>>>>>>>>>>>テキストフォーマット。
でバイナリ形式が文字通り桁違いに早い。
手元のデータいくつかで試したけど圧縮バイナリはテキストに比べれば早いってレベル。
ファイルサイズに神経質にならない限り、圧縮形式のメリットってあんまりないな。

636 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 09:00:29 ]
そりゃ、データストレージのバスボトルネックが極端に大きく無い限り
データ展開のアルゴリズムが動く分、バイナリより遅くなるわな。


637 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 09:40:16 ]
なんでそんな難しく言うねん

638 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 12:05:37 ]
そこでわかりやすく>>637が解説

639 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 12:11:21 ]
難しくて理解できんから言うとんねん

640 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 12:30:58 ]
例えるなら
高速道路でETCを使用しない場合、
料金所が極端に多くない限りETCより時間がかかるって事?



641 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 12:51:07 ]
スーパーで買い物をして帰ってくるのに、
自転車と乗用車どちらの方が短時間で済むかというのを考えろ。
どこに負荷がかかるのか状況を分析して、最適解を求めるというだけの話。

642 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:01:57 ]
その例だと圧縮が圧倒的優勢や

643 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 13:12:11 ]
aho

644 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 14:13:00 ]
スーパーとどれだけ距離があるのか、出発時間はいつでその時に道は混んでいるのか、
駐車場はすぐ止められるのか、駐車場から店舗までの距離はどのくらいか、
考えることはいくらでもある。

元データの容量や圧縮率、ストレージの速度、デコードに使うCPU周りの速度、
条件が異なればどこの処理のプライオリティが高くなるのか変わってくる。

要するに、きちんと条件を整理して総合的にものを考えろということ。

645 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 14:46:17 ]
簡単に言えばバイナリフォーマットには最初から「数値」が入ってる。
テキストフォーマットには「文字列」が入ってる。
3Dフォーマットだと、その山ほどある文字列を数値に変換する必要があるわけで
それだけでも結構なボトルネックになる。



646 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 15:02:32 ]
ぇ、テキストフォーマット?
生バイナリと圧縮バイナリの話じゃなかった?

ちなみに全ドライブ圧縮ONの俺は、圧縮フォーマットなんてNTFSの圧縮機能と二重になって無駄なだけだと思う

647 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 15:06:02 ]
テキストとバイナリの話だと思った。すまんかった。

648 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 15:08:34 ]
>>646
圧縮方法が違えばさらに小さくなる可能性はあるし、
それに常に圧縮ONのドライブであるならともかく、ソフトを公開すればほとんどがOFFだから、検討する価値はあると思う。

それはともかく、ドライブの圧縮ONにしてる人間を初めて知った。

649 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 15:58:03 ]

俺も使っているが、MSのファイルクラッシャーパッチ食らってからは
ソースとかライブラリ等大事なファイルの置いてあるところにはかけないようにしている。
物によってはかなり縮むから重宝していたのだけどね^^;
スレチすまん。

650 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:12:08 ]
分からんからガソリンスタンドと車で例えてくれよ。



651 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:28:35 ]
Xファイルって実は結構使えるよな。



652 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:29:49 ]
>>651
モルダー、あなた疲れてるのよ

653 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:31:07 ]
>>651
は?

654 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 22:39:31 ]
いや、テンプレート好きに拡張出来るのは便利くない?

655 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:11:33 ]
>>654
は?

656 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:17:07 ]
テンプレート型のフォーマットだからXファイルにテクスチャデータを
放り込んだり、当たり判定用のローポリデータ追加したりするの楽じゃん?

素のXファイルが使えないって言ってる?
それなら同意。

657 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:19:39 ]
カスタムテンプレートは自己満足

658 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:22:09 ]
「どんどん拡張してどんなデータも対応可能!!」は
ライブラリ製作マニアの陥りがちな野放図な夢想

659 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:24:19 ]
>>656
は?

660 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:28:44 ]
現状、モデリングソフトのプラグインから出力する以外なにやっても無駄



661 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:29:20 ]
>>658
いや、だから必要に応じて追加出来るのが便利って言ってんの。

662 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:33:19 ]
>>661
そんなの自作フォーマットで十分じゃんw
ID+SIZE+XXX
って形にしておけばいくらでも追加できるぜw
なにが便利だって?え?w

663 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:35:30 ]
別に何使ってもいいだろ・・・
ほっといたれよ

XFileの話しになると必ずでてくるよな

664 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:38:10 ]
独自のテンプレートをXFileにわざわざ追加してなんだってのかマジでわからん

665 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 23:52:13 ]
好きなもん使えばいいだけ。

666 名前:デフォルトの名無しさん [2007/10/21(日) 14:12:10 ]
2の乗数の画像じゃないと、自動的に「画像サイズより大きい2の乗数の大きさのテクスチャ」
に変えられて表示されてしまうのですが、これは仕様でしょうか?

ちなみにテクスチャは「4点の座標を入力して作る」方式のほうです。

治せるのなら治したいのですが、治せないのならこれを計算に入れたプログラムを打ちたいと思っているのですが…。

667 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:06:13 ]
>>666
そのはず。

668 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 15:54:16 ]
>>666
BBXでもこんな質問あったな。

ttp://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=53&vew=233

669 名前:デフォルトの名無しさん [2007/10/21(日) 16:16:00 ]
667さん、668さん


回答ありがとうございました。

668さんのURLの所にもあったのですが
テクスチャはD3DXCreateTextureFromFileExで作り、
D3DX_FILTER_NONEを指定しています。


int t_x;
int t_y;

D3DSURFACE_DESC t_data; //D3DSURFACE_DESCとはテクスチャの情報を格納するための関数
texture->GetLevelDesc(0, &t_data); //textureの情報をt_dataに格納

t_x = t_data.Width;
t_y = t_data.Height;

で正確な画像のサイズが取得できると思ったのですが、
やはり101*101の画像なのにサイズは128*128だと言われてしまっていました。

DirectX側では、正確な画像の大きさは取得出来ないし、
正確な画像の大きさのテクスチャは作れないみたいでした。

670 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:20:17 ]
D3DXIMAGE_INFO imageInfo;
hr = D3DXGetImageInfoFromFile( filename, &imageInfo );

imageInfo.Width
imageInfo.Height



671 名前:668 mailto:sage [2007/10/21(日) 16:34:57 ]
まったく試していないが適当に回答

D3DX_DEFAULT_NONPOW2とか?

672 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 17:46:33 ]
>>669
読み込まれた後のテクスチャのサイズを取得しても無駄。
読み込むときの引数を良く確認してみろ、注意力が足りなすぎる。

673 名前:デフォルトの名無しさん [2007/10/21(日) 18:47:11 ]
670さん、671さん、672さん

回答、誠にありがとうございました。
672さんの言うとおりに取得の時を見て
671さんの言うとおりに治してみたら、値の取得が出来ました。

よく読みもせず、思いつきで質問してしまい申し訳ありませんでした。
670さんのものも試してみたいと思います。

それでは、改めてありがとうございました。

674 名前:デフォルトの名無しさん mailto:age [2007/10/21(日) 23:50:01 ]
頂点バッファって使いまわしても問題ないですよね・・・

HOGEVERTEX vertex[4];
set_hoge_vertex(vertex, x1, y1, x2, y2);
dev->SetTexture(0, t);
dev->SetFVF(D3DFVF_HOGEVERTEX);
dev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, &vertex, sizeof(HOGEVERTEX));
set_hoge_vertex(vertex, xx1, yy1, xx2, yy2);
dev->SetTexture(0, tt);
dev->SetFVF(D3DFVF_HOGEVERTEX);
dev->DrawPrimitiveUP(D3DPT_TRIANGLEFAN, 2, &vertex, sizeof(HOGEVERTEX));
set_hoge_vertex(vertex, xxx1, yyy1, xxx2, yyy2);
  ・
  ・
  ・

675 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 00:05:20 ]
>>674の例ならば問題ないが、その例は
ローカル変数の配列を使いまわしてるだけで、
頂点バッファを使いまわして問題ないケースと問題あるケースの
どちらについても語っていないがな。


676 名前:674 [2007/10/22(月) 00:27:09 ]
>>675
マルチスレッドでなければ大丈夫ということでしょうか?

677 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 00:32:50 ]
>>674のプログラムって頂点バッファなんて使ってるか?
俺には頂点バッファのインターフェースが見えないんだけっちょ

678 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 00:50:26 ]
マルチスレッドの排他制御以前に、ローカル変数ってどんなものかを知った方がいい

679 名前:674 [2007/10/22(月) 01:02:35 ]
DrawPrimitiveUP()してしまえばそれに使った頂点情報はいらなくなると思うのですが・・・
EndScene()やPresent()まで保持しとかないとだめですか?

680 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 01:31:26 ]
>>679
頂点バッファを作らないってことは
毎回グラボにデータを送信するってことじゃん

大量な頂点データが必要になるとこれが問題になるんかどうかは知らんけど
無駄なんでグラボにとっておきましょうってのが頂点バッファなんで
四角形描画するだけのお前には頂点バッファはいらないじゃん

って話



681 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 05:40:15 ]
>>679
その必要はないが、普通Direct3Dで「頂点バッファ」と言ったら
VertexBufferのことを指す。

682 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 09:18:38 ]
>>674は頂点を格納した配列のことを言ってたのか。
それは頂点バッファとは普通言わないぞ。

683 名前:674 mailto:sage [2007/10/22(月) 11:33:30 ]
用語とか定石とか触ったとこ以外わかってません。
どうやら大丈夫そうですね^^;
ありがとうございました。

684 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 11:47:41 ]
テクスチャはどうなんだろう。DrawPrimitiveで指定した後Presentの前に
Releaseしても良いのかな。

685 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 11:54:51 ]
頂点バッファが大丈夫かどうか考えればおのずと答えが出るだろう。
ちなみに上のは頂点バッファの話じゃないからな。

686 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 21:52:12 ]
そしてLostするバッファ達

687 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 22:28:53 ]
FVFでTANGENTやBINORMALを扱うことはできないのでしょうか?
もし扱う場合はD3DDECLUSAGEを使わなければいけないのでしょうか?

688 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 04:05:30 ]
そうした方が普通で簡潔で分かりやすくなると思うのだが。なにか問題でも?

689 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 18:24:01 ]
シェーダーを使うときに出てくる
float4 uv0 : TEXCOORD0;
float4 uv1 : TEXCOORD1;

このTEXCOORDというものなんですが
テクスチャ座標を指す、というのはわかったのですが
テクスチャ0は何もしないで送ったテクスチャだとわかるのですが
テクスチャ1はナニを指すのかわかりません。

また
uniform sampler2D texture, //texture0のを送る
uniform sampler1D TransferFunction, //texture1のを送る

としたときに、はじめのuv0はtextureを指すのか、それとも別のものを指すのか
シェーダーの解説本を読んでゴチャゴチャになってしまいました。
すみません、わかりやすく教えていただけませんか

690 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 18:41:11 ]
>>688
今までFVFでやってきたもので・・・
これを機会に移行します



691 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 21:17:52 ]
メモリ上のWavファイルをDirectAudioで読み込もうとした場合不具合がでてしまい、解決策を模索しています。

・Wavをメモリー上にロード
・そのアドレスとサイズを指定して、DirectAudioでロード
・Wavをメモリー上からアンロード

・次のWavをメモリー上にロード
・そのアドレスと…

とやると、たまたま「Wavをロードしたアドレスが、以前とかぶった時」に、DirectAudioが
「以前のファイルと同じだなこれ」と勘違いするのか、以前の音をロードしてしまうのです。


ここの
ttp://toruweb.web.fc2.com/dm/2.html
DirectMusic / 読み込み
と同じにWavを読み込むようにしているのですが、特にこのサイトでは「同アドレス問題」については対策していないようです。
どのような対策をすればよいのでしょうか?

692 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 23:01:59 ]
超うろ覚えだがDirectMusicローダのキャッシュをいちいち開放しないと
そんな感じになったような気がしないでもないような。

てか、メモリからWAVE再生すんならDirectSoundかOpenALでええやん。
圧縮WAVEをそのまま再生できるくらいでしょ、この場合のDirectMusicのメリットって。

693 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 00:29:28 ]
ありがとうございます。
キャッシュをキーワードに探し回っていたら
ttp://www.sun-inet.or.jp/~yaneurao/rsp/rspD0toD7.html
こういう記事を発見しました。

DirectMusicのバグのようですね…。
ついでに「メモリーからのロードは、実行ファイル内のリソースを再生したい時以外は使わないように」という注意書きも発見しました。
うーん、単に暗号化してあるファイルを複合化して読ませたい(複合化したものをTempファイルとして吐き出したくない)だけなのに、厄介ですね

694 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:30:08 ]
初心者ってやたら何でも隠蔽したがるよね
そこに時間かけるくらいなら
他にやることいくらでもあるだろうに

695 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:59:26 ]
本来何も無い所に自ら巨大な壁を作り上げて
疲労していくのはよくあること

696 名前:デフォルトの名無しさん [2007/10/25(木) 12:04:45 ]
CYGWINのVISTAでのインストール&実装について質問です。

インストールは完了してデスクトップにも通常通りアイコンが作成されました。そこから起動させてみます。そうすると、

bash3.2/$

と表示され、pwdと打ち込むと

/usr/bin

と表示されます。

最終目標はxtermを起動させプログラミングをすることです。
XPでは緑色の文字がホームディレクトリと共に表示され、xstart と入力したら起動しました。
しかし、VISTAでこの状態で xstart と入力してもコマンドが認識されません。
なにより緑色の文字がホームディレクトリと共に表示されません。

何かのエラーではなく、まだ足りない設定等があるのでしょうか?
御教授お願いします。

環境は VISTA Ultimate 32ビット Core 2 です。
何か足らない情報があれば教えて下さい、補足させて頂きます。

697 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 12:17:06 ]
足りないのは注意力だと思うよ

698 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 12:33:53 ]
たしかに強烈に注意力が足りないな。

699 名前:デフォルトの名無しさん [2007/10/25(木) 18:24:53 ]
Xファイルの容量を軽くする方法、またはソフトなどありますか?

700 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 18:28:15 ]
バイナリ、頂点減らし、無駄な項目を消す



701 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 22:55:03 ]
>>699
圧縮かける

702 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 00:56:32 ]
またそれかよ
買い物とか駐車場とかネギとかもうやめてくれよ

703 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:15:14 ]
SDK付属のDirectXViewerで、DX10にしてXファイルを開いたら、むちゃくちゃ遅くなった。
DX9で60以上出てたのが、10以下になった感じ。
グラボはgeforce7xxxだし、DX10に対応してるはずなんだけど、なんで?

704 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:38:10 ]
>>703
どーでもいいがGeForce7シリーズは普通、DX10対応とは言わない。
ShaderModelも3.0止まりだし。

お前さんの速度低下の原因が何なのかは別として。

705 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 08:41:22 ]
いつGeForce7が10対応になったんだよ

706 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 13:01:34 ]
なんかうっかりさんが多いな

707 名前:703 mailto:sage [2007/10/26(金) 17:34:23 ]
すいません、てっきりフルサポートしてるもんだと思ってました。

708 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 20:01:17 ]
DirectX10でポリゴンを画面の座標で表示する方法がわかりません。
チュートリアルのコードは、画面の中心が(0, 0)となっているのですが、単位や基準の位置を設定することはできるのでしょうか?
やりたいことは、自前でスプライトを実装することです。
教えてください。

709 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 20:29:24 ]
頂点シェーダで座標変換?

710 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 19:52:43 ]
>>708
君があまりに知識が無さ過ぎるので、どこからどこまで解説したものか途方に暮れ
誰も君の期待に答えることができない。
本屋行って何か本でも買って読んでみれば?



711 名前:デフォルトの名無しさん mailto:sage [2007/10/27(土) 21:01:05 ]
DX9までなら扱える。DX10構造がだいぶかわってわからないのさ。
DX9なら、初期化を完了した素の状態からVertexで直に画面の座標で指定できたよね。
それがDX10だと同じようにコーディングできないから、どうしたらいいかわからない。
あんまりDX10やってる人いない?

712 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 01:54:46 ]
DX10とかどうこういう問題じゃなくてシェーダと座標系の問題なんじゃないの

713 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 02:05:18 ]
DX9とDX10の問題じゃないだろ。

714 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 02:13:02 ]
Vertex Bufferに(0,0,0) (0,100,0) (100,0,0) なかんじで設定して描画できる?
可能なら必要な処理を教えて。

715 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 02:13:38 ]
↑のは座標は画面のピクセル単位ね。

716 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 10:13:55 ]
CDXUTDialog::OnRender10でも見てくれ。
そこに答えがある。

717 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 17:39:18 ]
見た。DX10は画面の座標でVertexを直接指定できないでおk?
わからないのですが、これはシェーダーの仕様制限なのかな?

718 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 19:02:14 ]
>>717
元々頂点シェーダ使用時はそういうもんだった気がする。
頂点シェーダ強制になった副作用と思えばいいんじゃね?

719 名前:デフォルトの名無しさん mailto:sage [2007/10/28(日) 21:58:58 ]
ジオメトリシェーダ

720 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 06:19:37 ]
>>711
おまえDX9扱えるなんて言ってんじゃねーよ



721 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 07:01:15 ]
ごめん。もうDX10まで扱えるようになった。

722 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 08:09:17 ]
扱えるってのはポリゴン一枚出すサンプルが作れれば言える


723 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 14:44:22 ]
シェーダーのPOSITIONセマンテックが何をさしてるのかわかりません

vertex fragmentでのPOSITIONの意味教えください

724 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:34:48 ]
正直セマンテック

725 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 15:53:42 ]
意味だというのはわかるのですが
vertexが(0,0,0) (-10,0,0) (10,0,0)
とあったときにそれをvertexシェーダに送ると

pos : POSITION
としたときのposは具体的にどんな値が入っているのか。

そしてfragmentシェーダに
OUT.HPosition = mul( float4(IN.Pos.xyz , 1.0) , matWVP);
たとえばこうして送ったときには、fragmentシェーダで扱っているHPositionは
スクリーン上のどの値なのか

どうもイメージできてなくて

726 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:15:00 ]
どうせ2Dシューティング作るんだろ
matWVPに単位行列入れればいいのに


727 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:00:40 ]
2Dシューティングだったら、楽しんで作るんですが。

どなたか725の回答お願いします

728 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:20:22 ]
うん、良かったね。

729 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:37:45 ]
>>725
CPU→VertexShader→FragmentShaderという流れでは

・VertexShaderのPosition値は基本的にCPUで設定した頂点バッファの頂点そのままの値です
・VertexShaderからFragmentShaderに送るPosition値は射影空間の値を入れます。
 具体的には(-1,-1,0)-(1,1,1)です
・スクリーンへは射影空間(-1,-1)-(1,1)が引き伸ばされて
 (0,0)-(ViewportSize.X,ViewportSize.Y)に表示されると思ってください

以上を踏まえて

>pos : POSITION
>としたときのposは具体的にどんな値が入っているのか。
そのまま(0,0,0) (-10,0,0) (10,0,0)が入ってきます

>そしてfragmentシェーダに
>OUT.HPosition = mul( float4(IN.Pos.xyz , 1.0) , matWVP);
>たとえばこうして送ったときには、fragmentシェーダで扱っているHPositionは
>スクリーン上のどの値なのか
頂点がカメラのフラスタムの中に入っていれば、
射影空間(-1,-1,0)-(1,1,1)の中に頂点が変換されます
その先のスクリーン座標への変換はDirectXが勝手にやります

射影空間とはなんぞやって話なら
SDKの「射影変換とは」って項目でも読んでください

730 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 21:55:28 ]
>>729
遅くなりましたがありがとうございます
ようやくイメージできました



731 名前:デフォルトの名無しさん mailto:age [2007/11/01(木) 06:12:57 ]
HLSLでピクセルシェーダを書き始めたのですが、
BeginPass()〜EndPass()の間でマテリアルごとにDrawSubsetを実行する流れになると思うんですけど、
特定のマテリアルではピクセルシェーダを変えたいというとき、

・特定マテリアルのときフラグ定数を転送してやってピクセルシェーダ内で分岐して処理を変える
・Pass0で特定マテリアル以外を描いて、Pass1で特定マテリアルだけを描く

どっちがベターでしょうか?
もしくは他に「こうやるもんだ」ってのがあれば教えていただきたいです。

732 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 08:40:16 ]
厳密にはケースバイケースに計測しないと分からないので
一般には「楽なほう」が選ばれるんじゃね

733 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 14:41:49 ]
発想を逆にして、マテリアルごとにBeginPass()〜EndPass()というのも。

734 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:01:47 ]
>>731
マテリアルとシェーダって一対一になると考えるのが普通じゃね?
つまりシェーダが違うんであれば、それはマテリアルが違う。
データの段階でどういうマテリアルにするかを指定しておくべきじゃないかね

735 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 23:53:10 ]
technique T
{
pass P0{ ... }
pass P1{ ... }
pass P2{ ... }
}


ApplyEffect( func )
{
SetTechnique( "T" );
Begin()
BeginPass( func );
Draw();
EndPass();
End();
}

これはよくやる、っていうかこれしかやらない。
passをループでぐるぐる回すってのは、
むしろあんまり使いどころがない気がする。


736 名前:731 mailto:sage [2007/11/02(金) 02:56:59 ]
>>732-735
レスサンクス!参考になりました。
とりあえず自分が組みやすい奴でやってみることにします。

737 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:51:21 ]
DirectX10で、MultiSamplingのバックバッファから2Dテクスチャにコピーする方法がわかりません。
つまりバックバッファからイメージを取得したいのですが。
アドバイスをください。

738 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 21:37:09 ]
>>737
レンダリングターゲットを変えろ。

739 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 02:40:06 ]
条件を全否定するのではなく、目的の方法を求みます。

740 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 02:53:28 ]
>求みます。

求みる?



741 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:04:51 ]
揚げ足とるなカス

742 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:06:30 ]
俺も知りたい

743 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:07:35 ]
俺も俺も!

744 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:09:45 ]
あちきも!

745 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 03:11:40 ]
求みます、ってのは日本語を学ぶ中国人がよく犯す間違い

746 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 04:45:04 ]
謝罪しる思い出した

747 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:21:38 ]
事故レス
ID3D10Device::ResolveSubresource を使用することで目的が達成できました。

748 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 17:42:30 ]
>>746
反省しるだろ

749 名前:デフォルトの名無しさん [2007/11/03(土) 19:28:39 ]
www.watch.impress.co.jp/game/docs/20070927/wv.htm

この問題がよくわかんないんですけど
間違ったサンプルコードをコピペしていたのが原因らしいけど、
その詳細が知りたいです


750 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 19:34:13 ]
>>749
スライドに載ってるソース見てMSDNライブラリで調べればいいだろ。



751 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 19:35:54 ]
詳細ってこれなんじゃないの?

www.watch.impress.co.jp/game/docs/20070927/wv06.htm

752 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 19:37:50 ]
>>749
お前なんも記事を読んでないな?
本文に書いてあるだろ、スライドのSS見ろ。

753 名前:749 [2007/11/03(土) 19:54:12 ]
えーと、IMEの描画をさせないために
WM_IME_SETCONTEXTが来た時にlParamからISC_SHOWUIALLフラグを取り除くのが正解だけど、
サンプルは自動変数に0を入れてるから意味ナス

って理解でいいですかね

754 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 19:58:51 ]
>>753
肝心なところが足りない。
lParamからISC_SHOWUIALLのビットを下げてDefWindowProcに渡す、で正解。

755 名前:749 mailto:sage [2007/11/03(土) 20:00:43 ]
そういえば解決策をかいてなかった
>>754
了解です。理解しました

756 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 20:46:36 ]
海外デベロッパはIMEの動作しない環境で作ってテストしない&修正しないもんだから、Vistaでもう致命的におかしくなった話。
Vistaなプログラミングしていれば周知の事実だぜ。

757 名前:デフォルトの名無しさん mailto:sage [2007/11/03(土) 23:46:05 ]
海外全部じゃなくて、欧米だな

758 名前:デフォルトの名無しさん [2007/11/05(月) 13:34:46 ]
欧米か・・・

759 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 21:15:11 ]
米だけじゃね

760 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 22:07:11 ]
漢字圏以外だと思うが



761 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 01:51:12 ]
欧とか印のデベロッパの傾向とかはっきり言って知らない

762 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 07:55:30 ]
インド製の有名なゲームの体験版とかあったら教えてくれ。それで判断する

763 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 08:10:28 ]
英語のヘルプはほとんどインド製。
ゲームじゃないが。

764 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:08:50 ]
インドの標準語は英語

765 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 16:56:17 ]
違いますよ

766 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 21:43:13 ]
インド人の微妙に高いカーストのイケメンのアニオタプログラマガ
半裸で作ったゲームないの


767 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:14:09 ]
カーストなんて言葉聞いたの小学校の社会の時間以来だ。

768 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 12:41:13 ]
DirectX10で書いた場合、vista専用になってしまいますか?

769 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 14:50:57 ]
DirectX10専用

770 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 04:48:53 ]
インドのゲームってやっぱり敵と踊ったりするの



771 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 10:49:42 ]
DirectXを初めて学ぶのにお薦めの本を教えてください

772 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 11:58:38 ]
猫でもわかるDirectX 〜 3Dグラフィックス基礎編(1)
www.amazon.co.jp/dp/0689842120

773 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 13:12:06 ]
本読んだことないけど、使えている俺が居る。

774 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 13:25:18 ]
勘と試行錯誤って大事だよ

775 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 18:32:19 ]
>>772
リンク先間違ってない?

776 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 06:35:15 ]
ネタだろ

777 名前:デフォルトの名無しさん mailto:sage [2007/11/09(金) 21:16:44 ]
DirectX & C++ & Windowsでシェーダプログラムを組んでいます。
処理が複雑になりすぎて、レジスタ数が足りないというエラーを返される
ようになってしまいました。
この場合1パスで行っていた描画を2パスにすれば解決するのでしょうか?
また、その場合どのようにシェーダの記述を行えばよいのでしょうか?

778 名前:777 mailto:sage [2007/11/09(金) 22:06:21 ]
やっぱり分からないので再度書き込みをさせて頂きます。
1パス目で行った描画ピクセルに2パス目で色相変換の処理を組み込みたいのです
しかしながら1パス目の描画結果を取得する方法が分かりません。

下のように2パス目のピクセルシェーダを記述しています。
PS_OUTPUT PS_HueShader( PS_OUTPUT In ){//TESTとして1パス目の記述結果をそのまま出力する
return In;
}

このように記述すれば引数Inには1パス目のピクセルシェーダ描画結果が入っていると
思ってたのですが実際には1パス目の頂点シェーダのDiffuseの値が入ってます。
どのようにしたら1パス目ピクセルシェーダ終了時のピクセルの値を操作できる
のでしょうか?

779 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:20:03 ]
1パス目でレンダーターゲットにしたテクスチャに描画して
2パス目でそいつをピクセルシェーダの入力にする
ってのが基本

780 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:34:03 ]
ていうかレジスタが足りないなんてエラー初めて聞いた。
プログラムコードがでかすぎるってのならともかく…



781 名前:777 mailto:sage [2007/11/10(土) 01:42:28 ]
>779
分かりやすい解説ありがとうございます。
2パスだと描画用のテクスチャを別に用意する必要があるので、処理が重そうですね。
今回は色相変換を諦めようと思います。アドバイスありがとうございました。

>>780
色相彩度変換はレジスタ数を大量に必要とするのでシェーダのバージョンが
低いとすぐにレジスタが足りないというエラーが起きてしまいます…

782 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 01:43:46 ]
色相彩度変換て具体的にどういうのか知らないんだけど、そんなに消費するのか。
セピア変換とかなら単に行列かけるだけだと思ってたけど
話にならないくらい複雑なことするのかな

783 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 02:18:16 ]
RGB情報を一度HSV(色相・彩度・明度)の情報に変換して、各値を
操作してRGB値に戻す…というやり方でやってますんで、処理としては
結構複雑です・・・。検索するとシェーダサンプルが見つかると思います。

784 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:18:39 ]
HSVとRGBの変換が大変そうだね…
てか、ソース見て俺も1回やったこと思い出した。CPUでだけど。

785 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 09:32:46 ]
別にマルチパスレンダは重くないと思うぞ。
重くなる要素が見当たらないし。
VRAMがオーバーフローするなら別だが。


786 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 11:09:51 ]
シェーダでHSV変換なんてただのエフェクトサンプル以外の使い道あるの?
実用しないなら遅くていいじゃん。

787 名前:デフォルトの名無しさん [2007/11/10(土) 17:01:29 ]
シェーダをある程度理解されている方に質問です。

頂点シェーダに1回に送られてくる頂点情報は、基本的に1つですよね。
私は頂点同士の計算がしたいのですが、その為には複数の頂点が必要になります。

(例)
vertex1 と vertex2 でなんらかの計算
vertex1 と vertex3 でなんらかの計算

というように、送られてきた頂点と、他の頂点を使って計算をしたいのです。

こういうことはシェーダでは可能なのでしょうか?
ちなみにHLSLを使っています。

どうぞ宜しくお願いします。

788 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:30:57 ]
シェーダが走る前の特定の頂点情報が必要なら、レンダリング前に定数レジスタに
値を入れてからシェーダを走らせる。

あとは、頂点フォーマットを拡張して、レンダリングを開始する前に、
必要な他の頂点の情報を自分の頂点情報に入れておけば、シェーダで利用できる。

DirectX9までは、基本的にシェーダが走ってる最中の別の頂点の情報が必要な場合、
取得は不可能なはず。(上のような、小細工が必要)

DirectX10のシェーダは、その辺が可能って聞いてるけど、詳しい人ヨロシク。

789 名前:デフォルトの名無しさん [2007/11/10(土) 17:49:52 ]
>>788
ご回答していただきありがとうございます。

もう少し具体的に教えてもらいたいのですが、

・レンダリング前に定数レジスタに値をいれる
・必要な他の頂点の情報を自分の頂点情報に入れておく

とは具体的にどうすれば良いでしょうか。

いろいろ本やサイトで調べたのですが、
これに関して掲載されていなかったので投稿させていただきました。
初心者で申し訳ありません。

790 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:53:02 ]
>>787
DirectX10のジオメトリシェーダなら
入ってきた三角形に対して新しい頂点を生成したりすることができるよ

でも、やる内容によるんじゃないかなぁ
DirectX9世代ではピクセルシェーダで頑張ってやってた処理が多い



791 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:54:41 ]
>>789
>・レンダリング前に定数レジスタに値をいれる
こっちは多分、君の言う目的を達成できない方法だよ
プリミティブを描画している間、どの頂点にも同じ情報を送ることができる
まぁ、普通のレジスタの使い方

>・必要な他の頂点の情報を自分の頂点情報に入れておく
これは頂点に他の頂点のコピーを複製していれておく方法。
例えば
struct VERTEX
{

792 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 17:57:05 ]
SHIFT+Enterで書き込んでしまった
struct VERTEX
{
float4 Position : POSITION;
float4 Texcoord : TEXCOORD;
};
って頂点だったら
struct VERTEX
{
float4 Position0 : POSITION0;
float4 Texcoord0 : TEXCOORD0;
float4 Position1 : POSITION1;
float4 Texcoord1 : TEXCOORD1;
float4 Position2 : POSITION2;
float4 Texcoord2 : TEXCOORD2;
};
みたいにしておいて、他の頂点に触れるようにしておく。
かなり強引な方法(単純に考えてデータ量3倍)

793 名前:787 [2007/11/10(土) 18:01:40 ]
皆様、早速のご回答ありがとうございます。

ある本を読んでみると、頂点情報をテクスチャに保存して
それをピクセルシェーダで使用すると書いてあるのですが、
具体的にどうすればいいのか分かりません。

複数の頂点情報をテクスチャに保存することってできるのでしょうか?

794 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:08:06 ]
>>793
そりゃ例えばARGB32Fのフォーマットなら、
1ピクセルにfloat4の情報を書き込めるってだけだよ

そもそも具体的に何をしたいのかが分からないから何とも言えない…

795 名前:787 [2007/11/10(土) 18:18:37 ]
私が具体的に行いことを述べます。

例えば、頂点数が「5」のオブジェクトがあります。
1つの頂点に対して、他の全ての頂点と計算がしたいので

v1-v2 v1-v3 v1-v4 v1-v5
v2-----------同じ------------
v3-----------同じ------------
v4-----------同じ------------ 
v5-----------同じ------------

※ -← は計算するということ

と計算がしたいので、4×5 = 20回分計算が必要になるわけです。
こういう処理をGPU上で計算したいと思っています。
何か良い方法がありますでしょうか。

796 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:20:26 ]
シェーダーで計算したいってことなのかな・・・

797 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 18:27:57 ]
>>795
いや、それって方法論でしょ?
何を表現したいかってことだよ
それによってはそもそもその手法が正しいのか、って話になるから

まあ、よほど重い処理でない限り、頂点シェーダで強引に計算してしまえばいい
大抵はピクセル処理でボトルネックになってしまうので、どうでもいいんで

798 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 20:08:54 ]
>>795
だから、>>788で書いたとおり、DirectX9では無理。DirectX10のジオメトリシェーダでは可能。

無理だから、事前に「自分で」必要な頂点の情報を、対応する頂点に「仕込む」等の処理が必要になる。
ある頂点で参照可能な別頂点の数は、入力となるvレジスタの数で決まるから、「あるプリミティブ全体を
対象とする任意の頂点を相互参照」するなんてDirectXでは完全に無理。

このヒントを聞いて、「頂点に他の頂点を仕込む方法が具体的にわからない」なら、
シェーダの理解が足りて無いってことだから、

ttp://marupeke296.com/DXPS_No3_BasicOfVertexShaderProgram.html

この辺の一番上の図を見て、頂点シェーダの演算部が参照可能なデータについて、もう一度整理する事を
お勧めする。

>>797もいってる通り、実現方法を変更する方が現実的なんじゃないかな?

799 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:17:22 ]
便乗して質問
>>792のようにPosition0〜2まで3つ設定すると
そこに何入ってるの?


たとえば {1 1 0} {0 0 0} {-1 1 0} の三角形があったらどうなるの?

800 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:28:57 ]
何が入ってるかじゃなくて
何を入れるかを自分で決めるんだ



801 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:33:10 ]
ごめん、Cgだから
何を入れるというと uniform型を宣言すると思ってしまって。

Cgでも未だに
struct IN{
float4 position1 : POSITION
float4 color : COLOR
}
に何が入ってるのかわかってなくて。
uniform型なら、明示的にブチ込んでるからわかるんだけども

802 名前:デフォルトの名無しさん [2007/11/10(土) 21:48:57 ]
実際のところ、頂点シェーダの
入力パラメータが何であるかなんで
どうでもいいことだし、何を渡してもかまわない。
ただ最低限、同次頂点座標を1つ出力しなければならないってだけだ。


803 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:49:30 ]
>何が入ってるのかわかってなくて
工工工工工工エエエエエエ(´д`)エエエエエエ工工工工工工

804 名前:デフォルトの名無しさん mailto:sage [2007/11/10(土) 21:53:48 ]
>>802
何が入ってるのかわからないままだと、結局何もわかってないままで
>>803みたいなこと言われるので・・・

805 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 15:53:09 ]
質問です。

DirectX SDKのサンプルって、みんな「コード生成」->「ランタイムライブラリ」の設定が「マルチスレッド デバッグ」になってるじゃないですか。
これを、「マルチスレッド デバッグ DLL」にしてビルド通して実行しようとすると「MSVCR80.dllが見つかりませんでした」とか「MSVCR80D.dllが見つかりませんでした」
と言われて実行に失敗してしまいます。
これ、対処法ってないんでしょうか。

というのも、自前で作ったライブラリとSDKサンプルを組み合わせて使いたいんですが、ライブラリが「マルチスレッド (デバッグ) DLL」の設定でビルドしてあるものだから、
合わせたいんです。

806 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 16:26:41 ]
見つかる場所 (PATHの通ってる場所とか) にDLLを置いとけばいいんじゃないの

807 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:35:07 ]
最近ワイドモニターのノートPCを使い始めたのですが、
フルスクリーンのゲームなどをするときに横に伸びてしまいます。
そこで、特定のサイズでフルスクリーンにするとき、自動的に左右をパディングして真ん中だけを使って写すようにしたいのですが、
そのようなソフトウェアを作ることは可能でしょうか?

808 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:40:26 ]
はい。

809 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 17:45:25 ]
ちなみに、そのようなハードウェアを作ることも可能ですよ。

810 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:12:02 ]
でもそこらの同人ゲームはフルスクリーンで特に何もやってないのがほとんどじゃん。




811 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 18:36:58 ]
>>810
TL頂点使ってると比率が変わるだけで表示しているものの位置が変わるからね。

812 名前:デフォルトの名無しさん [2007/11/11(日) 22:07:15 ]
ドラクエ7の戦闘開始時に画面がばらばらに落ちる処理
をdirectxでやるのに参考になるサイトがあれば
教えてください。

813 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:33:27 ]
ttp://www.nicovideo.jp/watch/sm1495093
ニコニコだけど、これ自作描画エンジンらしい。

エンジンどーこーわからんが、すげぇや

814 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:38:25 ]
DirectXなの?

815 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:39:27 ]
>>813
どーゆーレベルのエンジンかわからんが

それでもスゴイ!と言わざるを得ないw


俺なんて、DirectXのサンプルブラウザーのチュートリアル4を
ウンコをつんつんするような感じで弄ってるところだぞ

816 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:46:48 ]
>>813
開発者のHP見てきた

3Dアクションゲーム作っちゃうレベルの人なので、
素人から見るとすごいが、この人のレベル的にはそんなに凄くないw

817 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:53:59 ]
確かにすごい

トゥーンレンダリングエンジンの開発
キャラのモデリング作成
キャラのテクスチャ作成
モーション付け
アニメーション付け

考えただけで気が遠くなる

818 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 22:59:16 ]
しかし、SIが正規版なのが気になってしまうw

819 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:03:30 ]
元プログラマー、現在NEET、てw
にしてはいいソフト揃えてんなあ

モデルはちょっとクセがあるけど丁寧だし動きもなかなか自然だねえ

820 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:09:51 ]
www.amazon.co.jp/exec/obidos/ASIN/4875934610/249-9467730-0997124

この人が見てるらしいこの本、ちょっと欲しいな!



821 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:18:55 ]
XSI

100万とかテラスゴス!
と思ったら、XSI 6 Foundation だと七万八千円なのね

822 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:32:49 ]
一番面倒なのは、モーションを入れる作業だね。
地道に振り付けと、表情のUV切り替え。

データさえ作ってしまえばエンジンの仕事なんてたかが知れている。

823 名前:デフォルトの名無しさん mailto:sage [2007/11/11(日) 23:50:43 ]
>データさえ作ってしまえばエンジンの仕事なんてたかが知れている。
どういうこっちゃ?

つーか、プログラマにモデリングが不慣れだというのに
ニコニコではモデリングばっか言われてるのな。

エンジンなんて作れねぇ。つーか無理


824 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:01:35 ]
>>823
プログラマが個人でやる場合だと、データ作る方が大変な気がするw

両方やってるのがすごいなぁと思うよ

825 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:02:54 ]
モデルデータを読み込んで再生するだけなら、普通のプログラマなら全然難しくないんだよ。
モーションデータの生成部分までエンジン側でやっているなら凄いプログラムだが、それはまずあり得ない。

826 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:17:03 ]
そりゃ、モデルデータ読み込んで、toonシェーダかけて再生ってそりゃやるけど。
エンジンってそういうことなん?
あと、全然難しくない、とか言うのやめたほうがいいよ。

つーかライティングやらシェーディング、加えてそれがリアルタイムってあたりで
組むのうんざりだ。


827 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:25:20 ]
データ作るほうがコーディングより作業が大変だろ

828 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:28:54 ]
ビューアは作ったからモデルデータとモーションを作れと言われるのと、
モデルデータは作ったからビューアを作れと言われるとがどちらが良いかと言われたら、
迷わず後者を選ぶ。
労力が全然違う。

829 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:33:44 ]
いつのまに
プログラマーとモデラー・アニメーターの比較になってるんだ?

プログラムの話をしようぜ。
リアルタイムラジオシティtoonレンダでも組んでくれ。

830 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:44:50 ]
光源が固定のラジオシティをリアルタイムといってしまっていいものかどうか。



831 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 00:52:55 ]
????
なんでラジオシティに光源の位置が、固定か可変か関係あるの?


832 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:08:03 ]
は?全ては光源に依存してるんだから、光源が固定か可変かは大問題だろう。

CG屋さんか?

833 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:13:33 ]
リアルタイムに光源を変化させるのってそんなに難しいの?

まだ、チュートリアル弄ってる段階なんでさっぱりさ!

834 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:17:05 ]
????
そりゃ光源に依存してるけど、普通はレンダリング時に光源の位置を決めて
そこからラジオシティ入るだろ?

つまりはアレか?人がグリグリ動いてる中で、光源(例えば太陽+複数のスポットライト)も
グリグリ動いて、間接光だのをリアルタイムで時間積分して解いてるのか?

つーか、リアルタイムの光源固定ラジオシティでさえまともに実装されてないのに。
光源がグリグリ動くラジオシティがあるっていうのか。ぜひ教えて欲しいわ。


835 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:20:12 ]
>>833
リアルタイムで光源が動いて
シェーディングをかけるのは難しくはない。nvidiaとかのサンプルでもある。

言ってるのは、ラジオシティ。

836 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:24:29 ]
>>834
>>831によると、固定も可変も関係ないらしいから、光源固定のラジオシティも
光源がぐりぐり動くラジオシティもあるってことになるよね。

837 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:28:35 ]
3Dの勉強始めようかな…
なぜかゲームプログラマーになってしまったしな…

838 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:29:35 ]
ここはあなたのブログではありません。

839 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 01:30:56 ]
>>836
んー
俺の認識だと、ラジオシティでは1枚の光源は
固定したものとしてレンダリングするもんだと理解してるから

可変ってのは無いもんだと思って831を書いたんだけども。
ぃゃ、正直光源がグリグリ動くラジオシティがあるなら、参考にしたいから知りたいというのがある。


確かに1枚=1フレームとして、リアルタイムのラジオシティが出来るのであれば
それは光源が可変なのだと思うけど。
SIGGRAPHでさえ、リアルタイムラジオシティは出てない、はず。

PS3を3台だかつかって、リアルタイムレイトレしてる変な人たちはいたけど

840 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 05:58:03 ]
変って言うなw



841 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:08:46 ]
ピクセルシェーダで画面の輝度の高い部分にグレア処理をかけたいと思ってます。

画面と同じ大きさで作成したテクスチャにオブジェクトを描画して、
最後にそのテクスチャにグレア処理をかけて画面いっぱいに映し出された
ポリゴンに描画するというやり方でやってます。

しかし、やり方が悪いのかぼやけます。根本から間違ってるのでしょうか?
画面いっぱいに映し出されたポリゴンは出力を見ながら手作業で大きさを
調整しているので、サイズが画面と完全に一致してないのが原因なのか…。

842 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:38:04 ]
テクスチャ自体の解像度が低いとかじゃないの?


843 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:52:51 ]
テクスチャのサイズですが、生成時に画面と同じ640*480を指定しています。
1024*1024等の2のべき乗で無いからぼやけるのでしょうか?

試しに1.5倍の960*720のテクスチャにモデルを描画した後640*480の画面に
ピクセルシェーダで描画したらぼやけは無くなりました。
でもこれは高解像度から低解像度への変換なので当たり前というか…。

844 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 17:59:54 ]
使ってるビデオカードは2の乗数でないテクスチャに対応しているものか?
そうでないなら640*480なんていう半端なサイズのテクスチャは作れないが

845 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:07:26 ]
ためしに2^nにしてみて検証


846 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 18:50:05 ]
どうせヘルプをまともに読まずD3DXでテクスチャを作って、勝手に自爆しているだけだろ。

847 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:27:26 ]
シェーダが使えるのにテクスチャが2^nでしか作れないなんて、
VP870(PS1.2)とかXabre(PS1.3)くらいで、シェーダモデル2.0以降なら
1つも無いと思うが。

俺はどうせ座標が0.5ずれてるFAQネタだと思うが。

848 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 19:33:05 ]
ウィンドウサイズは640x480だけど
クライアント領域が640x480じゃないってオチは?

849 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:17:33 ]
サンプルブラウザのチュートリアル6メッシュっちゅうのを動かしてみたんだが、
メッシュの回転や平行移動ってどうやればええのん?

850 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:33:42 ]
>>849
ワールドマトリックスに好きな行列をセットしろ。



851 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:42:07 ]
>>850
サンキュー!

852 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 21:56:16 ]
誰か>>801に答えてくれたりしない?

未だにだめっぽなのよ

853 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:03:58 ]
>>850
行列のセットがよくわからなかったので、アフィン変換ちゅうのを使おうとしたんだけど、
こんなエラーが「error C2065: 'null' : 定義されていない識別子です。」

// Set up world matrix
D3DXMATRIXA16 matWorld;
D3DXMatrixRotationY( &matWorld, timeGetTime()/1000.0f );

D3DXVECTOR3 t(1.0f, 0.0f, 0.0f);
D3DXMatrixAffineTransformation( &matWorld, 1.0f, null, null, &t); // ここでビルドエラー
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );


なんで、D3DXMatrixRotationY、D3DXMatrixLookAtLHは使えるのに、
お友達っぽいD3DXMatrixAffineTransformationが使えないのかわかる?

854 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:04:40 ]
null→NULL

855 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:06:24 ]
>>854
ひゃっほう(’’*

856 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:26:17 ]
質問です。

3Dゲームでパラメータ等を2Dで表示する機能を実装したんですが、すごく重くなってしまいました。
本で調べてみたのですがClearでZバッファを一度消しているのが原因らしいです。
とりあえず原因はわかったのですがどういう解決策をとればいいのかわかりません。

いい解決策とかパラメータ表示の代替案とかご存知なら教えていただきたいです。

857 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:35:57 ]
どの本の何という記述からそう思ったのか答えよ。

858 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:42:58 ]
軽くエスパーすると
フォント描画が重いんだと思うけど・・・

859 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:49:29 ]
>>852
頂点の配列は自分で作ってるんだろ?
んで、それをGLの関数にセットして描画してるんだろ?
それだよ。

>>856
Zバッファをクリアせずに
文字を書くときだけZテストをOFFにすれば?

860 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 22:51:05 ]
>>857.858
すみません直りました。

コードに手は加えていないのに突然直ったので
たぶん別の事が原因だったと思います。それが何かはわかりませんが…。
お手を煩わせて本当に申し訳ない。



861 名前:860 mailto:sage [2007/11/12(月) 22:53:14 ]
>>859さんも解答してくれてありがとうございます。
>>860の通り解決しました。重ね重ね申し訳ない。

862 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:10:35 ]
それよりもZバッファをクリアすると遅くなる情報の元になった書籍名を答えろ。

863 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:22:40 ]
>>862
マスタリングDirectXプログラミングという本です

864 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:49:30 ]
初心者が買ってはいけない本に認定

865 名前:デフォルトの名無しさん mailto:sage [2007/11/12(月) 23:54:54 ]
こんな本でてたのか
日本語でDirectX関連の本は久しぶりだな

866 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 00:57:58 ]
今、DirectX9SDKで2Dのシューティングゲームを作っています。
ゲームのプログラムは「シューティングゲームプログラミング」の本を参考にして作っているのですが、この本のサンプルでは弾やキャラクタが全て3Dメッシュで作られています。
作りたいのは2Dのゲームなので、DirectX8の2Dゲーム作成のページを参考にしてDX9の仕様に変えながら、後でゲームに組み込むことを目的にして2D描画周りの勉強をしています。
本のサンプルにもテクスチャを描画する関数はついていたのですが、頂点位置を指定しての変形描画や行列を用いた回転を使いたかったので、自分で関数を作ってみようと思いました。

今触っているプログラムの簡単な描画の流れは、
@D3DXCreateTextureFromFile を使ってpngファイルからテクスチャを作成
ASetTexture でテクスチャをデバイスにセット
BDrawPrimitiveUP でバックバッファに転送
CEndScene を待って Present でフリップ (方式はD3DSWAPEFFECT_DISCARD)
というものです。

そこで質問なのですが、テクスチャを描画した際に像がぼやけたようになってしまうのはどうすれば直せるのでしょうか。
現在はステージ画面のフレーム(透過部分を四角く抜いたワク)を描画する段階で、テクスチャの大きさは640x480です。
ファイル形式はpng、bmp、tgaを試してみましたがどれもぼやけてしまいます。

ttp://www.uploda.org/uporg1109654.png
具体的には、画像の左側の絵を描画すると右のようになってしまいます。
解決策を教えて下さいませんでしょうか。

867 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 02:42:36 ]
ちょっとだけ上を見るとか頭に無いのかな

868 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 05:05:12 ]
倍の解像度のテクスチャを用意して、0.5ずつ座標をずらしたら綺麗に表示されました。
上を見れなくて申し訳ありませんでした。

869 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 13:30:43 ]
>頂点の配列は自分で作ってるんだろ?
>んで、それをGLの関数にセットして描画してるんだろ?

だから、頂点が3つあったときに(0 0 0) (1 1 0) (-1 1 0)
struct IN{
float4 position1 : POSITION
float4 color : COLOR
}
だと、POSITIONが1個しか無いじゃん
1個しかないのに、3つの頂点入るの?

3つのうちのどれかが入るんでしょ?それuniformじゃないと指定できないじゃん
勝手にCgの方でやられたってこっちが困るんだよ
3つのうちどれが入るか言ってよ!ヴァカ!

870 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 13:50:10 ]
自分の不勉強を棚に上げて逆ギレとは…。
てか、>>800で終了だろ。



871 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 16:52:26 ]
>>868
なんで倍の解像度にする必要があるの?

872 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:12:14 ]
ピクセルシェーダ2.0を使う場合って、そのPCが1・1までしか対応
していない場合どうなるのでしょうか?
エフェクトファイル読み込んだ時点でエラー発生でしょうか?
手元にあるのマシンが全部2.0対応なので、誰か分かる人ご教授お願いします!

873 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:15:26 ]
>>870
だから、何を入れるのか決めるのってCgだとuniform使うんだってば
何回も同じこと言わせないでください><
uniformがついてないからわからないんですぅ!


と、厨臭いこと言い方ですいませんでした。自分の勉強不足です
ただ一人じゃわからなくて。アドバイス頂けたらと思って伺いました。
ほんとすいません。教えてください

874 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 19:41:34 ]
            /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙i、
               i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|i
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i゙i
           /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;/|;;ト;ト;;;;;;;;;;;;;;;;;;;;;;;;ヽ、
            /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ノ;;ノシ/ノ |゙!iヽヾ;;;;;;;;;;;;;;;;;;;;;;ヽ、
         /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ンツン    ! ヽ、 ヾ;;;;;;;;;;;;;;;;;;;;;;;ヾ
           /;;;;;;;;;;;;;;;;;;;;;;;/シンて__;;;、   ,;;;.ソ ~゙ヽ;;;;;;;;;;;;;;;;;ヽ
        /;;;;;;;;;;;;;;;;;;;;;/ゾ      ゙!  /     ノミ;;;;;;;;;;;;;;;;ヽ、
      /;;;;;;;;;;;;;;;;;;;;入  ーt┬‐ュ ヽ ( <エコブ ┃ノ;;;;;;;;;;;;;;;;;ヾ
      /;;;;;;;;;;;;;;;;;;;;;;;;ヽ┤     ̄_ノ  ゙i i ‐-、   |;;;;;;;;;;;;;;;;;;;;;;;;゙i  必要な分は見せたということだ
.      /;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::l、        : : ゙    ノ;;;;;;;;;;;;;;;;;;;;;;;;;;l
    /;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::T:、_     r‐ i i┐  イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;l   これ以上は見せぬ
.    l;;;;;;;;;;;;;;;;;;;;;;;;;/;|   k┴ヽ、  /‐、l´゙)~ヽ ( |イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;l
    l;;;;;;;;;;;;;;;;;;;;;;イ;;;|  |   / /  _゙'_'゙  ゙i )| |;;;;;;;;;;;;;;;;;;;;;;;;;;;l
     l;;;;;;;r‐''゙;;;;:;;:;;;;l  ヽ、 ,|. (   f‐ニ‐ヽ /./ /ヾヾ;;;;;;;;;;;;;;;;;;;l
     ヾ/;;;;;;;;;:;;;;:;;;;;ヽ   ゙ヽ\ヽ―'゙――゙'‐// / /;;;:::....゙''‐、;;;;/
  _,.,.r/ ,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ   ゙i ゙i、゙'v    v' i / ノ;;;;::::;;;;;;;;;;;;;;;:.ヽ、
 /::/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ、  ゙r_ヽ! 、,.  ! |  ,/;;;;;;;;::;;;;;;;;;;;;;;;;;;;;;;;;ヽ、

875 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:00:53 ]
>>873
てゆーかホントにお前が何がやりたいんだよ
>>795がやりたいとして
ホントに頂点数は5なのか?
それくらいならできなくもないけど頂点数が数十個のオブジェクトを
この方法で処理するのは土台無理な話だし
ホントにそんな処理が必要なのかも疑わしい

いま自分が目指してる最終地点と
それに対してどういうアプローチをしてるのかぐらい書いてもらわんと
説明する気も起きない

876 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:31:58 ]
>>795さんではありません><

単純に>>869の状況のときに
float4 position1にはどんな座標が入ってるか知りたいだけです!

ポリゴンは(0 0 0) (1 1 0) (-1 1 0)で三角形指定して、頂点が3つあるのに
シェーダーで受け取るPOSITIONセマンテックは1つだけっていうのがわからないのです

Output {
float4 position : POSITION;
float4 color : COLOR;
};
main (float3 position : POSITION)
{
Output OUT;

OUT.position = float4(position, 1);
OUT.color = float4(0, 1, 0, 1); // RGBA green

return OUT;
}

なんでfloat3 positionが1個だけなの?
じゃあ、これに float3 position2 : POSITION1とかしたら、何が入るの?
(0 0 0 ) (1 1 0)? それとも(-1 1 0)?
そこら辺の説明が本でも何でも載ってないのでわかんないんです

877 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:39:44 ]
>>876が何を言いたいのか良くわからんが
頂点数が3個なら
mainは頂点数と同じ数だけ
つまり3回呼ばれてる
1回目のmainのpositionには(0,0,0)がはいっていて
2回目のmainのpositionには(1,1,0)が以下略
ここまではOK?

878 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 20:55:26 ]
そして
float3 position2 : POSITION1だが
Cgがどんなものなのか知らんので
POSITION1なんてセマンティックがあるのかは知らんが
あると仮定するとposition2には何も入ってきていない
position2になにを入れるかは
頂点情報を設定するときに自分で何をいれるのか決める部分なので
何も指定してないのなら何も入らない

879 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:05:01 ]
>>877-878
ありがとうございます><

間違ってたところがありました。POSITIONはセマンティックが1つだけで
COLOR1とCOLOR0、 TEXCOORD0〜7でした!

でもPOSITIONのところはわかりました!ありがとうございます!その頂点分呼び出されて
そのときはPOSITIONに、その値が入るんですね!


でもCOLOR0〜1とTEXCOORD0〜7がわからなくなってしまいました。
これも外部から指定するのでしょうか。uniformじゃ無いのに。

880 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:07:30 ]
なんという理解力の無さだ・・・



881 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:07:31 ]


struct Vertex{
D3DXVECTOR3 position ;// 頂点の座標(必須)
D3DXVECTOR4 color ;
D3DXVECTOR3 position1 ;// 拡張した頂点情報
D3DXVECTOR3 position2 ;// 拡張した頂点情報
} ;

#define MY_V (D3DFVF_XYZ|D3DFVF_DIFFUSE|D3DFVF_TEX2|D3DFVF_TEXCORDSIZE3(0)|D3DFVF_TEXCORDSIZE3(1))

main (
float3 position : POSITION
float3 color : COLOR,
float3 posion1 : TEXCOORD0,
float3 posion2 : TEXCOORD1
)
{ ・・・

TEXCOORDはテクスチャ座標を入れるために用意されてはいるが
別にテクスチャ座標を入れないといけない決まりはない
たとえば複数光源の計算をしたいときにそれぞれの光源ベクトルをいれたりとか
ここはプログラマが必要に応じて拡張すべきところでみんなはこれのことを言っている
一つ一つの頂点に複数の情報を持たせられるよってだけで
複数の頂点の情報がはいってくるわけではない

882 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:14:53 ]
つまりTEXCOORDは何入れてもいいということですか。

twoTextures(float2 position : POSITION,
float2 texCoord : TEXCOORD0,

uniform float2 leftSeparation,
uniform float2 rightSeparation,

out float4 oPosition : POSITION,
out float2 leftTexCoord : TEXCOORD0,
out float2 rightTexCoord : TEXCOORD1
)
{
oPosition = float4(position, 0, 1);
leftTexCoord = texCoord + leftSeparation;
rightTexCoord = texCoord + rightSeparation;
}

でもこういう風に、「入ってくる側のfloat2 texCoord : TEXCOORD0,」の場合はプログラム側で
指定しないとダメなんですよね。

outのところは、自分の都合にあわせて設定してるっていうのはわかるんですが。


883 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:30:31 ]
やべえ、頭痛くなってきた
誰か、バトンパス

884 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 21:53:21 ]
   ↓
   ↓
   ↓

885 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:28:46 ]
教えて君・粘着君に付き合うのが嫌なら無視するのが常識。


886 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 22:33:51 ]
お前頭いいな。

887 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 05:26:10 ]
高さマップの画像からデコボコな地形を生成したいんですが、
全くやり方が分かりません。ヒント頂けないでしょうか?

888 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:08:10 ]
画像の1ドット毎を高さに変えるだけ。
RGB、つまり256色x3色=768段階の高さが取得できる(アルファも取りたけば自由に)。
黒なら高さ0、白なら768xαという高さに決めればあとは自分でその高さに点を配置して面を作っていく。

889 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:31:08 ]
24bitもってて768段階? なんでbitでやらんの
あと移動可などのフラグとか含めたりする。



890 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 07:58:39 ]
俺は、>>887の質問の内容が分からん。
エスパーの例題かと思った。
元データはバンプマッピング用のテクスチャの事?
デコボコな地形って何?ポリゴングリッドの事?
それは、DirectXの質問なの?



891 名前:887 mailto:sage [2007/11/15(木) 12:27:14 ]
言葉足らずで申し訳ないです。
高さマップの画像を元に、メッシュを作成する方法です。
>>888
画像のデータを1ピクセルごと取得していって、自分で頂点を打っていく
ということでしょうか?

892 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 13:01:48 ]
それ以外にどうしろと?

893 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 14:49:52 ]
>>891
hight-fieldのことでしょ?

濃淡グレーマップが高さを示しているっていうの。
単純に0-255でRGB値を読み込んで、それをポリゴンの1頂点として
メッシュを刻んでいけばいいんでないの?

RGB値が読めないとかいうなら
PPM、PGMのASCIIモードで保存でもして読み込めばいい。
当然、ピクセル分の頂点が出来てしまうからデータは重い(255×255pixelなら、255×255頂点)
あと頂点間のつながりもプログラムで指定する。

ということなのでは?

894 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:11:38 ]
たぶん、
そういう超便利関数はないの?
って聞いてるんじゃね?

895 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:26:53 ]
pov-rayとかならあったかな。超便利関数
ポリゴン生成してくれるまでは知らんけど。


896 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:00:44 ]
っていうか、普通のバンプマッピングを使ってレンダリングしたら駄目なの?
地形とか作りたいなら、元データに高さマップ使う意味がわかんないし。

897 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 17:27:01 ]
ビットマップなんてヘッダ以外はただの2次元配列じゃないか

898 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 18:48:33 ]
www.microsoft.com/japan/msdn/coding4fun/gamedevelopment/beginning6/default.aspx
こんなの?
MDXだが。

899 名前:887 mailto:sage [2007/11/15(木) 19:15:13 ]
>>892
なかなか初心者には分からないものです。

>>893
なるほど、非常に参考になります。

>>894-895
そういうことになりますかね。xファイルをロードする関数があるので、
高さマップなどにも専用の関数がある、もしくは似たようなことが出来る
と思ってました。

>>896
バンプマッピングはあくまでも見た目だけで、実際に他のメッシュから
レイを飛ばして高さを取得したい場合などには不向きと調べた結果にありました。
それと地形作成専用のツールの出力が高さマップだったので。
逆にバンプマップ以外、高さマップ無しで効率よく広大な地形を生成する
手法が存在するのでしょうか?
>>898
実は質問する前にそのページを参考にして作ってみたのですが、原理やC#自体
よく理解していないなかったので手詰まり状態でした。
アドバイスのおかげでそのソースコードの意味も今分かりました。

とりあえずゴリゴリ頂点データを作成する関数をコーディングしてみます。
ありがとうございました。

900 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 21:53:13 ]
やってることが、どう見てもhight fieldだ。
ハイトフィールド、hight fieldでググると色々出てくるよ。
使い古された手法だから、結構ソースはあるはず





901 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:36:14 ]
助言をお願いします。

テクスチャを動的に生成するため、
D3DXCreateTexture(pD3DDevice, iWidth, iHeight, 0, 0, D3DFMT_A8L8 ,D3DPOOL_MANAGED, &pTexture);
で作成してたテクスチャを
pTexture->LockRect(0, &stRect, NULL, D3DLOCK_DISCARD);
とロックして書き換えていたのですが、

ふと、DirextX Control Panelで、Debug Runtimeに変更したとたん、
エラーコードD3DERR_INVALIDCALLが返ってくるようになりました。
Retail Runtimeでは動くので最終的には問題ないですが、
Debug Runtimeで動かないのが気になります。

何かご指摘の点があればよろしくお願いします。


902 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 22:40:06 ]
>>901
デバッグ出力に何か情報でてないの?

903 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:10:23 ]
パラメータを見直した?
D3DXCreateTexture、LockRectの箇所でデバッガで止めて、引数の値を精査した?

904 名前:901 mailto:sage [2007/11/15(木) 23:37:31 ]
レスありがとうございます。

デバッグ出力は何も出てきていません。
パラメータは例で示した感じです。
動作自体はRetail Runtimeで目的通りに動作しているので、
何が間違っているのか・・・?


905 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 00:51:43 ]
D3DLOCK_DISCARDは、動的テクスチャのみ有効なフラグで
動的テクスチャの作成にはD3DPOOOL_MANAGEDは使用できないと
ヘルプにあるが。また、D3DUSAGE_DYNAMICを指定してないし。
つーか、デバッグメッセージは出てるだろ、メッセージレベルを上げろよ。

906 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:16:52 ]
>>904
D3DERR_INVALIDCALLが返ってきて、デバッグ出力に何も出ないなんてことは
最近のSDKでは起こらないと思うんだが。

>>901のコードを手元で試したらちゃんとメッセージが出たんだがね

Direct3D9: (ERROR) :D3DLOCK_DISCARD is allowed only with dynamic textures

907 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:18:10 ]
>>906の言うとおりならSDKが古いんじゃないの?

908 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:34:37 ]
>>906のメッセージはかなり昔のSDKでも出る

恐らくは>>905の言うとおりデバッグ出力レベルを上げてないだけかと
Retailランタイムでは動作するってのが分からんけど

909 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:40:05 ]
Retailで動くってのは無効なフラグをいちいちチェックしたりせずに無視してるだけなんじゃないかなたぶん

910 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:52:49 ]
DebugとRetailで、関数からの戻り値(HRESULT)が変わることもあるのかな?
>>901でLockRectが失敗すると、当然D3DLOCKED_RECTの値も無効な訳で、
そのまま処理進めると間違いなくAccess Violationな気が…



911 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 01:59:38 ]
とりあえず、仕様通りに書き直せばいいんでね?原因なんて暇人に調べさせておけ・・・
ってまさか、これは調べさせる釣りなのか?!

912 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 02:12:59 ]
これはまたまんまと

913 名前:901 mailto:sage [2007/11/16(金) 02:43:16 ]
レスありがとうございます。
D3DPOOL_MANAGEDで作成してること事態が問題でした。
おかげさまで、
D3DXCreateTexture(pD3DDevice, iWidth, iHeight, 0, D3DUSAGE_DYNAMIC, D3DFMT_A8L8 ,D3DPOOL_DEFAULT, &pTexture);
と修正することにより、Debug Runtimeでもエラー無く動くようになりました。

ただ、Debug Output Levelを最大にしても、エラーメッセージが何も出でないのは気になりますが・・・。
ちなみに、SDKはJune 2007をVistaで使用しています。


914 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 07:10:11 ]
デバッグメッセージの見方を知らないのかな?

915 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 08:53:14 ]
VC++8Expressだと出力ウィンドウにはネイティブのデバッグメッセージは
表示されないという罠があったりなかったり。


916 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 11:19:26 ]
質問者は、自分の環境とか使ってるDirectX SDKのバージョンを書かないけど、
このスレではそれがデフォなの?

917 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 12:13:20 ]
SDKはみんな2004Octを使ってるからいちいち書かなくてもいいだろ

918 名前:901 mailto:sage [2007/11/16(金) 12:29:42 ]
VC++2005EEだと出力ウィンドウに出てました・・・orz
主にコンソールで作業してるもので・・・
お騒がせしました。


919 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 13:46:44 ]
DirectX9で2Dゲームを作っていて
SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
の拡大縮小フィルタを設定しているのですが、
等倍や縮小描画をすると異常にぼやけてしまいます
何故かMINFILTERではなくMAGFILTERの方を切ると縮小なども綺麗に描画されるのですが
原因として考えられることは何でしょうか?

920 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 15:13:05 ]
>>919
ttp://msdn.microsoft.com/library/ja/DirectX9_c/directx/graphics/programmingguide/fixedfunction/textures/coordinates/mappingtexelstopixels.asp
これは?



921 名前:919 mailto:sage [2007/11/16(金) 18:23:09 ]
>>920
レスありがとうございます
DrawPrimitive前でテクスチャ座標を全て-0.5fにすると解決しました

922 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:29:22 ]
テクスチャ座標を全て-0.5fにする

・・・

923 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 18:34:22 ]
DirectXでリアルタイムレンダリングを解説した書籍でお薦めのものってありますか?

924 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:26:44 ]
まてまて、DirectXって基本的にリアルタイムレンダリングを前提としてると思うんだけど。
プリレンダリングの解説書なんて見たことねーぞ。

925 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 21:59:37 ]
リアルタイムレンダリング in DirectX
ttp://www.amazon.co.jp/dp/1931841276

926 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:26:21 ]
現在XP+DX9なのですが、DX10に向けてDX9で磨いたほうがいい技術はどういうものでしょうか。
DX9からDX10に変わることで何がどう違うのかいまいち分からなくて・・・
DX8からDX9になったときのような仕様変更のレベルじゃないですよね、単なる思い込みでしょうか。

927 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:45:12 ]
必用なのはドキュメントに目を通し、サンプルを読み、
こんなところでグダグダグダグダくだらないことを言わない技術。

928 名前:デフォルトの名無しさん mailto:sage [2007/11/16(金) 23:52:22 ]
持っているグラボの性能にもよるけどピクセルシェーダに慣れておけばいいかもね






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<237KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef