2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2011/10/19(水) 22:47:45.95
回答する人も、質問する人も必ず読んでください

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

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

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

現在の最新バージョンはDirectX 11です。

前スレ
【C++】 DirectX初心者質問スレ Part35 【C】
http://hibari.2ch.net/test/read.cgi/tech/1305885376/

2 :デフォルトの名無しさん:2011/10/19(水) 22:55:30.98
スレ立て感謝です。

現在D3D11とDirect2DとDirectWriteを同時使用するためDXGIって何ぞや・・と勉強中。
DirectWriteサンプルのGabriolaフォントかっこよすぎワロタ。
実際の処理内容以上にすごいことをやっているように見えるw

3 :デフォルトの名無しさん:2011/10/21(金) 18:51:17.67
DirectX-ゲームグラフィックス-プログラミング-NextCreator-CREATOR
マスタリングDirectXプログラミング

入門者向けだとどっちがいい本?

4 :デフォルトの名無しさん:2011/10/21(金) 20:21:04.76
>>3
大きい本屋での立ち読みと、
アマゾンレビューを参考に選ぶべき


5 :クリエイト:2011/10/22(土) 12:00:25.85
DirectX9で2Dのシューティングを作っていて、自機の表示をrhwで行っていますが、
位置を変える度にバーテックスバッファをロックして座標の変更を行うのは非効率だと思い、
違う方法を考えています。DrawPrimitiveUPを使えばロックせずに済みますが、勉強のためと速度のために
DrawPrimitiveを使った方法にしたいと思っています。

ワールド変換などの行列を使うのかと思いましたが、座標変換済み頂点なので出来ないと思いました。
どういった方法がありますか。

6 :デフォルトの名無しさん:2011/10/22(土) 12:08:45.68
>>5
数回のDrawPrimitiveで一括描画できれば、upでもそうでなくても
2Dシューティングごときパフォーマンス足りなくなることはないだろう

7 :クリエイト:2011/10/22(土) 12:13:57.97
パフォーマンスに問題は無いだろうと思いますが、
ビデオカードの扱いに慣れたいのでDrawPrimitiveを使いたいです。

8 :デフォルトの名無しさん:2011/10/22(土) 19:29:38.75
>>4
大きい書店を回ってみましたがどこにもおいてませんでした(T_T)

9 :デフォルトの名無しさん:2011/10/22(土) 19:51:22.63
>>7
座標変換済みでも、正射影描画でも
一括ロック&書き変え→一気にDrawPrimitiveすればよろし
ちまちまロックは効率よくないが

10 :デフォルトの名無しさん:2011/10/22(土) 19:59:44.31
>>8
その大きな書店にある分かりやすそうなのを選ぶのはだめなん?

ここで質問するよりアマゾンレビューの方が参考になるとおもうなぁ

11 :デフォルトの名無しさん:2011/10/22(土) 20:08:48.57
>>10
情報資格試験や読み物や言語の本ばかりでDirectXの本が全然置いてないんです(;_;)

12 :デフォルトの名無しさん:2011/10/22(土) 20:48:35.08
三角形ストリップ1つに対してロック1回が最小?
幾つかのストリップをまとめて1回のロックでという訳にはいかないのかな?

13 :クリエイト:2011/10/22(土) 21:18:12.24
>>12,>>9
いくつかのストリップをうまくまとめて一回のバーテックスバッファの書き換えで済ます方法を思いつきました。ありがとうございました。
それでも毎フレーム一回はロックする必要がありそうです。

14 :デフォルトの名無しさん:2011/10/23(日) 00:40:38.81
>>11
図書館に取り寄せてもらうか、自分に合わないのを覚悟して買って勉強する。

15 :デフォルトの名無しさん:2011/10/23(日) 12:38:55.64
まずDirectXでなにをやりたいかによるんじゃないか?
タイトルだけみただけだが
上はグラフィックに重点を置いていて
下は全般的なDirectXくさそう。

個人的にはDirectXの入門書だったら
DirectX9 実践プログラミング( 2.0か1.0でいいとおもう )
11とかやるなら話は別だが入門なら9から初めていいとおもうし

その後Direct3D等々の専門書買うのがベストかと

16 :デフォルトの名無しさん:2011/10/23(日) 12:54:00.03
DirectX臭そう、まで読んだ

17 :デフォルトの名無しさん:2011/10/23(日) 14:24:41.53
読力なさ杉ワロタ

18 :デフォルトの名無しさん:2011/10/23(日) 14:25:52.30
DirectX臭そう、だけ読んだ

19 :デフォルトの名無しさん:2011/10/23(日) 14:58:43.45
だけ読んだ だけ読んだ。

20 :デフォルトの名無しさん:2011/10/23(日) 15:01:50.85
だけ読んだ だけ読んだ だけは読んだけど結局どこだけ読めばいいんだっけ?

21 :デフォルトの名無しさん:2011/10/23(日) 15:18:33.22
DirectX臭そう

22 :デフォルトの名無しさん:2011/10/23(日) 16:09:44.41
てめぇらツボりすぎだろ


23 :デフォルトの名無しさん:2011/10/23(日) 17:41:36.66
BAKA BAKKARI

24 :デフォルトの名無しさん:2011/10/29(土) 14:35:11.37
だな

25 :デフォルトの名無しさん:2011/10/29(土) 15:30:24.64
ふーん

26 :デフォルトの名無しさん:2011/10/30(日) 05:36:35.31
Direct3DDeviceって何を表してるの?どの単位で作るものなの?
描画先毎?VRAM毎?GPU毎?

27 :デフォルトの名無しさん:2011/10/30(日) 06:57:36.71
>26
頂点毎

28 :クリエイト:2011/10/30(日) 18:57:41.55
テクスチャードクアッドをDrawPrimitive()で2D描画しようと考えていますが、
下記のコードで描画されません。ライティングとマテリアルの設定を変えてみても駄目で、頂点情報の指定で根本的に誤解があるのかもしれないので指摘お願いします。
ちなみに、サンプルからのコピペでXファイルを表示させることはできているので、初期化部分は合っていると思います。

STANDARD_VERTEX lm[4];
LPDIRECT3DVERTEXBUFFER9 vb;
LPDIRECT3DTEXTURE9 pTexture;

STANDARD_VERTEX newVERTEX[]={
{-1.f,0.f,0.f,0,0,-1.f,0xffffffff,0.f,0.f},
{1.f,0.f,0.f,0,0,-1.f,0x55ffffff,1.f,0.f},
{-1.f,1.f,0.f,0,0,-1.f,0x55ff44ff,0.f,1.f},
{1.f,1.f,0.f,0,0,-1.f,0xffffffff,1.f,1.f}
};
memcpy(lm,newVERTEX,sizeof(newVERTEX));
MY_VERTEX_RHW *v;
STANDARD_VERTEX *vv;

pDevice->CreateVertexBuffer(sizeof(STANDARD_VERTEX)*4,0,D3DFVF_XYZ| D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1,D3DPOOL_MANAGED,&vb,NULL);
vb->Lock(0,0,(void **)&vv,0);
memcpy(vv,lm,sizeof(STANDARD_VERTEX)*4);
vb->Unlock();

//ワールド、ビュー、プロジェクション変換省略。

pDevice->SetTexture(0,pTexture);
pDevice->SetStreamSource(0,vb,0,sizeof(STANDARD_VERTEX)*4);
pDevice->SetFVF(D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_DIFFUSE | D3DFVF_TEX1);
pDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);

29 :クリエイト:2011/10/30(日) 18:59:41.09
追記です。
DirectX9で
struct STANDARD_VERTEX{
float x,y,z;
float nx,ny,nz;
D3DCOLOR colour;
float tu,tv;
};
です。スレ汚し失礼しました。

30 :デフォルトの名無しさん:2011/10/30(日) 19:07:12.03
>>28
SetStreamSourceの最後の引数のstrideは1つの頂点のサイズじゃね?
つまり*4がいらねぇんじゃないかな?
しばらくDirectXから離れてたから違ってたらごめん。

31 :クリエイト:2011/10/30(日) 19:27:46.28
回答ありがとうございます。msdnで確認したところ確かに一つ当たりでしたので、*4を外したんですが、
やはりまだ描画されていません。まだ間違っているところがあるみたいです。

32 :デフォルトの名無しさん:2011/10/30(日) 19:40:10.21
初期化処理って
パラメータセットの配列にゲームを実行可能なパラメータのすべての組み合わせを性能の良い順に詰めて
初期化が成功するまで配列を走査、全部失敗したらエラー通知
みたいな感じでいいの?


33 :デフォルトの名無しさん:2011/10/30(日) 20:09:26.80
>>29
CULL_MODEどうしてる? XYZRHWだとY+が下でXYZだとY+が上方向とかになって時計回りが上下反転するとかありそうだけど。
xファイルを原点で表示しながら横にそのソースを埋め込んでみたりは?
ライティングも疑うならNORMAL消してやってみるってのもどうか?
SetTextureStageStateも疑いたいからDirectXSDKのTut05_Texturesあたりに埋め込んでみて出るかどうか試してみるとか。
あんま役に立たなくてごめん。

>>32
いいんじゃね?
動く最低条件から調べて後はあればいいなって機能が使えればそっち優先するようにするのでもいいし

34 :クリエイト:2011/10/30(日) 20:21:10.04
>>33
カリングNONEにしたら描画されました。感動しました。
仰るとおり、上下逆になったので調整が必要ですが。
本当にありがとうございました。

35 :デフォルトの名無しさん:2011/10/30(日) 20:56:54.78
>>34
解決してよかった。

XYZRHWでシューティング作ってた人だよね?
XYZになったのならついでにXYZB1とかの行列インデックス使って
行列だけで自機や弾の移動とかやるのも面白いかもよ
STRIPだと縮退させない限りつながっちゃうからTRIANGLE_LISTでDrawIndexedPrimitiveになると思うけど
256個までの弾なら一度に描画できるようになる
(頂点ロックの代わりに行列の転送になる)

さらに自分でシェーダー書くなら4x4のfloatでなく2D平面の場合3〜4個のfloatだけでxyと回転(スケール)ができるよ

36 :デフォルトの名無しさん:2011/10/31(月) 00:31:05.54
DirectXでオブジェクトを1回送っただけで複数のカメラから見た画像を1度にレンダリングできますか?


37 :デフォルトの名無しさん:2011/10/31(月) 01:12:19.75
送るのは1回でもいいけど一度にレンダリングは無理だなぁ
VertexBuffer使いまわしで何度かViewMatrixだけ回転とかさせてそのたびにDrawPrimitive系でレンダリングになっちまう

38 :デフォルトの名無しさん:2011/10/31(月) 13:53:19.93
>>26

39 :デフォルトの名無しさん:2011/10/31(月) 15:03:27.89
>DrawPrimitive系でレンダリング
DrawPrimitiveの時点ではレンダリングなどされないんだが、何の話をしているんだ?

40 :デフォルトの名無しさん:2011/11/01(火) 00:52:51.15
>>39
発言が下らないよ

どっちにしてもzバッファもめちゃくちゃじゃね

41 :デフォルトの名無しさん:2011/11/01(火) 09:36:46.12
BackBufferWidth, BackBufferHeight
これはフルスクリーンの時はデバイスがサポートしてる値
ウィンドウなら自由(123などの半端な数でも可)ということでおk?


42 :デフォルトの名無しさん:2011/11/01(火) 12:29:23.97
イエス

43 :デフォルトの名無しさん:2011/11/01(火) 12:29:41.16
IDirect3D9に有効なDepthStencilFormatを列挙するメソッドがないとかおかしいだろ
どうやって調べるんだよこれ

44 :デフォルトの名無しさん:2011/11/01(火) 12:33:05.58
有効なって何よ
IDirect3D9::CheckDepthStencilMatchで駄目なん?

45 :デフォルトの名無しさん:2011/11/01(火) 12:52:07.46
初歩的な質問かもしれませんがお願いします。
背景に画像を描画する状態で、10〜20ほどの物体を個別に回転させたいのですが、
デバイスやスプライトはその数だけ生成する必要があるのでしょうか。

46 :デフォルトの名無しさん:2011/11/01(火) 13:07:48.12
>>45
まずはチュートリアルをやれ。

47 :デフォルトの名無しさん:2011/11/01(火) 13:19:37.00
>>42
あざっす


48 :デフォルトの名無しさん:2011/11/01(火) 14:45:03.76
>>47
いえいえ

49 :デフォルトの名無しさん:2011/11/02(水) 17:28:52.48
>>43
documentよめよ

50 :デフォルトの名無しさん:2011/11/02(水) 17:35:50.23
D3DFMT_D16の決め打ちでおk
だいたいこんな所でコケるしょんぼりシステムで派手なゲームがまともに動くわけない

51 :デフォルトの名無しさん:2011/11/02(水) 19:50:45.27
さすがにD_16はないわ。
なんもできねー。

52 :デフォルトの名無しさん:2011/11/02(水) 21:44:38.14
転売用にAmazon自動予約スクリプト使いたいけど、パソコンの台数と、回線の数、どっちが大事?

53 :デフォルトの名無しさん:2011/11/02(水) 21:45:41.60
>>52
ルールを守るのが大事。

54 :デフォルトの名無しさん:2011/11/02(水) 23:05:10.63
>>51
でも32だとクソ重くなるな
いまどきのグラボって速いところはクソ速いけど遅いところはちっとも進化してないな
塗りとかいまだにアフォかってほどおもいな

55 :デフォルトの名無しさん:2011/11/04(金) 00:36:34.09
頂点色じゃなくてマテリアルのディフューズ色を使ってポリゴンを描画させたいのですが
pID3DDevice->SetRenderState(D3DRS_COLORVERTEX, FALSE);
これでは頂点色が使われてしまい
pID3DDevice->SetRenderState(D3DRS_COLORVERTEX, TRUE);
pID3DDevice->SetRenderState(D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL);
これでもやはり頂点色が使われ、マテリアルの色は全く反映されません

ヘルプを見るとこれらのレンダーステートを設定すれば良いと思ったんですが
私の解釈が間違っているんでしょうか

56 :デフォルトの名無しさん:2011/11/04(金) 00:55:19.69
ライティング無効にしてるとかじゃないの?

余計なこと考えずに、SDKチュートリアルを4番から真似てりゃできると思うけどね

57 :デフォルトの名無しさん:2011/11/04(金) 02:55:50.84
表示キャラクタの移動量(dx, dz)から角度を計算したいんですが同じベクトル
または逆方向のベクトルの時にNaNになってしまいます(dxが0だと時々発生)

float angle;
D3DXVECTOR3 v(dx, 0, dz);

D3DXVec3Normalize(&v, &v);
angel = acosf(D3DXVec3Dot(&D3DXVECTOR3(0.0f, 0.0f, -1.0f), &v));

一応無理やり

if (!(ang < 7.0f)) ang = (va.z < 0.0f) ? 0.0f : D3DX_PI;

みたいにして対応してるんですがもっとスマートな方法はないでしょうか?
移動方向にキャラクタを向けたいんです

58 :57:2011/11/04(金) 02:57:27.56
if (!(angle < 7.0f)) angle = (v.z < 0.0f) ? 0.0f : D3DX_PI;
でした

59 :デフォルトの名無しさん:2011/11/04(金) 03:23:37.56
深夜のテンションでレスするとatan2じゃなくてacosfでいいのかな?

60 :デフォルトの名無しさん:2011/11/04(金) 08:55:06.41
2Dなら単位ベクトルの成分でatan2するだけでおk


61 :57:2011/11/04(金) 09:48:42.64
>>59-60
余計な処理もなく1行になりましたw
ありがとうございます

62 :デフォルトの名無しさん:2011/11/04(金) 10:20:35.44
あ、ていうかノーマライズもいらないか
(x,z)==(0,0)の時だけ注意してatan2(x, z)でいい

63 :デフォルトの名無しさん:2011/11/04(金) 17:21:46.75
自分で作るdirectxのゲームはフルスクリーン時でも簡単にキャプチャ取ったり
デュアルウィンドウの時はカーソルを隣のウィンドウに行き来したりしたいんですけど
ひょっとしてフルスクリーンで行うのは実は無理でウィンドウバーを消した拡大表示をするしかないですか?


64 :デフォルトの名無しさん:2011/11/05(土) 12:42:42.88
>>63
ん?・・・

65 :デフォルトの名無しさん:2011/11/05(土) 13:57:20.66
ひょっとしてウィンドウモードの時って1ピクセルでも描画領域のサイズが変化したらリストアするべきなんですか?

66 :デフォルトの名無しさん:2011/11/05(土) 14:38:37.07
>>65
バックバッファとウィンドウのサイズが常に一致することが望ましいならね

まあ、リサイズ時のデバイスのリセットを回避したいだけなら
デバイス作成時の既定のスワップチェインは無視して
ウィンドウに追加スワップチェインを割り当てると
リサイズ時は追加スワップチェインを作り直すだけで済むよ

ツール上のレンダリングを想定しててXP捨てていいならD3D11にするのがベストだけどね

67 :デフォルトの名無しさん:2011/11/05(土) 18:10:59.46
へえ

68 :55:2011/11/05(土) 22:03:11.27
>>56
2D描画なのでライティングは無効にしているんですけど、ライティング無効だと頂点色を使うことしかできないんですか?
頂点色を変えるのにいちいち全ての頂点の色変えるのもなあ、と思い、マテリアルのディフューズ色で出来たらと思ったんですが
できないっぽいですね・・・ 素直に全ての頂点色を変えようと思います

69 :55:2011/11/05(土) 22:10:09.80
へえ

70 :デフォルトの名無しさん:2011/11/05(土) 23:01:50.29
>>68
シェーダ使えやハゲ

71 :デフォルトの名無しさん:2011/11/06(日) 00:09:15.65
>>68
D3DTSS_CONSTANT/D3DTA_CONSTANTあたりで出来るんじゃねえの

使ったこと無いけど

72 :デフォルトの名無しさん:2011/11/06(日) 10:40:44.70
(´・ω・`)無いけどね

73 :デフォルトの名無しさん:2011/11/06(日) 16:27:22.43
そんな事するぐらいなら頂点色使うわ

74 :デフォルトの名無しさん:2011/11/06(日) 19:15:57.63
>>73
頂点色つかうよね

75 :デフォルトの名無しさん:2011/11/07(月) 06:51:31.13
頂点色を変えるのにいちいち全ての頂点の色変えるのもなあ
って何?

76 :デフォルトの名無しさん:2011/11/07(月) 06:57:55.89
モデラーに無い機能実装して実機でしか見れない状況作って
仕事増やして自分の居場所を確保するとか涙ぐましいにも程がある

77 :デフォルトの名無しさん:2011/11/07(月) 07:13:45.05
D3DXCreateTextureで生成したテクスチャに図形ソースのマスク後付けって出来ます?

78 :デフォルトの名無しさん:2011/11/07(月) 07:30:27.01
ロックしてアルファ値に書き込めばいいじゃねえの

79 :デフォルトの名無しさん:2011/11/07(月) 11:25:52.54
>>78
なるほど
あざまーす

80 :デフォルトの名無しさん:2011/11/07(月) 16:12:05.63
遅そうだけど

81 :デフォルトの名無しさん:2011/11/07(月) 18:23:09.94
>>79
いえいえ

82 :動け動けウゴウゴ2ちゃんねる :2011/11/08(火) 00:01:13.61
超初心者なんですが、Managedで勉強少ししたんですが、
C++で勉強した方が後々良いのでしょうか。
ちなみに、C#で正四面体を表示しようと
http://sorceryforce.com/manageddirectx/direct3d_box.html
上記のページを参考にコードを書いたのですがうまくいきません
スレ違いはわかってますが、できれば教えていただきたいです。
private byte[] vertexIndices = new byte[] {
0,1,3,
3,2,1,
1,0,3,
3,2,0
};
vertex = new VertexBuffer(typeof(CustomVertex.PositionColored),
4, device, Usage.None, CustomVertex.PositionColored.Format, Pool.Managed);
using (GraphicsStream data = vertex.Lock(0, 0, LockFlags.None))
{
CustomVertex.PositionColored[] vertices = new CustomVertex.PositionColored[4];
vertices[0] = new CustomVertex.PositionColored(1f, 1f, 1f, Color.Red.ToArgb());
vertices[1] = new CustomVertex.PositionColored(1f, -1f, -1f, Color.Green.ToArgb());
vertices[2] = new CustomVertex.PositionColored(-1f, 1f, -1f, Color.Blue.ToArgb());
vertices[3] = new CustomVertex.PositionColored(-1f, -1f, 1f, Color.Yellow.ToArgb());
data.Write(vertices);
vertex.Unlock();
}
indexBuffer = new IndexBuffer(device, 4 * 3 * 1, Usage.WriteOnly,
Pool.Managed, true);
using (GraphicsStream data = indexBuffer.Lock(0, 0, LockFlags.None))
{
data.Write(vertexIndices);

indexBuffer.Unlock();
}

83 :82:2011/11/08(火) 00:03:36.60
なんか名前欄の名前がどっかでコピーしたものを
そのままペーストしてしまったみたいで、気にしないでください。

84 :デフォルトの名無しさん:2011/11/08(火) 00:04:55.35
Managed Directxとかオワコン
SlimDXかXNA推奨

85 :デフォルトの名無しさん:2011/11/08(火) 10:17:20.86
XNAは資料とかあるけど、SlimDXはほとんどないよね


86 :デフォルトの名無しさん:2011/11/08(火) 11:55:39.41
ただのラッパーに必要な資料とは何ぞや

87 :デフォルトの名無しさん:2011/11/09(水) 06:53:02.80
>>82
パッと見、vertexIndicesがbyte配列なのがまずいんだと思うよ。
short配列にするかint配列にしてsixteenBitIndicesをfalseにしてやってみ。

88 :デフォルトの名無しさん:2011/11/11(金) 17:16:53.86
頂点ブレンドに関して、線形でやっていたのですが、つぶれに我慢できずデュアルクォータニオンにしてみました。
しかしねじれに関しては中々なのですが、曲げに関しては膨らんでしまうのがどうも・・・。

知人に、今はデュアルクォータニオンより良いブレンド方法があると聞いたのですが、どういうものなんでしょうか?

89 :デフォルトの名無しさん:2011/11/11(金) 17:55:05.98
>>88
知人に聞け

90 :88:2011/11/11(金) 18:16:01.14
知人はモデラーでして、曖昧な上にプログラム的なことはさっぱりなのです
検索しても出てきませんし、知人の勘違いですかねぇ

91 :デフォルトの名無しさん:2011/11/11(金) 20:16:39.47
>>90
モデリングソフトの話ならメーカー独自のワケわからんのがたくさんある
でも計算式が公開されてるわけではないんだぜ

92 :デフォルトの名無しさん:2011/11/11(金) 23:34:35.46
曲げに関して膨らんでしまうのはブレンド手法うんぬんよりも
むしろデータの方に問題があるんじゃね。
どんな入力データでも破綻なく描画できる魔法のブレンド手法っつー意味ならないよ。

ところでここは初心者スレな。

93 :デフォルトの名無しさん:2011/11/12(土) 00:51:55.22
上級者スレなんかあるのか
鬱出し脳スレも昔になりにけり

94 :デフォルトの名無しさん:2011/11/12(土) 05:54:09.18
C++とDirectxSDKを落として参考書もそろえたのに、1週間経ってもエラーだらけで何も始められていない
何がいけないんだ・・・

95 :デフォルトの名無しさん:2011/11/12(土) 06:22:18.55
>>94


96 :デフォルトの名無しさん:2011/11/12(土) 13:58:21.75
誰か上級者スレ立てろよ
俺みたいなスーパーハイレベルプログラマになると
このスレの話題は初歩的すぎて暇つぶしにもならない

97 :デフォルトの名無しさん:2011/11/12(土) 15:37:25.85
上級車は自己解決できるから、スレなど不要。

98 :デフォルトの名無しさん:2011/11/12(土) 18:08:57.81
中級者は?

99 :デフォルトの名無しさん:2011/11/12(土) 19:02:16.49
ハイパーかわいいスーパープログラマなオレも中級以上スレはあればうれしいな
会社でいまだにXP使わされてるやついるから9まででしかプログラムさせてもらえないオレに
テッセレーションとかの話題を見せ付けて癒してくれ

100 :デフォルトの名無しさん:2011/11/12(土) 19:06:59.99
曲線の話ならもしかしたらいくつかのサンプル点から連立方程式を解けば計算式が出・・・無理無理w

101 :デフォルトの名無しさん:2011/11/12(土) 21:01:57.59
サンプル点の最小の数としてとりあえず3つのP0、P1、P2があるとして
そこからコントロールポイントを各線に二つ生成して3次ベジェを作るとする
(3次はいろんなお絵かきソフトで使われてて馴染み深いから)

P1の両脇に生やすCPのの傾きは
sv = normalize( P2 - P0 )
もしくは
nv = normalize( P1 - P0 ) + normalize( P1 - P2 )
cv = P2 - P0
sv = cv - nv * dot( cv, nv )
とかやって長さは∠P1の角度をもとに線の長さの1/3〜2/3あたりになるようにし
3次元上に曲線を引いてみたら結構きれいにいったんだけど
それをPathとしてキャラを歩かせたりしたら
当たり前だが速度が一定にならず困ったもんだ。

ニコニコで有名なあのPV作成ツールのように時間軸も曲線で補間するしかないが
あれのパラメータでやると二分探索(Newton法)かBezierClipで求めることになるのかな

とかそういう話題でハイパーかわいいスーパープログラマ、オレを癒してくれ

102 :デフォルトの名無しさん:2011/11/12(土) 21:10:05.24
3D技術の話はスレチ
ここはDirectXを応用する前段階の人が来るスレです

103 :デフォルトの名無しさん:2011/11/12(土) 23:08:23.59
>>101
てか、こんな馬鹿な方法で1メーカーの1コンテンツを再現できるわけない
っていう予想も立てられずにやってみてる時点で無駄てか馬鹿

104 :デフォルトの名無しさん:2011/11/13(日) 11:41:55.56
3Dアルゴリズム全般
http://hibari.2ch.net/test/read.cgi/tech/1164171086/

105 :デフォルトの名無しさん:2011/11/15(火) 22:05:26.53
モニタの解像度より小さくできないゲーム(アプリでサイズを変更したら右と下が切れる)があるんだけど
これをキャプチャして縮小して再表示して遊ぶ、みたいなことはDirectXでできる?

106 :デフォルトの名無しさん:2011/11/15(火) 22:08:54.98
常にフルスクリーンなアプリなの?
意味が分からん

107 :デフォルトの名無しさん:2011/11/15(火) 22:17:49.55
今使ってるモニタよりゲームの要求してる解像度のが大きいということです
ゲームのクライアント領域が1024*768(無理やり小さくすると右と下がはみ出て描画されない)だけどモニタが1024*600しかない、という感じで


108 :デフォルトの名無しさん:2011/11/15(火) 23:29:19.53
>>107
キャプチャ・縮小再表示まではできる
遊べるかどうかは君のパソコンのスペック次第だろうが・・・無理だろ?
でかいディスプレイ買うべきだと思うけど、きっとネットブックか何かだろ?

109 :デフォルトの名無しさん:2011/11/16(水) 00:09:47.55
CreateFont関数って実用性ありますか?
ノベルゲームで使えるぐらい文字を表示したら遅かったりしませんかね?

110 :デフォルトの名無しさん:2011/11/16(水) 00:14:40.17
ID3DXFontですね、すみません

111 :デフォルトの名無しさん:2011/11/16(水) 08:50:57.20
>>110
bitmap画像用意する方法と比較検討したことがあるけど、速度面で大して有利でもなかった
ノベルゲームで使う分には申し分ないはずだけど、過去の資産があるなら乗り換えるほどじゃないよ

112 :デフォルトの名無しさん:2011/11/16(水) 17:41:49.71
>>111
なるほどありがとう

113 :デフォルトの名無しさん:2011/11/17(木) 03:25:08.69
Direct3Dのベクターデータをプリンターに出力することってできますか?

114 :デフォルトの名無しさん:2011/11/17(木) 08:09:33.43
レンダリング結果じゃなくベクトル?
まわりではポリライン使ってる人が多かったかも、ノーマライズしてるのだけ色分けしたりしてた

115 :デフォルトの名無しさん:2011/11/17(木) 12:11:55.30
>>114
>レンダリング結果じゃなくベクトル
そうです。ベクトルデータを出力したいです。
四苦八苦しましたが、どうも無理な気がして質問してみました。
ポリラインですか。ちょっと調べてみます!



116 :デフォルトの名無しさん:2011/11/17(木) 12:24:49.40
どういうふうに出力したいのか不明だし、それが分からない限り無理だろう。

117 :デフォルトの名無しさん:2011/11/17(木) 12:34:48.53
初心者スレだし、質問者に正確さだとか詳細さを求めてもなあ

118 :113:2011/11/17(木) 12:40:34.79
>どういうふうに
Direct3Dで描画してるんですが、
デバイス作成(CreateDevice)時にウィンドウのハンドルを渡しますよね。
プリンターの場合はウィンドウハンドルが存在しないのでデバイス作成できずに困っている状態です。。。



119 :デフォルトの名無しさん:2011/11/17(木) 13:39:36.16
ほら、結局は話を聞かないで余計な気を回すと、こういうくだらない落ちになる。

120 :デフォルトの名無しさん:2011/11/17(木) 14:49:08.99
>>118
発想の飛躍っぷりがすげー。
プリンタ(プロッター?)をD3Dデバイスとして扱おうってのは完全に用途外だし無理な相談。

そもそもD3Dを使わなきゃいかんほどのリアルタイム性が求められるような話でもないだろうから
それ用に設計された別のライブラリ探すか自力で組むかした方が早いと思うよ。

D3Dは3Dに関することなら何でもやってくれる魔法のライブラリ、ではないので。

121 :デフォルトの名無しさん:2011/11/17(木) 15:08:43.95
単にサーフェイスへレンダリングした後、それをBltすればいいだけの話。
D3Dは何でもやってくれる訳じゃないが、今回のケースぐらい処理できる。
直前にアホが混ざってるけど。

122 :デフォルトの名無しさん:2011/11/17(木) 15:28:20.05
デバイスコンテキストハンドルとDirect3Dのデバイスをごっちゃにしてるのかね
秒間60枚印刷するプリンタを想像してワロタ、パラパラ漫画とか作れそうだな

123 :デフォルトの名無しさん:2011/11/17(木) 15:47:43.50
>>121
>>115見る限りベクター形式の(解像度非依存の)印刷用データを
D3D使って吐きたい、というように読めるんで
そういう方向には対応してませんよという意味での「魔法のライブラリではない」なんだけど。

124 :デフォルトの名無しさん:2011/11/17(木) 15:48:51.27
物理的に印刷して遊べるゲームか
プリンタ何台必要なんだ


125 :デフォルトの名無しさん:2011/11/17(木) 18:05:21.70
環境型ゲームで主人公がカメラ持ってて、写真取ると物理的にプリンタから出てくるとか。妄想妄想・・・。

126 :113:2011/11/17(木) 18:19:10.50
自分の無知と言葉足らずのせいで混乱させてしまったようでスイマセン

「プリンターに出力」というのは紙を印刷するわけではなく
具体的には「仮想プリンタドライバに出力」するのが目的です

>>121
>それをBltすればいいだけ
Bltしちゃうとベクトルデータではなくなってしまいますよね?
D3Dにおけるベクトルデータがどれにあたるのかが分かってないですが。。。

>>120
勝手な推測ですが、あなたは私の目的を過不足なく理解してくれている気がします
>プリンタ(プロッター?)をD3Dデバイスとして扱おうってのは完全に用途外だし無理な相談
このトドメのひとことを言ってもらって諦めがつきました

頂いたレスにあるようにリアルタイム性が求められる部分ではないので
描画方法を変えるしかない、というのを前提に対策を考えようと思います

127 :デフォルトの名無しさん:2011/11/17(木) 19:16:24.47
ベクトルが何か分からないってのはかなり問題、3Dの基礎から順番に学ぶべきかと

128 :デフォルトの名無しさん:2011/11/17(木) 19:28:34.98
出力結果をどうしたいのかはっきりしないのに、
プログラムの組みようがないだろう。

129 :113:2011/11/17(木) 19:57:43.80
>>127
>3Dの基礎から
その通りですね
現状のコードは自分が書いたものでなく、処理の流れを最初から確認していったら
初っ端のCreateDeviceで困ってしまったという情けない状態です。。。
GDIでの処理は経験あるので簡単にできるとナメてました

>>128
出力結果をどうしたいのかはハッキリしているので大丈夫です
ただ、D3Dを使わずに現状の処理を実現できるんだろうか、と途方に暮れています

最悪BMPデータで妥協するしかないかもしれません

130 :デフォルトの名無しさん:2011/11/17(木) 20:05:55.76
3Dグラフィックスなんかで使う数論的な意味での「ベクトル」と
画像データの格納形式区分としての(ラスターに対する)「ベクター」は
言葉としては同じvectorだが全然別の概念なので注意な。

131 :デフォルトの名無しさん:2011/11/17(木) 20:08:28.76
>>129
たぶんあなたに必要なのはベクトルや行列を計算するライブラリであってDirectXではない
Direct3Dってのは最終的にラスタライズする使い方がメイン、これに固執してもきっと遠回りになる

132 :113:2011/11/17(木) 21:21:38.97
>>131
>たぶんあなたに必要なのはベクトルや行列を計算するライブラリであって
いえソッチじゃないです
>画像データの格納形式区分としての「ベクター」
こっちです

GDIでの画像処理の経験はあるのでそのへんの混乱はしてないです
日本語で表記するときベクターって書いたりベクトルって書いたりしちゃいますけど

133 :デフォルトの名無しさん:2011/11/17(木) 21:27:44.58
まずはプリンタに出力したいものをディスプレイに出せ。
あとはプリンタのDCにBltすれば解決する。
ただそれだけの話だ。

134 :113:2011/11/17(木) 22:01:11.82
>>133
>プリンタのDCにBltすれば解決する
BltしちゃうとBMPデータになっちゃいますよね?
最悪そうするしかないかと思っているんですが、
自分がやりたいのはベクトルデータの出力なんですよ。

かなり無理のある話だとは思うんですが。。。

135 :デフォルトの名無しさん:2011/11/17(木) 22:29:55.74
プリンタもディスプレイと同じ、点の集合で紙の上に何かを表示するデバイスだ
抽象的な話をしててもきりがない、具体的にプリンタの機種名出せよ

136 :デフォルトの名無しさん:2011/11/17(木) 22:32:16.72
2Dのベクタ画像を3D空間中で処理して、その結果をまたベクタ画像として取り出したいの?
だったらビューポート変換までやった後の画面バッファから頂点位置取り出せばいけるんでない?

137 :デフォルトの名無しさん:2011/11/18(金) 03:37:42.92
>>132
君がご所望のは以下のようなものだと思うのだけど、DXは関係ないと思うナー。
ttp://ja.wikipedia.org/wiki/Windows_Metafile

モデラー作って変換して印刷って感じになるような気がする、気がする。

138 :113:2011/11/18(金) 12:34:02.44
>>135
>プリンタもディスプレイと同じ、点の集合で紙の上に何かを表示する
いいえ違うと思います
プリンタは処理するときに点の集合でなくベクトルデータとして処理しています
自分は仮想プリンタドライブに出力し、
ベクトル形式の画像ファイルを作るのが目的です(これができれば紙にも印刷できると思いますが)。

>>136
ありがとうございます
調べてみます!

>>137
そうです。MetaFileのようなベクトル形式のデータが欲しいです
そのデータを作るうえでD3Dを利用できないのかなあと暗中模索しているところです

おそらく結論は>>120ってことになる気がしています。。。

139 :デフォルトの名無しさん:2011/11/18(金) 12:36:47.21
>>138
>プリンタは処理するときに点の集合でなくベクトルデータとして処理しています
それはプロッタじゃ

140 :デフォルトの名無しさん:2011/11/18(金) 13:09:28.89
>>138
プリンタの実装にもよるけど基本的に現行のプリンタは原理的にラスターではあるよ。
内部的にPostscriptやらHPGLやらのベクターデータを実装してるような機種もあるけど
いわゆるレーザープリンタとかインクジェットプリンタってのは最終的には全部ラスターに変換される。
ペンを使ってドローするタイプであれば確かに原理的にベクターだけど、それは>>139の言う通り、普通はプリンタとは言わずにプロッタと言う。

なんつーか>>135もあなたも自分のフィールドの知識だけで物事を断定するのは止めたほうがいいと思うよ。
っていうかもう結論出てるんだしそろそろスレチ。

141 :113:2011/11/18(金) 18:22:37.79
>>140
そうですね、「プリンタ」だと間違いですね

140さんの言う通り、話題がプリンタになってしまっているんで、ここらで終了にして下さい
色々と教えて頂きありがとうございました

142 :デフォルトの名無しさん:2011/11/19(土) 20:07:21.74
どこかにDirectShowのサンプルプログラム置いてるとこ無いですか?

143 :デフォルトの名無しさん:2011/11/19(土) 22:47:55.58
C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow
あたりはどうだ?

144 :デフォルトの名無しさん:2011/11/19(土) 22:59:37.67
>>143
7.1には入ってるのか。7.0なんだけど入ってなかったわ。
んで、7.1入れようと思うんだけど7.0は消しちゃっていいの?

145 :デフォルトの名無しさん:2011/11/19(土) 23:15:06.61
D3DXCreateTextureFromFileEx();でWidthとHeightに0を渡すと、
例えば元のファイルが96*48だったときには実際には128*64で読み込まれるではないですか
このとき元の画像は128*64に拡大されるのですか
それとも元の画像はそのまま左上に寄せられて、他の部分は何かで埋められてしまうのですか

146 :デフォルトの名無しさん:2011/11/19(土) 23:17:08.25
埋立工事されます

147 :デフォルトの名無しさん:2011/11/19(土) 23:22:37.90
どういった素材で埋め立てられるのですか

148 :デフォルトの名無しさん:2011/11/19(土) 23:44:55.87
>>144
うちのv7.0には入ってるんだけど 入れるときにケチってカスタムでサンプルのインストール省かなかった?

めんどくさくてv7.0消さずにv7.1入れちゃったけど7.0のほうにあって7.1にないものってなさそうだし消しちゃってもいいんじゃね?

149 :デフォルトの名無しさん:2011/11/20(日) 00:06:09.59
>>148
ありがとう。
7.0は元から入ってたわ。もしからしたらVC++入れるときに一緒にインスコされたのかな。
7.0は一応そのままにしてインスコしますた。

150 :デフォルトの名無しさん:2011/11/20(日) 00:53:27.01
>>145
フィルタの設定次第でどれにでもなる

151 :デフォルトの名無しさん:2011/11/20(日) 01:58:03.34
透過についての質問です。
http://uploader.sakura.ne.jp/src/up68425.png
上のようなエフェクトを実装しようと考えているのですが、
このような透過のポリゴンを描画する場合、お互いに前後干渉してしまってうまく描画されません。
http://uploader.sakura.ne.jp/src/up68426.png
上の図で説明すると、赤の右側を描画する場合、先に奥の黄色がないといけないし、
かといって黄色を先に描画すると左部分で赤が先に描画されていないといけないしでうまくいきません。
どのようにすればこの問題を解決できるでしょうか?

152 :デフォルトの名無しさん:2011/11/20(日) 02:20:36.83
円じゃなくて半円の画像にすればいいじゃん

153 :デフォルトの名無しさん:2011/11/20(日) 02:24:20.44
>>152
その方法だと回転しながら描画した場合にやっぱり干渉してしまいますね...。

154 :デフォルトの名無しさん:2011/11/20(日) 02:27:18.18
画像を表示で前後関係がうまくいかないってことならわかるけど
メッシュだったらなぜそうなるのか分からない

155 :デフォルトの名無しさん:2011/11/20(日) 02:35:05.96
あんまりいい方法じゃないかもしれんけど、クロスしてるメッシュ2枚をY軸でナイフ入れて4枚に分割するとかはどうだろう。

156 :デフォルトの名無しさん:2011/11/20(日) 02:38:32.56
加算で描けば?
Zの書き込みはDisableで。

157 :デフォルトの名無しさん:2011/11/20(日) 03:17:46.77
分割面が常に固定ならクリッピング使って交差面の前と後2パスとかで描けるだろうけど
例示されたエフェクトみたいなのならそんなにコストかけるようなもんでもないし素直に加算使っとけだな。
α付き交差ポリゴンを1パスでお手軽に綺麗に描く方法はいまんとこない。

まさか単純にZWriteとかZCompの使い方がわからんっていう話じゃないよな?

158 :デフォルトの名無しさん:2011/11/20(日) 16:25:05.98
>>151はエロサイトへの誘導、通報済です。

159 :デフォルトの名無しさん:2011/11/20(日) 23:06:29.93
http://iup.2ch-library.com/i/i0483091-1321797945.jpg

文字化けするんですが、直せますか?

160 :デフォルトの名無しさん:2011/11/21(月) 00:59:04.71
>>159
CharSetが0ってAnsiじゃね? そこをSHIFTJIS_CHARSETにして
FaceNameはフォントの名前の設定だと思うから"MS Pゴシック"とかそのへんだろ

161 :デフォルトの名無しさん:2011/11/21(月) 01:06:12.51
>>160
マジ神
ホントに出来た

162 :デフォルトの名無しさん:2011/11/21(月) 08:20:20.64
リファレンスよめよ、、、

163 :デフォルトの名無しさん:2011/11/21(月) 11:41:48.09
マジ神とか回答者をバカにしてるとしか思えんわ。
礼の言葉くらいきちんと言え。

164 :デフォルトの名無しさん:2011/11/21(月) 12:53:47.66
そんなんでいちいち目くじら立てるなら初心者スレなんて見なけりゃいいだろ…

165 :デフォルトの名無しさん:2011/11/21(月) 13:32:03.51
ここは紙スレですか?

166 :デフォルトの名無しさん:2011/11/21(月) 16:18:12.98
IDirect3DDevice9からD3DPRESENT_PARAMETERSを取得する方法はないので自分で保存するしか無いってことでいいんですか?

167 :デフォルトの名無しさん:2011/11/21(月) 17:11:19.06
スワップチェイン経由で取るがよい

168 :デフォルトの名無しさん:2011/11/21(月) 22:09:05.19
あのDirectX9で2D描画したいと思っています
DrawPrimitive系の関数って実用的にはどう使われて居るのですか
DrawPrimitiveは遅いので呼び出しは一フレーム一度だけにしろと云われたのですが
そうなると複数テクスチャとか複数ポリゴンを扱うときに一体どうしろと云うのですか
あと3Dゲームでの実用についても知りたいです

169 :デフォルトの名無しさん:2011/11/21(月) 22:12:49.13
>>167
ども

170 :デフォルトの名無しさん:2011/11/21(月) 23:14:14.45
>>168
Direct3D9って前提で話をするけど、余程カリカリにチューニングするってんでもなければ
大体「ポリゴン単位で呼び出すな」程度の認識で大丈夫。
1フレーム1回ってのは流石に現代では無理がある。
余程古いハードウェアを前提にするんでもなければ別に数十回DrawPrimitive呼び出ししても60fpsは出るよ。
もちろんまとめられるようなパスは可能な限りまとめるべきだけど。

171 :デフォルトの名無しさん:2011/11/21(月) 23:18:20.29
一般的に見て一番早い描画法はなんなの?
インデックスバッハとかいうやつですか?

172 :デフォルトの名無しさん:2011/11/21(月) 23:42:21.22
>>170
ありがとうござます
ポリゴン単位とはつまり長方形の板ポリ一つずつということで合ってますか
それと、まとめるというのは頂点バッファをと云うことですよね
もしそうならテクスチャも纏めなければなりませんか
ユーザ側で元画像を用意してもらい、また任意で板ポリの数を増やして貰おうと思っているのですが、
画像を纏めるのをユーザが負担すると云うのは考えたくないものです

173 :デフォルトの名無しさん:2011/11/21(月) 23:45:07.19
>>171
一応インデックスバッファありの方が行列演算の絶対数は減るので
GPU的には早いとは言える。
正直それ以外のところで発生するボトルネック要因がいっぱいあるので
速度を理由にインデックスバッファを採用する理由はあんまないが。

174 :デフォルトの名無しさん:2011/11/22(火) 00:09:12.79
>>172
板ポリ一つずつで合ってるよ。
100スプライトなら4頂点+6インデックス+DrawPrimitive*100ではなくて
400頂点+600インデックス+DrawPrimitive*1する方が良いっちゃ良い。
その場合はもちろんテクスチャも一つにまとめるにこしたことはないけど
パターン数が少ないようならパターン毎にインデックスバッファを用意しておいて
パターン毎にパスを切り替えるやり方でもいいかもね。

175 :デフォルトの名無しさん:2011/11/22(火) 00:13:33.76
同じテクスチャ同士で頂点つなげてDrawPrimitiveならテクスチャの枚数分のオーバーヘッドで済むからもう十分じゃね?

176 :デフォルトの名無しさん:2011/11/22(火) 07:43:17.82
>>174-175
本当にありがとうございました


177 :デフォルトの名無しさん:2011/11/22(火) 12:16:53.30
すみません。.x形式でモデル&モーションを書き出しているのですが、
ツールが右手座標系で、プログラムが左手座標系なので反転させようとしています。
モデルはちゃんと反転できたのですが(x軸を-1倍)
ボーンの座標(中心位置)の反転(x軸を-1倍)が上手く行きません。

SkinWeights 項目のマトリクスの4_1(13番目)
FrameTransformMatrix relative 項目のマトリクスの4_1(13番目)
を-1倍してみたのですが、単純な回転モーションで確認しても変化が有りません。
ボーンの座標ではなくAnimationKeyに座標など全てが収まっているのでしょうか?

178 :デフォルトの名無しさん:2011/11/22(火) 13:09:25.40
.x形式まともに使ったことないからはっきりは言えないけど
アニメーションキーが存在していてそれを使って再生しているのであれば
普通は非アニメーション状態の変換行列は無視される。
(じゃないと取り回しが色々と不便になるから)
なのでアニメーションキーを変換する必要はあるだろうね。
その場合、おそらくメッシュの法線も反転するけど。

179 :177:2011/11/22(火) 14:57:57.57
>>178
>普通は非アニメーション状態の変換行列は無視される。
>(じゃないと取り回しが色々と不便になるから)
そうなんですね。その方が計算減りますよね。
ありがとうございました。 もう少し粘ってだめなら逆向きに作るとします。

180 :デフォルトの名無しさん:2011/11/22(火) 21:51:29.16
すみません、質問です。
新しく接続されたコントローラー(デバイス)を認識して
DIRECTINPUTDEVICE8で取得したいのですが、DIRECTINPUT8::FindDevice()
が"クラスが登録さてません"というエラーを返してうまくいきません。
引数にはDBT_DEVICEARRIVAL→DBT_DEVTYP_DEVICEINTERFACEイベントの
DEV_BROADCAST_DEVICEINTERFACE::dbcc_nameとdbcc_classguidを渡しています。
もしかして使い方が間違ってるでしょうか?分かる方がいらしたら教えてください。
デバイス認識の試験にはコントローラを使用してます。

181 :デフォルトの名無しさん:2011/11/22(火) 23:45:40.99
void CMain::TP2(int left_in_x,int up_in_y,int right_in_x,int down_in_y,float *left_x,float *up_y,float *right_x,float *down_y){

*left_x=(1/16*(left_in_x-1));
*up_y=(1/16*(up_in_y-1));
*right_x=(1/16*right_in_x);
*down_y=(1/16*down_in_y);
}


float
Tx_Left_X,
Tx_Right_X,
Tx_Up_Y,
Tx_Down_Y;

TP2(1,1,1,1,&Tx_Left_X,&Tx_Up_Y,&Tx_Right_X,&Tx_Down_Y);

うまく数字が変わらないんです
ホントはTP2関数を使ったら
Tx_Left_Xとかの値が変わってるはずなんですが…

182 :デフォルトの名無しさん:2011/11/23(水) 01:16:16.28
とりあえず
1.0f/16.0f
こんな感じにしてみるとか・・・w

183 :デフォルトの名無しさん:2011/11/23(水) 02:28:40.61
だね。/も*も左から結合されていくから1/16が整数演算でゼロになっているという話。

184 :デフォルトの名無しさん:2011/11/23(水) 06:25:21.80
>>180
実行中に接続されたコントローラーを認識したいというのでもなければ
FindDeviceじゃなくてEnumDevices使えば?

185 :デフォルトの名無しさん:2011/11/23(水) 08:06:35.61
>>182-183
ありがとうございました
レスした後にこれは文法の問題だと気づきました
DirectX関係無いですよね、スレチですすみません

186 :デフォルトの名無しさん:2011/11/23(水) 16:02:18.48
HRESULT Render() {
if(SUCCEEDED(d3ddev->BeginScene())) {
RenderImpl();
if(SUCCEEDED(d3ddev->EndScene())) { return d3ddev->present(0, 0, 0, 0); }
else { ??? }
}}

EndSceneが失敗したらなにをするべきなんでしょうか
これって失敗したまま放置したら永遠にロックされたままになりますよね?

187 :デフォルトの名無しさん:2011/11/23(水) 17:52:41.59
>>186
EndScene呼び出し自体は単にデバイスに状態を通知するだけなので
BeginSceneが適切に呼び出されている限り失敗することはまずないよ。
失敗するのはBeginSceneとEndSceneがきちんと組になってない時くらい。

なので、もしも失敗したのなら、やるべき事はコードパスを見直すことだね。
その時は多分ロックとか以前の問題なので。

188 :デフォルトの名無しさん:2011/11/23(水) 19:16:19.85
>>184
ありがとうございます。
EnumDevicesは初期化時に呼びます。コントロ−ラーがなかった場合や
足りなかった場合に接続されたコントローラーを取得したいので
FindDeviceを使用しようとしてます。

FindDeviceで失敗したコントローラーでもEnumDevicesでなら列挙されることは
確認済みですがEnumDevicesは遅いので出来ればFindDeviceを使用したいと思っています。
原因分かる方いらしたらお願いします。

189 :デフォルトの名無しさん:2011/11/23(水) 19:41:49.82
>>187
あざっす
安心しました

190 :デフォルトの名無しさん:2011/11/24(木) 17:00:12.86
D3DXVECTOR3    vFace;
DWORD      dwFaceIndex;
VERTEX      *vertex;// 自分で定義した構造体

D3DXIntersect( BenkiMesh, &vRay, &vRayDir, &bHit, &dwFaceIndex, NULL, NULL, &Dist, NULL, NULL
UnkoMesh->LockVertexBuffer(ほにゃららREADONLY, (void**)&vertex );
vFace = vertex[dwFaceIndex].position;
UnkoMesh->UnlockVertexBuffer();


…みたいにして、D3DXIntersectで当たり判定みたいな事して、
LockVertexBufferしてポリゴンのデータを1つだけ取得して、
値を画面に表示させてみたらところどころに「-1.#R」ってのがあるんよ。

これ、一体どうしたら正しい値が入ってくるますか?

191 :デフォルトの名無しさん:2011/11/24(木) 18:00:12.28
交差判定はBenkiMesh上でやってるのにLockVertexBufferで参照しようとしているのが
UnkoMeshなんだが、こりゃ同じメッシュを指してるっつーことでいいのかね。
あとそのコードには書いてないがbHitフラグはちゃんと確認してるか?

192 :デフォルトの名無しさん:2011/11/24(木) 18:29:57.23
あとdwFaceIndexに戻って来るのは頂点インデクスじゃなくて面インデクスなのに
それでVertexBufferを参照しているのもおかしい。

193 :デフォルトの名無しさん:2011/11/24(木) 18:32:07.44
交差判定もLockVertexBufferもBenkiMeshに対してでした。
LockVertexBufferは、bHitがTRUEを返した場合に行っています。

書き間違えてたよ。ご指摘、ありがとうね。


>>190投下の後でコードを見直してみたら、
BenkiMesh->OptimizeInplace( D3DXMESHOPT_ATTRSORT | D3DXMESHOPT_VERTEXCACHE, &lpdwAdjacency[0], 0, 0, 0 );
という行があったんだけど、(必要があって書いたコードだったはず。結構前だったから忘れちゃった。)
これが悪さしてるのかな?



194 :デフォルトの名無しさん:2011/11/24(木) 18:36:58.87
>>192
言われてみれば…確かにそうですね。
直してきます。
ありがとうございました。


195 :デフォルトの名無しさん:2011/11/25(金) 18:24:43.70
プリミティブ描画の時に

196 :デフォルトの名無しさん:2011/11/25(金) 18:26:03.87
途中送信したすまん
プリミティブ描画の時にTRIANGLESTRIPにしたらカリングモードに関係なく全部描画されるよね?

197 :デフォルトの名無しさん:2011/11/25(金) 18:58:57.07
全部描画されるの意味が「常にCullMode=None指定するのと同じって事だよね」という意味ならNO。
偶数番目の面のカリング順判定が入れ替わる(CW⇔CCW)だけでカリング自体の適用はLISTの場合と一緒。

198 :デフォルトの名無しさん:2011/11/25(金) 19:23:10.26
なるほどありがとう

199 :デフォルトの名無しさん:2011/11/26(土) 01:54:49.23
>>190です。
こんな感じに変更したら、
何か、うまくいっちゃったので晒していきます。。



D3DXIntersect( BenkiMesh, &vRay, &vRayDir, &bHit, &dwFaceIndex, NULL, NULL, &Dist, NULL, NULL );
if( bHit )
{
  BenkiMesh->GetIndexBuffer( &lpIB );
  BenkiMesh->GetVertexBuffer( &lpVB );
  lpIB->Lock( 0, 0, ( void** )&pIndices, D3DLOCK_READONLY );
  lpVB->Lock( 0, 0, ( void** )&pVertices, D3DLOCK_READONLY );
  pfVertices = ( float* )&pVertices[BenkiMesh->GetNumBytesPerVertex() * pIndices[dwFaceIndex * 3]];
  vUnkoPosition[0] = D3DXVECTOR3( pfVertices[0], pfVertices[1], pfVertices[2] );
  pfVertices = ( float* )&pVertices[BenkiMesh->GetNumBytesPerVertex() * pIndices[dwFaceIndex * 3 + 1]];
  vUnkoPosition[1] = D3DXVECTOR3( pfVertices[0], pfVertices[1], pfVertices[2] );
  pfVertices = ( float* )&pVertices[BenkiMesh->GetNumBytesPerVertex() * pIndices[dwFaceIndex * 3 + 2]];
  vUnkoPosition[2] = D3DXVECTOR3( pfVertices[0], pfVertices[1], pfVertices[2] );
  lpVB->Unlock();
  lpIB->Unlock();
  lpIB->Release();
  lpVB->Release();
}


200 :デフォルトの名無しさん:2011/11/27(日) 21:43:09.71
テクスチャ座標の誤差ってどうにかなりませんか?

201 :デフォルトの名無しさん:2011/11/27(日) 21:52:07.65
ちゃんと質問しろ

202 :デフォルトの名無しさん:2011/11/27(日) 22:14:05.37
ごめん

Direct3D9で頂点バッファを使ってテトラゴンを描画するとき、
2048*2048pxのテクスチャのx, y, w, h = 1344, 96, 48, 48の範囲を貼りつけたいのですが

頂点を
{0.0f, 0.0f, 0.0f},
{0.0f, 48.0f, 0.0f},
{48.0f, 0.0f, 0.0f},
{48.0f, 48.0f, 0.0f}
のように定義して、
テクスチャ座標を
{1344.5f / 2048.0f, 144.5f / 2048},
{1344.5f / 2048.0f, 96.5f / 2048},
{1392.5f / 2048.0f, 144.5f / 2048},
{1392.5f / 2048.0f, 96.5f / 2048}
こうすると元の画像と比べて横方向に広がるのです

http://www.dotup.org/uploda/www.dotup.org2316033.png
上半分がDirectXの描画で、下半分が画像をビューワで開いたものです

203 :デフォルトの名無しさん:2011/11/27(日) 22:25:08.54
テクスチャでマップチップを表現するのが難しいってやつだな
フィルタとかかかったりするとサンプリングするとこがまたおかしくなってとなりの奴まで
描画に使っちゃったりして超うまくいかない

っていうかその画像なら1フレームでチップ全部必要になるわけじゃねぇんだから
あきらめて別のテクスチャにしろよ的な

マップチップで描画したいマップに関しては綺麗に表示させたいなら
テクスチャ1枚でなにやらやろうとするのは鬼門かもしれんな
環境や条件を絞った上でやればなんとかなるかもしれんが・・・
PCの設定によってうまくいったりいかなかったり

ま、ハードウェアの苦手なことはするもんじゃないよ(笑)

204 :デフォルトの名無しさん:2011/11/27(日) 22:31:47.62
データの方に誤差も考えてマージン持たせるんだよ

205 :デフォルトの名無しさん:2011/11/27(日) 22:32:53.29
>>202
そのコード片だけじゃ頂点とテクスチャのy座標の対応が逆なってるようにしか見えんけど

それと+0.5テクセルずらすんじゃなくて位置座標から-0.5ピクセルずらした方がいい
理由は忘れた

206 :202:2011/11/27(日) 22:54:35.44
>>203
とりあえずフィルタはNONEにしてるのですが
つまり48*48の範囲の正確な描画はDirect3Dでは出来ないのですね

>>204
データというのはテクスチャの事ですか
そうなると厳しいですね……

>>205
特にy座標が逆になってるようにはみえませんが

207 :デフォルトの名無しさん:2011/11/27(日) 22:57:10.93
浮動小数の形式上の誤差はなかなか逃れられんだろう。

208 :202:2011/11/27(日) 23:05:06.31
なかなかと云うからには逃れる方法はあるのですか

209 :デフォルトの名無しさん:2011/11/27(日) 23:05:48.95
>>206
>特にy座標が逆になってるようにはみえませんが

ん? Direct3Dのテクスチャ座標って上から下に向かうよ?
まあ読み込み時に逆なってるなら帳尻は合うのかもしらんけど

210 :デフォルトの名無しさん:2011/11/27(日) 23:15:48.04
>>208
実用に足るかは知らないが、誤差のでない数字っていうのが有るのよ。
具体的には、少数点以下のビットの保持方法を把握しないと難しい。
少数点以下の数字をビットシフトすると、1/(2n)になるのは知ってるよね。
情報の教科書とかにかいてあったと思うけど。
そういう数字はごさがほぼでない。でも実用に足るかはしらない。

211 :デフォルトの名無しさん:2011/11/27(日) 23:22:38.14
1/(2^n)だな。

212 :デフォルトの名無しさん:2011/11/27(日) 23:50:24.83
横に広がるならProjectMatrixに入れてるアスペクトの問題じゃね?
ためしにテクスチャ張ってない正方形でも描いてキャプチャしてみて横に広がってたらそれ

213 :デフォルトの名無しさん:2011/11/28(月) 00:03:06.27
画面作成時にタイトルバーの大きさが考慮されてなくてクライアント領域みてみたら
実は想定していたサイズじゃなかったってオチな
でもそれを解決してもなおこの問題は解決には至っていないと思う
なんか方法変えたほうがいいと思うんだよね

214 :デフォルトの名無しさん:2011/11/28(月) 00:27:55.52
だよね

215 :デフォルトの名無しさん:2011/11/28(月) 04:03:59.50
テクセル1.0は実質(テクスチャの軸あたりの総ピクセル数+1ピクセル)目なので
きっちりパーピクセル対応させようと思うと計算が面倒くさいよね。


216 :デフォルトの名無しさん:2011/11/28(月) 07:44:42.33
>>210
なるほど、少し調べてみますん

>>212
テクスチャを貼らなければきちんとした48*48の正方形が描画されます……と思ってよく見たら横に伸びてますね
クライアント領域が640*480のウィンドウに正射影で
D3DXMatrixOrthoLH(&projection, 640.0f, 480.0f, 0.0f, 100.0f);
とやってますが
これでは問題があるのでしょうか

>>213
そこに関しての調整は既に一度躓いていて修正済みです

217 :デフォルトの名無しさん:2011/11/28(月) 09:48:26.83
ちゃんとAdjustWindowRect使って領域計算してウィンドウ作ってるかとか
バックバッファとかビューポートのw,hがちゃんとクライアントレクトのw,h(640*480)になってるかどうかとか

218 :デフォルトの名無しさん:2011/11/28(月) 14:03:11.81
>>216
横はいいけど縦は?
Ortho使ってアスペクト比が狂うってのはバックバッファ→ウィンドウ転送でサイズが合致してないか
どっかで余計な値掛けてるかくらいしかないと思うんだがなあ。
全体的に一様に拡大されてるってんならわかるけども。

Pixで実行時のバックバッファ内容をキャプチャして比較してみた場合だとどうかね。

219 :202:2011/11/28(月) 16:36:04.73
>>217
GetSystemMetrics()を使ってDLGFRAMEとCAPTIONを適切な分だけ足してウィンドウを作っているのですが
AdjustWindowRect()の方が正確なんですかね

>>218
縦は正しく描画されます
とりあえずPixというものを初めて使ってみます

220 :202:2011/11/28(月) 21:35:19.29
ああ……

221 :202:2011/11/28(月) 21:38:59.30
ごめんなさい、こちらの凡ミスでした
どうやら頂点座標の打ち間違えだったようです。質問を認めるときに何故気が付かなかったのか解りませんが……
本当にありがとうございました。お騒がせしました

222 :デフォルトの名無しさん:2011/11/28(月) 23:07:37.31
(#^ω^)ビキビキ

223 :202:2011/11/28(月) 23:59:45.24
>>222
バーカ

224 :デフォルトの名無しさん:2011/11/29(火) 09:32:44.18
>>221
自分の凡ミスだと正直に報告した点については評価しよう。
今度逆ギレする時は名前欄ちゃんと消したかどうかを確認しとけよ。

では次の方どうぞ。

225 :デフォルトの名無しさん:2011/11/29(火) 21:57:21.45
俺はそうは思ってなくて
実はやり方自体のまずさに気がついてこの方法での実現を断念したんだと思う

226 :デフォルトの名無しさん:2011/11/30(水) 00:12:13.98
別にどうでもいい

227 :デフォルトの名無しさん:2011/11/30(水) 06:08:38.25
何気に昔ながらの2Dゲー作るって結構知識いるんだよね
矩形ごとにDrawPrimitiveすると遅くて描画間に合わないし
テクスチャまとめると今度は横のチップの絵が出てきたりするし
フィルタかけるとすごくきったないしフィルタのONOFFはユーザ側の設定依存になるし

まあ、こんな程度だと思うけど

228 :デフォルトの名無しさん:2011/11/30(水) 08:25:06.74
タイリングパターンとチップからでかいテクスチャを生成するんじゃダメなの?

229 :デフォルトの名無しさん:2011/11/30(水) 09:15:44.71
メモリが無限にあるならそれでいんじゃね

230 :デフォルトの名無しさん:2011/11/30(水) 10:50:52.32
ここで思考停止するのが凡人
ここからメガテクスチャを生み出したのが天才

231 :デフォルトの名無しさん:2011/11/30(水) 12:22:38.90
昔ながらの2Dゲームが作りたいならDirectDrawでも使った方がよっぽどいいと思うが。

232 :デフォルトの名無しさん:2011/11/30(水) 14:55:32.86
DirectDrawってまだあるの?

233 :デフォルトの名無しさん:2011/11/30(水) 15:02:23.34
無いけど使える

234 :デフォルトの名無しさん:2011/11/30(水) 21:08:57.55
>>233
詳しく教えてほしいな!
昔のソース引っ張りだしてきたらビルドエラー起こすもんで
DirectDraw7からDirect3D9へ引っ越し作業してたんだ
過去のコード使えるならその方がありがたい

235 :デフォルトの名無しさん:2011/11/30(水) 22:36:05.65
GDI+でいいじゃん

236 :デフォルトの名無しさん:2011/11/30(水) 22:54:59.88
BeginSceneって必ずEndSceneとペアなんですか?

237 :デフォルトの名無しさん:2011/11/30(水) 23:15:04.43
ペアだと何か困るのですか?

238 :デフォルトの名無しさん:2011/11/30(水) 23:28:32.09
>>236
どっちか一人にすると悪さをするので必ずペアで呼んであげましょう

>>234
233じゃないが、DXSDK(June 2010)からddraw.libが含まれてないそうなので
それ以前のSDKをどっかから探してインスコしてパス張ってやればいいんじゃないか
以前と挙動が同じかどうかはわからんが

239 :デフォルトの名無しさん:2011/11/30(水) 23:51:05.40
>>238
ああそういう意味で「ないけど使える」って事か

240 :デフォルトの名無しさん:2011/12/04(日) 12:22:54.10
ワールド座標をスクリーン座標とZバッファの値に変換する方法を教えてください。

241 :デフォルトの名無しさん:2011/12/04(日) 12:49:54.34
出来ればこんな感じが良いです。省略した部分をどう書けば良いのかが分からなくって・・・

void Convert(D3DVECTOR3 &vectScreen,D3DXMATRIXA16 mWorld,D3DXMATRIXA16 mView,D3DXMATRIXA16 mProj,D3DVECTOR3 vWorld)
{
/* 省略 */
}


242 :デフォルトの名無しさん:2011/12/04(日) 12:55:01.75
3Dでボンバーマンのようなものを作ってるんだけど3Dだと透視画法のように奥に行くほど小さく見えるじゃないですか
あれ微妙にプレイしづらいんで正規品の2Dボンバーマンの見た目にマッチするように奥行きと大きさを無関係に表示させたいんですけど
そういう場合はどう設定すればいいんですか?

243 :デフォルトの名無しさん:2011/12/04(日) 12:58:17.35
>>242
3Dにしない

244 :デフォルトの名無しさん:2011/12/04(日) 13:06:02.08
正射影

245 :デフォルトの名無しさん:2011/12/04(日) 14:21:18.44
理屈の上ではカメラから遠く離れた場所にオブジェクトを置き、
それに合わせて前方・後方クリップ面を遠く、視野角を狭くすればそういう効果は得られると思う。
ただZバッファがどうなるかは知らん。
奥行きの影響を限りなくゼロじゃなくてゼロにする必要があるならそういう関数があるのかな?
なければ射影行列を自前で設定することになるかも。


246 :240=241:2011/12/04(日) 17:47:17.39
色々調べた結果、D3DXVec3Projectという関数がありました。
ちなみに242は私と違います。

247 :デフォルトの名無しさん:2011/12/04(日) 21:06:28.37
とりあえず音鳴らすときはXAudio2でいいの?
頑張ってDirectMusicで作ったらヘッダがなくなってたし・・・

248 :デフォルトの名無しさん:2011/12/04(日) 21:09:39.33
もうXPは切り捨てていいの?


249 :デフォルトの名無しさん:2011/12/04(日) 21:11:52.47
>>248
そ、そんな言い方ってあんまりだよ…

250 :デフォルトの名無しさん:2011/12/04(日) 22:49:45.48
XPからWindows8にアップデート出来るとかうんたらかんたら

251 :デフォルトの名無しさん:2011/12/04(日) 23:47:37.72
>>247
おk。ただirrKlang楽だよirrKlang

252 :デフォルトの名無しさん:2011/12/05(月) 00:09:19.61
ハード的にもXP積んでるやつは結構厳しくなってきたと思うしなぁ・・・
どうしてもやって欲しい人がXP持ちだとか言わないなら、もう切っても良い頃合いだと思う。俺はね


253 :デフォルトの名無しさん:2011/12/05(月) 04:46:32.28
変える必要性を感じない

254 :デフォルトの名無しさん:2011/12/05(月) 10:09:53.68
感じないね

255 :デフォルトの名無しさん:2011/12/05(月) 11:14:26.53
ゲームパッドなんですが読み込んで普通に利用するのはわかるのですけど
逆にこちらから操作(プログラム上から押したことにする)って可能ですか?

パッド二つ接続してる状態でパッド1の操作をパッド2で操作出来るように
出来ないかなと思っています

256 :デフォルトの名無しさん:2011/12/05(月) 11:24:14.95
生入力をゲームコマンドにマッピングするクラスをちょっと変更するだけでいいよ

257 :デフォルトの名無しさん:2011/12/05(月) 12:58:42.33
>>256
アクションマッピングを使うってことでしょうか?
まだよくわからないので調べてきます

簡単に言えば、よくあるパッド入力→キー入力変換のソフトみたいな感じで
パッド入力→他のパッドの入力に変換したいのです
そんな簡単なものじゃないのかな…


258 :デフォルトの名無しさん:2011/12/05(月) 13:09:59.51
パッドに入力があったらSendMessageでキーボードの入力イベントを送ればいいよ

259 :デフォルトの名無しさん:2011/12/05(月) 14:53:40.25
>>255
関数ポインタで差し替えるとか、そもそもキーコンフィグがどうやって実現してるとか、
そういう話じゃないの?

え?勘違いですか、そうですか・・・・。

260 :デフォルトの名無しさん:2011/12/05(月) 19:21:36.39
>>258>>259
ちょっと説明が下手で申し訳ないです
「Joy to Key」 じゃなくて 「Joy to Joy」 をやりたいなあと
パッド1のAボタン押したら、パッド2のAボタンが押された事になるみたいな

色々調べてみるとDirectXじゃなくてHIDとかで直接やらんといけないのかな
自分はスキル不足なので難しいのかもしれませんね

261 :デフォルトの名無しさん:2011/12/05(月) 19:26:15.21
それは、同アプリ内で?別アプリに送る感じで?
SendInputってパッド情報おくれたっけ?

262 :デフォルトの名無しさん:2011/12/05(月) 21:37:15.79
>>261
別アプリですね
別のアプリで反応出来るようにという感じです
調べてみるとキーとマウスだけという感じですかね

263 :デフォルトの名無しさん:2011/12/05(月) 21:54:19.72
それはDXの範疇超えてる気がするんだけど。自分はわからん!

264 :デフォルトの名無しさん:2011/12/05(月) 21:57:47.93
コントローラークラスでプロセス間通信すれば?

265 :デフォルトの名無しさん:2011/12/05(月) 22:26:02.71
また、botでも作ろうとしてるのか?
いい加減に乞食に餌やるなよお前等

266 :デフォルトの名無しさん:2011/12/06(火) 02:36:57.21
検索してもあまり出てきませんね
連射を作ってる人が近かったかなという感じです

確かに範疇超えてるみたいです
もう少し調べてみて諦めるか何かしてきます
ありがとうございました

ちなみに、別アプリというと怪しく聞こえるかもしれませんがbotではありません
それならパッドはいらないですから
単純に余ってるパッドをキーやマウスのように、メインのパッドにアサインしたいだけでした

267 :デフォルトの名無しさん:2011/12/06(火) 09:21:00.38
キーボードで操作できないPCゲーなんて稀なんだから
パッドからキーボードでいいじゃん


268 :デフォルトの名無しさん:2011/12/06(火) 23:31:35.00
いいじゃんね

269 :デフォルトの名無しさん:2011/12/07(水) 12:09:43.42
いいじゃんね

270 :デフォルトの名無しさん:2011/12/07(水) 12:52:04.51
HLSLでif文を使うと遅いらしいから、エフェクトインターフェース側でパスを切り替えて擬似的に実現しようと思うのだけど、
どっちの方が速いんだろう?

271 :デフォルトの名無しさん:2011/12/07(水) 13:39:16.09
動的分岐じゃないならifでいい

272 :デフォルトの名無しさん:2011/12/07(水) 14:00:46.54
そうなのかサンクス

273 :デフォルトの名無しさん:2011/12/07(水) 14:08:32.00
動的分岐 語句がわからなかったからググってみた

http://msdn.microsoft.com/ja-jp/library/cc627119(v=vs.85).aspx
動的分岐は、シェーダーの実行を高速化するのに役立ちます。ジオメトリまたはピクセルが表・・・・

さらにわからなくなった
動的分岐ってなんですか?

答えてくれた方thx

274 :デフォルトの名無しさん:2011/12/07(水) 14:09:45.15
アセンブラ出力して比べるのが一番確実

275 :デフォルトの名無しさん:2011/12/07(水) 20:53:41.14
いいんじゃね

276 :デフォルトの名無しさん:2011/12/09(金) 17:16:40.69
調べても分からない=まだ経験値が足りないんだ

二つめの街にいったところで古代竜と戦おうとしているようなものだ

277 :デフォルトの名無しさん:2011/12/09(金) 18:28:52.63
ものだね

278 :デフォルトの名無しさん:2011/12/10(土) 16:14:06.38
的確すぎわろた


279 :デフォルトの名無しさん:2011/12/11(日) 13:25:45.05
このスレにお世話になり、おかげさまでゲームを公開できる寸前のところまで来ました。
ゲームの「動作推奨環境」のサウンドの表記について質問があります。
ゲームは DirectX 9.0c を使って開発しました。サウンドは DirectSound を使用しています。

DirectX 9.0cを使って開発したので動作推奨環境に『サウンド:DirectSound8.0以上』という
表記は確かに間違ってはいないと思いますが、現在あまり使われていない表記だと思います。

★『A列車で行こう レジェンドパック』仕様・動作スペック
http://www.artdink.co.jp/japanese/title/LEG/ALP/ALP_spec.html
⇒ 対応音源 上記OS及びDirectSound8.0以上に対応したサウンドカード

ちなみに比較的最近のパソコンのゲームは下記の表記になっています。

★STREET FIGHTER IV(PC版)の動作スペック
http://www.capcom.co.jp/sf4/IV/pc.html
⇒ サウンドカード DirectSound対応 DirectX 9.0c以上対応

★FINAL FANTASY XIV(PC版)の動作スペック
http://www.finalfantasyxiv.com/media/recom/jp/pc.html
⇒ サウンドカード DirectSound 互換サウンドカード(DirectX 9.0c以上)

「サウンドカード」という表記は「オンボードのサウンドチップ」が存在するので個人的に
好きではありません。

自分なりに考えたのですが、『サウンド:DirectSound(DirectX 9.0c以上)』という表記が
一番すっきりしていると思っています。

皆様方は、どう思われるか意見を聞かせていただけないでしょうか。
以上、よろしくお願いします。

280 :デフォルトの名無しさん:2011/12/11(日) 13:55:13.43
好きにしろとしか
>「サウンドカード」という表記は「オンボードのサウンドチップ」が存在するので個人的に
好きではありません。
じゃビデオカードはどう表現してんの

281 :279:2011/12/11(日) 15:37:46.83
>>280
「ビデオ:DirectX 9.0c以上」です

282 :デフォルトの名無しさん:2011/12/12(月) 00:27:17.55
うちのビデオはマックロードです

283 :デフォルトの名無しさん:2011/12/12(月) 03:46:52.63
ビデオカードはDirectX9の全ての機能に対応してなくても
DirectX9対応って書いていいことになってる
だからその表記では不十分だ
普通はVRAM256MB以上とか、SM2.0以上とか
そういうことを書くものだ

284 :279:2011/12/12(月) 05:03:06.56
レスをしていただけてありがたいのですが、>>280の発言で
サウンドの話題からビデオの話題にすり替わってしまっています。
僕が知りたいのはビデオではなくてサウンドのみについてです。

285 :デフォルトの名無しさん:2011/12/12(月) 07:33:59.74
>>280の一行目で既に答えは出てるだろ。

グラフィック機能もサウンド機能もマザーボードの機能ではないのだし
歴史的に考えればオンチップであっても「カード」表記で問題ないと思うが
(むしろビデオやサウンドだけのが混乱する)
個人的に好きではないというのなら「そうですか」としか。

286 :279:2011/12/12(月) 09:43:54.38
僕の望んでいない議論がされています。

>>279にて下記余計な2行を書いたことは謝ります。
>「サウンドカード」という表記は「オンボードのサウンドチップ」が存在するので個人的に
>好きではありません。

質問の核心は DirectX 9.0c の DirectSound 機能を使って作ったゲームの
動作推奨環境に『DirectSound(DirectX 9.0c以上)』という表記が適切で
あるかどうかということです。

よろしくお願いします。

287 :デフォルトの名無しさん:2011/12/12(月) 14:59:03.00
DirectSoundの表記なんて今じゃ慣例以上の意味なんてねえんだから
その他大勢に従っておけよ
お前の好みなんてユーザーは知ったこっちゃねえんだよ

288 :デフォルトの名無しさん:2011/12/12(月) 16:56:27.87
>>286
汎用的な記法が欲しいのだろうけど、色々言われてる通り、一通りではないわけだ。
だから、一番大きなパイだと思うものをくいなはれ。それが最適解だから。

289 :デフォルトの名無しさん:2011/12/12(月) 19:07:52.55
(´・ω・`)

290 :デフォルトの名無しさん:2011/12/12(月) 19:43:56.68
ゲーム作っているんですがクイックソートって必要ですかね?
必要なら、たとえばどんな時必要ですか?

291 :デフォルトの名無しさん:2011/12/12(月) 20:00:31.10
>>290
マージソート使いたいけどメモリが無い時かな。
テストで使う分にはバブルソートでも意外といけるからね。
O(N*((N-1)/2))で安定だし、表記も楽だし。

292 :デフォルトの名無しさん:2011/12/12(月) 20:01:42.50
>>291
何を実装するときソート使うの?
教えろ

293 :デフォルトの名無しさん:2011/12/12(月) 20:09:50.66
>>292
Zソートとか、プライオリティキュー実装するとか。
噂だと、アルファ付きポリゴン関係とか。
整列が必要なゲームシステムとか。そのチェックコードとか。

例えば何かをチェックするときにソート済みという条件であれば簡単にチェックできるという事があり得る。

294 :デフォルトの名無しさん:2011/12/12(月) 20:16:11.46
>>293
なるほど。

CGのキャラクターを動かすのにソートとかって必要ですか?
たとえば、キャラクターが前転する時とか。

295 :デフォルトの名無しさん:2011/12/12(月) 20:41:05.99
DXでは、Zバッファがあるので、基本、3D描画周りでのソートはハードが勝手にやってくれる。
2Dだと、Y軸でソートして描画したほうが奥行きが出て自然になるかも。
3Dのビルボードにしたらハードがやってくれるので関係ないかもだけど。

296 :デフォルトの名無しさん:2011/12/12(月) 21:05:32.30
>>295は勘違いしてるね
Zバッファはソートはしないよ。
描画の際にピクセルの奥行き値(z)を比較して描画するかどうかを決めるだけ。
だからZバッファ。
ソートとは考え方が異なる。
ハードウェア側でバッファ最適化のためにソートすることはあるかもしらんが。

>>294
メッシュの事前最適化とかアニメーションキーの格納順が最適化されてない時とかには
使うかもだが、リグアニメーション自体にはあんま関係ない。
ていうかもう少し問題のフレームを絞れ

297 :デフォルトの名無しさん:2011/12/12(月) 22:27:17.73
ID3DXBufferはビデオメモリ内に作られるんでしょうか?

298 :デフォルトの名無しさん:2011/12/12(月) 22:35:09.47
全部システムメモリだょ

299 :デフォルトの名無しさん:2011/12/12(月) 22:44:01.90
ありがとうございました

77 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)