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

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

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

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

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

前スレ
【C++】 DirectX初心者質問スレ Part33 【C】
http://hibari.2ch.net/test/read.cgi/tech/1293016261/
2デフォルトの名無しさん:2011/02/19(土) 07:14:07
980を踏んだら作るべきらしいので、前スレの1さんのほぼコピペですが建ててみました。
初スレ建てなので、もし不備が有りましたらすみません orz
3デフォルトの名無しさん:2011/02/19(土) 15:27:37
>>1
4デフォルトの名無しさん:2011/02/21(月) 00:32:22.94
スレチかもしれませんが該当しそうなスレがここしか無かったのでここで質問させてもらいます。
Visual C# 2010 から SlimDX を利用しています。
画像を表示するためにDirect3D9でテクスチャ表示をしようと思っているのですがどうしたら良いのか教えていただけないでしょうか?
DirectInputを利用したキーボード入力、Direct3D9を利用した背景色の設定は出来ました。
5デフォルトの名無しさん:2011/02/21(月) 00:44:35.64
6はじめまして。:2011/02/21(月) 00:55:36.87
Visual Studioで
error LNK2001: 外部シンボル "_IID_IDirectInput8W" は未解決です。
というエラーが出ます。
追加のライブラリ、追加のインクルードを行い、追加の依存ファイルも書きました。
しかし同じエラーになります。

#define INITGUIDと書くと、
fatal error LNK1120: 外部参照 2 が未解決です。

fatal error LNK1120: 外部参照 1 が未解決です。
に減りました。

どこが間違っているのでしょうか。。。
7デフォルトの名無しさん:2011/02/21(月) 01:19:16.73
dinput8.lib;dxguid.lib;ちゃんとリンクしとる?
8はじめまして。:2011/02/21(月) 01:26:29.19
追加の依存ファイルは、上記のように
dinput8.lib
dxguid.lib
comctl32.lib
としています。

追加のライブラリディレクトリは
C:\Program Files %28x86%29\
Microsoft DirectX SDK %28June 2010%29\Lib\x64
を指定しています。
9デフォルトの名無しさん:2011/02/21(月) 01:31:04.88
>>5
誘導ありがとうございます
10はじめまして。:2011/02/21(月) 01:31:33.33
C:\Program Files %28x86%29\
Microsoft DirectX SDK %28June 2010%29\Lib\x86

と\x86のように変更したら通りました。
まさかここだったとは。。。

7さん、ありがとうございました。
11デフォルトの名無しさん:2011/02/21(月) 03:40:04.65
すみません。9のSDKサンプルの加工品でモーション付きモデルを再生しているのですが、
キャラクターの着せ替え(メッシュの入替え)が上手く行きません。

現状、LPD3DXFRAME に受け取ったモデルから、FirstChild、Sibling(ボーン)を辿り、1つだけメッシュコンテナのポインタを入替えてます。
そして以下の様な事が起きています。
「モーションは再生されず、原点にポツンと描画されます。(これは当然なのでしょうね。)」
「2ボーンにウェイトがあるメッシュは、1ボーン分だけ形状が保持され、あとの形状は崩れています。」
「どこかで入替えを行ったメッシュは、入れ替え前のメッシュが描画される事は一切有りません。(これも当然?)」

まずこの入替え方自体、メッシュはほとんど複数ボーンに関わっているから、かなり不適切な気が。
状況的には、強引に全ボーンのマトリクスを追って取って付けてすればなんとかなりそうな気もしますが・・
何かやり方が間違っているような、正しい入替え方が有るのではという気がしてなりません;
何でも構いませんのでご指摘やご助言を頂けますと幸いです orz
12デフォルトの名無しさん:2011/02/21(月) 08:40:55.51
>>11
頂点ごとボーンに対応したウェイトデータがあるわけだけど
その辺もボーンとメッシュの関連ができているデータでやってるの?
んなことできんだろーか?

メッシュだけ入れ替えって可能なんだろか?
着せ替えって違うモデルのボーンにアニメーションを
対応させるみたいな対応になった気がすっけど

的なつぶやき
1311:2011/02/21(月) 16:22:07.27
>>12
ご助言ありがとうございます。ほかで頂いたご助言を私が間違って解釈し記憶していた様です。
何となくやり方が想像できました。どう組めば無駄な処理が減るか考えつつ色々試そうと思います。ありがとうございました。
14デフォルトの名無しさん:2011/02/22(火) 06:35:53.04
自分用の2D描画ライブラリ:DirectX11作ってて、縮退三角形使った最適化したのにパフォーマンス全然変わらなかったんだけど、
縮退三角形での最適化って、すごく効果低かったりするん・・・?
15デフォルトの名無しさん:2011/02/22(火) 09:19:38.12
今どき、縮退三角形とかいちいち使うか?
TRIANGLELISTで統一だろ普通

特に2Dとなれば、頂点数もたかがしてれてるし
16デフォルトの名無しさん:2011/02/22(火) 09:35:27.09
2Dで8000万ポリゴン使ってパーティクル表現
17デフォルトの名無しさん:2011/02/22(火) 10:29:00.36
2Dだと二面毎に縮退二つ挟まなきゃならないんじゃないの?
頂点数多くても相性最悪じゃね?
18デフォルトの名無しさん:2011/02/24(木) 04:19:07.58
DirectXで、pngファイルを読み込んでテクスチャを作成して、それをスプライト上で背景画像として表示させてるんですが、
画面がリサイズされたときに、このテクスチャも画面サイズに合わせて拡大縮小させたいんですが、どうやれば実現できるでしょうか?
19デフォルトの名無しさん:2011/02/24(木) 08:09:19.62
拡大縮小させたいのが背景だけなのか画面上全てのものをウィンドウにあわせるのかで違う
2018:2011/02/25(金) 01:56:23.57
現状は画面のリサイズに合わせて”すべて”を拡大縮小させる方向です。
21デフォルトの名無しさん:2011/02/25(金) 02:09:51.43
だったらターゲットとするウィンドウサイズの正射影行列をプロジェクションにするのが手っ取り早い
22デフォルトの名無しさん:2011/02/25(金) 10:01:06.76
DXUTを勉強してるんだけど、サンプルプログラム見てて疑問が沸いてきたんですが、
フリップ処理って内部でやってるんでしょうか?それともダブルバッファリングをするには特別な設定が必要なんでしょうか?
レンダリングの箇所(OnD3D9FrameRender)では、IDirect3DDevice9::Present()をコールしなくても描画されます。
23デフォルトの名無しさん:2011/02/25(金) 12:24:07.73
Windows 7、Visual Studio 2008の環境で、DirectInput8による入力を実装しているんですが、
画面が一回非アクティブになると、再度アクティブになった後も入力を受け付けてくれません。
デバイスからの入力に依存しないものは反映されているので、フリーズしたわけでもありません。

毎ループAcquire()を実行するようにしてみたり、
デバイスのポインタがNULLになったらDirectInputから作り直すようにしてみたりしましたが、変化がありません。
ネットで調べてみると、ウィンドウのアクティブ・非アクティブの際にAcquire()とUnacquire()を実行してるようなんですが、
同じ事をしてみようとすると、

関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '&IDirectInputDevice8W::Acquire' を使用してください

などとエラーが出て実行できません。
とりあえず非アクティブから復帰しても入力を受け付けるようにしたいんですが、どうすればいいのでしょうか?
24デフォルトの名無しさん:2011/02/25(金) 15:01:18.03
>>23
SDKのサンプルでもそうなるの?
サンプルとそっくりに書いてみれば?
25デフォルトの名無しさん:2011/02/25(金) 18:42:30.82
HLSL内でif文って1個しか書けない?
26デフォルトの名無しさん:2011/02/25(金) 18:43:52.18
>>25
いや、そんなことはないはずだが
27デフォルトの名無しさん:2011/02/25(金) 18:54:14.89
if(S > 0.99f)
Col = P1;

if( ( Z1 ) < Limit &&
( Z2 ) < Limit &&
( Z3 ) < Limit &&
( Z4 ) < Limit )
Col = 0.0f;

おかしいところ無いよね?どちらか1つ消すとエラーが出ない。
28デフォルトの名無しさん:2011/02/25(金) 19:04:06.41
>>27
Colに2回突っ込んでるから駄目とかそーゆーのじゃねーの?
29デフォルトの名無しさん:2011/02/25(金) 19:06:38.20
float4 Col;
Col = P1;
Col = 0.0f;
return Col;

これは問題ないでしょ?大丈夫だと思うけど
30デフォルトの名無しさん:2011/02/25(金) 19:08:15.69
VS_OUTPUTになるもんに2回突っ込むとバグんなかったっけ?
いや、気のせいかもしんないw
31デフォルトの名無しさん:2011/02/25(金) 19:43:29.56
>>29はまずいっぽいな
32デフォルトの名無しさん:2011/02/25(金) 22:45:59.55
>>22
DXUTMainLoopでよんでるっぽい
33デフォルトの名無しさん:2011/02/26(土) 01:10:38.91
シェーダー内で使える命令数はチップによって違うから
ビデオカードによって使えるif文の数や回せるforループの数が違うなんてよくあるはなし
34デフォルトの名無しさん:2011/02/26(土) 01:12:47.03
XAudio2で簡易なオルガンのようなソフトを作りたいと思い SDK付属のサンプルを元に
色々と捻って試しているのですが、和音(と言うより、単純に複数の音)を重ねて鳴らす事が出来ません。

単純に1つづつ鳴らす分には、問題が無いのですが、
例えばAキーを押すとラ、Bキーを押すとシが鳴る状態(それぞれ1秒間発音)で、
ポンポンと(1秒以内に続けて)キーを叩くと、2音が重なるはずの所が重ならず、
「プー プポプポプポ ポー」 のようにグリッチしたように発音されます。

XAudio2単独で複数音を 重ねて 鳴らす(またはBGMに重ねて効果音を鳴らす)のは、無理なのでしょうか
3534:2011/02/26(土) 01:17:35.46
ちなみに処理としては、2系統で実験していました

1.シングルスレッド(つまり同一スレッド上で)、それぞれ2つのソースボイスを作成し、
 キー押下のタイミングで、それぞれを SubmitSourceBuffer & Start

2.マルチスレッドで、それぞれそのスレッド上で CreateSourceVoice した物を、
 それぞれのスレッド上で SubmitSourceBuffer & Start

ちなみにどちらも COMの初期化は CoInitializeEx( NULL, COINIT_MULTITHREADED) で行い、
XAudio2Create はメインスレッドで行っています。 またどちらのケースでもサブミックスボイスは 使用/不使用を試していますが
どちらも上手くいきません。
36デフォルトの名無しさん:2011/02/27(日) 10:45:48.98
Direct
これのうまく動くサンプルか何か下さい...
3736:2011/02/27(日) 10:47:55.35
ごめんなさい送信ミスです
38デフォルトの名無しさん:2011/02/27(日) 11:14:04.29
しかも、それで終わりかよ!
3936:2011/02/27(日) 11:25:49.25
DirectX9でGDIを使って文字を描画したいのですがうまくいきません
SDKサンプルのCreateDeviceを基に、GDIを使って描画する方法のサンプルを下さい
http://codepad.org/P9nEZq6A
4036:2011/02/27(日) 14:57:51.92
次のようにしたら成功しました...
http://codepad.org/c48haCtU
スレ汚しすみませんですた、ありがとうございました
41デフォルトの名無しさん:2011/02/27(日) 22:03:03.58
ちょっと質問です。DirextX 9.0、ピクセルシェーダ 2.0 を使っています。
バックバッファAにテクスチャBを、複雑な合成、
例えばスクリーン合成やオーバーレイ合成を行いたいのですが、方法が分かりません…。
AやBの大きさは、コンパイル時には予想できないとします。

オーバーレイ合成は以下の計算式になります。

if (dst < 0.5) result = 2 * dst * src;
else result = 1 - 2 * (1 - dst) * (1 - src);

シェーダを使っても dst の値は取得できないし、固定パイプラインでも上手く行きません。

新たなバッファCを準備し、AとBの2つをシェーダの入力とするしかないのでしょうか?
その場合、例えばAの大きさが 800×600、Bの大きさが 10×10 程度でも、
書き込まないといけないピクセル数は 800×600 になってしまい時間がかかります。
もし B が1枚じゃなく B1、B2、… と多くあった場合、ひどいことになってしまいます。

スクリーン合成やオーバーレイ合成が、そんな特殊なこととは思えないので、
もっと手軽な方法があると思うのですがなかなか見つからず…。何か方法はないでしょうか?
42デフォルトの名無しさん:2011/02/27(日) 22:27:12.07
オーバーレイって人生で使ったことないけど一般的にどういう用途で使うもんなんだろ?
43デフォルトの名無しさん:2011/02/27(日) 22:29:35.59
すいません、今DX9.0cの画像ビューア使ってるんですけど
表示される画像の表示おかしくて、主にスジが入るんですが
これってグラボが壊れてるって認識でいいんでしょうか。
あとttp://sky.geocities.jp/mayqueensite/DirectShow_VCerror.html
こんな表示出るんですけど、治そうと思って、手当り次第にランタイム入れたいんですけど
C++.NETのラインタイムってMSのサイトでどれ落とせばいいんですか?
44デフォルトの名無しさん:2011/02/27(日) 22:40:53.12
C++ なのか .NET なのか
45デフォルトの名無しさん:2011/02/28(月) 00:27:39.39
>>43
それは自作ソフトの話なのか、ただDirectX9.0c使ってるソフト使うとバグるのか。
前者なら書き込む板間違ってる。
46デフォルトの名無しさん:2011/02/28(月) 10:25:51.62
>>45
前者じゃなくて間違ってるのは後者だろw
47デフォルトの名無しさん:2011/02/28(月) 15:04:48.91
ベクトルをある位置に向かせる関数とかないですか?
48デフォルトの名無しさん:2011/02/28(月) 15:12:37.87
空間だと大変だけど
対象が平面なら角度だせばよくね?
49デフォルトの名無しさん:2011/02/28(月) 15:35:04.10
外積とかで求められそうなのでもうちょっと調べてみます。
50デフォルトの名無しさん:2011/02/28(月) 15:51:11.07
え?www そんな大げさなものなの?w
51デフォルトの名無しさん:2011/02/28(月) 15:54:03.55
>>49
「atan2」とそれっぽいキーワード入れてググレよ
角度でやんねーとダメだろ
時計の9時の方向へ向いてるベクトルを3時の方に回転させたいときとか
角度じゃないとどーにもならんっしょ?
52デフォルトの名無しさん:2011/02/28(月) 17:44:16.75
つ正規化
53デフォルトの名無しさん:2011/02/28(月) 18:08:56.98
すみません。カラーリングについてなのですが、

白・黒・青の3色(境界に中間色が多数有り)のテクスチャを貼ったモデルを、
青の部分だけを、黄、赤にしたり明暗を変えて、白・黒の部分はできるだけ保護したく思っています。

現在はメッシュの頂点色をいじってカラーリングしており、これでは白色の保護が無理な様で・・。
どうすれば白色を保護してカラーリングできるでしょうか・・?
5447:2011/02/28(月) 19:05:29.16
平面だと向きを変えられるのですが、空間だと難しくなります。
XZ平面上ではY軸回転で向けれるのですが、もう一つの軸(X軸orZ軸)回転で向きを変えようとすると
デタラメな方向に行ってしまいます。
55デフォルトの名無しさん:2011/02/28(月) 19:43:31.40
>>53
方法1・予め色変更済みのテクスチャを用意しておき切り替える

方法2・テクスチャのBITMAPを取り出して加工する

方法3・ピクセルシェーダのタイミングで画素のRGBからHSVを求めて
HueやVolumeを変えて再びRGBにしたものを適用

ぱっと思いつくのはこのくらい
56デフォルトの名無しさん:2011/02/28(月) 21:13:37.91
57デフォルトの名無しさん:2011/02/28(月) 21:51:30.86
>>34
当然可能だし、シングルスレッドで十分なことが可能。
XAudio2自体マルチスレッドをできるだけユーザに意識させない作りなのだから
シングルでやるがよろし
初期化コード類晒したほうがいいと思われ
5853:2011/02/28(月) 22:02:07.93
>>55
ありがとうございます。テクスチャも加工回数を最小にすればきっと実用的なんですね。
そしてピクセルシェーダで触る事も出来るんですね。HLSLの勉強が進んだら実現したく思います。
ご助言ありがとうございました。
59デフォルトの名無しさん:2011/02/28(月) 23:12:25.70
>>41
>新たなバッファCを準備し、AとBの2つをシェーダの入力とするしかないのでしょうか?
これはそのとおり、バッファCを用意するしかない。

>その場合、例えばAの大きさが 800×600、Bの大きさが 10×10 程度でも、
>書き込まないといけないピクセル数は 800×600 になってしまい時間がかかります。
これは違う。
たとえバッファAとバッファCが広大でも、
バッファBを覆うだけの、十分小さいポリゴン片で描画してやれば
そういう無駄は出ない。
60デフォルトの名無しさん:2011/03/01(火) 14:35:21.25
クォータニオンを使って2つの軸の回転を合成するにはどうしたらいいのですか?

入力:2つの軸と角度
出力:回転マトリックス

したいのは上述通りです。
61デフォルトの名無しさん:2011/03/01(火) 18:58:49.33
2つのクオータニオンを作り掛け算してその後行列に変換すればいい
62デフォルトの名無しさん:2011/03/01(火) 22:27:33.68
もしも >>61 が書いてる内容自体がわからないなら、四元数そのものについて調べて理解が必要
63デフォルトの名無しさん:2011/03/01(火) 23:21:29.10
任意の軸周りの回転はクオータニオンで表せるから
64デフォルトの名無しさん:2011/03/02(水) 00:27:52.44
PIXで頂点シェーダ(vs_2_0)のアドレスレジスタ(a0)の値を確認したいのですが、
値が空白になっていて見れません。PIXでは見れないのでしょうか?
(環境:Core2Duo, Q35Express, WinXP SP3, DX9(Jun2010))
6541:2011/03/02(水) 00:31:22.68
すみません、めちゃくちゃ遅レスで申し訳ないのですが…。

>>59
>バッファBを覆うだけの、十分小さいポリゴン片で描画してやれば
これが理解できていません。

800×600 のテクスチャAに、10×10 のテクスチャBをそのままのサイズでオーバーレイ合成したいとします。
合成用のテクスチャCは、作った段階では当然空っぽです。
どう工夫しようが、800×600 個の点を打たないとCは埋まらないですよね?
CにAをコピーしてから、AとBをシェーダに送って10×10の描画をしないと完成しないと思います。
B1、B2、…となるとやはりやばいことになりそうです。
うーん何か思い違いをしてるでしょうか…
66デフォルトの名無しさん:2011/03/02(水) 22:39:56.69
>>65
1000x1000のテクスチャを2枚、A1とA2。
10x10のテクスチャを1枚、B。
とする。

>CにAをコピーしてから、AとBをシェーダに送って10×10の描画をしないと完成しないと思います。
最初のフレームでは、入力はA1とB、出力先はA2。
次のフレームでは、入力はA2とB、出力先はA1。
これでCにAをコピーといった過程は必要なくなる。

>どう工夫しようが、800×600 個の点を打たないとCは埋まらないですよね?
例えば、500,500の位置にBを描画したい場合、
ポリゴン片の座標は、(500,500)、(510,500)、(510,510)、(500,510)となる。
Bのテクスチャ座標は、(0,0)、(1,0)、(1,1)、(0,1)となる。
A1(A2)のテクスチャ座標は、(0.5,0.5)、(0.51,0.5)、(0.51,0.51)、(0.5,0.51)となる。
A1(A2)は1000x1000の全ての領域を参照される訳ではなく
あくまで10x10の範囲だけしか参照されない。
点を打つ領域も、あくまで10x10のみ。

まあBが複数ある場合は、相応の工夫が必要。
67デフォルトの名無しさん:2011/03/02(水) 22:45:00.25
わるいわるい
よく考えてみたら、俺が間違ってるわ。
やっぱCへコピーが必要そうだな。
何かうまい方法はないかな?
68デフォルトの名無しさん:2011/03/03(木) 00:45:25.23
コピーコピーって言ってるけど
本当にコピーなのかただのレンダリングなのかはっきりさせてほしい
69デフォルトの名無しさん:2011/03/05(土) 03:47:38.27
d3dxfont使ってゲームを完成させたが、
文字量が増えるほどにアフォみたいに重くなる
d3dxfontは重くてつかいものにならいとのことなので
テクスチャをレンダーターゲットにして
あらかじめ文字をテクスチャ化して表示するのを試したら
確かに早くはなった。
しかしこれだと、定型文字はよいとして
チャットなどのリアルタイムに変化する文字には対応できなくて困った
DIBを使う?と高速に文字描画できる云々ってのを
過去ログで見つけはしたが、サンプルのリンクが切れてて参考になりませんですた

よさげなサンプルがあるサイトはございませんか?
70デフォルトの名無しさん:2011/03/05(土) 04:07:01.22
>>69
ttp://marupeke296.com/DXGSmp_No5_Font.html
GetGlyphOutline使えばよろし
71デフォルトの名無しさん:2011/03/05(土) 09:16:18.15
過去ログ見てないけどDIB云々てのは、単にDirectX使わないで
普通にGDI関数でビットマップ領域に描画させてって話じゃね
TextOutか何かで
7269:2011/03/05(土) 14:25:21.76
>>70
このサイトちら見したけど
テクスチャをレンダーステートにして文字を書いておくのと
基本構想は変わらないんじゃ?
チャットみたいにどんな文字が使用されるかわからない場合でも速度でるのかな?
どのくらい速度出るのか検証中

>>71
デバイスコンテキスト取得して
オンメモリのビットマップに普通に文字描画するまでは
やったことがあるんでイメージできるんだけど
それをテクスチャに変換して張り付けるまでの工程がさっぱりわからん
d3dxfontよりは明らかに早いらしいけど
動作するサンプルがほしいお
73デフォルトの名無しさん:2011/03/05(土) 14:30:29.02
>>72
必要となったときに1度だけ作ってあとはそれを使いまわせばいい
aが必要となったら一度だけaのピクセルデータを取っておいて(テクスチャに書いて)
使いまわせばいい
74デフォルトの名無しさん:2011/03/05(土) 14:33:43.58
一旦テクスチャ作る以上には早くできないだろ
新しく作成される文字は1フレで1文字程度なんだからテクスチャ作るコストはたいしたことないな
マップチップの原理で遅くなってるだろうからさらに1行ごとにテクスチャにしちゃうとかして
DrawPrimitiveの回数を減らしてみたらいいんじゃね?
75デフォルトの名無しさん:2011/03/05(土) 15:59:07.43
>>73
やっぱりそんな感じですか。
表示したい文字がプールしたテクスチャ内にあるか調べるとか
結構めんどくさそうですな。

>>74
一旦テクスチャつくるほど早くなくても
d3dxfontより早ければいいんですけどね〜
あいかわらず動くサンプルがみつかんね
入力された文字を行ごとにテクスチャ化してプールしておいたとしても、
今、入力している文字とかリアルタイムで値がかわるFPSの表示とか
考えれば考えるほどまんどくさ


とりあえず半角英数字のビットマップフォントだけでも用意して誤魔化すか〜
楽したいだけなのにどんどん苦労する方向に向かってんなw
76デフォルトの名無しさん:2011/03/05(土) 15:59:58.70
メリケン人は50文字程度のビットマップフォント用意するだけでいいんだよな。
考えてみたらまじでウラヤマシス。
77デフォルトの名無しさん:2011/03/05(土) 16:56:35.23
>>75
>>70のヤツって動くんじゃないの?
動くみたいに書いてあるけど
78デフォルトの名無しさん:2011/03/05(土) 16:58:11.84
なんだこいつ
ごちゃごちゃいいわけばっかりしてやらないだけじゃん
79デフォルトの名無しさん:2011/03/05(土) 17:15:50.45
>>75
>表示したい文字がプールしたテクスチャ内にあるか調べるとか
そんなもんstd::mapにでも登録しておけば一発やろが!
80デフォルトの名無しさん:2011/03/05(土) 17:54:33.75
おまいらIDirect3DSurface9::GetDCがあるのになんで教えてくれないのって感じだ


>>79
低性能PCだとテクスチャ作成時間がバカにならないので結局やめた
STLのこと忘れてた ありがとう

>>78





81デフォルトの名無しさん:2011/03/05(土) 17:56:28.51
まあ本当に楽をしたいならもっと高級なライブラリを使うわな
82デフォルトの名無しさん:2011/03/05(土) 18:30:08.88
簡単なライブラリってあるの?
83デフォルトの名無しさん:2011/03/05(土) 18:38:51.53
×簡単な ○高レベルな
Unreal EngineとかIrrlicht EngineとかOgreとか
84デフォルトの名無しさん:2011/03/05(土) 19:14:43.43
難しそうですね、国産のseleneもマニュアルもないし・・・
85デフォルトの名無しさん:2011/03/05(土) 19:22:51.71
>>84
とりあえずチュートリアルでもやってみては?
英語でもドキュメント英語は簡単な場合多いし
86デフォルトの名無しさん:2011/03/05(土) 19:42:11.09
すみません。地形との衝突判定についてなのですが、
今まではメッシュが1つで、それへレイを飛ばすだけで済んでいました。

しかし「上を歩いたり、中をくぐり抜けられるメッシュ」を複数配置、撤去したりしたく思っています。
(リアルタイムではなく読み込みを挟むごとに切り替える程度です。)

こうした場合、やはり全てのメッシュを1つに纏めるべきなのでしょうか?
他に良い方法が有ったりするでしょうか。
87デフォルトの名無しさん:2011/03/05(土) 19:55:15.70
内容によるからこれが正解ってのは無いけど、動かない地形なら判定省略できる部分もあんじゃね
てかそのアルゴリズムで問題ないなら
8886:2011/03/05(土) 22:11:54.15
>>87
確かに。
中心距離が一定以内になった物だけレイを飛ばしたりすれば、そこそこの負担増で処理できそうですね。
ありがとうございました。
89デフォルトの名無しさん:2011/03/06(日) 02:13:06.14
3Dの描画コストについて調べてるのですが
ライティングやテクスチャを有効にして10万ポリゴンの球体を
毎フレーム1回のDrawPrimitiveで描画してみたところ
フレームレートが60FPSを若干下回って50FPS程度
更に多くの50万ポリゴンを描画しようとすると10FPSを下回りました。
(どちらも頂点数はポリゴン数*3でトライアングルリストで描画)
実行環境はGeforce8600GT搭載グラボを使用してるPCなのですが

勉強不足なのでプログラムに問題があって遅くなってるのか否か分からず困ってます。
正直思っていたより遅くて疑問なのですが、実際これだけのポリゴン数描画しようとしたらこのくらい描画負荷が掛かるものなのでしょうか?
90デフォルトの名無しさん:2011/03/06(日) 02:27:11.60
PS2で毎フレームテクスチャつきの3万ポリゴンが出れば御の字って話だったような気がする。
そのもうちょっと後の世代だから数字自体は妥当なきはするけどね。

ところで、10万ポリゴンあったら何ができるか把握してるか?
1万ポリゴンのキャラが10体でるんだぜ?imasのきゃら5人くらいを1画面にだせるんだぜ。
エロゲで使われるようなやつでも3体は出るから会話とか成立しうるし。

で、まず、メタセコイアあたりで1万ポリゴンのオブジェクト作ってみろよ。
どれだけの表現を詰め込めるか思い知るが良いさ。
91デフォルトの名無しさん:2011/03/06(日) 03:26:13.41
ソフトウェア頂点処理でやってたとゆーオチじゃね
92デフォルトの名無しさん:2011/03/06(日) 07:52:36.43
>>89 は静止画用ハイポリモデルをリアルタイムに扱おうとしてる雰囲気に見える

>正直思っていたより遅くて
名前が一人歩きしてるせいで、過度な期待と思い込みをしてる人はよくいる
93デフォルトの名無しさん:2011/03/06(日) 09:20:42.11
ぶっちゃけ今の世代のビデオチップは
フィルレートに足を引っ張られて頂点処理能力は余りまくりだから
頂点数だけで比較するのは意味無い
描画を全くさせないで頂点演算だけGPUにやらせてみなよ
スペック通りの数字がでるから
9489:2011/03/06(日) 11:34:35.68
>>91 エスパーありがとう
ソフトウェア頂点処理してました・・・
デバイス作成にハードウェア頂点処理を指定したら
50万ポリの描画も余裕で60FPSに収まりました

>>90,92,93 も貴重なご意見ありがとうございました
95デフォルトの名無しさん:2011/03/07(月) 00:41:12.84
プログラムからDirectXのバージョンを確認するには
どうすればいいのでしょうか?
ググっても全然ないです
96デフォルトの名無しさん:2011/03/07(月) 01:01:18.84
directsetupgetversion
97デフォルトの名無しさん:2011/03/07(月) 01:07:52.08
directsetupgetversion に一致する情報は見つかりませんでした。
98デフォルトの名無しさん:2011/03/07(月) 01:11:17.12
>>95
MSDNに「DirectX のバージョン番号を直接取得する方法はない」って書いてる。
間違ってたらゴメンネ。

なんでプログラム内部からバージョン知りたいん?
99デフォルトの名無しさん:2011/03/07(月) 01:11:25.79
xつけろ
100デフォルトの名無しさん:2011/03/07(月) 01:19:24.14
あとはdxdiagのcomサーバからも取得できたか
よく覚えてねえや
101デフォルトの名無しさん:2011/03/07(月) 01:25:26.27
サポート用にエラーログとかにつけたいと思ったことはある
102デフォルトの名無しさん:2011/03/07(月) 01:29:30.67
そういう用途なら各DLLのバージョン番号を見た方がいいんでね?
103デフォルトの名無しさん:2011/03/07(月) 04:43:19.20
http://marupeke296.com/DXG_No49_DebugFont.html

このページのサンプルを実行してみると、
「'str' : 定義されていない識別子です」というエラーを吐きます。
visual studio 2008を使ってるのですが、リンカか何かの問題なのでしょうか。
104デフォルトの名無しさん:2011/03/07(月) 07:52:54.74
>>103
多分だけど、

#include <xstring>

を追加すれば行ける気がする

std::wstring は Windowsだと xstring っていうヘッダにあるってか DicrectX関係ないこれ
105デフォルトの名無しさん:2011/03/07(月) 10:04:28.74
なんで掲示板のある解説サイトの質問をわざわざ2chでするのかねえ
106103:2011/03/07(月) 19:44:31.60
>>104
>ってか DicrectX関係ないこれ

すみません。自分も書き込んでから気がつきました
あと、xstringを追加しても機能してくれませんでした。
107デフォルトの名無しさん:2011/03/07(月) 19:46:17.45
xstringなんかincludeすなw
vcのxなんちゃらは全部internal headerだぞ
108デフォルトの名無しさん:2011/03/07(月) 21:11:28.05
>>106
試しにそのサイトにあった d3ddebugfont.h をDLして試してみたけど、
普通に通るんだが。 もちろん アーカイブされてたヘッダだけだと当然
windows.h やDirectX関係のヘッダがincludeされてないので足したけど
109デフォルトの名無しさん:2011/03/08(火) 00:15:23.88
シェーダーで深度を使って影を出しているのですが、遠くまで広い範囲を描画すると影の質が落ちてしまいます。
きれいな影を作るいいアイデアはありますか?
110デフォルトの名無しさん:2011/03/08(火) 01:04:31.18
>>109
方法1:カスケードシャドウマップを使う
方法2:できるだけ狭い範囲での深度テクスチャを作成する
方法3:別な影生成方法に切り替える(シャドウボリュームとか
方法4:ソフトシャドウに挑戦する(影をぼかす
方法5:あきらめる
方法6:描画自体をレンダリングエンジンライブラリを使ってそこでいい方法を探す
とかがパッと考え付くところかなぁ
ジャギが出るのは深度バッファシャドウの欠点だから仕方が無い
111デフォルトの名無しさん:2011/03/08(火) 02:22:40.74
>>103はDirectXを勉強するまえにCやらC++やらの勉強することをオススメする
112103:2011/03/08(火) 04:19:45.47
>>108
なんか散々悩んだあげく、std::wstring strという形にしたらそれだけで通りました。
Visual Studioの仕様が問題だったのかもしれません。
113デフォルトの名無しさん:2011/03/08(火) 05:38:25.85
道具を使いこなせないのを道具のせいにするなw
114デフォルトの名無しさん:2011/03/08(火) 09:18:40.00
問題なのはVSの仕様じゃなくてお前の知識
115デフォルトの名無しさん:2011/03/08(火) 09:32:48.78
>>112
全然VSの固有仕様とかじゃないです
他にも言われてるけどDirectX以前の話なので、ちょっと真面目に基礎的な実験やテストコードでも書くべき
116デフォルトの名無しさん:2011/03/08(火) 10:23:03.04
>>112
char と wchar_tの違いをしっかり理解するんだ
Directxなどまだ早い
117デフォルトの名無しさん:2011/03/08(火) 12:10:41.85
そこのサンプル落としてみればわかるが、ヘッダの先頭に
using namespace std;
とか書かれてるわけで(その是非はとりあえずおいとく)
それなのにstdを明示しないとコンパイル通らないってのはおかしくないか?
118デフォルトの名無しさん:2011/03/08(火) 12:22:22.22
スレチだけど、そういう混乱が起きるのが嫌だから
using namespace はなるだけ使わず、あるいは使うとしても
翻訳単位の中で影響が小さくなるように書くのが普通

そのサンプルはヘッダに全部書いちゃってさらに pragma once まで書いちゃって
さらにusingまでしちゃってるからあんまり良い内容じゃないよね

よくわかった上で使うか適宜修正しないと、特に言語初心者当たりがハマる
119デフォルトの名無しさん:2011/03/08(火) 12:43:10.83
どうなってれば余計な心配や対処をしないで済むか、
まで話が及ぶと完全にスレ違いになるからその辺で。
わかんない人は入門書読み直すか、言語スレへ
120デフォルトの名無しさん:2011/03/08(火) 13:06:01.21
関係ないけど>>118の投稿時間がステキ
121デフォルトの名無しさん:2011/03/08(火) 13:09:54.23
>>118
すげぇw
122デフォルトの名無しさん:2011/03/08(火) 19:08:24.10
俺のIDも凄いぞ
123デフォルトの名無しさん:2011/03/08(火) 21:50:11.68
透視影マップの実装について詳しく書かれたサイトありますか?
124デフォルトの名無しさん:2011/03/08(火) 21:53:04.09
カスケードシャドウマップでもいいです
125デフォルトの名無しさん:2011/03/08(火) 22:39:27.34
DirectX SDKにサンプル入っとるやろ
126デフォルトの名無しさん:2011/03/08(火) 22:47:04.05
バージョンは?
127デフォルトの名無しさん:2011/03/08(火) 22:49:32.96
あ?
128デフォルトの名無しさん:2011/03/08(火) 22:50:31.93
SDKのバージョンをおねがいします
129デフォルトの名無しさん:2011/03/08(火) 22:53:41.74
一番あたらしいやつ
130デフォルトの名無しさん:2011/03/08(火) 23:15:12.41
thx
131デフォルトの名無しさん:2011/03/09(水) 01:18:32.86
まいった・・・OSがXPだからDX11のサンプル実行できない・・・
132デフォルトの名無しさん:2011/03/09(水) 01:44:57.53
Perspective Shadow Mapでググってみては。サンプル配ってるサイトあったけど。
133デフォルトの名無しさん:2011/03/09(水) 10:01:22.61
ワールド*カメラビュー*プロジェクション*ライトからのビュー*プロジェクション
うまくいかない・・・視点を動かすとなぜか影の角度も動いてしまう・・・
134デフォルトの名無しさん:2011/03/09(水) 13:09:07.01
てす
135デフォルトの名無しさん:2011/03/09(水) 13:20:42.36
D3D11のデバイスをFEATURE_LEVELを9_1で作成し、テクスチャ生成時に
D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEXを指定すると、以下のエラーが発生します

Test.exe の 0x00000000 でハンドルされていない例外が発生しました: 0xC0000005: Access violation

FEATURE_LEVELを10_0で作成した場合や、KEYEDMUTEXのフラグを指定しない場合はエラーになりません
リファレンスなどを見ても、機能レベルによって作成できないなどの表記を見つけることが出来ず
仕様なのか使い方の問題なのか分からず困っています。何が問題なのでしょうか?

やりたいことは、DX10に対応していないビデオカードによる、D3D11とD2Dのサーフェイス共有です
よろしくお願いします。
136デフォルトの名無しさん:2011/03/09(水) 13:36:12.36
本当にデバイス作成に成功しているか?
137デフォルトの名無しさん:2011/03/09(水) 13:53:19.34
KEYEDMUTEXのフラグを指定しなければ、そのデバイスでの様々な描画が正しく動いているので問題ないようです
138デフォルトの名無しさん:2011/03/09(水) 14:11:51.71
確かlevel9_xで共有テクスチャやる場合フォーマットに制限があったはず
デバッグランタイムでわかりやすい警告出してきたはずだから見てみて

それとlevel9_xだと共有テクスチャの動作が怪しくてうまく使えた試しがない
パフォーマンスが許容できるならロックして描画終わるのを待つ方式をお勧めするよ
139138:2011/03/09(水) 14:14:36.26
x 共有テクスチャ
o 共有テクスチャのIDXGIKeyedMutex
140デフォルトの名無しさん:2011/03/09(水) 17:11:23.14
回答ありがとうございます

確かにKeyedMutexで無い共有であれば成功するようですが、同期が取れずに表示がおかしくなります

ロックして描画を待つと言うのはどうやるのでしょうか。普通のMutexで同期は取れないですよね?
141デフォルトの名無しさん:2011/03/09(水) 19:06:22.49
>>140
http://archive.msdn.microsoft.com/D3D9ExDXGISharedSurf

片方のデバイスで描画が終わっていることさえわかればなんでもいいのよ
このサンプルは見通し悪いけどシングルスレッドの場合だけ見ると
LockRect or Mapでサーフェイスへの描画完了を待機してるだけ

そもそもD3D9(Ex)との共有ではIDXGIKeyedMutexが使えないわ
キーパラメータなんて付けて死ぬほどデッドロック起こしやすいわで
ちょっと仕様決めたやつに問い詰めたいくらい

Out-Processでの同期ぐらいにしか出番無いんじゃねえかな
142デフォルトの名無しさん:2011/03/09(水) 21:45:58.30
directx9だが
CreateDeviceをビルドして実行して、
作成されたウィンドウにマウスカーソルを乗せたままにしておくと、ビジー状態のマウスカーソルから元に戻らない
DXUTのEmptyProjectの方ではしっかり元に戻ったんだが
CreateDeviceのやり方とEmptyProjectのDXUTでは何が違うんだ?
143デフォルトの名無しさん:2011/03/09(水) 21:54:53.65
お前が作った窓の問題だろ
144デフォルトの名無しさん:2011/03/09(水) 22:03:05.38
ありがとう
145デフォルトの名無しさん:2011/03/09(水) 23:01:37.55
ウィンドウクラス登録時にちゃんとカーソルを指定しないとそうなった気がする
146142:2011/03/09(水) 23:32:47.70
>>145
解決した...ありがとうございました
147デフォルトの名無しさん:2011/03/10(木) 05:17:04.42
深度って距離が反比例曲線になってますが直線にする方法はありますか?
148デフォルトの名無しさん:2011/03/10(木) 09:28:02.76
>>147
Wバッファを使う。
ttp://msdn.microsoft.com/ja-jp/library/bb219616(v=VS.85).aspx

詳しくはD3DZB_USEWあたりでググるがよし。
149デフォルトの名無しさん:2011/03/10(木) 12:52:48.00
>>141
具体的にありがとうございます!
サンプルは余計なこと色々してて分かりにくいですが、なんとなく理解出来ました。こういうことですよね?

・USAGE_DEFAULTを共有するけどこいつは直接ロックできない
・USAGE_DEFAULTからUSAGE_STAGINGにコピー後、STAGING側をREADロックすることで結果的にDEFAULTへの描画を待機
・STAGINGは同期用にのみ使用し、コピーされたデータやロックしたデータ事態に意味は無い

サンプルではバッファを複数回してるようですが、これはREADロック時に描画完了待機して非効率なため、
実際には数フレーム前に書かれたデータを取得するようになってる?
150デフォルトの名無しさん:2011/03/10(木) 23:06:39.00
3DRPGのゲームの主人公って何本ぐらいボーン仕込んでますか?
表情変えるのはテクスチャだけですか?
それとも最近なら口にボーンとか仕込んでやるんですか?
151デフォルトの名無しさん:2011/03/11(金) 01:05:17.22
>>150
ゲ作成板でどうぞ
152デフォルトの名無しさん:2011/03/11(金) 02:04:50.48
153デフォルトの名無しさん:2011/03/12(土) 13:46:13.55
>>150
ボーンを仕込む
154デフォルトの名無しさん:2011/03/12(土) 13:53:48.11
>>150
ローポリかハイポリかリアル系かデフォ系かで話がぜんぜん違う
初心者は顔のテクスチャ切り替えから入るといいかもな
155デフォルトの名無しさん:2011/03/12(土) 14:31:45.84
>>150
ここム板だからあえて聞くけど、ボーンて呼ばれる物の処理イメージは浮かんでるかい?
それが前提にあれば上で言ってる奴の話も見えてくるぜ
どれの目的で、どんな内容ならどこまでやれそうか、とか
156デフォルトの名無しさん:2011/03/13(日) 08:27:35.33
Xファイル形式から独自フォーマットを作りたいのですが、参考になるサイトなどはないでしょうか?
157デフォルトの名無しさん:2011/03/13(日) 09:01:22.67
参考もなにもXファイルならD3DXで全部読み込んでくれるんだから
出来上がったメッシュう情報から必要なものを抜くだけでいいじゃない
158デフォルトの名無しさん:2011/03/13(日) 13:16:45.78
こうしたほうが効率がいい、っていうのはいろいろあるけどソレ自分で考えて作るから
独自フォーマットなんだけど(・ω・)
159デフォルトの名無しさん:2011/03/13(日) 13:30:13.72
この独自フォーマットの正しい使い方を教えてください
↑他人の知識は真面目にコピーしますが、自分で考える能力はありません
 何から何まで人から教えてもらいます。の意味
160デフォルトの名無しさん:2011/03/13(日) 13:35:15.12
最悪だなw
相手にしたくないタイプだなw
161デフォルトの名無しさん:2011/03/13(日) 14:27:23.22
てか、コピーして使うだけなら
Xファイルをそのまま使うのとどこが違うんだ?
162デフォルトの名無しさん:2011/03/13(日) 16:22:14.97
>>161が真理
163デフォルトの名無しさん:2011/03/13(日) 16:47:04.00
と言うか、>>156 はそもそも全部他人のサイトコピーだけで作ってて、
中で扱ってるデータにしろ処理にしろ、意味わかってないから聞いてんじゃね

"独自の"フォーマットなんて、それこそ自分の都合で取っておきたい内容を
書いて読むだけなんだから、参考サイトもへったくれも無いよな

俺も自分の都合でファイル書き出してそれ読んで、とかテストコード用にしてるのあるけど
まさに言葉どおりの事しかしてない。 てか誰でもそうだろ。 独自の=自分の都合の フォーマットなんだから
そんな訳で >>158 に同意
164デフォルトの名無しさん:2011/03/13(日) 16:50:31.84
保存しときたい情報なんて大抵決まってるもんな
それがわからないってんなら、3DCGの基礎からやり直し

あるいはファイル保存の方法がわからないってんなら
言語の基礎からやり直し
165156:2011/03/13(日) 17:53:03.07
>>157
読み込んだXファイルから個別に情報を引き出せるんですね!
今まで読み込んだ物をそのまま拡大・回転・移動しかしてませんでした。
ちょっとその辺を調べてみます。
166デフォルトの名無しさん:2011/03/13(日) 18:11:27.24
>>165
情報の取り出し云々より「自分がやろうとしてることに、データの何の情報が必要なのか」が
判ってなければそっちから勉強することをオススメする。
167デフォルトの名無しさん:2011/03/13(日) 19:29:57.29
君も必死だな
いつもモデルデータの話がでるとモデリングソフトを触れって言う人かい?
168デフォルトの名無しさん:2011/03/13(日) 19:32:18.91
一人が話してるとでも思ったのかい
169デフォルトの名無しさん:2011/03/13(日) 19:51:46.41
>>166
とりあえず今のところはシンプルに正方形の箱を作って、
任意軸三つの相対位置に頂点を置いて、姿勢を自由に制御する事が目標ですね。

インデックスバッファを手打ちで作ったら、どうも上手い具合に面が張れなかったのと、
後々複雑なモデルを作る上でモデリングソフトに頼る必要があるので、
早い段階でXファイルから独自フォーマットのモデルデータを作って利用しようとしています。

ただ調べているうちにXファイル形式だとマルチテクスチャなど、
対応していないものもあるらしい事がわかったので、
独自フォーマットの方は最終的にモデリングソフトから直接はき出せるようにしたいです。
170デフォルトの名無しさん:2011/03/13(日) 21:28:47.89
>>167
少なくとも独自形式の話では2回しか発言してないけどw
それに>>166で言ったことが理解できないなら3Dでマトモにゲームなんて作れないし、
モデリングソフト触れとかはなんの関係も無い話なんだけど。何を一人で興奮してるの?


>>169
手打ちデータで上手いこと箱だせないならちゃんと出せるまで理解しないとあとで苦しくなるよーたぶん。
もしその部分のコードとかあるなら貼って相談してみるとか。

>独自フォーマットの方は最終的にモデリングソフトから直接はき出せるようにしたいです。
ってなるとモデラーのプラグインの開発とかの話になっちゃうから、初めは基本何かのモデルデータを
パーサー通して独自形式にすればいいと思う。俺はXSIの.xsi形式から必要なデータだけ取り出して独自形式にしてるし。
読み込み→変換して吐き出し、はどの道独自形式なら自分でパーサー書く必要があるけど・・・。

171デフォルトの名無しさん:2011/03/13(日) 21:49:02.68
お前もおちつけw
172デフォルトの名無しさん:2011/03/14(月) 01:17:26.00
そして俺は Blender側はPythonで書いたexporter
取り込み側はC++で普通にって連携をしているのです
173デフォルトの名無しさん:2011/03/14(月) 02:18:25.92
デバッグ表示を作っているのですが,2Dで楕円を書きたいです.
みたところ,適当なプリミティブ描画関数が見当たらないのですが,
どのように描くべきでしょうか?
ラインリストで楕円ぽく線分を並べるような方法しかないでしょうか?
174デフォルトの名無しさん:2011/03/14(月) 02:58:10.60
テクスチャbitmapにGDI関数Ellipseで、とかそういう事じゃないとしたら
線分並べて近似
175デフォルトの名無しさん:2011/03/14(月) 07:54:50.45
円形のメッシュ読み込んで表示したらいいがな
176デフォルトの名無しさん:2011/03/14(月) 14:15:04.65
影用に近くからと遠くからの深度を2枚とってるんだけど
カメラの端のほうが伸びるから重ね合わせは難しいな
177デフォルトの名無しさん:2011/03/14(月) 15:37:38.18
端のほうは半透明にするなりしてぼかせばいいじゃない
178デフォルトの名無しさん:2011/03/14(月) 20:34:11.36
>>174
日本人の方でないようですが,
Ellipse関数がGDIだけど使えるよ,ってことでしょうか?

>>175
3Dに慣れていないので,具体的な方法がわかりません...

デバッグ表示ですし,
とりあえず,慣れるまではGDI関数で実装してみます.
179デフォルトの名無しさん:2011/03/14(月) 20:53:14.32
>>178
>日本人の方でないようですが,
>Ellipse関数がGDIだけど使えるよ,ってことでしょうか?

テクスチャ等のbitmapを対象としたGDI関数の Ellipse ならあるけど、
それはプリミティブ描画関数とやらじゃないから、画像として描画じゃなく
頂点並べてやりたいなら、CubeやSphereのような三次元プリミティブメッシュデータのような物を
欲しているなら、頂点並べて線分引いて円に近似した図形描けって事じゃね
わかんないなら素直に聞けよw
180デフォルトの名無しさん:2011/03/14(月) 22:20:12.64
日本人じゃないワロタ

何のデバッグ表示をしたいのかわかんないからなんとも言えん。
文字列出したいだけならID3DXFontでいい。スプライトならID3DXSpriteでいいんじゃね?
181デフォルトの名無しさん:2011/03/14(月) 22:56:12.49
3D機能とかまったく使わずにID3DXSpriteとかで
2Dゲームつくってて当たり判定のデバックとかで円を表示したいとかそんなとこじゃないの?

○かいた画像用意して拡大縮小変形してキャラと同じように描画しろよ
なんかいろいろ言っても聞く耳もたなさそうだし
182デフォルトの名無しさん:2011/03/17(木) 16:12:40.69
DirectXSDKに付属しているツール、ユーティリティを再配布することは可能ですか?
例えば、
SDK付属コマンドラインプログラムを、
GUIで使うツールを自分で作った場合、
そのSDK付属ツールは再配布可能ですか?

183デフォルトの名無しさん:2011/03/17(木) 16:15:19.81
ダメ
184デフォルトの名無しさん:2011/03/17(木) 16:29:44.56
>>183
デスヨネー
185デフォルトの名無しさん:2011/03/17(木) 16:39:00.95
では
「このフォルダに使うSDK付属ツールを自分でダウンロードしていれておいてね」
といった形は大丈夫ですか?
186デフォルトの名無しさん:2011/03/17(木) 17:33:42.88
それならおk
187デフォルトの名無しさん:2011/03/17(木) 18:04:50.82
>>186
ありがとうございます
188デフォルトの名無しさん:2011/03/21(月) 17:12:54.45
すみません

今自分用のライブラリを作っているのですが
Direct3Dの一部でDirectShowの動画を描画するようにするには如何したらよいのでしょうか?
Direct3Dがあまり詳しくなくいくつか調べたのですが、あまり情報を引き出す事が出来ず少し悩んでいます
よろしかったらおしえていただけないでしょうか?
189デフォルトの名無しさん:2011/03/21(月) 17:15:33.07
すみません 書き込んでから言葉足らずに気がつきました。

Direct3DのBeginSceneからEndSceneの間にテクスチャのように処理群を挟んで描画
などをできるようにしたいのですが
190デフォルトの名無しさん:2011/03/21(月) 17:33:54.29
日本語でおk
191デフォルトの名無しさん:2011/03/21(月) 18:55:35.90
DirectShowって亡くなったんじゃね?
192デフォルトの名無しさん:2011/03/21(月) 19:09:43.42
DirectShowは無くなってないよ。
DirectXからPlatformSDKに格上げになった。
193デフォルトの名無しさん:2011/03/21(月) 22:08:54.99
>>188
VMR9とかでぐぐったんさい
194デフォルトの名無しさん:2011/03/23(水) 08:39:05.73
DirectXのゲーム画面を保存するアプリを作っててライブラリ化しようとしてるんだけど
CreateDeviceで自分のウィンドウハンドルを指定してデバイスを作らないといけないわけなんだけど
キャプチャするためのデバイスで描画しないからウィンドウハンドルが要らない
ライブラリ化してるから無駄な引数のやり取りをなるべく無くしたいんだけど
ウィンドウ無しでCreateDeviceって出来るんですかね?
試しに0にしてみたらWindow7ではいけて、XPでは失敗しました
たぶんWindows7は画面がすでにDirectXだからなのかと思ってますが
どうすればいいか分かりますか?
195デフォルトの名無しさん:2011/03/23(水) 08:42:27.53
ウィンドウハンドルは画面に描画する為に使う物じゃない
196デフォルトの名無しさん:2011/03/23(水) 08:51:23.07
Windowsって内部の処理や扱いの1単位をウィンドウと表現していて、
それらの識別子として HWND を使っているので、画面に描画するしないに関わらず
どっちかって言うと一番最初に渡しておきたいパラメタじゃね
どうしても嫌ならデスクトップのHWND取り出して渡せばおk
197デフォルトの名無しさん:2011/03/23(水) 08:56:40.56
>>194
HWNDをキーにしてそのデバイスのコンテキスト(DC)が引っ張れて
そのDCからそのデバイスの、例えば画素は何ビット構成かとか情報が引ける訳だから
画面に描画しなくても普通に必要
198デフォルトの名無しさん:2011/03/24(木) 05:14:07.14
DirectDrawのアクセラレータが利用できませんと表示されます。
自分のPCにグラボは入っていないので3Dが利用できないのは構わないのですが、Drawが利用できない原因がわかりません。
DirectXの診断ツールで、DirectDrawのテストでは正常に機能しています。
どうすればDirectDrawのアクセラレータを利用することができますか?よろしくお願いします。
199デフォルトの名無しさん:2011/03/24(木) 06:06:16.89
DirectInputのジョイスティックでの操作がうまくいきません。
SDK(June2010)の中にあったダイアログボックスにコントローラの状態が表示されるサンプルは正常に動きました。
でも自作のプログラム(ダイアログボックスは使用しない)に組み込もうとずっと奮闘してるのですが、どうも上手くいきません。

「前田稔の超初心者のプログラミング入門」というサイトにある「Direct Inputのプログラム」→「コントローラを使う」で
紹介されていたプログラムも、ソースを少しもいじらずに起動できましたが、やはり動きません。

原因が思い当たる人はいないでしょうか?
200デフォルトの名無しさん:2011/03/24(木) 06:51:46.84
>>199
ジョイスティック自体が壊れている可能性とか。

あとコンパイラーによってはSetDataFormat()関数で指定する奴を
自前で用意しなきゃいけない場合もあるらしい。
まぁ、その場合はエラー出るだろうけど。
201199:2011/03/24(木) 07:05:36.13
>>200
JoyAdapterなどのジョイパッドのボタンにキーボードのキーを割り当てるソフトが使用可能なので、ジョイスティックはおそらく壊れてません。
XBOX360コントローラとPS2(変換アダプタ経由)コントローラの二つを使用していますが、どちらもダメでした。

SetDataFormatを行うときもエラーはでていません。
202デフォルトの名無しさん:2011/03/24(木) 08:29:28.20
>>201
どう動かなくて、どう上手くいかないのか
エラーの状態とか、何が必要な値を返さないとか その辺詳細
203デフォルトの名無しさん:2011/03/24(木) 08:41:08.71
動いてるサンプルと動いてない自作があるんだったら
両方を1行ずつデバック実行させればどこでおかしくなってるのかすぐ分かりそうなもんだが
204デフォルトの名無しさん:2011/03/24(木) 08:45:19.36
SDKのサンプルが動いてるなら自作のプログラムが糞なだけだろw
思い当たるも何もそんなのエスパーじゃないとわからねーよ
205199:2011/03/24(木) 08:52:10.06
>>202
ジョイパッドで何か入力しても何も起きません。
GetDeviceStateしたときに返される値がSUCCEEDEDだった場合に、ジョイパッドの状態(DIJOYSTATE2の構造体)を参照するようにしているのですが、
一応GetDeviceStateは成功しているらしく、ジョイパッドの状態を参照するところまではいっているようです。
ですが、実際にジョイパッドを操作しても内部の値は変化していない(0のまま変わらない)ようです。
206199:2011/03/24(木) 09:06:00.15
>>203-204
確かに僕のプログラムは糞ですが、他の人が公開しているようなサンプルも全く動かないんです。
ようするに、一般的な描画系のウインドウを表示するプログラムでうまくいったものはありません。

SDKのサンプルは、ダイアログボックスのみが出てきて、に入力の値が表示されるというものだったので、そのまま利用できないかいろいろ試してみたのですが…
他の人のプログラムにあるように、WinMainのメッセージループ内から、状態の値を参照する関数を呼び出したりもしたのですが、結局同じ結果でした。
プログラムが原因なのか、また別の問題なのかもわからない状態で。
詳しい説明が全然できてないのがわかっています。でも、もしかしたら同じような状況を経験した人がいるかもしれないと思ってここで尋ねました。

もうちょいがんばってみます。
207199:2011/03/24(木) 11:31:53.03
解決しました。単純に記述不足でした。
迷惑をおかけしてほんとに申し訳ない。
208デフォルトの名無しさん:2011/03/25(金) 13:16:19.66
勉強がてら簡単な描画エンジンみたいなもの作っていて
基本は素のDirect3DのAPI使って、デバイス依存する可能性が高そうな
テクスチャ作成処理とかD3DXCreateTextureを利用してたりするんだけど
D3DXとかDXUTって本格的なゲーム開発でも有効?
(DXUTはまだ触ったことないけど参考までに)
209デフォルトの名無しさん:2011/03/25(金) 17:10:04.02
はい。
210デフォルトの名無しさん:2011/03/25(金) 20:20:15.43
辺に独自実装すると>>206みたいない
「ぼくはまちがってないのにうごかない」みたいなことになるから
最初はD3DXなりDXUT使っとけ
イランところに壁を作らないで済む
211デフォルトの名無しさん:2011/03/25(金) 20:24:43.93
逆にハマって対処するのも知識が付く元だから、成果物を急がないならそれもアリ
壁って大事
212デフォルトの名無しさん:2011/03/25(金) 22:29:32.29
自作アプリを半年ぶりくらいに動作させたところ、
マルチレンダリングターゲットに失敗していることに気がつきました。

以下のような状態です。
アプリをウィンドウモードで起動し、一度の描画で4枚のターゲットに
描画させているのですが、0番以外のターゲットへの描画に失敗しています。
(0番と同じ画像が、1〜3番にも描画されている状態)

尚、フルスクリーンモードでは正常に描画されています。
また、一旦フルスクリーンモードで起動した後に、ウィンドウモードで起動すると
描画に成功します。

プログラムに誤りがある可能性も考えられるので、以下のMRTサンプルソースを
ダウンロードして実験したところ、やはり失敗することを確認しています。
(こちらも、CreateDeviceに与えるパラメートをフルスクリーンに修正して
実行すると成功しています。)
ttp://marupeke296.com/DXG_No50_MultiPassRendering.html

原因としては、ウィンドウモードの場合において、何かしらの
必要な初期化や設定が抜けてるんじゃないかと思うのですが、わかりません。

同様の症状をご存知の方はおられませんか?

開発環境は以下のとおりです。
ハード:Geforce GTX460
OS:Windows XP
ソフト:DirectX SDK June2010、VisualStudio 2010
213デフォルトの名無しさん:2011/03/26(土) 01:09:55.06
VRAMが足りてないだけなんじゃ
214デフォルトの名無しさん:2011/03/26(土) 13:22:43.14
Direct3Dで質問です。
ウインドウモードで描画を行う際、ウインドウを左側に寄せて画面外に一部をはみ出させると、描画位置が意図せずずれてしまいます。
例えば画面左側半分を赤。右半分を青くしたとします。
この時にウインドウの左半分を、左画面外に出すと、ウインドウの中身が「赤く」なります。

どうやら描画座標が、ウインドウが画面からはみ出た分だけ右にズレるようです。

この現象は、初期化の際
D3DPRESENT_PARAMETERSのBackBufferWidth, BackBufferHeightに0を入れる。
もしくはウインドウのサイズとまったく同じ値を入れると起きないようです。

バックバッファのサイズを好きな値にしつつ、この「画面外に出すとずれる」現象を回避するにはどうしたらいいでしょうか?
よろしくお願いします。
215デフォルトの名無しさん:2011/03/26(土) 14:51:14.52
>>214
ウィンドウのクライアント領域とバックバッファのサイズが異なると発生する問題
ウィンドウサイズの変更などに対応する場合はサイズ変更が発生する度にデバイスのリセットが必要
IDirect3DDevice9::Reset を調べると助けになるかも。
216デフォルトの名無しさん:2011/03/26(土) 20:41:30.23
DXUTGetElapsedTimeの最終フレーム以降の経過時間って何でしょうか?
前回呼び出しからの経過時間でしょうか?
217デフォルトの名無しさん:2011/03/26(土) 22:21:16.45
>>216
前回呼び出しからの経過時間
ただしタイマー(CDXUTTimer)がストップ状態であればその間の経過時間は測られない
また、パフォーマンスカウンターがサポートされていなければ-1.0を返す。

DXUTのソース見た感じだとそう読めました。
218デフォルトの名無しさん:2011/03/27(日) 00:43:20.67
>>217
ありがとうございます
219デフォルトの名無しさん:2011/03/27(日) 06:09:08.89
ボリューム影についてわかりやすく書かれたサイトやサンプルあります?
SDK付属のやつは難しい
220デフォルトの名無しさん:2011/03/27(日) 08:52:50.30
Direct3DDevice9 を2つ作っておいて、
片方のデバイスを通して作ったテクスチャを、
もう片方のデバイスで使う(レンダリングする)とかは
可能ですか??

片方のデバイスでNowLoading画面を出しながら、
別スレッドでもう片方のデバイスでテクスチャのロードとかを
したいのです。
221デフォルトの名無しさん:2011/03/27(日) 09:05:15.47
なんで意味不明な事を
222デフォルトの名無しさん:2011/03/27(日) 09:48:06.25
・そんな用途で2つ作らない
・ローディングとDirectxは厳密には関係ない
223デフォルトの名無しさん:2011/03/27(日) 10:24:31.82
NowLoading画面がアニメーションしてるとすると、
描画とロードが別スレッドで同時に発生するよね?
もちろんマルチスレッド可能に設定すればいいけど、
マニュアルにはパフォーマンスが落ちるとか書いてあるし。
どうすればいい?
224デフォルトの名無しさん:2011/03/27(日) 10:40:36.77
NowLoadingは必ずしもスレッドを必要としない
なぜなら1フレームにバイト数指定してちょっとづつ読めばいいから
プログラミング初心者ならこっちをオススメする。

スレッドを使うならば、ロードスレッドはずっとロード、
メインはそれにお願いキューでも作ってお願いする。
出来上がったら受け取る。受け取ったらCreate〜FileInMemory系で
「メインスレッドで」作成する
D3DCREATE_MULTITHREADEDフラグあたり使えばDirectx9でもあれこれできるかもしれないが、
オススメはしない
きちんと排他制御が使いこなせない限りマルチスレッドなど使うべきではない
225デフォルトの名無しさん:2011/03/27(日) 10:43:51.83
マルチスレッド設定によるパフォーマンスの低下が
自分のゲームで問題になるかどうか結論出してからまたいらっしゃい
226デフォルトの名無しさん:2011/03/27(日) 10:58:06.16
>>224
なるほど、やっぱりそういう沼くさいやり方になる訳ですね。
Create〜FileInMemory系は使ったことないので、色々試してみます。
ありがとうございました。
227デフォルトの名無しさん:2011/03/27(日) 17:38:08.50
>>219
ステンシルシャドウ?
228デフォルトの名無しさん:2011/03/27(日) 18:10:14.96
俺は面倒臭いからNowLoadingは別アプリにする手を使った、超楽
フルスクリーンだと使えないのが難点
229 [―{}@{}@{}-] デフォルトの名無しさん:2011/03/27(日) 18:14:37.99
起動時に全部読み込んでおいてNowLoadingだけそれっぽく表示しとけばいいんだよ
230デフォルトの名無しさん:2011/03/27(日) 20:13:56.75
>>224
http://msdn.microsoft.com/ja-jp/library/bb172527%28v=vs.85%29.aspx
ここによると
---
1 つのスレッドで D3D API を呼び出しつつ、別のスレッドでウィンドウメッセージを処理する場合、デバイスの作成時はこのフラグを使用する必要があります。
---
とある。
大抵のゲームプログラムはメッセージスレッドと別に、ゲームスレッドを作るだろうから(だよな?)
オススメどうのの前に、大抵このフラグは使わなければいけないことになるのでは?
231デフォルトの名無しさん:2011/03/27(日) 20:15:47.70
>>230
D3DCREATE_MULTITHREADED
のことね
232214:2011/03/27(日) 20:28:24.32
>>215
ありがとうございます。

・ウインドウサイズは可変
・バックバッファサイズはユーザーが決める。描画速度に直結するので多少汚くても小さめにした人がいるので
ということで、必ずしもウインドウとバックバッファのサイズを一致させることができないのですが、
ズレ現象自体を回避する方法は無いでしょうか?
(Resetは、ウインドウサイズが変わったらResetかけてバックバッファをウインドウサイズと同じにしちゃえってことですよね?)
233デフォルトの名無しさん:2011/03/27(日) 20:35:09.58
たかだかゲームループ作るだけでスレッドなど必要ないだろう
必要だと思うなら使えばいいだけだが
234デフォルトの名無しさん:2011/03/27(日) 20:59:46.14
>>233
お前のゲームはウインドウを移動させるとゲーム処理が止まるのか
235デフォルトの名無しさん:2011/03/27(日) 21:04:58.45
>>234
たかだかそれだけのためにスレッドを生成するのか
236デフォルトの名無しさん:2011/03/27(日) 21:35:50.55
>>235
え?うん。通信対戦とかだと致命的だしね
237デフォルトの名無しさん:2011/03/27(日) 21:40:54.47
>>234
むしろ何も考えずに作った俺のアプリはとまんないんだけどw
238デフォルトの名無しさん:2011/03/27(日) 21:54:32.39
んなことより、複数のスレッドでD3D APIを呼ぶ時に設定するもんだと思ってたのに、
メッセージスレッドと分けるだけで必要になるって事実にびっくりしろよ

俺はびっくりした
239デフォルトの名無しさん:2011/03/27(日) 22:00:12.38
Audio や キー/JoyStick の入力は別スレッドだよな
直接起こす or APIに起こさせるの違いはおいといても
240デフォルトの名無しさん:2011/03/27(日) 22:16:07.63
オーディオはともかくキーやjoyStickも別スレッドなのは
何が目的?
241デフォルトの名無しさん:2011/03/27(日) 22:21:18.04
意味ないよな
表示には所詮反映されないわけで素直にコマ落ちさせたほうがまだ納得できる
242デフォルトの名無しさん:2011/03/27(日) 22:21:51.71
キューに溜めるだろ。特に JoyStick。
格ゲーとか作った事あればわかるかもしれないが、必須
243デフォルトの名無しさん:2011/03/27(日) 22:22:05.27
むしろフレームの途中で入力状態が変わるのは矛盾も生じやすくない?
244デフォルトの名無しさん:2011/03/27(日) 22:22:46.75
>>241
意味あるだろ
245デフォルトの名無しさん:2011/03/27(日) 22:25:47.43
>>243
多分思い描いてる処理とか、作ろうと思う内容の違いかもしれないけど、
逆に描画他でコマ落ちしている時、入力を受け付けなかったらプレイヤーは違和感感じると思うぜ
246デフォルトの名無しさん:2011/03/27(日) 22:28:59.28
意味無い派の頭に浮かんでいる処理の様子
・画面にフィードバックが無い間に、入力でパラメータが変わったらおかしい

意味ある派の頭に浮かんでいる処理の様子
・入力が直接画面にフィードバックするロジックじゃなくて、入力が一旦キューに溜められて
 それを評価してパラメタに反映する。 パラメタへの反映はゲームループ内で行われる
 → 先行入力の基本処理

こういう事だと思われ
247デフォルトの名無しさん:2011/03/27(日) 22:29:41.75
>>245
例えば次のフレームまでに→←→→・・・って10回入力があったときは
どれが採用されんの?っていうかどう処理するつもりなの?
248デフォルトの名無しさん:2011/03/27(日) 22:30:23.42
>>245
うーんなるほど。内容にもよるのかな
249デフォルトの名無しさん:2011/03/27(日) 22:31:59.61
描画するときのフレームで押してるキーで十分だけどな
そうとうコマ落ちしてるもんでも作らない限り
格ゲー作ってる会社で働いてたことあったけど入力をキューに貯めるなんてことしてなかった
250デフォルトの名無しさん:2011/03/27(日) 22:37:45.98
>>247
それが入力された前回からの差分タイムと、入力された内容をセットで記録して
FIFOで取得していくのさ。 例えば波動拳のコマンドがあったとき、必要な入力が ↓\→ の3ストロークだとして、
実際には 「必要な3入力が一定時間以内にあれば良い」(人の手はいい加減だから、余計な入力がある事も考慮する) だった時、
過去に遡って合計時間がその一定時間以内になるキー入力がそれらだったら、「これは波動拳が入力された」 と見なすロジック。
以前思いついて実装したら、かなり綺麗に反応した。 もちろんそれだけじゃなくても、違和感消えるぜ

てか、やってみればすぐわかるぜ

>>249
普通はライブラリ側で処理するように書くから見なかったんじゃね

251デフォルトの名無しさん:2011/03/27(日) 22:40:23.29
>>250
ゲーム作ろうぜ!みたいなブログしか見てない人や
リアルタイム処理の実装をコアライブラリから書かない人なんかには
ピンと来ないと思われ

あと FIFOキューじゃなくて、FILOスタックじゃね
252デフォルトの名無しさん:2011/03/27(日) 22:41:47.00
いや、お前ら…
PCのゲームでコマ落ちってなんの冗談だよ
フレームスキップが基本だろ…
通信対戦どうする気なんだよ。ヘボマシンの対戦相手が処理落ちすると、こっちもひっぱられて処理落ちするんか?w
253デフォルトの名無しさん:2011/03/27(日) 22:43:23.34
素人とロジックマニアの会話がすれ違うスレ
254デフォルトの名無しさん:2011/03/27(日) 22:45:07.51
描画と入力を同一スレッドでやるなんて、正気の沙汰じゃねーだろ
可変フレームレート描画が基本な時代に
255デフォルトの名無しさん:2011/03/27(日) 22:49:23.85
普通は別スレッドが当たり前
簡単なゲームや、「つかいかたにゅうもん」 みたいなサイトだと
初心者がついてこれなくなる=主旨がズレていくから、説明されないけど
256デフォルトの名無しさん:2011/03/27(日) 22:50:48.15
>>250
いや、さすがに1秒で60回近くも更新されてるんだから違和感なんてぜってーねーよ
だいたいどんな超人だよ

まあ、それはおいておいて2DRPGだとして主人公はどっちに進むんだ?
ってことを俺は聞きたいんだ
257デフォルトの名無しさん:2011/03/27(日) 22:51:56.69
>>251
いやキュー。スタックにしてどうする
てか過去制限のあるFIFOのリングキュー
258デフォルトの名無しさん:2011/03/27(日) 22:55:58.44
キューにためておくのもスレッドに分けなくても貯めておける、
というのはまたおかしな考え?その時に時間だって記録しておけるはずだし
259デフォルトの名無しさん:2011/03/27(日) 22:56:10.83
問題は、メッセージスレッドやらキー入力スレッドやらを作ると、
D3DCREATE_MULTITHREADEDを使う必要があるのか?ってことなんだが

それ以外の2DRPGがどうのだのはスレ違い。そろそろ自重しろ
260デフォルトの名無しさん:2011/03/27(日) 22:57:25.86
>>256
とにかく頭で考えないで実装してみなよ
たった1/60秒だろ?思い込みは危険だぜ

RPGでもなんでも、評価そのものは単に入力した順にされるだけだって
261デフォルトの名無しさん:2011/03/27(日) 22:57:33.13
>>259
そんなん指定してみりゃいいじゃん
262デフォルトの名無しさん:2011/03/27(日) 23:00:10.25
>>260
もしかして、話わかってない?

次のフレームまでに方向キーが色々押されたと
でも操作キャラが移動する方向は仮に4方向だとしてそのうち1方向しか選べないよな?
って状態だよ?

>>259
硬いこというな
DirectXのみのことだけしか話しちゃいけないってわけじゃなくて
ある程度そこから派生事項もあるからこそ盛り上がる掲示板だろ
263デフォルトの名無しさん:2011/03/27(日) 23:00:40.78
グルーコードやコピペで済ます人や、アルゴリズム考える事に慣れていない初心者も多いから
こういった話は通じないと思います

あとここはAPIのスレであってロジックのスレじゃないです
264デフォルトの名無しさん:2011/03/27(日) 23:03:19.31
>>262
いやむしろ話わかってないか?

キュー [↑→↓] こういう状態だとして、それは入力を溜めるスレッドの仕事で
評価する側はFIFOで先頭から必要に応じて、空になるまで取り出すだけだっての
先行入力って言えばわかるかい?

>>263
そうだったスマン

265デフォルトの名無しさん:2011/03/27(日) 23:04:37.12
わかったわかった…。ちょっとロジックの話にも付き合うよ

キー入力をスレッド化するのは、描画が処理落ちしてスキップされても、常に同じ感覚で波動拳を出すためだ。

入力をキューに貯めるってやつは、キー入力スレッド側の入力を貯めておいて
メインスレッド(描画もする)側で1フレ分ずつ処理して入力スレッドに追いつかせるって意味だ。
入力キューが溜まっていたら、その間は描画はせずに、入力キューに基づいて高速処理するんだよ。

入力キューは、通常1秒間に60個の入力が貯まる


266デフォルトの名無しさん:2011/03/27(日) 23:05:58.18
てか、この辺のロジックは、必要な時に自分で思いついて実装するか
単にマイライブラリとして書いておけばいいだけなので、

理解出来ない人や不要な人は別にやらなくてもいいんだぜ
267デフォルトの名無しさん:2011/03/27(日) 23:07:27.00
>入力キューは、通常1秒間に60個の入力が貯まる

通常じゃなくて、1秒間に60個の入力が貯まる実装なら貯まる、が正解
通常、じゃない
268デフォルトの名無しさん:2011/03/27(日) 23:07:43.07
>>264
うっそ、すっげ複雑じゃん
↑↓→←なんて入ってたらどっち進んでいいのかわかんねーよw
トリガも取りにくくね?

どうせ必要なのは最期のだけだろ?w
269デフォルトの名無しさん:2011/03/27(日) 23:11:48.64
>>267
一応世の中のゲームはFPS60入力が「通常」でな…。

>>268
次のフレームは上、その次のフレームは下、次は右、次は左。
描画に4フレかかったせいで、入力が4つ貯まってる状況なだけじゃんそれ
270デフォルトの名無しさん:2011/03/27(日) 23:12:29.20
>>265
>入力キューが溜まっていたら、その間は描画はせずに、入力キューに基づいて高速処理するんだよ。

その入力キューを溜める仕事の話が上の別スレッドの話
勝手に誰か溜めてくれるのかい? てかキー入力ならOSが溜めてくれるけど

>>268
なんでこれでフクザツなんだよ。

>↑↓→←なんて入ってたらどっち進んでいいのかわかんねーよw
だから先頭から順に処理するだけだっての・・・
人がいち、にい、さんと数えながら入力するのと、固有処理は同じことだよ
理解できないなら別にいいから、人に説明させといて単芝生やすなksg
271265:2011/03/27(日) 23:14:19.46
>>270
いや、俺は分かってるから…
272デフォルトの名無しさん:2011/03/27(日) 23:14:21.86
>>269
いや、描画は1秒60回更新だとして
キー入力を1フレ1回じゃなくて反応した分キューに詰め込むって言ってるんだろ?
だから、次フレまでにたくさんのキー入力が入るって話してんじゃねぇの?
だから次のフレームは最期に押されたキーである←にいく・・・って俺は思ってるんだけど
273270:2011/03/27(日) 23:16:07.90
>>271
あ、補足してくれただけだったか・・・
スマン勘違いした
274デフォルトの名無しさん:2011/03/27(日) 23:16:38.68
>>270
ええ?処理すんの?
例えばドラクエなFC版の3とか4とか想像してくれ(あんまりかわんねーけど)
↑いっても↓いっても→でも←でも1歩1歩同じスピードで進むよな?
キー全部処理するってことありえねーだろ?
275デフォルトの名無しさん:2011/03/27(日) 23:17:38.20
おまえら、格闘のコンボ入力と、RPG移動入力と、闘っても意味ないぞ。
仕様が違う
276265:2011/03/27(日) 23:18:29.35
FPS60のゲームだと仮定する。

・キー入力は別スレッド派
描画が処理落ちした(例えば1回の描画に唐突に1秒かかってしまった!)としても、
入力スレッドは安定して動いているので、60個の入力が貯まる。
メインスレッド(←描画も行ってる)は、60個の入力を順番に処理して、遅れてしまった分を取り戻す。
(たいていこの間は描画がスキップされ、いわゆるフレームスキップ状態になる)

・キー入力は描画スレッドと同一でいいだろ派
描画が処理落ちするとゲームがスローになる
別にSTGとかならわりとある実装
277270:2011/03/27(日) 23:19:38.41
>>274
いやそういう事じゃないんだって・・・ スピードじゃなくて
もう先行入力について勉強でもしてくれ。
278265:2011/03/27(日) 23:21:17.57
>>277
お前の言ってることを全面的に同意した上で言わせてくれ

先行入力っていう言いまわしが誤解生んでんだよ
279デフォルトの名無しさん:2011/03/27(日) 23:26:09.95
>>276
えー、スレッド派だせぇじゃーん
絶対、変な動きするよー
280265:2011/03/27(日) 23:28:56.11
>>279
だせえかどうかはともかく、格闘ゲームとかはこの実装がポピュラーだよ。
描画の負荷とまったく関係なく、常に同じ速度でゲームが進むんだから、一番優れてると思うけど?

「変な動き」とやらは絶対しないでしょ。描画の負荷が乱れても、ゲーム速度は一切変化しないんだから
281デフォルトの名無しさん:2011/03/27(日) 23:31:17.70
>>280
嘘吐くなよw
俺、一応、格ゲー作ってる会社いたけどキー入力のキューなんて作ってなかったもん
マジで描画スレッドといっしょだったよ
282270:2011/03/27(日) 23:32:16.96
>>279
↓こういう事。変な動きなんかする訳ないだろ
http://codepad.org/wiqqcXin

って、DirectXのスレで申し訳ないが


>>278
そうなのか
283デフォルトの名無しさん:2011/03/27(日) 23:32:47.61
フレームごとに処理をすれば良いRPGと
コマンド入力を受け付けなくちゃいけない格ゲーを同列にかたっちゃいかんな


後者の場合はコマンドを評価するためのバッファが必要で
且つ、フレーム速度によって入力の難易度が変わってはいけない
あとは分かるよね?
284デフォルトの名無しさん:2011/03/27(日) 23:33:15.56
>>265
1秒に60個のキー入力がたまる設計でもいいが、ダサイ設計だなと思う
285270:2011/03/27(日) 23:33:46.54
>>281
ヒント: >>282 のコードで言うと、mainから下の部分しか担当してなかったら、
取得される値がキューから来てるのかそうでないのか、見かけ上わからないから
286デフォルトの名無しさん:2011/03/27(日) 23:34:18.44
>>281
それってコンシューマなんじゃないの?
フレーム速度が保証されてる環境ならキューは作らずに済ます場合がある
287265:2011/03/27(日) 23:35:57.37
>>281
それ、アーケードかコンシューマの話でしょ
動作環境が定格じゃなかったり、通信対戦絡んだりしてるなら絶対フレームスキップ方式のはずだよ
288270:2011/03/27(日) 23:36:28.91
描画側を別スレッドで行っているなら、入力側でキュー作らない可能性はあるよな
289デフォルトの名無しさん:2011/03/27(日) 23:36:49.81
>>286
まあ、そうかもな
どんだけ違いがあるか知らんけど
無駄なことやってると思うけどな

DirectXのチュートリアルで十分だぞ
あれといっしょの仕様で30万本近く売ってるから
290デフォルトの名無しさん:2011/03/27(日) 23:37:52.52
そろそろDirectXと関係なくなってる件について
291265:2011/03/27(日) 23:38:55.91
本当にゲーム会社で格ゲー作ってるようなプログラマが、
2chスレで「キーバッファ式がだせえ」とか「30万本近く売ってるから」とか書き込むわけないわなw

そもそも、キーバッファ式だせえ言ったら、Windowsのメッセージキューシステム全否定じゃねーかw
292デフォルトの名無しさん:2011/03/27(日) 23:39:23.82
この程度で無駄な処理とか、どんだけ底辺なんだよw
293デフォルトの名無しさん:2011/03/27(日) 23:41:33.16
>>291
そんな大層なことしてると思ってるのか?w
ぶっちゃけるとSDKのコードをそのまま貼った、組んですらいない

多分10分ぐらいでなんの疑問も持たずに終わらせました
これが現場のリアルな話ですw
294265:2011/03/27(日) 23:41:45.56
>>288
描画を別スレッドにする可能性はあるな…
だが、キーバッファ式よりよっぽどだせえし、描画に必要な情報を全部コピーする必要があるから、速度ガタ落ちだよなw
295デフォルトの名無しさん:2011/03/27(日) 23:42:09.98
入力に別スレッドとか立ててないなあ

描画が追いつかなくても、WM_KEYDOWN とか勝手に OS のメッセージキューに溜まっていってるじゃん
メッセージ処理(全ての入力を受け取れる) → フレーム処理(全ての入力を使う) → 描画
これで問題ないことない?何か勘違いしてる?
296265:2011/03/27(日) 23:42:19.40
なんだ。釣りか…
ム板はマジ強制IDにして欲しいわ…
297デフォルトの名無しさん:2011/03/27(日) 23:42:21.56
>>291
1秒に60個て言うことは、→押した状態が数個もたまるんだろw ダサイ意外ないなw
298265:2011/03/27(日) 23:43:55.86
>>295
描画に1秒がかかったら(爆発エフェクトが超重なったとか、そういう瞬間的なものでな)
1秒分の入力がメッセージキューにたまるんだぞ?

WM_KEYDOWNには「いつ」押されたかの情報は入ってないから、1秒の前半に押されたのか、後半に押されたのかすらわからん
299デフォルトの名無しさん:2011/03/27(日) 23:44:03.80
(そんなところこだわらねぇよ・・・)
300デフォルトの名無しさん:2011/03/27(日) 23:45:16.46
(1秒もかかっちゃうのが常時続いてる状態をなんとかする方向は考えないのかな・・・?)
301270:2011/03/27(日) 23:46:39.40
>>295
>描画が追いつかなくても、WM_KEYDOWN とか勝手に OS のメッセージキューに溜まっていってるじゃん

だから、それ、キューに、溜まって、いってるじゃん
>>239 を参照
302265:2011/03/27(日) 23:46:55.52
相手の爆弾が爆発した瞬間、1秒棒立ちになるゲームなんてゲームにならねーよ…
瞬間的なものって書いてあるのに、なんで常時になってんだよ
303デフォルトの名無しさん:2011/03/27(日) 23:48:15.09
>>297
お前、自分に技術が無くて理解できないから意地になってるだろw
304デフォルトの名無しさん:2011/03/27(日) 23:48:33.87
だから問題にはならねぇだろw
305デフォルトの名無しさん:2011/03/27(日) 23:48:53.56
>>302
だから、棒立ちになるのを回避するために 60/1の設計を選んだ、それがダサイい
306265:2011/03/27(日) 23:49:47.27
>>305
すまん、名前つけてくれ
あと、305で言っていることの意味が分からんのだがもう少しまともにレス書いてくれんか
307デフォルトの名無しさん:2011/03/27(日) 23:50:34.14
60/1・・・?
308デフォルトの名無しさん:2011/03/27(日) 23:52:03.47
ちなみに俺(>>289,293,299,300)は簡単なことしか言わないからな
309デフォルトの名無しさん:2011/03/27(日) 23:52:13.80
>>304
問題にならないもの(1人用ゲーム)もあれば、問題になるもの(通信対戦)もある
好きに選択してろよ
310デフォルトの名無しさん:2011/03/27(日) 23:53:12.45
>>309
さっきからあえてスルーしてたけど
通信云々はまったく関係ないと思うんだよねw
311265:2011/03/27(日) 23:53:59.34
>>308
理想論的には、どの環境でも処理落ちしないに限るけどさ
処理落ちした場合どうすんの?

入力キュー分けておけば、処理落ちする環境でも定格通りのスピードでゲーム進行できるんだから、
使わない手はないだろ
312デフォルトの名無しさん:2011/03/27(日) 23:54:57.44
>>310
他の誰かと同期をとるゲームで、描画の処理落ちで入力まで処理落ちしたらゲームにならねーだろ
いや、低スペックでやるのが悪いって切り捨てるなら、それでもいいけどさ
313デフォルトの名無しさん:2011/03/27(日) 23:54:58.68
>>311
別にどうもしない
いいPC買ってね
314デフォルトの名無しさん:2011/03/27(日) 23:56:40.71
60キー入力/1sec
>>306
キー入力を別スレッドにするかどうかは、「その時の要求仕様により」としか答えられないが。
「1秒にキー入力が60個キューに」は例えば「→」押しっぱなしで、それが60個たまるという意味なのか?
まずこれ答えてくれ。
315270:2011/03/27(日) 23:57:41.50
なんか簡単な話のはずだったのに
何で感情的な反対とか出るのかわからん

とりあえずキー入力の件は、上のコード見せた時点で伝わったらしく、
意味不明な反応が無くなって良かった
316265:2011/03/27(日) 23:58:32.85
>>313
プログラマとしてあまりにダサくて閉口するわ

>>314
その通りだよ。大抵入力は32bitもあれば十分だから、unsigned intのdequeだな
ボタン押して無くても「押してない」っていう情報が貯まるよ
317デフォルトの名無しさん:2011/03/27(日) 23:59:35.12
>>312
推奨環境出してるのに低スペックでやるのが悪いんじゃん
そんなもんサポートするのに燃やした工数誰が金出すの?

ま、プロの実装なんてこんなもんよw
いい意味でも悪い意味でも金になんないことはしないのが商売なんだよきっとw
318デフォルトの名無しさん:2011/03/28(月) 00:00:29.54
>>316
やっぱりか、他の方法は思いつかなかったのか?
319265:2011/03/28(月) 00:01:35.95
プロのふりはもういいから…
5分でできる実装をしない理由もないし、カプコンのMTフレームワークとかもフレームスキップ式だっつーの…
可変フレームレートなめんな
320270:2011/03/28(月) 00:02:49.86
>>316
ちなみに俺は上のcodepadのコードでは端折ってるが、
状態とタイムの記録をしていく格好なので、同じ情報が続く場合は溜めない
321デフォルトの名無しさん:2011/03/28(月) 00:03:27.16
答えもせずに、人格批判かwwwwww だめなやつ
322265:2011/03/28(月) 00:05:06.10
>>320
別に1フレ4バイトくらいだし、そこケチる必要なくね?
アナログスティック使ってるともうちょい容量食うけど
323デフォルトの名無しさん:2011/03/28(月) 00:13:06.01
自称プロとか久々に見たな
春休みだからか
324270:2011/03/28(月) 00:13:11.35
>>322
ケチるというか・・・ 格ゲな処理イメージで申し訳ないだけど
状態変遷を追うのがうざったいからさ。

 [nn.mm: 上ON] [nn.mm: 右ON] [nn.mm: 上OFF] [nn.mm: 下ON] [nn.mm:右OFF]

とかなら追いやすいけど、これが

 [上ON] [上ON] [上ON] [上ON] [上ON] [上ON] (中略) [右ON] [右ON] [右ON] (後略)

とかだとウザすぎるのさ、ってだけ
325265:2011/03/28(月) 00:17:42.46
>>324
なるほどね
格闘ゲームでの、技コマンド解析とは相性良さそうだね

と、ロジックの話はこんなところでいいよな
馬鹿に教えようと思ったら、釣りだったのは残念だが、
釣りに見せかけて情報を引き出したかった初心者プログラマだったと思おう

別にム板は素直に聞けば応えてくれる連中ばっかなんだけどなー…
326270:2011/03/28(月) 00:19:49.24
>釣りに見せかけて情報を引き出したかった初心者プログラマ
これだったらマジで金品要求するわ
327デフォルトの名無しさん:2011/03/28(月) 00:22:55.10
DirectX初心者です。(スレッドに関してはめっきり)
上で盛り上がってますが私のプログラムもそういえばドラッグ中動かない仕様だな〜
と思いながら読んでましたが理解できる部分半分、よく分からない部分も多々。

そんな訳で皆様のお話についていけるような知識を得たいのですが
DirectX(主にゲームプログラミング)におけるマルチスレッドの利用について
参考になるサイトや書籍を知ってたら教えて下さい、お願いしますm(_ _ )m
328デフォルトの名無しさん:2011/03/28(月) 00:25:45.46
>>327
入力スレッド でぐぐったら、ちょうどよさげなサイトヒットしたよ
329デフォルトの名無しさん:2011/03/28(月) 00:28:06.43
>>327
ゲームプログラミングに限らない話になるから、マルチスレッドについては
それ単独で処理勉強してくれ
このスレ的に言えば、どの関数やクラスを利用する時気をつけなければならないか、って話になると思う
それ以外は本来スレチ
330デフォルトの名無しさん:2011/03/28(月) 00:38:00.22
>error C1083: include ファイルを開けません。'd3dx9.h': No such file or directory
が出ます。しかし自分で調べてフォルダへのパスはちゃんと入力したのです
(証拠画像)http://iup.2ch-library.com/i/i0272246-1301240129.jpg

実行可能ファイルは
C:\Program Files\Microsoft DirectX SDK %28August 2006%29\Utilities\Bin\x86
ライブラリディレクトリは
C:\Program Files\Microsoft DirectX SDK %28August 2006%29\Lib\x86

C/C++の全般 追加のインクルードディレクトリにも
C:\Program Files\Microsoft DirectX SDK %28August 2006%29\Include
を入れました

なにかインクルードできない原因がありますか?
331デフォルトの名無しさん:2011/03/28(月) 00:42:21.50
>>323
実はかなり前の話でいまはもうとっくに辞めてるんだけどねw
332デフォルトの名無しさん:2011/03/28(月) 01:06:36.15
>>330
よくわからんけど
リンカーの追加の依存ファイルの項目の設定はいけてんのか?
(まあ、出てるエラーが違うかなぁ・・・)
333デフォルトの名無しさん:2011/03/28(月) 01:24:55.04
出力を読み返してみたところ
1>TRACKER : error TRK0005:
というエラーが ありました、これが原因かもしれません少し調べてきます。
上の情報だけではエラーは無いと思うのです、いくら調べてもミスは見つからないからです。
334デフォルトの名無しさん:2011/03/28(月) 01:46:13.87
あんま関係ないけど
SDKをインストールしたときに環境変数DXSDK_DIRが設定されてるはずなのに
なんでフルパスでいれてるんだろう?不便じゃないのか?
335デフォルトの名無しさん:2011/03/29(火) 19:55:27.12
少し外れた質問かもしれませんが
ID3DXEffectオブジェクトを持ったクラスを作り、そのクラスの実体を作って行くと、5つ作ったところで5つ目のクラスのID3DXEffectオブジェクトで「ヒープが壊れている」とエラーが出ます。
そのクラスオブジェクトを作る順番を入れ替えても5つ目でエラーになるので、用意したメモリ領域以上に実体を入れようとしているのが原因ではと思っています。
でもクラスオブジェクトを作るごとにメモリ領域は新しく用意されるはずですよね?どうしてでしょうか。
336デフォルトの名無しさん:2011/03/29(火) 21:12:41.71
まずID3DXEffectを取り除いて同じエラーが出るのか確認するんだ
話はそれからだ。原因の絞込みはデバッグの基本だぞ
337デフォルトの名無しさん:2011/03/29(火) 21:30:47.57
ヒープが壊れている系は、まったく関係ない場所でおきた破壊がまったく関係ないところで出ることが多い

ID3DXEffectを使わずにアプリを正常終了させて、Debug出力にリークが無いか調べてみ
338デフォルトの名無しさん:2011/03/29(火) 22:26:02.24
DirectXに限らずWindows系で一番嫌なバグだな
特にGUIのDCまわり、お前、解放する必要あんのかどうすんのか言えよ
339デフォルトの名無しさん:2011/03/29(火) 23:06:58.17
>>338
開放しなくてもとりあえずシーンとしてるのが意地悪いよな
340デフォルトの名無しさん:2011/03/29(火) 23:14:30.00
ヒープが壊れたって怒られるのは、
mallocで確保したのを二重にfreeで解放してた
ってパターンも多い
341335:2011/03/30(水) 14:13:46.02
頂点定義でカラーを含めてたのにHLSL内でカラーを扱ってなかったのが問題だったっぽい
頂点定義関係カラーを消したら直った
342デフォルトの名無しさん:2011/03/31(木) 18:02:42.48
質問なんですが、DirectXを使ってプログラミングするツールとコンソールは
何なんですか?どんな環境でプログラミングするんですか?

343デフォルトの名無しさん:2011/03/31(木) 18:16:54.22
どういう質問?
もっと幼稚な感じで説明されたほうがわかりやすいかも
344デフォルトの名無しさん:2011/03/31(木) 18:20:58.87
>>342
標準的にはVisual C++
345デフォルトの名無しさん:2011/03/31(木) 18:24:00.81
>>343
環境。
コンパイラとかエディターとかターミナルなど。

後DirectXライブラリは皆さん使ってますか?
346デフォルトの名無しさん:2011/03/31(木) 18:33:26.47
自分の場合、C++エディタはVisual C++2008ExpressEditionを使っています商用に使わなければ無料です。現行のバージョンは2010ですが設定が面倒。
自分は一般的な3Dゲームのようなものを作っていますので、Visual C++でウィンドウズAPIを使ってアプリケーションをつくっています。
ライブラリは公式のDirectXSDKのもので、誰かが自作したようなライブラリは使っていません。
347デフォルトの名無しさん:2011/03/31(木) 18:42:24.68
俺はMicrosoft Visual Studio 2008にDirectXSDK(June2010)のサンプルにあるEmptyprojectとかいうのに入ってるDXUTを利用させてもらってる。
最近になってDXUTナシで作ることに挑戦し始めたが。
でも初心者なら適当なCD付きの本を買って環境作ったほうがいいんじゃね。
348デフォルトの名無しさん:2011/03/31(木) 18:47:01.21
>>346>>347
ありがとうございます。

初心者はDirectXそのものを自在に扱うのは限りなく不可能に近いと思ってます。
349デフォルトの名無しさん:2011/03/31(木) 18:57:26.70
サンプルからコピペしてやっていけば簡単だし覚えやすいよ
「○×つくろー」ってサイトに初歩的なことから書いてあるからわかりやすい
350デフォルトの名無しさん:2011/03/31(木) 22:05:45.96
>>348
>初心者はDirectXそのものを自在に扱うのは限りなく不可能に近いと思ってます。

それ以前に言語自体、またDirectX以前にwin32自体意味を理解して
自分が思ったコードを書けないと話にならない。DirectXは良くも悪くもただのライブラリです

351デフォルトの名無しさん:2011/03/31(木) 22:23:11.15
まぁ、C++ & Win32API で2Dゲームをある程度自由に作れるくらいの
レベルじゃないときつい。DirectXは。
352デフォルトの名無しさん:2011/03/31(木) 22:36:53.42
何かを作る、のが先にあって、それをわかってて
その上で例えばいくつかの手段を考えて、その中から例えば
DirectX を選択して描画や入力を任せてみる、みたいな順序だから

>>348 の言う 「初心者」 って言葉の中に、「プログラミング自体の」 とか、まして 「言語自体の」 とか
「Windows上で動くプログラミング自体の」 みたいな意味合いが含まれてたら、不可能で当たり前
353デフォルトの名無しさん:2011/03/31(木) 23:01:17.00
せめて「Windows自体の」とか「パソコン自体の」初心者でないことを祈る
354デフォルトの名無しさん:2011/03/31(木) 23:12:27.23
球やグリッドなどの基本形状をラインリストで作りたいんですけどアルゴリズム教えてください
355デフォルトの名無しさん:2011/04/01(金) 00:00:31.99
せめてグリッドくらいは自分の頭使って下さいよ・・・
356デフォルトの名無しさん:2011/04/01(金) 01:59:28.67
>>355
グリッドはなんとかできたんですが球はどうしたらよいでしょうか・・・
357デフォルトの名無しさん:2011/04/01(金) 02:03:01.63
パソコンを窓から投げ捨てろ
358デフォルトの名無しさん:2011/04/01(金) 04:44:04.98
>>346
ExpressEditionでも商用利用可能。
359デフォルトの名無しさん:2011/04/01(金) 08:13:57.94
DirectXってWin32APIのAPIライブラリだから、Wind32APIを参照する必要ってないんじゃないですか?

360デフォルトの名無しさん:2011/04/01(金) 08:24:02.30
DirectX=WinAPIのAPI??自分でも何言ってるのかわからん。
間違ってたらすいません・・・




361デフォルトの名無しさん:2011/04/01(金) 09:16:14.85
>>359-360
流石にこれは釣りとか冗談だよね
362デフォルトの名無しさん:2011/04/01(金) 11:01:45.80
>>359-360
釣り針でっかいから食いついとくけど、君はDirectXやWin32APIの勉強の前に言語の勉強が必要で、
さらに言語の勉強の前に用語の勉強から始めないといけない。

あと無駄に改行するな。
363デフォルトの名無しさん:2011/04/01(金) 12:53:12.72
>>356
デバッグ用描画だったら適当にsin cos使って頂点を一回りすれば
それなりに見えね?
モデリングソフトが出力する頂点をベタ打ちしたり、
D3DXCreateSphereとかつかってメッシュ描画しちゃうのでもいいが
レンダリングステートで線の三角系描画設定できるし
364デフォルトの名無しさん:2011/04/01(金) 15:24:55.35
>>362
イメージとしては

DirectXもWin32APIもマイクロソフト関連のAPIであることは間違いないでしょ?
365デフォルトの名無しさん:2011/04/01(金) 16:24:57.26
>>363
ありがとうやってみます
366デフォルトの名無しさん:2011/04/01(金) 16:36:13.26
適当にwebで見つけた古いコードを弄っててプログラム起動したらハードがサポートしてなくて凹んだ。
(インデクス付き頂点ブレンドって時代遅れなのね、ソフトウェア処理では動いたけど)

ふと、ゲームの動作環境で「グラフィック:GeForce○○以上推奨」とか書かれるけど
それって、速度的なパフォーマンスやサポートするシェーダバージョン以外にも
この世代のGPUはこの機能が使えるから〜とか、そういった知識も必要なのかと思ったのですが
グラフィックカードによりけりな部分の知識を学べる良いサイトや書籍があれば教えて欲しいです。
367デフォルトの名無しさん:2011/04/01(金) 19:39:43.58
368デフォルトの名無しさん:2011/04/01(金) 20:20:09.30
>>364
こんにちわんとこんばんわにとありがとうさぎの括りがいっしょでしょっていってるようにきこえる。
WinAPIはWinodwsの基本的な部分を開発するAPI。
DirectXはWindwsの上のレイヤーであるマルチメディア部分を開発するAPI
レイヤー的にイコールになることは無いよ。
369デフォルトの名無しさん:2011/04/01(金) 21:02:07.68
test
370デフォルトの名無しさん:2011/04/01(金) 21:06:59.90
>>366
俺もあまり詳しくないから違ってたらすいません

3D処理とかの行列変換出来るか否かでハードウェアT&Lに依存するんじゃないだろうか
でもこれに対応してないって10年以上前の化石PCとかだよね・・・

グラボの性能で○○以上って書いてあるのは、単純に同時に描画するポリゴン数とかテクスチャ数?
から換算してるんじゃないだろうか
書籍やサイトについては分からないです、すいません
371デフォルトの名無しさん:2011/04/01(金) 21:18:26.76
オンボードだと5年前でもハードウェアTnLは微妙だったりする
372デフォルトの名無しさん:2011/04/01(金) 21:53:53.47
DirectX参照しながらプログラミング組みたいんですが
基本C言語でOKですか?

DirectXはC++のほうが相性良かったりしますか?
373デフォルトの名無しさん:2011/04/01(金) 21:57:52.25
>>372
グローバル変数の地獄に落ちない器量があるならどっちでもいいよ。
374デフォルトの名無しさん:2011/04/01(金) 22:00:11.94
>>373
器量が無い人向けはC?
375デフォルトの名無しさん:2011/04/01(金) 22:09:46.08
>>374
覚えることは多いけどC++。
変数、関数、クラスと基本構文ができればいける。目安としては、1クラス1機能。
粒度は自分に合わせるといいよ。
376デフォルトの名無しさん:2011/04/01(金) 22:14:22.25
やっぱりC言語のポインタって本当に精密なんだな。
377デフォルトの名無しさん:2011/04/01(金) 22:17:53.51
ID3DXEffectのSetMatrixで設定する
非転置行列てなんぞ。
転置行列は判るが。ワールドマトリクスとか転置せずにつかえよってことなだけ?
378デフォルトの名無しさん:2011/04/01(金) 22:44:25.55
>>376
ポインタはとある地点を指しててそれのアクセス方法を提供するだけなんだけど、わからない人にはほんとにわからないらしい。
379デフォルトの名無しさん:2011/04/01(金) 22:45:20.16
とある地点の指定子(ポインタ)
380デフォルトの名無しさん:2011/04/01(金) 22:54:12.06
ポイントするからポインタ
381デフォルトの名無しさん:2011/04/01(金) 23:28:14.86
>>377
多分だけどHLSLでなくアセンブラ使う場合は転置する必要があったけど
HLSLで扱う場合はその必要がなくなったから「非転置」って言い方してるんじゃないかな?

丁度シェーダ本のアセンブラ部分読んでて、シェーダに行列渡す時はDirectX側とシェーダ側で
行列の扱いが異なるから転置が必要、みたいな記述があったんで
SetMatrix使えば勝手に転置してくれるって感じなのかな?
間違ってたら誰か訂正よろ。
382デフォルトの名無しさん:2011/04/01(金) 23:59:02.57
>>381
むしろそんなの可能性もあったのかw<アセンブラで転置の必要あったかも
サンプル見てもカメラからとってきたのをそのまま使ってるから転置しない行列ってことでいいんだろうけど
とりあえずそれで納得しとく。ありがとう



383デフォルトの名無しさん:2011/04/02(土) 00:45:04.79
ポインタでつまづく奴は
ポインタ=アドレスだと勘違いしてる奴だと思う
384デフォルトの名無しさん:2011/04/02(土) 04:17:48.37
適当に*つけて宣言してエラー起こす俺にはハイレベルすぎる話だぜ
385デフォルトの名無しさん:2011/04/02(土) 08:16:00.08
>>383
ん? 違うのかい? c#とか? ハンドル?
386デフォルトの名無しさん:2011/04/02(土) 08:25:21.30
>>385
×アドレス
○アドレスを格納する変数
って意味だろ
387デフォルトの名無しさん:2011/04/02(土) 08:34:22.55
大したスキルもないときにそんな無駄なこと考えちゃうからだろうな
*の数と&をテキトーに合わせておく・・・程度に考えてるやつのがうまく理解する
388デフォルトの名無しさん:2011/04/02(土) 08:41:22.76
流石に>>387は無いわ
389デフォルトの名無しさん:2011/04/02(土) 08:44:48.56
>>388
仕組みなんて時間がたてば勝手に理解するだろ
問題はとりあえず組めること
390デフォルトの名無しさん:2011/04/02(土) 11:37:15.78
>>387
イメージで理解できたら、だいたい理屈と整合性取れてるんだよな。
理屈ばかり追い求めたら頭がパンクする。しかも下手したら俺論理的
で頭良いやべーwwwってなるからな。

そんな俺はDirectXとWindowsAPIの区別もつかない初心者。
391デフォルトの名無しさん:2011/04/02(土) 16:34:49.72
>>390
多機種の DirectX 使わない人にとっては Win32 API と同じに見えるのでいいと思うよ。
OpenGL がもしも Win32 でしか使われなかったら 境目が無くなると思うし。
392デフォルトの名無しさん:2011/04/02(土) 17:30:02.71
座標変換済み頂点(RHW)で構成した面に、テクスチャを完全に貼るにはどうしたらいいのですか?
未変換の頂点で構成した面では完全に貼れるのに・・・
393デフォルトの名無しさん:2011/04/02(土) 17:45:21.53
>>387
これはおれもそうだと思う。
さすがに数だけって訳にはいかないけど、最初は深く考えすぎても
だめ。最初はとりあえず動くように書ければ、経験重ねて自然に
覚えれたって感じだったな。

>>392
完全に貼るってどういうこと?
DirectXだと座標を-0.5fしないと合わないとかはあるけど。
394デフォルトの名無しさん:2011/04/02(土) 17:54:46.40
OsによってDirectXの更新の古さとかありますか?
7は最新のDirectXですか?

後ActiveXはDirectXと同じようなもの?
395デフォルトの名無しさん:2011/04/02(土) 18:36:23.92
>>394
MSのOSさぽーと期限が切れたOSのDXは更新されない。
DX7は最新ではありません。Win7のDXは11で今のとこ最新。
ActiveXはCOM利用形態のひとつ。
たとえばIEに外から機能追加したりするときにActiveXを使う。
396デフォルトの名無しさん:2011/04/02(土) 18:39:40.26
ユーザーが更新しようとしなければ古いままの状態の事もある。ってのも追加していい?
397デフォルトの名無しさん:2011/04/02(土) 21:04:02.86
XAudio2は同時に音を鳴らそうとしたときに、数の制限はありますか?
たとえばn個のソースボイスを同時にStartしたときに、x個しか音が出ないとか
398デフォルトの名無しさん:2011/04/02(土) 23:41:04.09
DirectXでアニメーション作れますか?
399デフォルトの名無しさん:2011/04/02(土) 23:45:45.57
シェーダーにプログラムから渡せる変数って何個まで?
シェーダーは2.0です
400デフォルトの名無しさん:2011/04/03(日) 00:01:07.31
>>398
作れます
401デフォルトの名無しさん:2011/04/03(日) 00:10:50.65
>>399
浮動小数点型定数レジスタは
ここを見る限り、最低4Dベクトル*256個
これはD3DCAPS9.MaxVertexShaderConstと等しくなると書いてある
http://msdn.microsoft.com/ja-jp/library/bb172961%28v=VS.85%29.aspx
402デフォルトの名無しさん:2011/04/04(月) 10:05:55.65
アプリ製作の環境って皆さん何使ってますか?
403デフォルトの名無しさん:2011/04/04(月) 12:47:57.58
>>402
VC++6.0&DirectX SDK9.0(Oct2004)使ってるよ^^v
404デフォルトの名無しさん:2011/04/05(火) 02:08:17.91
邦子?
405デフォルトの名無しさん:2011/04/05(火) 14:02:24.24
今まで使ってた環境が古いので新しくVC++2010Expressと
日本語ドキュメントがあるらしいAug2009のSDKを入れようと思ってるのですが
古い環境を残しておく利点って何かあるでしょうか?
>>403 みたいなのだと古い環境で動くアプリケーションも作れるとか?
406デフォルトの名無しさん:2011/04/05(火) 14:25:17.83
August 2009のSDKはVS2010をサポートしてないのをわかった上でやるなら止めはしない
407デフォルトの名無しさん:2011/04/05(火) 14:43:32.92
VS2008Express+August 2009 で無問題
408デフォルトの名無しさん:2011/04/05(火) 17:13:03.89
いま最新のDirectX SDKってどれですか?
409デフォルトの名無しさん:2011/04/05(火) 22:13:50.64
>>405
新しいSDKにするとDirectMusicが使えないとかじゃないかな
Microsoft DirectX SDK (February 2007) を最後に消えたんだと思う
俺はVS2010 と SDK2007 使ってる

>>408
Microsoft DirectX SDK (June 2010)
じゃないのかな?違ったらすいまそん


初めはVS2010 と SDK2010 使ってて入門書見ながら楽しんでたら
dmusui.h(スペル適当)がありません、どっかのサイトからゲットしたら今度は○○.hがありません、それもいれたら
今度は意味不明なエラー
じゃ別の手段と思いググったら「PlayMusic( ) を使いましょう」 う〜ん、これなんか違う・・・・・
結局SDK2007入れて解決させてしまった
そして今さっきこのスレでXAudio2の存在を知って憂鬱になっているところです
410デフォルトの名無しさん:2011/04/05(火) 22:27:35.06
なんかいろいろおかしいぞ

DirectMusicが消えたのはNovember 2007
( ttp://www.microsoft.com/downloads/en/details.aspx?FamilyID=529f03be-1339-48c4-bd5a-8506e5acf571 )

PlayMusicなんてAPIはないしXAudio2はDirectMusicの代わりになるような物でもない
411デフォルトの名無しさん:2011/04/05(火) 22:51:38.11
XAudio2 は強いて言えば DirectSound の代替
さらに言えば、XBOX(XNA)用が主目的で、Windows用は追随統合されただけ
412デフォルトの名無しさん:2011/04/05(火) 22:59:06.35
MicrosoftとしてはXboxの規格で統一したいんだろうけど
規格難民が出るのはいただけない
413デフォルトの名無しさん:2011/04/05(火) 22:59:16.07
多分PlayMusicってのはDirectXじゃなくてDxLibの関数
DxLibはどこかの個人が作った、初心者向けの砂糖で包んだラッパーライブラリ
414デフォルトの名無しさん:2011/04/05(火) 23:51:26.51
>>410
またたくさんの嘘を付いてしまいましたすいません

>>413
それだそれ、ゲームプログラミングやってみたくてあちこち手だして
DXライブラリ の方と記憶がごっちゃになっていたようだ、すいません


でもXAudio2ってのがXBOX用でDirectMusicの変わりにならないとすると
最新のDirectX SDK で音鳴らす時どうしたらええの?

dmusici.h dmplugin.h 追加して 「うまくいかね!」
って諦めないで頑張ってあっちゃこっちゃいじってDirectMusicを使い続けるのがセオリーなの?
DirectSound ってのはSDK (June 2010)にあってそっちを使うのが普通?

何が言いたいかと言いますと
これから勉強してやっていくにあたって音を鳴らすのにどれを使っていくのが無難?
415デフォルトの名無しさん:2011/04/06(水) 00:13:34.53
>>414
だからDirectSoundか、XAudio2。
ただしXAudio2については、ググっても日本語の記事はSDKのサンプル以上の情報はほぼ無い
= (入門者が書いた入門記事 = HelloWorld状態の記事) くらいしか無いので、
SDKのSample頼みか、あるいは眉にツバつけながらMSDN追うか、あるいは海外の記事を追いかける必要アリ
416デフォルトの名無しさん:2011/04/06(水) 00:14:48.48
あ、MIDIとかそっちの話だったら、その他のライブラリ探すか mci
単純にBGMならDirectSoundかXAudioでストリーミング
417デフォルトの名無しさん:2011/04/06(水) 00:31:43.41
>>415-416
どうもです
単純にBGM流すのと効果音程度なのでDirectSoundにします
SDKまた最新に差し替えてDirectMusicからDirectSoundにソース変更してみます!
418デフォルトの名無しさん:2011/04/06(水) 01:36:00.20
DirectInputで絵を描く並におかしいことを言ってる気がする
419デフォルトの名無しさん:2011/04/06(水) 14:46:00.50
blenderでモデリングした.xをワールドに出すと重心や大きさによってリサイズされるんだけど
これは.xの標準仕様?
モデリングの段階では2つのメッシュがきっちり角で合わさってるのに、directxでレンダーすると微妙にずれてる
420デフォルトの名無しさん:2011/04/06(水) 15:03:59.51
>>419
自分が書いた内容と、Blenderのx形式expoterの中身を、もう一度よーーーく見直してから、
速やかにBlenderスレに移動するといいと思う

※ワールドに出すとって何?重心や大きさによってリサイズって何が?
 モデリングの段階できっちり合わさってるってのは、Blender以外で確認したのか?
 Expoter は DirectX の物じゃないだろ って事
421デフォルトの名無しさん:2011/04/06(水) 15:13:24.65
>>419
自分の場合、blenderから自前の独自形式で吐き出したメッシュは、
DirectX でも OpenGL でも正常に表示されます
ついで言うと、メタセコでモデリングした内容を、自前のインポータでBlenderに取り込んで
それを xfileで再エクスポートしても正常に表示されます。 これらの話は、DirectXと無関係です
スレチです
422デフォルトの名無しさん:2011/04/06(水) 17:02:33.07
複数のモデルを全て(ビルボードで)こちらに向かせたいのですが、一回の処理で全て向かせるにはどうしたらいいのですか?

423デフォルトの名無しさん:2011/04/06(水) 18:13:07.22
>>422
一回の処理がどの程度を言うのか分からないけど、
カメラが動く度に逆行列の計算とワールド変換が必要なのでは?

ごく最近勉強した。参考になればどうぞ↓ 間違ってたらごめん。

// ビュー行列の逆行列
D3DXMATRIX matView, matInv;
d3ddev->GetTransform(D3DTS_VIEW, &matView);

matInv._11 = matView._11;
matInv._12 = matView._21;
matInv._13 = matView._31;
matInv._14 = 0.0f;
matInv._21 = matView._12;
matInv._22 = matView._22;
matInv._23 = matView._32;
matInv._24 = 0.0f;
matInv._31 = matView._13;
matInv._32 = matView._23;
matInv._33 = matView._33;
matInv._34 = 0.0f;
matInv._41 = 0.0f;
matInv._42 = 0.0f;
matInv._43 = 0.0f;
matInv._44 = 1.0f;

// モデル描画関数
D3DXMATRIX matWorld = トランスフォーム行列 * matInv * 平行移動行列;
d3ddev->SetTransform(D3DTS_WORLD, &matWorld);
424デフォルトの名無しさん:2011/04/06(水) 18:17:14.31
逆行列を使えばいいんですね、ありがとうございます。
425デフォルトの名無しさん:2011/04/07(木) 08:55:47.86
>>422
「一回の処理」の定義がよく分からんが、
1クロックでって事ならそういうSSE命令が出来るのを待つしかないんじゃないか?

計算式をあまり使わずにって事ならカメラ行列の逆行列が使えたような気がする。
426デフォルトの名無しさん:2011/04/07(木) 08:56:29.68
やべっ、リロードしてなかった恥ずかしい
427419:2011/04/07(木) 12:25:47.39
2つの.xの中身は、どちらも頂点の場所が-1.0、1.0で、並べるとぴったりくっつくようになってるはずです。
でも、directx(自作のスキンメッシュクラス、サイズも同じ)で並べて描画すると、微妙に大きさが違うのです。
なにか仕様があるのではないかと思っています。
428419:2011/04/07(木) 12:48:15.79
自己解決しました
お騒がせしました
429デフォルトの名無しさん:2011/04/07(木) 16:50:00.30
俺は間違ってない系が一番タチ悪い
430デフォルトの名無しさん:2011/04/07(木) 16:57:38.71
マップや地形を描写してキャラ(素材サイトの頂きもののポリゴン)を一通り動かし
当たり判定等の処理も入れられたのですが、キャラそのものを動かす(アクションする?)にはどうしたらいいのでしょうか?
剣を振りまわしたり等の事です
自分なりに調べてみたら「ボーン化」という作業が必要なのは分かりましたが
そっから先がさっぱり分かりません
どこか参考になるサイトありませんでしょうか?
431デフォルトの名無しさん:2011/04/07(木) 17:09:38.27
要するに、動かしたい部分の頂点群をAからBに移動できれば移動になるわけだな。

まるぺけは必読だ!!
ttp://marupeke296.com/GameMain.html
432デフォルトの名無しさん:2011/04/07(木) 18:53:15.60
>>431
このレベルだとその回答じゃわけわからんと思う

>>430
「スキンメッシュ」で調べてみるといいよ。ちなみに普通ボーン化なんて言わない。
DirectXのSDKサンプルにもSkinnedMeshというのがあるので参考に。
>>431が出してくれてるサイトにもxファイルのスキニングについて書いてるよ。
433デフォルトの名無しさん:2011/04/07(木) 19:27:48.86
>>431-432
有難う御座います

なるほどスキンメッシュって言うんですね、サンプル見て勉強してみます
434デフォルトの名無しさん:2011/04/08(金) 00:14:20.09
ちなみにサンプルを追いかけて改造して勉強するならいいけど、
丸パクすると詰むぞ
435デフォルトの名無しさん:2011/04/08(金) 00:35:24.29
俺の場合
サンプルコピペ→エラー→1から見直し→勉強になる
というパターンが多いな
でもたまに根本的な部分がわからなくて詰むから基本はそのうちやりたいな
COM集成体とクォータニオンは最初から理解するのに大きく足止めされた
436デフォルトの名無しさん:2011/04/08(金) 00:41:52.62
スキンメッシュ(ボーンデフォームなど)って、クォータニオンとその乗算だけじゃなく、
座標系が回転していく動作とか理解してないと、とてもじゃないけどキャラクターアニメーションなんて作れない
特に頂点座標と、その座標が置かれている系と、回転軸がどこを中心にどう回転してるのかとか、
そしてそれらが再帰的に回転を繰り返してて、結局グローバル座標系におかれた頂点は今どこにいるべきか、とか

確かに丸パクだと詰むな。挙動自体追えなくなる。ちょっと詰んだ瞬間に、全部逆戻りで予想以上に足止めされる
下手するとそのまま頓挫
437デフォルトの名無しさん:2011/04/08(金) 01:59:13.75
仕組みを理解してもクラス設計が難しい
438デフォルトの名無しさん:2011/04/08(金) 08:42:14.57
クラス設計は 「計算の仕組みを」 理解しただけじゃ無理じゃね
目的の整理が出来ていないと。 どうしたいか、の部分
439デフォルトの名無しさん:2011/04/08(金) 11:22:56.94
1.サンプルを参考に必要な処理を抜出し、自分なりにtxtにまとめる
2.まとめたtxtを見ながら自分の環境に処理を追加していく
3.とりあえず動かしてみるとどっかで失敗しているようで落ちる
4.まとめたtxtを読み返すがtxtでまとめてある処理はきちんと組み込まれている
5.txtにまとめた俺が間違っていると気づき、とりあえずサンプルを丸パクする
6.当然動く訳だが何も理解出来ていないので意味が無い
7.凹む ← 今ココ
440デフォルトの名無しさん:2011/04/08(金) 16:43:18.36
ただのアホ
441デフォルトの名無しさん:2011/04/08(金) 18:49:55.20
ビュー行列から遠近法だけを打ち消すにはどうしたらいいのですか?
遠いものも近いものもサイズだけは一定にさせたいのです。
442デフォルトの名無しさん:2011/04/08(金) 20:57:47.28
>>441
素直に正射影使えば・・・・・

そういう意味でなければパースペクティブがどういう風になっているのか調べて。
きっと希望にそうものがなんにせよ出来ないと思うけど。
443デフォルトの名無しさん:2011/04/09(土) 00:08:53.19
つかビュー行列の時点では遠近法なんてないだろ
射影行列ではじめて遠近感が出る
で、>>442が言うように正射影で射影行列作ればいい
444デフォルトの名無しさん:2011/04/09(土) 15:52:58.99
DirectInputでマウスデバイスを作ったんですが、なぜかY軸だけ反応しません。

X軸もZ軸も左右のクリックも反応するのに、Y軸だけ反応しないってのは、
何がおかしいんでしょうか。
445デフォルトの名無しさん:2011/04/09(土) 17:24:45.92
DrawIndexedPrimitiveで四角形を描くにはどうしたらいいのですか?

現状は、カリングをオフにして
device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 3, 0, 1);
で三角形までは描画できるのですが、
device.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 4, 0, 2);
にしても三角形のままになってしまいます。
446デフォルトの名無しさん:2011/04/09(土) 18:09:36.96
>>444
自分で何も調べず、情報も一切出さずに他人に丸投げして解決しようと考える
お前の頭がおかしい
447デフォルトの名無しさん:2011/04/09(土) 18:10:45.55
>>445
頂点インデックスの内容も書いて
448デフォルトの名無しさん:2011/04/09(土) 18:22:37.15
>>446
なぜわざわざ突っかかるw
449デフォルトの名無しさん:2011/04/09(土) 18:22:50.70
>>445
DrawIndexedPrimitives は C# だなぁ・・・
450445:2011/04/09(土) 18:28:32.11
頂点とインデックスデータは
indices[0] = 2;
indices[1] = 1;
indices[2] = 0;
indices[3] = 3;
indices[4] = 1;
indices[5] = 2;

v[0] = Vector3(0,0,0);
v[1] = Vector3(1, 0, 0);
v[2] = Vector3(0, 1, 0);
v[3] = Vector3(1, 1, 0);

になっています。
>>449
はい、Slimdxを使っています。
451デフォルトの名無しさん:2011/04/09(土) 18:44:32.80
>>450
何故 primitiveType(arg1)が TriangleList で primitiveCount(arg6) が 2 で numVertics(arg4) が 4 なの?
452445:2011/04/09(土) 18:56:08.15
TriangleListを使う理由は、DrawIndexedPrimitivesで一度に四角形(三角形2つ)を大量に描こうと思って使っています。
それで、試しに1個の四角形を描こうと思って、頂点数4つと面が2つを引数にいれています。
453451:2011/04/09(土) 19:04:13.22
>>452
5年前のC++の記憶で悪いけど TriangleList で2つの三角形を描くなら numVertics は
(三角形の頂点数)3 * (三角形の数)2 で 6 だったはず。
454445:2011/04/09(土) 19:29:10.74
>>453
ありがとうございます。numVerticsの所を重点に検討してみます。
455デフォルトの名無しさん:2011/04/09(土) 20:32:45.41
てs
456デフォルトの名無しさん:2011/04/09(土) 20:36:12.23
>>444
元も子も無いんだがジョイパッド以外のマウスやキーボードはWinapiで出来るから、
DirectInputは非推奨だぞ
GetCursorPosとかScreenToClientとか使ったほうがいいらしいし、
おまけに簡単だ
457デフォルトの名無しさん:2011/04/09(土) 20:43:37.12
XInput2現る。
458デフォルトの名無しさん:2011/04/10(日) 06:02:30.36
練習に、DirectXでテトリス作ろうと思ったんですが、
画面の枠にぴったり合わせた描画って可能なんでしょうか?
もしかしてカメラ位置とかは気合いで合わせないとならない?
459デフォルトの名無しさん:2011/04/10(日) 09:18:21.49
>>458
んなわけない。
3D描画でも、カメラの視野角とアスペクト比でほぼ正確にわかる。
「視錐台」でぐぐれ。
460デフォルトの名無しさん:2011/04/10(日) 09:30:34.32
本当に数学的な認識力は必須。何をするんでも
461デフォルトの名無しさん:2011/04/10(日) 11:09:53.29
2Dだけしか使わないなら座標変換済み頂点を使う
3Dも混ぜたいならプロジェクションを正射影行列でやる
462デフォルトの名無しさん:2011/04/10(日) 15:22:33.48
レンダーターゲットを変更して、アンチエイリアスを設定した深度ステンシルサーフェスを利用すると正常に描画されず
アンチエイリアスが可能なのはバックバッファだけだと聞きました
実際にやってみると、確かにレンダリング結果がおかしくなります
しかし、最近のゲームでは遅延レンダリングを行っているにもかかわらずアンチエイリアスが有効なゲームがあります(Crysis2とか)
どうやってアンチエイリアスをかけているのか分かりますか
463デフォルトの名無しさん:2011/04/10(日) 15:34:19.40
レンダリングターゲット用のテクスチャにフィルタを掛ける
464デフォルトの名無しさん:2011/04/10(日) 17:56:09.27
>>462
バックバッファの4倍の面積のテクスチャ上にレンダリングして、
バックバッファに戻すときにフィルタかけるとか
465デフォルトの名無しさん:2011/04/10(日) 19:04:21.66
おまいら頭いいな
466デフォルトの名無しさん:2011/04/10(日) 21:59:25.14
DirectXを使っていてプログラムを終了した時に終了コードが0x1で終了するスレッドって何らかのエラーが
発生しているって事でしょうか?
1つだけ出ているのですがどこの呼び出しで作られたスレッドか特定出来なくて困ってます・・
467デフォルトの名無しさん:2011/04/10(日) 22:08:36.84
それDirectXと関係なく、あなたの書いた処理にバグがあるだけとかそういう
・・・特定自体しんどいだろうけどな
468デフォルトの名無しさん:2011/04/10(日) 22:22:40.81
エラーしたのがどこかを表示させるメッセージボックスを組み込めばいいんじゃないでしょうか
469デフォルトの名無しさん:2011/04/10(日) 22:41:57.10
メッセージボックスなんてしなくても、VSなら右クリックでトレースポイントしかければいいのでは
あとウォッチ。 せめてデバッガの機能使おうぜ
470デフォルトの名無しさん:2011/04/10(日) 22:56:45.83
>>466
俺が建てたスレッドが正常終了でTRUEを返してるだけだ気にするな
471デフォルトの名無しさん:2011/04/11(月) 14:45:11.38
工場統一したってこと?
              ,. ‐'' ̄ "' -、   ,. ‐'' ̄ "'' -、
             /        ヽ/          ヽ
                l          l             l        つ
            l         l          l     つ
         ,. ‐'' ̄ "'' 、    ,,. --‐┴─-- 、     / ̄ "'' -、   つ
       /      ,.-‐''"´           \ _/        ヽ
      l       /                   ヽ          l
       l     /  >                 l          l
      ヽ    l       (_人__ノ       <  ヽ       /
       ,,>‐‐|   ´´     |  /  /     , , ,. ‐'' ̄ "' -、/___
      /    l        ヽ_{   i  , '" ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄    `ヽ
     l     ` 、            ヽ ゝ ________
      l       ,. ‐'' ̄ "' -、   ,. ‐'' ̄ "'' -、     /  ヽ\
       l,     /         ヽ /        ヽ,  /   ノ フヽ
       ヽ、,,  l            l          l,,_〈  ーく く く ノ
         "'''l            l             !   \/ ̄i ̄
              ヽ          /ヽ          /     ゝ ⊥___,. --
             ヽ,___,,,/  ヽ,,___,,,/
                   /     |
                /       |
472デフォルトの名無しさん:2011/04/11(月) 15:02:18.16
DirectX9でゲームを作っているんですが、
GeForce 9300 GSのPCでdevice->SetViewPort()を
呼び出したタイミングエラーが出ているようで困っています。

通常こんな所でエラーが出た経験がなくて戸惑っているのですが、
ひょっとして、MinZ/MaxZは0.0〜1.0の範囲じゃないといけないのでしょうか?


473デフォルトの名無しさん:2011/04/11(月) 16:14:24.08
>>472
1.D3DDeviceを内包するクラスの宣言がポインタだ
2.DirectXバージョンを間違ってdefineしている
3.SetViewportに渡しているのがD3DVIEWPORT以外だ
4.関数の大文字小文字を間違えている

とりあえず俺がミスった時はだいたいこの辺が原因だった。
474デフォルトの名無しさん:2011/04/11(月) 16:23:37.92
>>473
どうもありがとうございます。

実際にはSlimDX越しにアクセスしているので
いずれとも違ってそうです。
475472:2011/04/11(月) 16:25:01.85
最初の書き込みで抜けていましたが、
D3DERR_INVALIDCALL エラーが発生しています。
DirectXのAPI内でのエラーです。
476デフォルトの名無しさん:2011/04/11(月) 17:01:32.12
>>474
>実際にはSlimDX越しにアクセスしているので

じゃあSlimDXスレへどうぞ。いやマジで

477デフォルトの名無しさん:2011/04/11(月) 17:09:57.03
テクスチャの各フォーマットが使えるかどうか判別したいんですが、どうすればできますか
478デフォルトの名無しさん:2011/04/11(月) 17:51:18.26
それは自分で判断
479デフォルトの名無しさん:2011/04/11(月) 18:04:04.55
普通に表示させてみりゃ一発じゃねーの
480デフォルトの名無しさん:2011/04/11(月) 22:51:45.18
IDirect3D9::GetDeviceCaps
で調べる
481デフォルトの名無しさん:2011/04/11(月) 22:59:06.41
>>478は答えになってないし
>>479はプログラマから足を洗え
>>480も普通に間違ってる

で、次の方どうぞ〜
482デフォルトの名無しさん:2011/04/11(月) 23:03:31.91
とりあえずCaps周辺調べりゃいいじゃん
テクスチャフォーマットも調べられないクズが長居すんじゃねーよ
483デフォルトの名無しさん:2011/04/11(月) 23:14:35.95
ヘルプを見る
484デフォルトの名無しさん:2011/04/11(月) 23:15:05.82
>>481
お前も答えろよ
485デフォルトの名無しさん:2011/04/11(月) 23:18:56.62
481ではないが
IDirect3D9::CheckDeviceFormat
このあたりだろう。不親切なやつばっかだな。たいした手間でもないだろうに
486デフォルトの名無しさん:2011/04/11(月) 23:21:38.49
うーん、その程度のこと教えるのって親切なんだろうか?
487デフォルトの名無しさん:2011/04/11(月) 23:24:05.44
少なくとも偉そうに
間違ったことを教えるよりはマシだな
488デフォルトの名無しさん:2011/04/12(火) 00:20:19.99
DirectXCapsViewerも見たことないんじゃしょーがねーな
あれ、一括してCapsだから間違ってはいないと思うがな

間違いって確定でいいのかね?
489デフォルトの名無しさん:2011/04/12(火) 00:54:12.77
そもそもここの質問者はできたらできたでこのコードでできましたとか
事後報告もできない根っからの糞ばっかだからこの程度でいい
結局、>>477だってもうこねぇだろ?できたんだかどーだか知らないけど
490デフォルトの名無しさん:2011/04/12(火) 02:57:14.32
うーん、その程度のこと教えるのって親切なんだろうか?
491デフォルトの名無しさん:2011/04/12(火) 07:02:00.54
>>490
俺はどっちでもいいなw
>>477の死亡確認なんてw
492472:2011/04/12(火) 10:07:08.02
>>476
あっちは過疎ってるので、SlimDX固有の話くらいしかできません。
質問するまえにSlimDX中の該当箇所のC++ソースコードに目を通して、
SlimDX側には問題なかろうという判断はしています。

この問題はDirectX9/ハードウェアの組み合わせによって発生する問題と考えています。
最初の質問から追加する件として、
・ATI Mobility Radeon HD 3470
でも発生を確認しました。
ただしこちらはドライバのバージョンが2008年と古いため、
ドライバの更新をお願いしようとしているところです。
なお、
・Intel GME 950
・ATI RADEON 4850
・GeForce 9600 GT
およびそれ以降では同様の不具合は確認されていません。
493デフォルトの名無しさん:2011/04/12(火) 10:10:46.29
あなたの書いた範囲にバグがあるよとかそういう・・・特定自体しんどいだろうけどな
494デフォルトの名無しさん:2011/04/12(火) 12:34:14.28
じゃあGeforce9300GSで動作するゲームは全部、SetViewPortを使ってないんじゃねw
495デフォルトの名無しさん:2011/04/12(火) 21:03:00.00
海外のツールでdirectxアプリケーションのウインドウの端に黄色い数字でFPSを表示するツールがあったと思うのですが、名前かURL教えてください
496デフォルトの名無しさん:2011/04/12(火) 21:09:14.80
たぶんDxtoryのことだと思う
497デフォルトの名無しさん:2011/04/12(火) 21:16:13.89
>>496
サンクス
Frapsでした
498デフォルトの名無しさん:2011/04/13(水) 00:30:22.44
スペキュラーライトを使っても、モデルにスペキュラーの設定してなかったらテカッってならないです?
499デフォルトの名無しさん:2011/04/13(水) 00:32:10.96
そもそもモデルにしか設定できなくね?>スペキュラー
500デフォルトの名無しさん:2011/04/13(水) 00:36:39.74
ライトのスペキュラって光沢色じゃね。って、OpenGLとごっちゃになってるかもしれないが
501デフォルトの名無しさん:2011/04/13(水) 00:39:01.80
ライト側にスペキュラの設定値があるっておかしくね?
そんなことね?
502デフォルトの名無しさん:2011/04/13(水) 00:40:12.99
ミスった時はだいたいこの辺が原因だった。
503デフォルトの名無しさん:2011/04/13(水) 00:44:07.93
ところで世のゲームエンジンは超難しいシェーダたくさん使ってるのにどうしてライトが複数使えるの?
504デフォルトの名無しさん:2011/04/13(水) 00:44:10.99
モデルの方も設定しないとキラッとしないっぽいのか
ライトのスペキュラーとマテリアルのスペキュラーの作用の仕方がわからない
試さないと…

ライトのスペキュラって
typedef struct _D3DLIGHT9 {
D3DLIGHTTYPE Type; /* Type of light source */
D3DCOLORVALUE Diffuse; /* Diffuse color of light */
D3DCOLORVALUE Specular; /* Specular color of light */  ←これのこと
D3DCOLORVALUE Ambient; /* Ambient color of light */
D3DVECTOR Position; /* Position in world space */
D3DVECTOR Direction; /* Direction in world space */
float Range; /* Cutoff range */
float Falloff; /* Falloff */
float Attenuation0; /* Constant attenuation */
float Attenuation1; /* Linear attenuation */
float Attenuation2; /* Quadratic attenuation */
float Theta; /* Inner angle of spotlight cone */
float Phi; /* Outer angle of spotlight cone */
} D3DLIGHT9;
505デフォルトの名無しさん:2011/04/13(水) 00:45:55.77
なるほど、一番明るくなるところのライトの色か!ありがとうわかった
506デフォルトの名無しさん:2011/04/13(水) 00:46:13.73
>>504
自分でシェーダ組んでるなら書いたとおりじゃね?
固定シェーダならライト側のスペキュラーは使われてるかどうか調べる必要あんじゃね?
507デフォルトの名無しさん:2011/04/13(水) 00:48:10.17
>>500
OpenGLのライトにはspecularカラーの設定あるよ。その時設定されているmaterialの
specularカラーに上乗せされる = 光沢がある時、それが見える
508デフォルトの名無しさん:2011/04/13(水) 00:50:09.71
これ以降では同様の不具合は確認されていません。
509デフォルトの名無しさん:2011/04/13(水) 00:51:24.74
>>492
ビューポートがウィンドウからはみ出した場合、
環境によって補正されて歪んだり、何も表示されなかったりしたことがある
エラーが出た覚えはないけど、そのあたりはどうかな

というかエラーってどんなエラーよ
510デフォルトの名無しさん:2011/04/13(水) 00:52:03.42
>>507
マテリアルに設定したスペキュラの色とライトに設定したスペキュラの色を合成する感じでおk?
そして、スペキュラはハイライトの部分だけに反映される設定か
511デフォルトの名無しさん:2011/04/13(水) 00:52:37.03
http://msdn.microsoft.com/ja-jp/library/bb147399%28v=vs.85%29.aspx
DirectXはライトのスペキュラが使われて、マテリアルのスペキュラは指定しないと使われない感じ?
なんでライトのスペキュラなんだろな?
ライトのスペキュラなんてなくしてライトの色とマテリアルのスペキュラ自動で使うようにしたったら誰も疑問持たない気がすんだけどな
512デフォルトの名無しさん:2011/04/13(水) 00:56:43.19
ライトの色をマテリアルのスペキュラに渡して使わせると上手く表現できるのか、いいこと聞いたわ
513デフォルトの名無しさん:2011/04/13(水) 01:06:47.43
だからぁマクローリン展開しろよ糞ハゲ☆
514472:2011/04/13(水) 01:23:35.94
>>509
475でも書いたんですが、
D3DERR_INVALIDCALL エラーが発生しています。
RADEON9800やGeForce7600GS当たりでも普通に動くコードなのに、
なんで今頃エラーが発生するようになったのか検討がつかないんですよね。
参ったな……。
515デフォルトの名無しさん:2011/04/13(水) 01:44:04.54
   チョッパリの不幸で今日もキムチがうまい!!
      +       ____    +
        +    /⌒  ⌒\ +
     ニダ━━━/  \   / \━━━━!!!!
      +   /::::::   ________  ::::::\  +
         <  \   トェェェイ  /  >
       +  \     `'´     /   +
      _|\∧∧∧∧MMMMM∧∧∧∧/|_
      >                      <
  _/_  /    ノ    /_ ──┐ヽ|  |ヽ  ム ヒ | |
  _/_  /   --+-- / ̄ /   /  | ̄| ̄ 月 ヒ | |
   /   /__| ノ    _ノ   \   / | ノ \ ノ L_い o o
516デフォルトの名無しさん:2011/04/13(水) 07:18:14.25
>>512
どこにそんなこと書いてあるんだ?
出来ないやつの思考ってやっぱりわからない
517デフォルトの名無しさん:2011/04/13(水) 10:11:00.49
説、拡がる
518デフォルトの名無しさん:2011/04/13(水) 12:39:15.84
テクスチャに透過色を指定して透過させたいのですが、描画順が(前後の重なり)ばらばらでも透過させるにはどうしたらいいのですか?
519デフォルトの名無しさん:2011/04/13(水) 13:06:15.55
Zバッファ使ってる限りは、頂点カラーにしろテクスチャにしろ
透過色を含むものは後ろから順番に描画しなければいけなかったはず。

http://marupeke296.com/DXG_No17_ZBufferAndAplhaBlending.html
520デフォルトの名無しさん:2011/04/13(水) 13:48:21.63
明白ですが。
521518:2011/04/13(水) 14:18:46.29
>>519
パーティクルみたいな複数の板ポリを描画する時も、奥から描ける様にソートしてから描けば良いですか?
522デフォルトの名無しさん:2011/04/13(水) 17:06:00.85
>>521
奥行きがあんまりないのっぺりしたパーティクルだったら複数の板ポリを
順番気にせず描けばいい。
気になるようだったらパーティクル内でもソートする、みたいな感じ。
523デフォルトの名無しさん:2011/04/13(水) 21:36:25.66
>>514
DXデバッグランタイムのログは?
SlimDXでもDebugViewってツールで見れるから
確認してみろクソハゲ
524デフォルトの名無しさん:2011/04/13(水) 22:28:01.26
たしかpastelで描画しなければいけなかったはず。
525デフォルトの名無しさん:2011/04/16(土) 15:13:40.59
書籍で行列の継ぎ足し合成は誤差が蓄積されるので止めるようにと書かれていたのですが、そうすると座標値を保存しておいて、それに行列を掛けることを繰り返すのもNGですか?
526デフォルトの名無しさん:2011/04/16(土) 16:50:11.95
疑問持たない気がすんだけどなぁ どうだろ
527デフォルトの名無しさん:2011/04/16(土) 16:53:05.36
結果が気になるようだったらパーティクル内でも先にソートしておく、みたいな感じ。
528デフォルトの名無しさん:2011/04/17(日) 23:35:55.20
D3DXCreateTextureFromFileInMemoryEx関数使ってる人いる?
D3DXCreateTextureFromFileInMemoryだと正常に動作するものが、前者だとメモリリークするのだが・・・
俺がどっかでアクセス違反してる可能性もあるが、なにか知っている人いたら情報ください。

使ってるけど普通に動くよって人がいたら、俺のミスです。
DirectX 9.0c SDK (December 2006)を使ってます。
529デフォルトの名無しさん:2011/04/17(日) 23:55:24.77
Direct3D11で文字描画をするためにDirect2D+DirectWriteを導入しようとしています。
下記のサイトを参考にしています。
http://mitsunagistudio.aki.gs/tips/d2d-d3d11-sharing

ここのサンプルではD2D側で描画したテクスチャを
D3D側にCopyResourceでスクリーンに丸ごとコピーしているのですが、
ドラクエのメニューウィンドウのように
D3D上の一テクスチャとして利用するのはどうしたらいいのでしょうか?

他サイトやMSDNのヘルプをいろいろ見てみましたが
具体的な実装方法が見当たりませんでした。
530デフォルトの名無しさん:2011/04/18(月) 00:28:37.55
前後の扱いを関係省庁と協議しているvV
531デフォルトの名無しさん:2011/04/18(月) 01:08:55.26
DX11でテクスチャつきのポリゴンの表示の仕方を覚えろ。
532デフォルトの名無しさん:2011/04/18(月) 01:54:16.07
程度も調べてできないようじゃプログラミングなんか向いてないから今すぐやめちまえ
533デフォルトの名無しさん:2011/04/18(月) 03:38:56.79
>>532
賛同。
534デフォルトの名無しさん:2011/04/18(月) 06:20:33.92
ところで世のゲームエンジンは超難しいシェーダたくさん使ってるのにどうしてライトが複数使えるの?
535デフォルトの名無しさん:2011/04/18(月) 07:30:39.97
>>534
D3D9世代なら、DeferredShadingを使う。
536デフォルトの名無しさん:2011/04/18(月) 10:04:17.71
>>528
9割9分自分のバグだとおもわれ
DXのメモリリークはDirectxControlPanelのところのデバッグ設定を使えば
簡単に分かる場合があるからやったことなければ試してみるべし
AllocIDを調べてみてブレークさせてみればおk
あとはpoolとか間違ってないかとかチェックしてみては
537デフォルトの名無しさん:2011/04/18(月) 16:17:03.19
フルスクリーンからウインドウモードにしたとき、
nVidiaやIntelのGAだと問題が無いのですが、
GeForce系だと横に縮み、左右が黒くなります。
このときのウインドウのサイズは問題ないのですが、
描画される部分だけ横に縮みます。
何か回避策はあるのでしょうか。
538デフォルトの名無しさん:2011/04/18(月) 16:22:37.39
家はGeforce8800だけど、そんな現象起きた事無い
自分で書いた物でも、世間のソフトでも。
それ、ハード周りが原因じゃなくて、何か忘れてるかバグがあるなじゃないの?
539デフォルトの名無しさん:2011/04/18(月) 17:43:20.64
>>537-538
当たってるかどうかは分からんが、
NVIDIA系でだけ挙動がおかしい例として、
Zバッファの取り扱いがあるな。
Zバッファの解像度よりもフレームバッファの解像度のほうが大きくなると、
NVIDIAでだけ挙動がおかしくなる。

フルスクリーンからウィンドウモードにしたら、
普通はフレームバッファのサイズも変わるでしょ。
540デフォルトの名無しさん:2011/04/18(月) 18:02:11.88
先にソートしておく、みたいな感じ。
541528:2011/04/18(月) 20:26:04.95
>>536
ありがとう。試してみます。
542537:2011/04/19(火) 16:56:55.38
>>ALL
ありがとうございます。

GeForceはデバッグ中に何回かDirectX系のバグを出すと、
挙動がおかしくなるみたいです。
バグへの耐性が低いみたいです。
543デフォルトの名無しさん:2011/04/19(火) 23:44:00.97
それってチップのせいじゃなくてモニタとの相性の希ガス
544537:2011/04/20(水) 02:48:24.65
モニタやマシンを変えても同じ挙動をしました。
545デフォルトの名無しさん:2011/04/20(水) 03:17:17.31
>バグへの耐性が低いみたいです。
最高にバカすぎて涙が出るな
546537:2011/04/20(水) 03:29:47.65
>>545
バグを5回以上出すと、挙動がおかしくなります。
547537:2011/04/20(水) 03:34:07.02
xlat,uvパイプライン,pic,avr,6502,6800,8080,z80,8086,xmsドライバの作成,SB16のドライバ作成,
asm,C/C++,C#,JAVAを使えますので、そんなイージーミスは起こしません。
548537:2011/04/20(水) 03:53:17.65
OSやコンパイラも作ったことがあります。
549デフォルトの名無しさん:2011/04/20(水) 04:22:34.06
そんなに自信満々なら2chの初心者スレで聞かずに自分でなんとかしろよ。
ドライバ作ったことがあろうが多数の言語が使えようが人が書いてる限りバグは出る。
どんだけ自信過剰なんだよおまえ。
OS作った?コンパイラ作った?だからなんだよ、だったらお前はいつも一切バグがでねーのか?w

バグらせたらおかしくなるのはメモリやらVRAMやらにゴミがのこっておかしくなってんじゃないのか。
バグチェックしてるときに表示がおかしくなってOS再起動したらコード変更一切せずに(表示は)元にもどったなんてこともあるし。
550デフォルトの名無しさん:2011/04/20(水) 05:34:51.88
ママが作ったんだろ。
ママ明日朝起こしてうるさいねえ。
551デフォルトの名無しさん:2011/04/20(水) 08:01:34.54
ム板はID出すべき
552デフォルトの名無しさん:2011/04/20(水) 09:40:32.08
>>547
むしろそこまでの人が初心者スレなんて場違い
nVidiaにでも問い合わせたらいいんじゃ
553デフォルトの名無しさん:2011/04/20(水) 10:26:03.09
現象が再現する最小限のコードを出せばいいだけの話。
ただしアホじゃない限り、その課程で他人に聞く前に自分のミスを発見するけどね。
554デフォルトの名無しさん:2011/04/20(水) 10:27:45.39
>>546 がバグっている件に関して。
555デフォルトの名無しさん:2011/04/20(水) 10:29:46.34
初心者スレ在住で「OS作ったことある」って「知り合いのスーパーハッカー」くらいの響き
556デフォルトの名無しさん:2011/04/20(水) 11:02:16.53
OSやコンパイラって情報系の学校行ってたら一度ぐらいは趣味で作るだろ
557デフォルトの名無しさん:2011/04/20(水) 11:26:41.11
それとバグでないとかミスしないとかはまったく関係ない話だけどな、ってことだ言わせんな/////
558デフォルトの名無しさん:2011/04/20(水) 13:28:32.18
98時代だったらBIOSがよくできてたから、ブートローダーさえ作れば
しょぼいDOSぐらいなら割とすぐに作れたな。
559デフォルトの名無しさん:2011/04/20(水) 15:22:19.53
どれだけ経験があろうが、目の前で不具合が発生すれば一緒なんだが。
むしろ不具合をいかに退治するかのノウハウが経験だろ?
560デフォルトの名無しさん:2011/04/20(水) 16:07:35.82
そしてバグを作りこまないよりも、バグを退治する為のノウハウが蓄積される。
本当はバグがないプログラムを作る事に時間をかけるべきなのに
そういう目に見えない努力は評価してもらえないもんね。
561デフォルトの名無しさん:2011/04/20(水) 18:15:52.21
つまりメルトダウンしない原発にこだわるあまり、
メルトダウンした後の対策が全くされていない今の状態が最高だと。
562537:2011/04/20(水) 18:25:07.03
x386用のOSだよ。コンパイラはMASMとCの機能を盛り込んで、式その物を構文設定できる物。
以下はendの処理。
#amacro end( d0 )(local0,local1,localn,localt,localcase)
; end ( while,do,for,switch,if )
#getnum localt 2
#getnum localn 3
#subnumsp 3
#define local1 "f_{localn}"
#unstr local1

563デフォルトの名無しさん:2011/04/20(水) 18:28:59.99
このスレじゃそんな事どうだっていいし。
564537:2011/04/20(水) 18:48:55.50
#define local0 "b_{localn}"
#unstr local0
goto local0
local1:
#elseif (localt==13) ; switch
#popnum localcase
#substrsp 1
#define local0 "case_{localn}_{localcase}"
#unstr local0
local0:
local1:
565デフォルトの名無しさん:2011/04/20(水) 18:50:23.99
コイツ最高にダメだなwwwwwwwどうにもなんねぇよwwww
566537:2011/04/20(水) 18:54:38.14
#elseif (localt==14) ; if
#popnum localcase
#define local0 "if_{localn}_{localcase}"
#unstr local0
local0:
local1:
#else
#error end文の対応が異常です
#endif
#endm
567デフォルトの名無しさん:2011/04/20(水) 18:58:41.86
んなもん書き込んでも答えはでないぜKENJI
568537:2011/04/20(水) 19:00:06.49
#if (localt==10) ; while
#define local0 "b_{localn}"
#unstr local0
goto local0
local1:
#elseif (localt==11) ; do
#elseif (localt==14) ; if
#popnum localcase
#define local0 "if_{localn}_{localcase}"
#unstr local0
local0:
local1:
#else
#error end文の対応が異常です
#endif
#endm
569デフォルトの名無しさん:2011/04/20(水) 19:01:10.02
ついにスレが電波に乗っ取られる日が来たか…
570537:2011/04/20(水) 19:04:46.04
10万行1万ラベルを0.1秒でコンパイルするため、2分木検索を使ってる。
後はGDIで3Dのミドルウエアも作ったこともあるから、そっちのソースも一部見せようか?
571デフォルトの名無しさん:2011/04/20(水) 19:06:57.76
>GDIで3Dのミドルウエア

ありふれてるので結構です
572デフォルトの名無しさん:2011/04/20(水) 19:47:00.75
>>570
お前のソース自慢はどうでもいいからとっとと消えてくんねーかなぁ、スレチだから。
573デフォルトの名無しさん:2011/04/20(水) 20:30:23.56
これら537のコメントは天才チンパンジー「アイちゃん」
が言語訓練のために書き込んだものです。
このスレッドに多大なご迷惑をおかけしたことを
お詫び申し上げます。
                 霊長類研究所
574デフォルトの名無しさん:2011/04/20(水) 20:45:52.22
必要なのは症状を再現できる最低限のソースなのに、どれだけ馬鹿なんだろう?
575デフォルトの名無しさん:2011/04/20(水) 23:44:24.59
これは釣りだな
576デフォルトの名無しさん:2011/04/20(水) 23:52:26.72
本物の 537 は >>537 だけ
突然この板のIDが表示されたら面白いのに
577デフォルトの名無しさん:2011/04/20(水) 23:54:04.24
一つ確認方法としてSDKについてるサンプルプログラムでも同じ状態になるのか?
578デフォルトの名無しさん:2011/04/21(木) 00:40:31.74
頂点バッファってまとめて取ったほうがいいとかあります?9の話です。
579デフォルトの名無しさん:2011/04/21(木) 00:44:51.97
弾幕STGの弾とかならまとめてとったほうがいいよ
でも普通の3Dゲーの場合無理にまとめちゃうと
送らなくていいデータも全部シェーダ側に投げちゃうことになったり・・・
まあ、ケースバイケースで
580デフォルトの名無しさん:2011/04/21(木) 00:49:24.12
>>579
ありがとうございます
581デフォルトの名無しさん:2011/04/21(木) 01:26:56.51
確かにゲフォで10回くらいバグを出すとドライバの挙動がおかしくなるな。
582デフォルトの名無しさん:2011/04/21(木) 01:32:52.61
それはSDKのサンプルでもってこと?
そしたら回避のしようがないなー
583デフォルトの名無しさん:2011/04/21(木) 01:59:56.56
D3DXPlaneFromPointsってどういう式で実装されているんですか?
584デフォルトの名無しさん:2011/04/21(木) 02:09:04.39
>>583
{(y2-y1)(z3-z1)-(y3-y1)(z2-z1)}(x-x1)+{(z2-z1)(x3-x1)-(z3-z1)(x2-x1)}(y-y1)+{(x2-x1)(y3-y1)-(x3-x1)(y2-y1)}(z-z1)=0
じゃね?
585デフォルトの名無しさん:2011/04/21(木) 08:18:45.07
>>584
ありがとうございます!

x,y,zは後から与えられる座標値ですよね。
法線でfloat3つ使って、残り1つでどうやってx1,y1,z1を表すのでしょうか?
586デフォルトの名無しさん:2011/04/21(木) 08:41:02.28
頂点を3つ渡すだけで、法線は全く関係ないから。
587デフォルトの名無しさん:2011/04/21(木) 10:09:02.05
このスレは天才チンパンジーアイちゃん〜霊長類研究所の書き込みは幾度と無く見てきたが
天才チンパンジーアイちゃんを生で見たのは初めてだわ
588デフォルトの名無しさん:2011/04/21(木) 10:12:01.97
三頂点あればその三角形の法線が外積で計算できる
法線と平面を成す点(三頂点の中から任意)があれば平面の方程式は求まる、おしまい

スレチだからなんか教科書でも見れ
589583:2011/04/21(木) 19:56:08.06
>>586
使い方ではなくD3DXPLANEを自分で実装したいだけなんですw
590583:2011/04/21(木) 20:14:31.65
>>588
D3DXPLANE構造体は法線だけで、平面の位置は構造体とは別で保持してるってことで合ってますか?
まだw(d)の使われ方が分かってないのでもうちょっと調べてみます。

スレチすません、ありがとうございました><
591デフォルトの名無しさん:2011/04/21(木) 20:36:52.21
dは法線と辺の内積か
592デフォルトの名無しさん:2011/04/21(木) 22:49:53.31
>>590
いや、dがあるから平面の向きだけでなく位置も決まってくるはず。
593デフォルトの名無しさん:2011/04/21(木) 22:52:22.72
DirectX9で、Nvidiaのビデオカードで、
Zバッファをテクスチャとして使用してデプス値を取り出す
(シャドウマップではなく、遅延シェーディング等で使う)方法は
ないんでしょうか?
Radeonだと、DF24/DF16で取れるようですが、
Nvidiaではカラーバッファの方に出力するしかないでしょうか…
594デフォルトの名無しさん:2011/04/21(木) 22:55:06.03
>>593
Zバッファだってフレームバッファの一種なんだから、
ロックしたらメインメモリにコピー出来るんじゃないの?

試してないのでごめんだけど。
595593:2011/04/21(木) 23:09:19.80
>>594
レスありがとうございます。
一応、速度が重要なアプリケーションでの使用を考えていますので、
ロックしてメインメモリにコピーするのは避けたいところです。

今ちょっと試してみたら、APIがDirectX9でNvidiaのカードでも、
カード自体がDirectX10に対応していれば、INTZフォーマットは
作れるみたいですね。
このフォーマットもデプスが取れるので、これが作成できれば
いけそうなんですが、今試した環境がVistaなので、XP環境だと同じカードでもINTZに
対応しないのかもしれませんが…
596デフォルトの名無しさん:2011/04/21(木) 23:17:27.71
>>593
ハード側の対応に依存するような話なら、
dxinfoのサイトで調べるといいよ。
主だったハードウェアの診断結果は大抵載ってるから。
597593:2011/04/21(木) 23:20:26.42
>>596
おお、ありがとうございます。
参考にさせていただきます!
598デフォルトの名無しさん:2011/04/22(金) 21:37:56.29
FPSを求める方法を教えてください
1秒で1000回レンダリングしたら1000ですよね
0.5秒で500回レンダリングしても1000ですよね
599デフォルトの名無しさん:2011/04/22(金) 21:38:30.47
時間を取得して何回プログラムがリピートしたかとか?
600デフォルトの名無しさん:2011/04/22(金) 21:46:29.50
1 / 1回のレンダリング時間(秒)で求まる
601デフォルトの名無しさん:2011/04/22(金) 21:53:35.13
ありがとうございます
経過時間(秒)までのレンダリング回数/経過時間(秒)
でした
602デフォルトの名無しさん:2011/04/22(金) 21:59:44.04
おまえらに足りないのは日本語力だと思うよ
603デフォルトの名無しさん:2011/04/23(土) 05:26:31.82
スプライト表示のとき
キャラクタを暗くするのは
頂点のRGBAの調整でできるのですが
白く光らせるにはどうしたらいいでしょうか?
604デフォルトの名無しさん:2011/04/23(土) 05:27:27.48
605デフォルトの名無しさん:2011/04/23(土) 07:23:59.39
>>603
DirectXにスプライトなど無い
606デフォルトの名無しさん:2011/04/23(土) 09:21:09.68
なん・・・だと・・?
607デフォルトの名無しさん:2011/04/23(土) 11:17:41.08
>>603
ID3DXSpriteでは不可
加算合成でポリゴンを描画する→光ったように見える
608デフォルトの名無しさん:2011/04/23(土) 13:45:31.48
D3DXComputeNormals等で計算した法線ベクトルを、頂点毎に取得するにはどうしたらいいのですか?
609デフォルトの名無しさん:2011/04/23(土) 13:54:21.90
頂点だけでは取得しようがないから不可能
610608:2011/04/23(土) 14:05:15.78
>>609
頂点以外に何があれば取得できますか?
611デフォルトの名無しさん:2011/04/23(土) 14:35:16.51
>>605,607
ポリゴンでスプライトっぽく描画する方法のことです
加算だと白っぽくなるだけで
背景黒いと白にならないです
パレットやシェーダー使わないで
なんとかならんですかね
ライトでごまかすしかないんかな
612デフォルトの名無しさん:2011/04/23(土) 14:43:35.29
>>610
平面もしくは方向の構築に必要な情報
スムーシングをかけるのならその情報と周囲の角度

>>611
加算合成
613デフォルトの名無しさん:2011/04/23(土) 14:47:12.48
加算合成は足し算だから
src,dst両方暗いと255行かないじゃないすか
614デフォルトの名無しさん:2011/04/23(土) 15:04:05.88
すみません。
D3DXMatrixRotationYawPitchRollを使って回転を行っているのですが、
YawとPitchはラジアン角を入れ思ったように縦横グルグル回ってくれるのですが、
Rollが思ったように(=Rollが回るとYaw、Pitchも傾く)なってくれません。
(いわゆる戦闘機ゲーの左右操作のローリングするような挙動を作りたいのです;)

値を入れてもそうならないという事はそれが仕様で私が何か勘違いしてると思うのですが・・
どなたかご助言頂けませんでしょうか・・orz
615デフォルトの名無しさん:2011/04/23(土) 15:05:23.12
そういうふうに頭が固いから、プログラムが先に進まないんだよ。
複数重ねたり、加算用のイメージを作ればいいだけの話。
616デフォルトの名無しさん:2011/04/23(土) 15:07:16.92
>>614
ドキュメントを読め
順番が書いてあるだろう
617614:2011/04/23(土) 15:07:25.01
あ・・回転させているのがベクトルでそれを座標に加算してたので当然だったのかもしれません;
Rollによる傾きは別途計算しないと駄目ですね・・;
多分自己解決できると思います、お騒がせしました;
618デフォルトの名無しさん:2011/04/23(土) 16:34:10.11
回転軸と角度で計算すればいいだけの話なのに、
何で面倒な方法を使おうとするのかさっぱり分からん。
619デフォルトの名無しさん:2011/04/23(土) 16:43:02.26
行列の合成を使ってないんじゃないか?
ドラゴンボールのキントン雲やりたいなら
1つの行列だけでやるのはかなり困難だと思う

XZ平面の姿勢行列を制御する行列Aとバンクを制御する行列Bを2つ作って
描画時(描画時じゃなくてもいいけど)に合成して1つにして使えばいいと思う

Aの行列の上にBの行列が乗る形で合成したらうまくいくんじゃないだろーか?
620デフォルトの名無しさん:2011/04/23(土) 17:00:04.64
>>614
ヨー・ピッチ・ロールとか、X軸・Y軸・Z軸だけでやろうとすると
ジンバルロック(←要ぐぐり)が起こる。
任意軸の回転を使えば解決。

>>618
初心者はそこが分からないから質問に来ているんだよ。
621デフォルトの名無しさん:2011/04/23(土) 17:01:27.29
ジンバルロックが理解できる奴は最初から質問しない
622デフォルトの名無しさん:2011/04/23(土) 17:42:12.02
>>615
それくらい誰でもわかるわ
でもそれじゃ処理重くなったりリソース増えるわ
623デフォルトの名無しさん:2011/04/23(土) 18:10:40.16
使っているのがID3DXSpriteというのが前提なら、処理の重さとか度外視だろう。
普通に自前で頂点を指定しているのなら、テクスチャのαだけ使って、
頂点カラーなりで調整すればいいだけの話なんだから。
624デフォルトの名無しさん:2011/04/23(土) 18:19:29.53
>テクスチャのαだけ使って、
詳しく教えてください

・頂点カラー255x4にしても、テクスチャの色が普通に出るだけで
・加算や乗算合成にしても、下地との合計が255未満なら白くならないし
・色のみ指定でテクスチャ参照しないとアルファの部分が抜かれず
・テクスチャのαだけ使うのは白色マスクで出来るかもしれないけど
白とテクスチャ色の中間の色ができない

ぬう
625デフォルトの名無しさん:2011/04/23(土) 18:20:40.70
いたポリ数枚重ねただけでなんで重くなるんだよ
まさか1枚描画するたびにID3DXSprite::Begin,End呼んでるんじゃないよな?
626デフォルトの名無しさん:2011/04/23(土) 18:32:55.14
ID3DXSprite使ってないです
つーか加算言っても、加算する色が0だったら何枚重ねても黒いまま
そんなんだったらマルチテクスチャとか使うわ
パレットって便利やね
627デフォルトの名無しさん:2011/04/23(土) 18:37:12.62
>>624
まずはドキュメントを読んで、どのステートがソースの色を決定するかと、ブレンディングモードを確認しろ。
単純にソースの色をどこから持ってくるのか、持ってきた色をどう計算するのか設定するだけなんだから。
それだけ分かればホワイトアウトなんて簡単に出来る。
628デフォルトの名無しさん:2011/04/23(土) 18:41:04.80
ありがとうございます
629デフォルトの名無しさん:2011/04/23(土) 18:49:21.27
ちなみに背景を考慮しないのであれば加算合成である必要はないよ。
630デフォルトの名無しさん:2011/04/23(土) 18:54:40.69
固定でやるなら一番楽なのは鏡面反射光を段階的に強くしていく。
631デフォルトの名無しさん:2011/04/23(土) 21:03:11.98
ブレンディングのやつ2次元ループで全パターン試して描画したけど
マスクありホワイトできねー
632デフォルトの名無しさん:2011/04/24(日) 05:21:20.29
ワールドでx軸は右が+?yは上が-でzは向こうが+で合ってる?
633デフォルトの名無しさん:2011/04/24(日) 06:34:02.21
>>632
適当にオブジェクト作って動かした方が早い
634デフォルトの名無しさん:2011/04/24(日) 06:35:51.56
>>632-633
ググれば10秒もかからない事を何言ってるの?
http://msdn.microsoft.com/ja-jp/library/aa515833.aspx
635デフォルトの名無しさん:2011/04/24(日) 12:28:15.64
物体を円上に動かすことはできるのですが楕円上に動かすにはどうすればいいのでしょうか?
636デフォルトの名無しさん:2011/04/24(日) 12:33:41.50
>>635
楕円の公式ってあったじゃん?
637デフォルトの名無しさん:2011/04/24(日) 12:35:46.11
最近、ちょっとググればわかるような
ほんっっっっっとにくだらないことを質問するアフォがいるな

脳みそ性能悪いなら何も作れないだろ
死んでろバーカ
638デフォルトの名無しさん:2011/04/24(日) 12:48:05.70
すいません自己解決しました
639デフォルトの名無しさん:2011/04/24(日) 12:49:08.28
自決しました
640デフォルトの名無しさん:2011/04/24(日) 14:28:25.83
   / ̄ ̄\
 (丶/    ヘ
 || (゚Д゚) |/)  <他己解決しました
  \>◎(○)◎/8/
(\_ノ/⌒/⌒/⌒oイ_ノ|
`\_丿o|8|8|し|ノ
  (_ノ\_)_)_ノ
641デフォルトの名無しさん:2011/04/24(日) 14:37:27.45
よかったゲソ
642デフォルトの名無しさん:2011/04/25(月) 17:10:48.67
頂点バッファを作成して描画して開放、までを繰り返す処理って一般的ですか?
というのも、描かせるモデルがフレーム毎に変化させようと思ってるんですが、
頂点数が100の時もあれば、200の時もあるので、それを実現させようとしたら
作成&開放しかないのかなと思ったのです。
643デフォルトの名無しさん:2011/04/25(月) 17:13:31.49
200で作って100のときもそれ使うとかは?
644642:2011/04/25(月) 17:28:26.24
>>643
やっぱり、予め多めにとって、それを上回らないくらいで使い回すのが主流なんですか。
一応、メモリを節約しようと思って作成と開放を考えてみたのですが、何か負担があるかなと思ったので。
645デフォルトの名無しさん:2011/04/25(月) 17:39:59.39
作成と解放より使いまわすほうが高速だな
結局メモリの動的割り当てってことだから
毎フレnewしてるようなもん
646デフォルトの名無しさん:2011/04/25(月) 17:40:12.80
>>642
どちらかというと特殊ケース。
モデルが変化するってことはCPU→GPU間の頂点情報の
転送が起こるので、かなり遅くなる。
DrawPrimitiveUpみたいに。
GPUは、GPU側のメモリにある頂点バッファをいっきに描画するときに
パフォーマンスが出る設計になってる。
昔実験したら、30倍くらいの速度差があった。

頂点シェーダで間に合う処理ならば、GPU側でモデルデータを
変更できるのでかなり速くなるはず。

647デフォルトの名無しさん:2011/04/26(火) 00:40:48.91
毎フレ変わるビームとかのラインっぽいポリゴンとかって
これと同じようにバッファ使ったほうがいい?
DrawPrimiticeUpでやってるけど



648デフォルトの名無しさん:2011/04/26(火) 00:43:39.09
描画時に移動行列とスケーリング行列変更するだけじゃダメなのかそれ
649デフォルトの名無しさん:2011/04/26(火) 00:51:04.62
ビルボード化したものを上下さかさまにするにはどうすればできますか?
RotationYawPitchRollをいじればいいと思ったのですが画像がくずれちゃって
650デフォルトの名無しさん:2011/04/26(火) 01:17:00.75
テクスチャ座標を逆さまにすればええんでねえの
651デフォルトの名無しさん:2011/04/26(火) 01:44:00.01
>>647
>>648
ポリラインのやり方等によっては台形になったりして形状そのものが
変化するパターンもある。
そんなに頂点数多くなければDrawPrimitiveUpでいいと思う。
あくまで大量に頂点情報を転送する場合がネックなのであって、
GPU内部のレンダリング的には同じだから。
ただ、出来るだけ全部のビームの頂点を一箇所にまとめて
一度のDrawPrimitiveUpで描くこと。
652デフォルトの名無しさん:2011/04/26(火) 01:47:43.99
>ポリラインのやり方等によっては台形になったりして形状そのものが
>変化するパターンもある。

それ変化するパターンもある、んじゃなくて考えて計算してないだけ
653デフォルトの名無しさん:2011/04/26(火) 01:57:36.06
ホワイトアウト ブラックアウトを徐々にさせたいんだけど
やっぱり手軽な方法は真っ白な画像のアルファ値を上げてく方法でいいですか
654デフォルトの名無しさん:2011/04/26(火) 02:17:19.24
色固定なら画像テクスチャいらないじゃん
まあ楽なんだけどね
655デフォルトの名無しさん:2011/04/26(火) 07:50:25.93
>>650
できました
ありがとうございます
656デフォルトの名無しさん:2011/04/26(火) 13:01:39.14
マルペケの
http://marupeke296.com/DXG_CreateBorad.html
ここで、DirectXのデフォルトだと反時計回りのポリゴンは描写して
その裏つまり時計回りの方を描写しないとなっていますが
他のサイトだと、デフォルトは時計回りで描写となっています

調べてみると、時計回りを表として描写するのがデフォルトのようですが
マルペケのサンプルプログラムだと、反時計回りで頂点を指定しているにも
関わらずちゃんとポリゴンが描写されています
これはどういうことなんでしょうか?
657デフォルトの名無しさん:2011/04/26(火) 13:11:13.06
カメラが後ろにあるから
658デフォルトの名無しさん:2011/04/26(火) 13:31:56.63
>>657
すいません、カメラとはどの部分ですか?

他のサイトのサンプルと見比べても、頂点の指定順が
時計回りか反時計回りかの差しかないように思います
でも、反時計回りでも表示されているのはおかしくて・・・
どこか見落としてるんでしょうけれど、さっぱりわかりません
659デフォルトの名無しさん:2011/04/26(火) 13:42:19.36
時計回りで頂点を置く、ってのはどっちから見て時計回りなのか
→ じゃあ裏側から見たら逆周りじゃないのか
 → 3次元空間では、どこから何を見るが決定して初めて目の前にそれが現れるから、その前提次第
  → その前提の事を、カメラと言う

あと、"裏"側を表示しない=カリングの指定なども
この辺のイメージが掴めない場合、多分この先何も出来ないと思うので、三次元処理の基礎をもう一度
660デフォルトの名無しさん:2011/04/26(火) 16:52:19.44
>>656
つまるところレンダリングターゲット上で時計回りが描画される
ここがあやふやだったのでは?
y+が下なら上の時と比べると逆になる
661デフォルトの名無しさん:2011/04/28(木) 11:53:29.36
OpenCVで作ったプログラムとDirectXで作ったプログラムを1つにまとめたいのですがどうすればよいのでしょうか?
やりたいことはOpenCVで求めた変数をDirectX側に渡したいだけなのですが
OpenCVはコンソールアプリケーションでDirectXはWin32APiでないと起動できないので同時に動かせず困ってます。
ご教授よろしくお願いします。
662デフォルトの名無しさん:2011/04/28(木) 12:19:06.70
OpenGLを使う
663デフォルトの名無しさん:2011/04/28(木) 13:03:14.07
コンソールアプリケーションだってWin32API使えるんだぞ
664デフォルトの名無しさん:2011/04/28(木) 13:18:56.39
必要な関数をコピペして持って行けばいいだけの話。
何が困っているのかさっぱり分からない。
665デフォルトの名無しさん:2011/04/28(木) 13:33:01.38
そうなんですか。
1つにまとめたんですがエラーはでないんですがDirectX側のウィンドは作成されるのですが
OpenCV側のウィンドが作成されずプログラムが動いてないんです。
666デフォルトの名無しさん:2011/04/28(木) 13:35:53.03
ウインドウを二つ出す必要性が無い
667デフォルトの名無しさん:2011/04/28(木) 13:39:18.88
ウインドウは出さなくてもいいんですがプログラム自体動かないです
未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartupみたいなエラーがでてきました
668デフォルトの名無しさん:2011/04/28(木) 13:44:16.83
プログラムの中身を理解せず闇雲に2つをくっつけようとしてるのか?
669デフォルトの名無しさん:2011/04/28(木) 13:49:53.28
死ね
670デフォルトの名無しさん:2011/04/28(木) 13:52:13.71
CVってよくわかんがウインドウハンドルを取得すればいいんじゃないの
671デフォルトの名無しさん:2011/04/28(木) 14:18:13.91
WinMainを作れ、mainはいらない
それからWindowsプログラムを基礎からきちんとやれ
672デフォルトの名無しさん:2011/04/28(木) 14:54:03.29
DirectX云々以前の問題だからスレ違いだろう
673デフォルトの名無しさん:2011/04/28(木) 15:24:01.09
言語の勉強から始めないといけないレベル
674デフォルトの名無しさん:2011/04/28(木) 21:48:38.38
コンソールでビルドしなければコンソールは生成されんよ
675デフォルトの名無しさん:2011/04/28(木) 21:54:47.11
嘘を言うな
APIで出せる
676デフォルトの名無しさん:2011/04/28(木) 23:07:34.13
つ AllocConsole()
677デフォルトの名無しさん:2011/04/29(金) 00:03:44.54
DirectInput と WinAPI使うのと どっちがいいと思う?
入力はキーボードとジョイパッドと多くても合計2個しか使わないけど
678デフォルトの名無しさん:2011/04/29(金) 00:32:36.80
>>677
ジョイパッドのみDirectInput
それ以外はWinAPI推奨
679デフォルトの名無しさん:2011/04/29(金) 01:45:14.81
スペシャルサンクス
680デフォルトの名無しさん:2011/04/29(金) 08:11:11.41
/ とまどい
681デフォルトの名無しさん:2011/04/29(金) 08:41:06.46
>>678
理由は?
682デフォルトの名無しさん:2011/04/29(金) 09:10:03.98
ジョイパッドはDirectInputじゃないと入力情報が
取れないけど、他は普通のAPIでいけるからでしょ
683デフォルトの名無しさん:2011/04/29(金) 09:57:33.73
joyGetPosEx とかのAPIは?
684デフォルトの名無しさん:2011/04/29(金) 12:23:09.80
msdnには>>678が書いてあったよね
あとxboxのコントローラー使うんなら代わりにXInput使ってくれみたいな
685デフォルトの名無しさん:2011/04/29(金) 12:33:57.16
>>682
それだけじゃなく、例えばキーボードの入力の張替えなんかでカスタマイズしても、
DirectInputだとそれをバイパスして元のキー入力しか受け付けなくなってしまうから。
686デフォルトの名無しさん:2011/04/29(金) 12:35:12.57
DirectInput使うとUWSC防止(Bot防止)になっていいぞ
それだけでマウスやキーボードの入力が取れなくなる
687デフォルトの名無しさん:2011/04/29(金) 14:58:03.70
なるほどなー。
688デフォルトの名無しさん:2011/04/30(土) 03:19:15.21
理由あってDirect XのSDK 2005 Decをwin7の64bitに入れたら、
PCが起動しなくなりました・・・
起動後、ユーザにログインすると画面真っ黒になって、なんともなりません。
ctrl+alt+delでログオフはできるんですが、普通に操作できません。
シャットダウンもできません。
どこかで同じことに出会った人いますか。
689デフォルトの名無しさん:2011/04/30(土) 03:42:38.01
それ多分SDK関係ないんじゃないの・・・
690デフォルトの名無しさん:2011/04/30(土) 03:51:27.12
>>688
とりあえず、Windowsの復元だね。
開発者ならそれくらいは準備してるはず。
691デフォルトの名無しさん:2011/04/30(土) 03:55:48.75
とりあえずセーフモードで起動してみたらどう。
新しいユーザーつくってみてそっちで通常起動するとかさ。
692デフォルトの名無しさん:2011/04/30(土) 04:57:45.29
DirectX SDK - (December 2005)
Supported Operating Systems:
Windows Server 2003;
Windows Server 2003 Service Pack 1;
Windows Server 2003, Datacenter x64 Edition;
Windows Server 2003, Enterprise x64 Edition;
Windows Server 2003, Standard x64 Edition;
Windows Small Business Server 2003;
Windows XP;
Windows XP 64-bit;
Windows XP Home Edition;
Windows XP Home Edition N;
Windows XP Media Center Edition;
Windows XP Professional Edition;
Windows XP Professional N;
Windows XP Service Pack 1;
Windows XP Service Pack 2;
Windows XP Starter Edition;
Windows XP Tablet PC Edition
693デフォルトの名無しさん:2011/04/30(土) 05:00:26.88
まぁどうせどこぞのよくわからないドライバでもぶち込んじゃったんでしょ・・・
694デフォルトの名無しさん:2011/04/30(土) 12:54:06.18
やーいw
695デフォルトの名無しさん:2011/04/30(土) 12:54:51.75
しかし、サポートしてないOS見つけたら止めてくれてもよさそうなもんだけどなw
696デフォルトの名無しさん:2011/04/30(土) 12:57:48.07
サポートも何もSDK関係ないから
697688:2011/04/30(土) 13:49:54.31
> 690
復元は問題なくできるんだけども、開発ができない…
インストール後、再起動さえしなければ続行できるんですがw

> 691
セーフモードだと起動するけど、テストができない…
コンパイルまでならSDK展開するだけでできるんですが、
テストができないとなんとも…

どうもSDKで入るデバック系のdllがおかしい??
通常に起動する状態からSDKだけ入れてみても再現性100%で起動しません

> 692、696
サポートしていないこともわかりつつ、一方でSDKいれても関係ないだろうと
思ってましたがやはりだめぽなんですな。
既知の問題かなぁーと思って解決策がないかたずねてみたんですが…

あきらめてVirtualBoxでしょうか…
698688:2011/04/30(土) 14:03:05.09
事故怪傑しますた。
2005 Decインストール後、最新版のSDK 2010 juneをもう一度入れたら
起動もでき、テストもできますた。ありがとうございますた。
699デフォルトの名無しさん:2011/04/30(土) 14:11:33.41
>>698
Decインストール って何? 多分アンインストールの気がする。
700デフォルトの名無しさん:2011/04/30(土) 14:12:46.61
Decemberだろう
701デフォルトの名無しさん:2011/04/30(土) 16:23:17.63
>>699
ワロタ。変なとこに噛み付こうとする前にお前にはやることがある。
702デフォルトの名無しさん:2011/04/30(土) 16:58:58.83
>>698
それ、juneが動いてるだけでdecのほうはまったく動いてないんじゃ?
703デフォルトの名無しさん:2011/04/30(土) 17:19:03.58
>>700
それに気づかなかったwwwwww

>>701
ヨドバシに逝ってくるノシ
704デフォルトの名無しさん:2011/04/30(土) 22:22:00.14
2D描画のみしたいんだけど
昔あったDirectDrawはもう無いらしく
最新版SDKでも覚えることは大して変わらない?
705デフォルトの名無しさん:2011/04/30(土) 22:25:20.55
>>704
DrawPrimitiveでスクリーン座標の描画方法を調べれば幸せになれる
仕様は大分変わってるように感じると思うけど
昔よりちょっぱやで半透明や加算半透明、回転、拡縮なんでもござれでいいよ
706デフォルトの名無しさん:2011/04/30(土) 22:25:25.75
GDIじゃダメか。 Bitblt か AlphaBlend するだけで済む話になるが
707デフォルトの名無しさん:2011/04/30(土) 22:26:40.32
速度はまったくでないけど
普通にやるよかある程度ましなのがGDI+かな?
708デフォルトの名無しさん:2011/04/30(土) 22:29:33.31
速度とか必要を満たせるならそれでいんじゃないの?
あとGDI+ は機能が+なのであって、速度の話関係ないんじゃない?
709デフォルトの名無しさん:2011/04/30(土) 22:30:14.20
俺GDIでもコード書くけど、特に不満だった事は無い
3D扱うなら問題外だが
710704:2011/04/30(土) 22:30:56.66
まあ2DだけならGDIでもできんこたぁないわな
AlphaBlendはバグってるって聞いたけど
DirectDrawのあの糞長ったらしい初期化処理みたいなのは今でも健在なの?
711デフォルトの名無しさん:2011/04/30(土) 22:36:07.12
>>707
知ったか乙
712デフォルトの名無しさん:2011/04/30(土) 22:37:47.02
>>707は速度が出るなんて一言も言ってないだろうに
713デフォルトの名無しさん:2011/04/30(土) 22:45:30.18
>>710
ちょっとは自分で調べるとかしないの?w
714デフォルトの名無しさん:2011/04/30(土) 23:19:50.82
GDIはGPUのRAM間で直接コピーできたから、かなり速かった。
ただ、後発のGDI+でアルファブレンド使うと透過処理はCPU通すから
めちゃ遅だったね。
715デフォルトの名無しさん:2011/04/30(土) 23:56:33.41
マジで?
>>707だけどGDI+で回転とかやると自分でやるよか超早くね?
アルファブレンドも結構使える速度が出てた気がするけどな
ハードの機能使ってると勝手に思い込んでたけどあんまり早くなかったんだな
716デフォルトの名無しさん:2011/04/30(土) 23:56:40.42
5.x時代の話である
717デフォルトの名無しさん:2011/05/01(日) 00:00:48.96
回転+アルファブレンド+拡縮とかの速度は単に機能+じゃすまない速度だと思うけどな
俺がアセンブラ書くよりは数倍早い気がした
718デフォルトの名無しさん:2011/05/01(日) 00:05:56.48
アルファブレンド等もGDIアクセラレーションの対象だったはず
ただし対応してるカードorドライバが少ないって話を昔見た
719デフォルトの名無しさん:2011/05/01(日) 00:09:12.59
アセンブラで書く書かないとか、あんまり関係ある内容じゃなくね
やれる事って、sinテーブル用意する事と、あとは間接アドレシングしてるような部分を
若干レジスタだけでやりくりするように書くだけじゃね。
720デフォルトの名無しさん:2011/05/01(日) 00:15:56.94
http://lamoo.s53.xrea.com/develop/gdiplus/gdiplus_blt.html

でも、GDIのBitBltでもハードウェアアクセラレーションかからなくて
激重だったPCもあったからなぁ。
721デフォルトの名無しさん:2011/05/01(日) 01:04:18.19
GDIとか中途半端なもの選ぶなよ
男は黙ってOpenGL
722デフォルトの名無しさん:2011/05/01(日) 01:24:55.43
>>721
俺も黙ってOpenGL好きだけど、頼むからスレタイのアルファベット読んでくれ
D から始まる所だ。頼む
723デフォルトの名無しさん:2011/05/01(日) 03:17:14.49
ダイレクトにチョメチョメするのが初めてなウブなハートな者が質問するスレ。パート人妻(34)
724デフォルトの名無しさん:2011/05/01(日) 09:10:02.02
>>719
回転のアセンブラってsinテーブルなんて使わないだろ
725デフォルトの名無しさん:2011/05/01(日) 13:15:31.78
いい加減スレチ
726デフォルトの名無しさん:2011/05/01(日) 21:02:28.69
>>724
そんなの書くロジック次第だろ。バカなの?
727デフォルトの名無しさん:2011/05/01(日) 22:54:16.91
アセンブラで高速化の前にまず作品完成させろよ
728デフォルトの名無しさん:2011/05/02(月) 07:29:47.57
>>724
知ったか乙
729デフォルトの名無しさん:2011/05/02(月) 07:39:53.64
こんなスレに書き込む前にまず作品完成させろよ
730デフォルトの名無しさん:2011/05/02(月) 12:52:06.53
2Dゲーム作るのに最適なページ無い?
731デフォルトの名無しさん:2011/05/02(月) 13:24:23.83
>>726
ブブーつかいませんー
732デフォルトの名無しさん:2011/05/02(月) 13:30:53.28
>>731
ブブー使わないとは限りません^^
733デフォルトの名無しさん:2011/05/02(月) 15:49:39.96
おまえらスレタイ読めようっとおしい
734デフォルトの名無しさん:2011/05/02(月) 17:17:28.07
>>732
絶対つかいませんーw
よほど頭のおかしい人しか使いませんーw
735デフォルトの名無しさん:2011/05/02(月) 17:21:03.23
>>734
絶対使わないとは限りませんーww
他人は自分と同じコードを必ず書くとか思い込んでるキチガイしか、そんな事言いませんーw
736デフォルトの名無しさん:2011/05/02(月) 17:24:04.26
いいかげんにしろよ二人とも
>>734 お前どこかのサイトで見た内容を丸暗記してて、それしか方法無いって思い込んでるんだろ
>>735 お前もバカにいつまでも粘着してんなよ

 ス レ タ イ を 百 回 読 ん で ど っ か い け
737デフォルトの名無しさん:2011/05/02(月) 17:24:17.99
エンジン高速化の前にまずアセンブル完成させろよ
738デフォルトの名無しさん:2011/05/02(月) 18:03:37.32
>>735
だったらどこに使うのか言ってみなさいよ低脳君w
739デフォルトの名無しさん:2011/05/02(月) 19:34:55.54
まぁお暑い愛の交換日記だこと。
740デフォルトの名無しさん:2011/05/02(月) 19:42:18.19
>>739
かあさんは黙っててくれないか
いま大事な話をしているんだよ(cv:えなり)
741デフォルトの名無しさん:2011/05/02(月) 19:58:45.66
>>738
むしろ絶対に使わないと言い切る根拠を書きなさいよ
他人がいないと何も出来ない知ったか君w
742デフォルトの名無しさん:2011/05/02(月) 20:58:22.22
おっさんだけど
atanテーブル作って8分割して使うより
atan2呼んだほうが早くてびびった
743デフォルトの名無しさん:2011/05/02(月) 21:17:04.94
御子さんだけど、もっと詳しくて血湧き肉踊り心高鳴り胸弾む詳細を頼む。
744デフォルトの名無しさん:2011/05/02(月) 21:37:22.78
>>741
マジレスすると
sin項の計算が1ドットの回転処理にたどり着く前に値が決定してるので
テーブルは必要ない
745デフォルトの名無しさん:2011/05/02(月) 21:40:55.06
角度の計算が必要なのはプリミティブの描画ごとに1回だけで、
各頂点座標に対しては行列の一次変換をかけるだけだから。
746デフォルトの名無しさん:2011/05/02(月) 21:41:10.85
ちなみに俺は>>734じゃないけど
747デフォルトの名無しさん:2011/05/02(月) 22:43:53.79
>>717
>>719
の流れに対して、突然 >>724 が現れて >>726 の返事になり、
そこで 「そうだな、>>744-745 のような処理を想定してる前提なら、いらないな」 の一言が出ないまま、
「いりますー」 「いりませんー」 のガキみたいな応酬

結末は、どっちもちゃんと前提を出せよと。 そして ス レ タ イ を 200回読めよ と
748デフォルトの名無しさん:2011/05/03(火) 00:38:03.47
>>747
おちつけ
つ(cv:えなり)
これ、お前のだろ?
749デフォルトの名無しさん:2011/05/03(火) 02:59:00.80
DirectX初心者の質問って出尽くした感
750デフォルトの名無しさん:2011/05/03(火) 08:03:24.08
お前の中ではな
751デフォルトの名無しさん:2011/05/03(火) 10:52:13.27
やい!教えろ!www

その辺に転がっている、Xファイルを持って来て
サンプルプログラムを変えて表示させたいのだが?
ファイル名を変えて表示できる?

換えるのならどの辺かえれば良い?
お願いしますwww
752デフォルトの名無しさん:2011/05/03(火) 10:54:56.75
むしろそのXファイルの方をサンプルプログラムのと同じ名前に変えた方が楽なのではないか
753デフォルトの名無しさん:2011/05/03(火) 11:02:09.45
まずニホンゴでお願いしたい
754デフォルトの名無しさん:2011/05/03(火) 11:14:26.75
>>751 はきっといい奴
755デフォルトの名無しさん:2011/05/03(火) 18:08:18.83
>>751
DirectXにXファイルなどない
756デフォルトの名無しさん:2011/05/03(火) 19:06:02.73
>>755
そういうのどうでもいいから

>>751
アニメーションついてるやつかそうでないかで変わる。
サンプルがアニメーション付き→アニメーション付きのやつをサンプルのファイルと置き換える
サンプルがアニメーションなし→ry
ただしアニメーション付きXファイルは置き換えだけだとモノによってはうまくいかないと思うよ。
わかってると思うけどアニメーションのサンプルにアニメーションないファイル投げてもうまくいかないし逆もしかり。
757デフォルトの名無しさん:2011/05/03(火) 19:26:39.18
まず生理臭いのでニホンゴでお願いしたい
758デフォルトの名無しさん:2011/05/03(火) 20:36:55.11
>>751
なにこのイラッとくる中途半端な釣りみたいなレス
759デフォルトの名無しさん:2011/05/03(火) 20:56:24.10
坊やだからさ
760デフォルトの名無しさん:2011/05/03(火) 21:21:53.70
DIMOUSESTATE2のrgbbuttons[8]って
ボタン情報がはいるのはわかるのですが
どの変数にどの部分の情報がはいっているのでしょうか?
リファレンスにもあまり載っていないので
761デフォルトの名無しさん:2011/05/03(火) 21:31:29.59
自分の持っているデバイスのボタンを押して出力状態を表示すればいいだけの話なのに、
いちいち質問する意味が分からない。
762デフォルトの名無しさん:2011/05/03(火) 21:54:29.54
>>761
・・・というかコントローラの番号依存って良くないのに
763デフォルトの名無しさん:2011/05/03(火) 21:55:28.47
ってマウスかよw
764デフォルトの名無しさん:2011/05/04(水) 03:52:02.05
なんかかぶったかのようなにDIについて聞きたいのだが

hr = DirectInput8Create( _hInst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**) &this->g_pDInput, NULL );
と初期化したのだが、DIERR_OLDDIRECTINPUTVERSIONとエラーがでるんだが
なにか間違っているところある?

使っているバージョンが古いとか言われているんだがもっと新しいバージョンがあるのか?
765デフォルトの名無しさん:2011/05/04(水) 03:53:41.26
ごめん 一分後に自己解決
DIRECTINPUT_VERSION を 0x900で定義していた
766デフォルトの名無しさん:2011/05/04(水) 22:58:33.13
複数人プレイ可能にしたいんだけど
ユーザIDみたいなのを利用したいと思うんだよ

IDを振り分ける関数とかあります?
767766:2011/05/04(水) 22:58:54.09
DirectInputで
768デフォルトの名無しさん:2011/05/05(木) 02:00:25.59
>>766
ID?・・・
情報を取得するデバイスのインターフェイスを
プレイヤーとして扱うのじゃだめなの?
769603:2011/05/05(木) 06:14:39.91
10日かかったけどやっと解決した
お前ら具体的なコード書かないから苦労したわ
770デフォルトの名無しさん:2011/05/05(木) 06:39:00.07
>>769
おめでとう!
俺も知りたいので書いてほしい
771デフォルトの名無しさん:2011/05/05(木) 08:36:53.01
重なりを目出させるようにアルファブレディング?
772デフォルトの名無しさん:2011/05/05(木) 11:36:55.70
もの凄い漠然とした質問で申し訳ないのですが、
マルチパスでのシェーダーの管理ってどのようにしていますか・・・?

現在描画対象となる(DrawPrimitiveを実行している)cppの中で、
複数のエフェクトを読み込み、各々ハンドル取得して、レンダリングターゲットを生成し、
描画時には各シェーダーにパラメーター渡して・・・と、
パスが増えるごとにコードが肥大化してしまい、可読性も著しく落ちています。

レンダリング結果を次の入力として使っているため思い切ったcppの分割も出来ず、
効率の良いシェーダーの管理が思いつきません orz

何かしらヒントを頂けますでしょうか・・・?
よろしくお願いします。
773デフォルトの名無しさん:2011/05/05(木) 13:20:31.69
フレームワークなかんじ〜みたいな〜
コードを上手く書くなんて、頭の良さに比例するだろw
774デフォルトの名無しさん:2011/05/05(木) 13:58:30.19
頭の良さ(笑)
どれだけ経験積んだかだろ
775デフォルトの名無しさん:2011/05/05(木) 14:37:09.68
そうだね先人のソースをいくつ見たかに比例しそう
凄い人はさらにそれを上手くしていくんだろうけど
776デフォルトの名無しさん:2011/05/05(木) 15:55:48.60
Windows 7上に標準搭載されているDirectX11ですが、DirectX11特有の機能
を使わずにDirectX9相当の機能のみを使うのなら、Windows XPが動いていた
グラフィックカードでも使えますか? それとも、グラフィックカードが
DirectX11対応でないとダメですか?

何でこんなこと質問するかというと、DirectX9+VC++2008でコンパイル済み
のアプリケーションがWindows 7上で動いたためです。
777デフォルトの名無しさん:2011/05/05(木) 15:59:19.49
機能を使うかどうかっていうか、プログラム側から
DirectX11を使うかDirectX9を使うかで決まる。
778デフォルトの名無しさん:2011/05/05(木) 16:06:49.13
プログラムでDirectX11を使うとします。そのときにグラフィックボード
がDirectX11対応でないとダウトでしょうか?
779デフォルトの名無しさん:2011/05/05(木) 16:20:26.91
ダウトじゃないよ。
780デフォルトの名無しさん:2011/05/05(木) 16:27:51.26
ありがとうございます。
781デフォルトの名無しさん:2011/05/05(木) 19:48:59.51
下記プログラムで50番目の頂点のx座標を1.0に変更したいのですが
頂点が1.0の位置と元の位置の2か所に存在してしまいます。
元の位置の頂点は消して1.0の位置にだけ頂点を移動したいのですがどうすればよいのでしょうか?

//頂点の参照処理部分
{
LPDIRECT3DVERTEXBUFFER9 pVB=NULL;
pMesh->GetVertexBuffer(&pVB);
DWORD dwStride=pMesh->GetNumBytesPerVertex();
BYTE *pVertices=NULL;
D3DXVECTOR3* pvVertex=NULL;
if(SUCCEEDED(pVB->Lock(0,0,(VOID**)&pVertices,0)))
{
pVertices+=g_dwIndex*dwStride;
pvVertex=(D3DXVECTOR3*)pVertices;

g_dwIndex = 50;
pvVertex->x = 1.0
pVB->Unlock();
}
SAFE_RELEASE( pVB );
TCHAR sz[100];
sprintf(sz,"%d番目の頂点の座標は%3.1f %3.1f %3.1fです",g_dwIndex,pvVertex->x,pvVertex->y,pvVertex->z);
RenderString(sz,10,10);
}
pDevice->EndScene();
782デフォルトの名無しさん:2011/05/05(木) 19:53:27.64
ありがとうございました
783デフォルトの名無しさん:2011/05/05(木) 20:19:02.79
>>781
>g_dwIndex = 50;
の位置が悪いんじゃね?

ってC言語も怪しい状態な予感
784デフォルトの名無しさん:2011/05/05(木) 20:50:25.06
頂点バッファのフォーマットが載ってないから分からないけど、
頂点バッファをLockして得られたポインタをD3DXVECTOR3への
ポインタと見なして大丈夫だっけ??

あと、 pvVertex->x だけだと、50番目じゃなくて先頭になっちゃう。
pvVertex[g_dwIndex].x とかになるんじゃないかな?
785デフォルトの名無しさん:2011/05/05(木) 20:54:12.45
基礎すっ飛ばしてやってきちゃって自滅するパターンか
786デフォルトの名無しさん:2011/05/05(木) 20:55:24.67
そんな知識で大丈夫か?
787デフォルトの名無しさん:2011/05/05(木) 21:27:31.36
一番いい実装で頼む・・・
788デフォルトの名無しさん:2011/05/05(木) 21:36:16.17
一部だけじゃわかりにくいのでソース全部あげました
ご教授お願いします
ttp://www.rupan.net/uploader/info/1304598908
789デフォルトの名無しさん:2011/05/05(木) 21:51:00.18
>>788
自分でやる気がないなら失せろ
790デフォルトの名無しさん:2011/05/05(木) 22:33:41.90
791デフォルトの名無しさん:2011/05/06(金) 00:14:18.64
基礎ちゃんとやらんと
壁にぶつかりまくりで効率悪いし
やる気なくすよ
792デフォルトの名無しさん:2011/05/06(金) 06:54:34.28
初心的な質問なのですが宜しいですか?(というより此処でいいのかな)
XAudio2を使おうとするとMp3フォーマットを定義している
MMReg.hにて
adpcmcoef_tagとadpcmwaveformat_tagが再定義されるのですが
これを回避する方法はないでしょうか?
仕様上両方のヘッダーを両方取り込まないといけないのですが
793デフォルトの名無しさん:2011/05/06(金) 07:42:29.43
>>792
namespaceでは解決できないの?
794デフォルトの名無しさん:2011/05/06(金) 08:24:02.96
>>792
同じもののはずなので、新しいものを使う。
違う構造になってたらまた改めて考える。
795デフォルトの名無しさん:2011/05/06(金) 13:34:25.52
定義すれば宣言切り替えられる構造になっていた気がする
796デフォルトの名無しさん:2011/05/06(金) 23:00:06.93
入力ってどういう形で返って来るの?
boolなの?
797デフォルトの名無しさん:2011/05/07(土) 21:18:07.00
direct input でキーボード状態を以下のように取得すると思うのですが、
・& 演算子は実質 == 演算子と同じ意味でしょうか?
・また0x80の値に意味がありますか?
(0x70だと単に現在ボタンが押されているではなく
 押し続けた・離していた状態から押した瞬間など
 状態の違いに分かれているとか)

GetDeviceState(256, buffer);
if ( buffer[ button ] & 0x80 )
{
//buttonが押された
}
798デフォルトの名無しさん:2011/05/07(土) 21:52:03.42
C言語の勉強を勧める
799デフォルトの名無しさん:2011/05/07(土) 21:54:37.65
>>797
>・& 演算子は実質 == 演算子と同じ意味でしょうか?
全然まったく本当に違うので、>>798 と同意見
DirectX以前の問題ですよ本当に
800デフォルトの名無しさん:2011/05/07(土) 22:17:10.51
&演算子はビットを抜き出す演算子。
==は完全に同じかどうかを確認する演算子。
801デフォルトの名無しさん:2011/05/08(日) 01:21:57.75
つまりビットが一つでも一致すれば x > 0 でtrueになる仕組みだと思うけど
なんでこんな判定の仕方になってるんだろ
802デフォルトの名無しさん:2011/05/08(日) 01:26:53.50
x > 0 でtrueになるんじゃなくて、
条件式は0であるか無いか、だ。 その理由は、この高級アセンブラについての初心者向けスレにでも行ってくれ

803デフォルトの名無しさん:2011/05/08(日) 01:31:04.23
>>801
>>798
マジで御願いします。本当にスレチです
804デフォルトの名無しさん:2011/05/08(日) 01:32:22.85
まぁどちらにせよ
プログラムなれていると>0とか省くのがあるからなぁ
if(変数単体)とかそういう使い方もあるし

確かにその通り動くんだろうが、ぶっちゃけそういう書き方していない
とわかりにくいよな
805804:2011/05/08(日) 01:38:13.65
連スレだが
>>797
つまり 0x80 っていうのは二進数でいうと 1000 0000って訳よ
でそれと入力の結果(Hogeとする)を&演算しているって事は
Hogeの一番上のビットが1か0かって判断をしているわけだ

0x70っていうのは1110000だからその部分を判別してるってことだろ
まぁそれがどうなるかっていうのはしらねぇよ
リファレンスでもなんでも確かめろよ

そもそも演算子すらもまともに使えない奴がDirectXをやったところで
まともに動作すると思えない。
以下>>798と同意見
806デフォルトの名無しさん:2011/05/08(日) 01:48:56.68
>>805 はわかっててわざと、伝える為に言葉濁して書いてるイケメンだと思うが
元の質問者向けに補足だけしておくと、判別してるって言うか、演算な。計算。

そのビットだけ残す計算。 8bitの範囲で言うなら、128で割ってるのと同じ(=x&0x80)
そしてここは DirectX ライブラリの初心者スレであって、それ以前の初心者スレではないって言う
807デフォルトの名無しさん:2011/05/08(日) 01:54:54.19
>>775
誰か教えてくれ!
>そうだね先人のソースをいくつ見たかに比例しそう
どこで見ている?
参考になる所って有りますかね?
808デフォルトの名無しさん:2011/05/08(日) 02:01:14.06
そんなの個人サイトでも
SorceForgeのオープンソースでも
GoogleのCodeSerchででもいくらでも出てくるだろ

いくつか読んでみて自分や今作っているゲームの
フレームワークとかと相性がよさそうなの探し出せカス
こうだっていってお前は納得するのかと、小一時間吉野家で問い詰めるぞ

そういう部分で労を惜むな
809デフォルトの名無しさん:2011/05/08(日) 02:02:19.70
>>807
世の中のオープンソースプロジェクト
sourceforge
googlecode
いくらでもあるんじゃね。良い悪いは別にして
810デフォルトの名無しさん:2011/05/08(日) 07:56:44.83
ぱっと見見ていると此処の質問者ってせかす癖にお礼すら言ってこないとか
ひでぇヤツらが多いよな

まぁ回答者さんは善意で答えているから気にしている人は居ないと思うけど
811デフォルトの名無しさん:2011/05/08(日) 09:22:34.84
子供が多いんだよ。「かっこいいゲームをめんどくせーとか言いながら簡単につくりたい」 と妄想する子供らの集まる場所
812デフォルトの名無しさん:2011/05/08(日) 11:15:40.46
>>811
「作りたい」というか「作ったという優越感に浸りたい」じゃないかな。
3Dエンジン作ったんだぜっていいつつサンプルとか人のコードのコピペのせいで仕組みを本人全然理解していないのを時たまみるし。

813デフォルトの名無しさん:2011/05/08(日) 11:36:27.80
恐縮です(ヽ'ん`)
814デフォルトの名無しさん:2011/05/08(日) 12:13:09.17
荒れるんだから、C++の初心者スレに誘導すればよかったんだ。
815デフォルトの名無しさん:2011/05/08(日) 15:36:59.38
DirectDraw の使用は非推奨になりました。
ゲーム開発での DirectMusic の使用は非推奨になりました。
DirectPlay は廃止が予定されており、新しいアプリケーションの開発には使用しないことを強くお勧めします。
DirectSoundの使用は非推奨になりました。
ゲーム開発での DirectShow の使用は非推奨になりました。
816デフォルトの名無しさん:2011/05/08(日) 16:35:29.03
DirectGraphicsはどうなの?
817デフォルトの名無しさん:2011/05/08(日) 16:39:42.55
>>815で思い出したが、当初の予定ではDirectXはCOM使ってるから
DirectX-DLLは常に最新のみで、COMインターフェイスはそのまま継承し続け
古いゲームでも最新バイナリで動作可能!!とかだったんだよな。
例えばトゥームレイダー2でHWT&Lが動作するとか。
おっと、歳がばれるな。
818デフォルトの名無しさん:2011/05/08(日) 16:45:48.68
自分で書いて思い出したが
昔はGPUメーカーがいっぱいあって、グラボは熱かったんだよ。
Geforce256がHWT&Lを引っさげ鳴り物入りでデビューしたが、ベンチ以外モッサリとか
Savage2000がHWT&Lを引っさげ鳴り物入りでデビューしたが、全てにおいてモッサリとか
今も物理演算とかいろいろあるけど、ちょっと難しくなりすぎだよね。
819デフォルトの名無しさん:2011/05/08(日) 20:20:06.42
でっていう
820デフォルトの名無しさん:2011/05/08(日) 20:23:34.15
>>818
おっさん今のGPUの方が熱いんだよ
下手なテクニックが必要ない今のほうが組むのは楽
ただしD3D10以降に限る
821デフォルトの名無しさん:2011/05/08(日) 20:52:00.91
>>816
>DirectGraphics
どうなのもなにも、そんなものは存在しない
822初心者:2011/05/08(日) 23:21:53.95
ウインドウを表示するだけのソースを書いて(ほぼコピペ) 表示はできましたが、
解放のところで0xC0000005エラーがでてしまいます。
ポインタのエラーみたいですが原因がわかりません。

DirectXの再インストールしても直りませんでした。
VISTAで、ドライバータイプはDirectX10_1でデバイスが作成されます。
823初心者:2011/05/08(日) 23:24:04.25
わかる方いたらご指導ください
あと文字数制限きつい・・
824デフォルトの名無しさん:2011/05/08(日) 23:30:46.63
DirectX再インストールとかする前に、
その切り貼りしただけのソースで何をやっているかはわかってるの?
ポインタのエラーみたいですが、じゃなくてそのポインタはどこの何?

そんだけの話でわかる方なんて、エスパーしかいないってマジで
ソース貼るならここへ → http://codepad.org/
825初心者:2011/05/08(日) 23:52:50.50
おお。こんなところがあるんですね、ありがとうございます。
動作は流れはなんとか理解できています。
エラーが起こる個所はスマートポインタ使用時はD3D11Deviceの解放時です。
スマートポインタを使わないとSAFE_RELEASE(this ->context);
のところでエラーがでます

ソースは以下になります。
http://codepad.org/EzGY0YtL

よろしくお願いします(._.)
826初心者:2011/05/08(日) 23:57:41.67
訂正
D3D11Device → ID3D11Device
申し訳。(._.)
827初心者:2011/05/09(月) 00:11:47.34
ちなみにSAFE_RELEASEマクロでの解放時の解放の順番を変えると
何故かswapChainとdeviceとcontextのうち
一番最後に解放しようとしたもので同様のエラーが起きます。

サイトを回ったのですが該当の情報がとんとありませんでした・・
828デフォルトの名無しさん:2011/05/09(月) 00:19:53.42
スレッドじゃね?
829デフォルトの名無しさん:2011/05/09(月) 00:34:09.88
>>827
あぁなんだ。 それ、簡単に言えばスマポだから。
つまり解放順番が意図どおりでないせい、と思う。 よくある話
830初心者:2011/05/09(月) 00:46:01.54
マクロでのRelease()だと解放順がランダムなんですか?
また_tWinMain関数ないで直接このクラスをインスタンス化してるので
別スレッド化はしてませんが、そういう方向での問題な気もします。

C#のガベージさんに頼り切りだったもので・・
DirectXのスレッドの仕組みとCOMの解放順をもうちょっと勉強して出直してきます。
ありがとうございました(._.)
831デフォルトの名無しさん:2011/05/09(月) 00:52:04.02
いやマクロのRelease順じゃなくて、スマポ側
832デフォルトの名無しさん:2011/05/09(月) 01:03:43.24
SAFE_RELEASEでエラーが出てるってことはスマポ使ってないだろ
上がってるソースがエラーが出るソースと違うから混乱してるが
833デフォルトの名無しさん:2011/05/09(月) 01:53:23.26
SAFE_RELEASE を使えば開放の順番、タイミングなんて関係ないって思ってるのかねぇ・・・

使用中状態なら終了するなりする。
親子関係がある者については子・・・というか作られた逆順にしないと管理がどこか彼方へ跳んでいってしまう。
834デフォルトの名無しさん:2011/05/09(月) 01:58:08.91
>親子関係がある者については子・・・というか作られた逆順にしないと管理がどこか彼方へ跳んでいってしまう。
まあ普通そういうふうには作らんけど。
IDirect3DResource9からIDirect3DDevice9を取得できるみたいに。

835デフォルトの名無しさん:2011/05/09(月) 02:11:12.86
親が急に居なくなったら子はグレル
836デフォルトの名無しさん:2011/05/09(月) 02:15:07.61
てか、SAFE_RELEASEが駄目じゃん。
CComPtrでコンパイル通らなかった気がするけど、Releaseと=NULLで2回Releaseが呼ばれてんじゃね。
837デフォルトの名無しさん:2011/05/09(月) 16:38:43.30
頂点が重複しない場合はインデックスバッファ付く必要ない?
838デフォルトの名無しさん:2011/05/09(月) 16:39:48.93
訂正
付く→使うです
839デフォルトの名無しさん:2011/05/09(月) 16:59:57.68
>>837
サイコロを想像したとき、頂点は 8 あれば良くて、面数は 6*2 = 12三角面
これを各面ごとにマテリアルを変えて描画するような場面を想像した時、

1つの三角面は頂点3つだから、サイコロ1面で言うなら6頂点づつ指定する必要があるが、
これをインデクス使わないで表現すると、単純にサイコロ1つあたり、6*6 = 36頂点必要なるよな?
同じ8頂点の値がコピーされた36頂点分のデータ。 1頂点あたり三軸座標値だけだったとしても、float が108個。

これは無駄だし、同じ頂点の情報を持つ構造体(カスタムVERTEX)は1つにしておきたいから、
頂点は8個、インデクスを36個とかにする、そういう事。 データの様子をよく観察して、方法を選択すること
840デフォルトの名無しさん:2011/05/09(月) 17:01:21.39
あぁ、で、そういう意味であってもまったく重複しない = 三角の板ポリがバラバラに宙に浮いてるだけ、って話なら、
インデクス必要ない
841デフォルトの名無しさん:2011/05/09(月) 17:03:39.25
でもどうせそのサイコロに
テクスチャ張るならテクスチャ座標の存在のせいで頂点を共有ないよな?
842デフォルトの名無しさん:2011/05/09(月) 17:06:55.09
法線って頂点1つにつき3つ必要じゃないですか?
843デフォルトの名無しさん:2011/05/09(月) 17:11:43.13
>>841
面UVと、頂点UVって考え方があるので、
面UVの場合には1つの頂点あたり、UVがnセット必要になる = コピーしたそれぞれの頂点が必要になるが、
頂点UV(カスタムVERTEXに持つような)の場合、それはそういう仕様として使えばいいだけ

>テクスチャ座標の存在のせいで頂点を共有ないよな
このせいで、って言うより、どういう仕様にしたいか次第

>>842
3つてのが数値3つ=三軸の事なら当たり前。ベクトルだから
844デフォルトの名無しさん:2011/05/09(月) 17:17:13.76
面UVなんてあるのかサンクス
845デフォルトの名無しさん:2011/05/09(月) 17:20:53.23
面UVってのはあくまで考え方で、そういう実装を自分でしたならば、だから
別にそういう機能がある訳じゃないので注意な
面UVの例で言うと、例えば Blenderっていう統合3DCGソフトのUV管理がそれ
846デフォルトの名無しさん:2011/05/09(月) 17:21:06.05
インデックスバッファ使わないのって板ポリくらいだな
847デフォルトの名無しさん:2011/05/09(月) 17:44:10.46
>>846
むしろ板ポリでこそインデクスバッファ使いまくるよ。
ボタンやプログレスバーなどの挙動も含めて1回で描画したり、
文字画像をテクスチャ化した上で1回で描画したりするときに
アニメーション表示を併用するときはインデクスバッファで調整する。
848デフォルトの名無しさん:2011/05/10(火) 05:53:49.33
それって、複数のオブジェクトを一括で描くの?
849デフォルトの名無しさん:2011/05/10(火) 07:28:55.74
テクスチャが一緒であればそう
850デフォルトの名無しさん:2011/05/10(火) 12:35:21.50
以前DirectX9をちょこちょこっといじくった事があるぐらいの初心者同然ですが
これから本格的に10か11で3Dアプリを作りたいのですが
今のところテセレーションやGPUプログラミングなど、11特有の機能を使う予定はないのですが
10と11どちらがお勧めですか?
851デフォルトの名無しさん:2011/05/10(火) 15:05:53.31
11
852デフォルトの名無しさん:2011/05/10(火) 15:08:46.96
D3D10までにしか対応していないようなグラボに向けて最適化に取り組むのでもなければ
D3D10は忘れていいよ。
853デフォルトの名無しさん:2011/05/10(火) 15:49:07.58
Direct3D10用のデバイスもDirect3D11から全ての機能が使えるようになっているんだが、
何をどう最適化するというのか、説明してもらおうか。
854850:2011/05/10(火) 16:02:25.78
レスありがとうございます。
なぜこういう質問をしたかといいますと、以前どこかのスレの誰かが
DirectX9から10になってだいぶシンプルになったのが
11になってまた複雑になってきたとうい様な事を言ったからです。
実際、両方のコードを見比べてみると(まだtyutorial7しか見てないが)
10の方が短いコードですんでいるという事もあったし、資料の少なさもあるので
11で組んで良いか不安になったんですが、DirectX10のコードで買いても
初期化以外はだいたい11で通るのでしょうか?(通るなら、資料の少なさは
気にならないと思います。)
その他互換性以外の部分でDirectX11で失ったものとかはないのでしょうか?
(例えばDirectX9のステートが好きだった人は10で、DirectDrawが好きだった人は
8で喪失を感じたかも知れません)
855デフォルトの名無しさん:2011/05/10(火) 16:34:26.65
すみません質問です

3次元において
ベクトルの方向を向く
回転マトリックスを作成したいのですがうまくいきません
(例:ミサイル等が進行方向を向く処理)

最初からオブジェクトが向いている方向と方向ベクトルとで
外積を軸に内積の分だけ任意軸回転をしてる方法をとっているのですが
うまくいきません
何か参考になるページなどご存知の方はいらっしゃいますか?


v1 = D3DXVECTOR3( 0.0f, 0.0f, 1.0f );//最初にオブジェクトが向いている向き
v2 = data.GetVec();//方向ベクトル取得
d = D3DXVec3Dot( &v1, &v2 );//内積
D3DXVec3Cross( &cross, &v1, &v2 );//外積
//任意軸で回転
D3DXQuaternionRotationAxis( &q, &(cross), d * D3DX_PI * -0.5f);
// mに最終的な回転ベクトルが入る
D3DXMatrixRotationQuaternion( &m, &q );

856デフォルトの名無しさん:2011/05/10(火) 16:58:38.46
内積d とは何か
d * D3DX_PI * -0.5fとは何か
857デフォルトの名無しさん:2011/05/10(火) 17:02:15.75
>>855
カメラ座標決めるときに使うD3DXMatrixLookAtLH関数使えば出るんじゃないの?
858855:2011/05/10(火) 17:11:47.43
>>856
d は float型ですすみません
D3DXQuaternionRotationAxisの第三引数はラジアン単位だそうなので
d( -1〜1) × 3.14... × -0.5f
( -0.5fはdで1がきた場合そのままだと180度回転してしまうので調整用)

>>857
一般的(?)にはそちらを使うのが普通なのでしょうか?
そちらの方法も試してみます。
859デフォルトの名無しさん:2011/05/10(火) 18:03:03.34
>>839
頂点だけ考えるならそれでいいけど
サイコロの場合
UV見ると同じ頂点でも違うUV座標なので
インデックスバッファ使うわけにはいかないパターンになるよ
860デフォルトの名無しさん:2011/05/10(火) 19:29:03.69
>>855
RotationArc
最小弧クォータニオン
でググる

もしくは冗長だけど
ベクトル間の角度+球面線形補間
861デフォルトの名無しさん:2011/05/10(火) 20:29:06.21
>>855
内積で得られたdをそのままD3DXQuaternionRotationAxis()に入れてるけど、
内積だけじゃ角度出ないんじゃないかな?

内積 = |A| * |B| * cosθ
なので、
cosθ = 内積 / (|A| * |B|)
となって、ここから角度(ラジアン単位)を求めるには
アークコサインで変換しなきゃならない。

dの計算方法は

float div = sqrt(v1.x * v1.x + v1.y * v1.y + v1.z * v1.z) * sqrt(v2.x * v2.x + v2.y * v2.y + v2.z * v2.z);
if (div != 0.0f) //ゼロ除算を避ける
{
d = acos((v1.x * v2.x + v1.y * v2.y + v1.z * v2.z) / div);
}

とかになると思う。
862デフォルトの名無しさん:2011/05/10(火) 21:29:00.18
>>855 の例で言うなら単純に、

× D3DXQuaternionRotationAxis( &q, &(cross), d * D3DX_PI * -0.5f);

 ↓

○ D3DXQuaternionRotationAxis( &q, &(cross), acosf(d));

で終わり
863デフォルトの名無しさん:2011/05/11(水) 03:21:57.21
質問です
次のどれかで描画するときは重複した無駄な頂点が発生しないため
インデックスバッファを使わない方が効率的ですか?

D3DPT_POINTLIST,
D3DPT_LINESTRIP,
D3DPT_TRIANGLESTRIP
864デフォルトの名無しさん:2011/05/11(水) 03:30:54.04
>>863
同じところを通る頂点を使う事はあると思うけどねぇ〜
865デフォルトの名無しさん:2011/05/11(水) 05:13:39.63
同じ頂点使わないならいらないんじゃね
ぶっちゃけ水面とかグリッドなやつにしか使わないような
866デフォルトの名無しさん:2011/05/11(水) 05:18:15.30
上のほうでコントロールとか一括描画とか言ってるのあるけど
同じテクスチャという制限とかもあるし
今の時代そんなことやらなくても速度出るし
867デフォルトの名無しさん:2011/05/11(水) 08:17:59.89
>そんなことやらなくても速度出るし
追求をやめたらPGじゃない
868デフォルトの名無しさん:2011/05/11(水) 08:26:10.27
今でも、オンボードやネットブック等をターゲットに入れるなら一括描画は効果あるよ
まともなボード積んでること前提にするなら変わらなくなってきたけどね
869デフォルトの名無しさん:2011/05/11(水) 08:51:07.89
>>866,868
このご時世にi845やGeForce7600やらのサポートが必要になるんだぜ……。
870855:2011/05/11(水) 12:47:29.92
>>862
解説付きありがとうございます
仰るとおりにしたら見事動きました
871863:2011/05/11(水) 17:12:25.88
2Dで四角い画像貼ってまわるのに

D3DPT_TRIANGLELISTで個数ごとにポリゴン2つ、インデックス6つ
drawIndexedPrimitive()

D3DPT_TRIANGLESTRIPで見えないポリゴンで繋げて
個数ごとにポリゴン3つ、インデックスなし
drawPrimitive()

どっちがいいかなと思ったんですけど
過去すれだとD3DPT_TRIANGLELISTのほうが良いっぽいですね。
872デフォルトの名無しさん:2011/05/11(水) 17:34:17.50
それだったらインデックスやね
見えないポリゴンとか重くなるわ
873デフォルトの名無しさん:2011/05/11(水) 17:56:02.28
カメラのビュー行列から、Eye,Focus,UpやYaw,Pitch,Roll
に分解できるのでしょうか?
目的はカメラのワールド変換行列から、カメラを制御することです。
ビュー行列にワールド変換行列の逆行列を設定すればいいとわかった
のですが、カメラは上記のEyeなどパラメータを保持しており
通常の入力操作でそれらを更新することで制御しています。
ワールド変換行列をもとにビュー行列を直接書き換えたときに、
それらと整合するようにしたいです。
874デフォルトの名無しさん:2011/05/11(水) 18:11:44.17
>>873
そんな面倒なことしなくてもカメラの位置、注視点を保存しとけば
いんじゃないの?
やりたいことがいまいち伝わってないから、そう思うのかもしれないけど
875デフォルトの名無しさん:2011/05/11(水) 18:16:09.69
>>874
カメラは位置(Eye)や注視点(Focus)などを保存していて、
マウスの入力操作ではそれをいじってビュー行列をつくっているんですが、
それとは別にワールド行列からもカメラを制御できるようにしたいのです。
876デフォルトの名無しさん:2011/05/11(水) 18:49:54.67
「ワールド行列からもカメラを制御」ってイマイチ意味が分からないんだが
俺が知識不足なだけ?
877デフォルトの名無しさん:2011/05/11(水) 19:03:07.69
ググッてもわからないので質問させて下さい。
LG D2342P-PNのモニターを購入して3Dのゲームをしているのですが
DirectX9のゲームをDirectX11でプレイできないのでしょうか?
今DirectX11を使っていて一応3Dでゲームは出来ますがDirectX9
にして下さい。と警告が出て途中で落ちます。
そしてDirectX9をインストールしよとしても
インストールするとできません。ご教授よろしくお願いします。
878デフォルトの名無しさん:2011/05/11(水) 19:05:28.08
>>877
死ねばいいよ
879デフォルトの名無しさん:2011/05/11(水) 19:18:29.69
>>878
お前みたいなバカに聞いてない死ねやカス!
880デフォルトの名無しさん:2011/05/11(水) 19:19:27.53
>>878
小学生かwww
881デフォルトの名無しさん:2011/05/11(水) 19:20:08.43
>>876
カメラの位置と回転を、モデルを制御するのと同じように、
SRTのワールド変換行列で制御するってことなんですけど。
俺の言い方がまずいのでしょうか。
882デフォルトの名無しさん:2011/05/11(水) 19:29:08.86
>>877
1ヶ月前に我慢できずに3Dモニタ買ったんだけど
それHDMI1.4a対応かよ
糞が
死ねばいいよ

つーかスレ違い
883デフォルトの名無しさん:2011/05/11(水) 19:29:46.76
>>881
IDirect3DDevice9::SetTransform(D3DTS_VIEW, )
で行列突っ込めば行列で制御できるんじゃないの?
884デフォルトの名無しさん:2011/05/11(水) 19:44:42.60
>>871
D3DPT_TRIANGLELISTでインデックス無しが一番いい。
885デフォルトの名無しさん:2011/05/11(水) 19:49:28.94
>>877
ここはDirectX「プログラミング」のスレだからスレチな。
あんまり頭悪いと回りに迷惑かけるから気をつけろよw
886デフォルトの名無しさん:2011/05/11(水) 20:19:48.90

>>883
?? 何故IDirect3DDevice9が?
カメラクラスがあります。カメラクラスは注視点などパラメータをもち
マウス入力でパラメータを変更し毎フレームビュー行列をを生成します。
しかし、マウス入力でなくワールド変換行列で直接カメラの位置と回転を
制御したいときがあります。その後もマウス入力で継続して制御するには
ワールド変換行列から生成したビュー行列をパラメータに落とし込まなければ
なりません。どうすれば?
ってことなんですけど、全然通じないのは俺がおかしいのでしょうか?
887デフォルトの名無しさん:2011/05/11(水) 20:39:26.75
う〜ん。どう説明すればいいのでしょうか。説明ベタは駄目ですね・・・。
本題は、ビュー行列をEye,Focus,Upに戻せないか?ということなので、
「そういうことはできない」「こういう方法ででえきる、あるいは行列の
成分のどこどこと対応している」というふうにお答え頂ければ幸いです。
888876 :2011/05/11(水) 20:42:28.75
SetTransformは関係ないだろう

やっとやりたいことがわかったわ
でも位置と回転を覚えておいてそれを行列操作すればいんでね?

ビュー行列は
移動と回転の情報は普通のワールド変換行列と同じだから
情報は取り出せると思うが。
889デフォルトの名無しさん:2011/05/11(水) 20:43:07.57
ViewMatrixを作るためにFrom , At , Upが必要なわけだけど、それがあとで必要になるなら
作成したときに保存しておけばいいじゃない。
890デフォルトの名無しさん:2011/05/11(水) 20:48:08.81
どうすればも何も、平行移動成分の逆がカメラ位置になって、
回転成分で(0, 0, 1.0)を逆方向に回転して得られる方向ベクトルを
カメラ位置に加算して注視点とする。
上方向については(0, 1.0, 0)を回転させる、とかじゃいかんの?
891デフォルトの名無しさん:2011/05/11(水) 20:48:15.55
>>887
D3DXMatrixLookAtLH(MATRIX *pOut, VECTOR3 *pEye, VECTOR3 *pAt, VECTOR3 *pUp)

やってること
zaxis = normal(At - Eye)
xaxis = normal(cross(Up, zaxis))
yaxis = cross(zaxis, xaxis)

行列の中身
xaxis.x yaxis.x zaxis.x 0
xaxis.y yaxis.y zaxis.y 0
xaxis.z yaxis.z zaxis.z 0
-dot(xaxis, eye) -dot(yaxis, eye) -dot(zaxis, eye) 1
892デフォルトの名無しさん:2011/05/11(水) 20:50:51.60
>>890-891
ありがとうございます。解決できそうな感じです。

他の方々もありがとうございました。
893デフォルトの名無しさん:2011/05/12(木) 00:25:06.88
D3DXMatrix関連は、MSDNとかで調べると中身教えまくりだし
ある程度単純な処理はインラインなので.hや.inlで中身砲台
894デフォルトの名無しさん:2011/05/12(木) 01:16:11.45
中身見るならXNAMathの方がいいよ。SSEだし。
895初心者:2011/05/12(木) 21:26:22.22
少し前に投稿したものです。
D3DXオブジェクトの解放ができなかった問題が半分解決したので
ご報告にあがりました。

デバイスとコンテキストとスワップチェイン解放時に最後に解放しようとするものが
どうしてもアクセス違反になる問題で、
原因はD3D11CreateDevice時のドライバータイプでした。
ビデオカードなしでもFeatureLevelが10_0でちゃんと返ってるし
デバイス作成できてるから
D3D_DRIVER_TYPE_HARDWAREでもいいんかなと思ってたら
無理だったようでした・・・。

ご協力してくださった方々ありがとうございました。
新しいパソコン買いますOTZ
WIn7でOTZ
896デフォルトの名無しさん:2011/05/12(木) 21:29:56.09
なんだよ!描画もやってないのに成功したと勘違いかよ!
897初心者:2011/05/12(木) 21:42:44.91
レンダービューのクリアで青に塗りつぶすのはできてましたが、
三角形の描画くらいしとけばよかったです;;
898デフォルトの名無しさん:2011/05/12(木) 23:47:32.33
Direct3Dってバージョン間で共通のI/Fで呼び出せないんですか?
バージョンが上がるたびにIDirect3DDevice9とかバージョンが付いた
型名使うのは辛すぎます
899デフォルトの名無しさん:2011/05/12(木) 23:54:44.63
>>898
どのバージョンの処理が呼び出されて欲しいの?って話
てか、typedef するなりマクロ書いたり、自分の用件でオブジェクト化してたりしないの?


900デフォルトの名無しさん:2011/05/12(木) 23:56:56.75
>>898
DXも歴史がかなりあって毎回使い勝手変わるから、それは無理だと思う。
せめてD3dBase的なものがあればよかったのかも知れんが、
そういうものがあったとしたら、仕様はそのBaseが策定された時期の仕様引きずってると思うよ。
901デフォルトの名無しさん:2011/05/13(金) 00:12:56.38
>>899
OpenGLしか知らないからバージョン毎に型が変わっていくっていうのに驚いた
せめて初期化くらいは共通I/Fのファクトリとかになっていればいいのに

>>900
毎回変わるのか・・・MS-officeみたいだ・・・
あれは解説本出す業者と金で繋がってるとしか思えない
902デフォルトの名無しさん:2011/05/13(金) 00:28:21.32
>>901
俺も普段OpenGL使って色々やったりするけど、
シェーダとかARBとかEXT関係の辺りはバージョンによって使える/その時代には無かったとかあるじゃん
それと一緒だって。 ・・・分量が違いすぎるだろって話はあるが
903デフォルトの名無しさん:2011/05/13(金) 00:41:54.16
今日も拾ってきたソースをコンパイルしようとしたら自分のPCに
インストールしてるSDKのバージョンと違ってて
SDKバージョン変更対応する苦行が始まるお!
904デフォルトの名無しさん:2011/05/13(金) 04:56:29.48
OpenGLは拡張多すぎて泣く
DirectXのマイナーバージョン違いは 一応バージョンのdefineあるから
#if で分岐してる
905デフォルトの名無しさん:2011/05/13(金) 12:49:34.02
>>887
>本題は、ビュー行列をEye,Focus,Upに戻せないか?ということなので、
これは色々やってみた感じ
不可能である場合が多い気がする
906デフォルトの名無しさん:2011/05/13(金) 15:33:56.55
ティーポットってどっちが正面(+Z軸)なんでしょうか? 視点から見て注ぎ口が右に見えたら後ろ?
907デフォルトの名無しさん:2011/05/13(金) 15:39:21.84
ビューの設定にもよるし、そもそもZの定義がどうなっているか次第。
軸の設定なんて自分で勝手に決めるものなんだから、他人が知っているわけがない。
908デフォルトの名無しさん:2011/05/13(金) 16:51:01.75
折角出た話題だからこだわりたいんだけど
行列から回転やスケール、位置への逆変換って不可能だよな?
できるようなページがたまにあったりするけどおかしいよね?
できてないもんね

ちなみに俺は色々やってみた感じどうにも無理と結論づけた
909デフォルトの名無しさん:2011/05/13(金) 18:11:45.57
行列で動かしたのを元に戻したいなら逆行列かければいい
910デフォルトの名無しさん:2011/05/13(金) 18:17:36.31
>>909
そういう話してない
たまに逆変換しなきゃいけないような状況においこまれるときがある
ツールとかもそうだし
あとシステムの基盤が行列でしか状態を保持してないとかだと
別に回転、スケール、位置情報を保持しておかないといけなかったりする

別に元に戻したい云々の話してない
あくまでそのときに構成した行列の回転要素が知りたいとかそういうとき
911デフォルトの名無しさん:2011/05/13(金) 18:19:52.06
わかりやすい例でいうと
キャラを3回転させてる途中なのに担当者が超馬鹿で行列しか保持する機構ねーの

基盤作ったやつにおもいっきり馬鹿馬鹿アフォアフォアフォ能無しウンコウンコたくさん書いてメール送ってやったけど
今更、そんなもん挟めない云々いいわけするから強引に推定3回転とかわけのわからない判定作って強引にやったけどねw
912デフォルトの名無しさん:2011/05/13(金) 18:46:47.42
キンモー
913デフォルトの名無しさん:2011/05/13(金) 20:13:28.31
わかったわかった。
もうそれDirectX関係ないからとっとと消えろ、キモいからw
914デフォルトの名無しさん:2011/05/13(金) 21:48:40.05
>>911
こういうことじゃなくて?
// m = translation * rotation * scale (D3DXではm = scale * rotation * translation)
template< typename value_type >
void decompose ( /*[in]*/const matrix< 4, 4, value_type >& m,
/*[out]*/matrix< 3, 3, value_type >& rotation,
/*[out]*/vector< 3, value_type >& scale,
/*[out]*/vector< 3, value_type >& translation)
{
translation = vector< 3, value_type >( m[0][3], m[1][3], m[2][3] );
rotation = matrix< 3, 3, value_type >(m);
scale = rotation.length();
for( uint_t i = 0; i < 3; ++i )
rotation[i] /= scale[i];
}
915デフォルトの名無しさん:2011/05/13(金) 22:51:32.38
>>914
そうだけどそれ動かないでしょ?
だってどう考えても理にかなってねーもん
916デフォルトの名無しさん:2011/05/13(金) 22:52:12.74
>>908

行列が4×4なら、元に戻らんやろね。

次元縮小の話が無い限り、そんなことはありゃんすめぇー。
917デフォルトの名無しさん:2011/05/13(金) 23:51:31.80
カメラ行列って結構難しいことやってんだよね
方向ベクトルから回転求めたりして
918デフォルトの名無しさん:2011/05/14(土) 00:52:57.91
>>917
大してやってない
以前のDirectXならヘルプに載ってたんだがな・・・
919デフォルトの名無しさん:2011/05/14(土) 06:27:13.98
DrawIndexedPrimitive()がDrawIndexedPrimitiveUP()より良い場合って
頂点が多い場合といわれてるけどいまいちわからないですね。

UP系は描画の度に全ての頂点配列を値コピーするかわりにロックの負荷なし。

UP無しは石や樹木のように動かないオブジェクトはビデオメモリに残ってる
データをそのまま描画して、歩いたりしたオブジェクトの頂点に関しては
ロックした後そのオブジェクトの分だけ頂点を値コピーするから
コピーコストは少ない。

だとすると、ずっと動かないオブジェクトはビデオメモリに残しておいて
そのままUPなし()で描画する。一方で常に動いてるようなオブジェクトは
UP()で描画するのが効率的な使い分けとして正しくなりますか?
920デフォルトの名無しさん:2011/05/14(土) 07:18:38.40
>>919
効率を気にするならUPなんて一切使わない。

結局GPUは頂点バッファからしか描画できないから、UP系は頂点バッファの確保や
コピーをドライバに任せるだけ。
921デフォルトの名無しさん:2011/05/14(土) 12:31:28.06
>>919
つーか動的に頂点を変化させる場合でも、普通ロックなんかしない。
VertexShaderとかあるでしょ。
922デフォルトの名無しさん:2011/05/14(土) 14:54:44.08
質問です

pDev->StretchRect(pBackBuffer, NULL, pSurface, NULL, D3DTEXF_NONE);
バックバッファから、テクスチャのサ―フェースへとStreachRectをしようとしています
この際、
・バックバッファがアンチエイリアシングつき
・バックバッファとテクスチャの横縦幅が完全に一致

している時のみ、うまく転送されません。
StreachRectの返り値はS_OKなのですが、実際に画像は転送されていませんでした。

バックバッファのアンチエイリアシングを外したり、テクスチャのサイズを例えばバックバッファの横幅と一致、縦幅は1ドット小さくした場合などは転送されました
MSDNを読んでも「拡大縮小が対応していない転送元と先の組み合わせもある」みたいなことは書かれているのですが、むしろ拡大縮小が無ければ対応が増えるような書き方です

解決の手段を知りたいのですが、何か情報いただければ幸いです
923デフォルトの名無しさん:2011/05/14(土) 17:21:20.36
ビデオカード次第ではD3DTEXF_NONEだと描画されないよ
924デフォルトの名無しさん:2011/05/14(土) 19:28:03.85
質問です。
SDKを導入したいのですが、ソフトウェアによくある「安定するバージョン」というのはあるのでしょうか。
環境はWindowsXP VC2008で、Windows2000以降で動作可能な2Dゲームを想定しています。
高度は機能はまず使わないと思うのですが、動作速度や環境の問題がありましたらご教授願います。
925デフォルトの名無しさん:2011/05/14(土) 19:40:29.75
>>924
そもそもWin2000まで対応のDirectXというだけでかなり制限される。
例えばXP SP2以降で利用可能なXAudio2はWin2000では使用できない。
DirectXを使用するアプリケーションは必ず使用している
DirectXのバージョンの再頒布パッケージを添付することになっているが、
エロゲーメーカーを中心として、パッケージの添付自体を嫌がって
D3DXなどのバージョン依存性が高いライブラリを使用せずコアだけで実装する例もある。

質問の「安定するバージョン」だが、そんなものはない。
DirectXは動作を何も保証しないし、同じバージョンのDirectXでも
ハードウェアのドライバによって動き方が全然違うから。
926デフォルトの名無しさん:2011/05/14(土) 19:58:22.54
>>925
ありがとうございます。
自分が想定しているのは、AVGで出来るならまず出来るだろう程度のものなので、
代替手段があるのであれば機能性よりも動作環境を優先したいです。
導入するにあたっては、闇雲に新しいバージョンを入れても大丈夫なのでしょうか。
927デフォルトの名無しさん:2011/05/14(土) 20:27:57.74
DXライブラリのバージョン変わるだけで、使わなきゃどれでも同じ。
928デフォルトの名無しさん:2011/05/14(土) 21:11:21.11
>>921
リアルタイムデフォームする時って、VertexShaderで計算させるのが常識なの?
929デフォルトの名無しさん:2011/05/14(土) 22:35:16.77
常識とまではいかないけど、計算が速い。
でも、CPUでないと出来ない計算とか、CPUで十分間に合う計算とかもある。
930デフォルトの名無しさん:2011/05/14(土) 23:01:59.19
>>929
そうなのか・・・
俺は普段モデラソフトみたいな物(処理的な意味でそういう物)とか、
リアルタイムのキャラクタアクションを扱うモジュール(ボーン・デフォームと、ボーンベクトルのslerpによるアクション)
とかを自分で書いて使ったりしてるが、どうも今ひとつ、「あともう若干速い手段無いだろうか」と思ってた

ちょっとVertexShader使ったその辺を調べて追いかけてみる。ありがとう
931デフォルトの名無しさん:2011/05/14(土) 23:14:12.36
>>922-923
情報ありがとうございます。
ただ、他のD3DTEXFを全通り試してみましたが、やはり「まったく同じサイズへの転送」の場合描画されないようです
932デフォルトの名無しさん:2011/05/14(土) 23:23:10.04
>>931
そもそもオレはStretchRectは使用しないな。
テクスチャに書き込むならテクスチャをレンダーターゲットに設定して文字通り書きこむ。
描画結果をファイルに書き出したいなら
テクスチャではなくサーフェイスを作ってレンダーターゲットに設定して描画して、それを保存する。
933デフォルトの名無しさん:2011/05/14(土) 23:33:18.19
>>頂点シェーダ
正三角形だったら(0,0) , (0, 32) , (16, 16)に頂点おいたままにして
そこから頂点シェーダに変数渡して動かすのか!思いつかなかった。

ID3DXEffect *pEffect;
pEffect->SetFloat("x", screen_x / 2);
pEffect->SetFloat("y", screen_y / 2);
934デフォルトの名無しさん:2011/05/14(土) 23:36:50.50
それ早いのか〜?
いまいち疑問な俺
頂点数分のデータ転送が行われてるんだからロックしたときと大して変わらんのと違うの〜?
って思うけど使う関数によって時間変わったりもするから脳みそで考えるよりも実測あるのみなんだろうな
935デフォルトの名無しさん:2011/05/14(土) 23:46:22.25
>>932
あれ?もしかしたら自分の勘違いかもしれませんが
テクスチャをターゲットにしてしまうと、アンチエイリアシング使えなくないですか?
当方、環境はDirectX9.0cです

アンチエイリアシングを利用して画面を描画して、
今度はそれをテクスチャとして使い、色々画面エフェクトをかけて
実際のディスプレイに表示

ということをやろうとしています
936デフォルトの名無しさん:2011/05/14(土) 23:46:47.66
>>922
ストレッチ有りとなしの場合処理を分ける必要があるとして
マルチサンプルの場合も分ける必要がある。
原因は、コピー先かな。
ドキュメントに制限書かれていた気がする。
937デフォルトの名無しさん:2011/05/15(日) 00:34:25.13
935です。やっている処理を書きます

D3DXCreateTexture(pDev, w, h, 1, D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT, &pTex);
pTex->GetSurfaceLevel(0, &pSurface);
pDev->GetRenderTarget(0, &pBackBuffer);
pDev->StretchRect(pBackBuffer, NULL, pSurface, NULL, D3DTEXF_NONE);

w,hはバックバッファのそれと同じです
返り値をチェックしましたが、どれもS_OKで失敗した様子はありません
ですがきちんと転送がされません

テクスチャを作り際、wでもhでも両方でも、1ドット以上違いがあればうまく転送されるようです
「拡大縮小がある時だけ失敗する」ならまだ分かるのですが、「拡大縮小が無い時だけ失敗する」のは何故なんでしょう・・・
938デフォルトの名無しさん:2011/05/15(日) 01:20:07.20
コピー先と元の領域指定してみなよ。
それと、downsample のところの制限守っているか。
939デフォルトの名無しさん:2011/05/15(日) 01:25:55.54
アドバイスありがとうございます
さっそく領域指定もやってみましたが、駄目なようです

ダウンサンプリング周りですが、ここの文章を読む限り
転送元と転送先のRenderTargetサイズさえ一緒ならOKなはずなのですが…
ttp://msdn.microsoft.com/en-us/library/bb174471%28VS.85%29.aspx

ところでこのページの、まさにダウンサンプリングのところの
・Create a second rendertarget of the same size, that is not multisampled.
という文章。日本語訳ページだと that is not の not が訳し忘れられていて、意味が正反対になってますねw
日本語ページ見て違和感感じて「またいつものか・・・」って英語ページ見て正解でした
940デフォルトの名無しさん:2011/05/15(日) 01:28:19.83
バックバッファとフォーマットが違うんじゃないかな。
941デフォルトの名無しさん:2011/05/15(日) 01:28:25.11
DirectXを使った2chviewer作ってください
AAもコンナ感じでグリグリできたら楽しいです
ttp://livedoor.blogimg.jp/coodoo/imgs/c/a/ca645557.gif
942デフォルトの名無しさん:2011/05/15(日) 01:29:46.33
>>941
どうやってそれ判定させる気だよww
943デフォルトの名無しさん:2011/05/15(日) 01:34:10.71
>>940
やだなぁ、バックバッファフォーマットが違ってたら、そもそも「1ドットでも差があれば転送できる」ができるわけが無いじゃ・・・
ないじゃ・・・
ち、違ってた・・・
しかも揃えたらうまくいった

超ありがとうございました
拡大縮小が無い時はなんか超速転送するために、まったく違うアルゴリズム動かしてるとかなんでしょうかね…
で、そのアルゴリズムの時はフォーマットがまったく一緒でないと駄目とか…?
944デフォルトの名無しさん:2011/05/15(日) 01:38:57.68
D3DXCreateTexture生成してるけど、生成されてるサイズは合ってる?
D3DFMT_A8R8G8B8で生成してるけど、コピー元とフォーマット同じじゃないと駄目かも。
あと極一部の環境で、CreateTextureのLevelsが1の場合、コピーされないドライバのバグが発生することがある。
この場合1以外か0で回避できる。ドライバの最適化(チート)関係のバグだと思っている。

って既に解決したぽ?
945デフォルトの名無しさん:2011/05/15(日) 01:43:31.74
>>944
ありがとうございます

バックバッファも当然D3DFMT_A8R8G8B8だと思ってたら
D3DFMT_X8R8G8B8
だったようです。
で、フォーマット不一致で駄目だったと。

・駄目だったのなら、ちゃんとStretchRectの返り値でエラー出してほしいよ…
・何故拡大縮小があれば不一致でもいけるのに、同じサイズだとむしろ駄目になるんだー!
946デフォルトの名無しさん:2011/05/15(日) 01:50:37.90
ブラウザが標準でdirectxに対応してくれればな
947デフォルトの名無しさん:2011/05/15(日) 02:51:44.32
Windowsにしか対応してないDirectXをブラウザに組み込むとか何の冗談だよw
948デフォルトの名無しさん:2011/05/15(日) 04:13:34.58
>>947
しかも「ブラクラ=GPUクラッシュ」の可能性がある・・・
949デフォルトの名無しさん:2011/05/15(日) 04:40:27.09
この世にはXboxというものがあってな
950デフォルトの名無しさん:2011/05/15(日) 05:17:26.11
この世にはドリームキャストというものがあってな
951デフォルトの名無しさん:2011/05/15(日) 09:00:35.78
Firefox4とかIE9とか、すでにDirect2Dや3Dに対応している時代に、
対応してくれればとか、何の冗談とか、いったい何を言っているんだろう?
952デフォルトの名無しさん:2011/05/15(日) 09:01:31.99
一方WebGLはセキュリティリスク問題が提議されていた
953デフォルトの名無しさん:2011/05/15(日) 09:09:57.71
>>947-950をみると、
プログラムを組んでいる人間の知識が、PC初心者並みなんだよな。
あまりに酷い。
954デフォルトの名無しさん:2011/05/15(日) 09:53:23.87
そんな浅い評論いらないです。
プラグラマはイコールで、パソコン詳しいお兄さんではありません。(一般の人にありがちな誤解)
955デフォルトの名無しさん:2011/05/15(日) 10:46:23.30
まぁブラウザ云々はスレチだから他でやれって感じだけど、>>953みたいなのはなんで
初心者スレにいるの?自分の知識ひけらかして他人を見下したいだけなの?w
956デフォルトの名無しさん:2011/05/15(日) 11:15:33.61
DirectX初心者!=PC初心者
957デフォルトの名無しさん:2011/05/15(日) 11:21:52.78
不勉強を指摘されて開き直るやつって、成長しないから何年たっても初心者を名乗り続けるんだよな。
958デフォルトの名無しさん:2011/05/15(日) 11:35:21.34
それは確かにそうだけど種類の違いもあるからな
大雑把に一括りで考えちゃダメよ
959デフォルトの名無しさん:2011/05/15(日) 11:50:52.55
>>957
おまえみたいなのも何年たってもそうやって煽ることしかできなさそうだよな
960デフォルトの名無しさん:2011/05/15(日) 11:53:21.26
素人=初心者 ?
961デフォルトの名無しさん:2011/05/15(日) 12:36:09.19
始めてから日が浅い者を初心者と言うが、いつまでも初心者を名乗り続けているのはただの馬鹿。
962デフォルトの名無しさん:2011/05/15(日) 12:44:37.36
15年前に若葉マークは卒業したけど運転することほとんどないまま
ペーパードライバなんですけど、3回目のゴールド免許更新なんです。
963デフォルトの名無しさん:2011/05/15(日) 13:44:31.71
>若葉マークは卒業したけど運転することほとんどないまま
まさにこれが鍵。良い事を言う
964デフォルトの名無しさん:2011/05/15(日) 15:10:08.95
素人ですか?いいえ、ペーパーグラマーです。
965デフォルトの名無しさん:2011/05/15(日) 15:59:36.36
プログラム技術板でそういう人生論的なものを語り出す方が
余程マヌケ
966デフォルトの名無しさん:2011/05/15(日) 20:32:50.12
>>934
頂点バッファ作成時に
書き込み遅い静的バッファ(D3DUSAGE_DYNAMICではない)を使えるから
早くなるんじゃないかな。

頂点バッファの切り替えは重いみたいだから
静的バッファ(VRAM)と動的バッファ(AGP)使い分けするなら
動的バッファ一本の方がよさそうな木がするけど

http://msdn.microsoft.com/ja-jp/library/cc324417.aspx
967デフォルトの名無しさん:2011/05/16(月) 10:32:29.60
質問です。
マウスオーバーやクリックの検知を、座標による判定ではなく、テクスチャ毎に設定することは可能なのでしょうか
トランプの様な、対象が何度も移動する類のものに対応したいのですが…
968デフォルトの名無しさん:2011/05/16(月) 10:39:43.93
>>967
なんて言っていいか迷うが、それ、そういう用件で
自分で実装する固有処理なんだがそもそも

>マウスオーバーやクリックの検知
↑これが何をしているかわかってるよな?
969デフォルトの名無しさん:2011/05/16(月) 10:43:00.67
もしかして DXUT で、何かパラメタ設定したら、そんな事が出来ると思ってるんじゃね
970デフォルトの名無しさん:2011/05/16(月) 15:10:21.24
>>967
そもそもDirectInputを使おうがWinAPIで済ませようが、
マウスカーソルがどのウィンドウの上にいるか、
どの座標に居るかしか教えてくれないんだぞ。

どのメッシュ上にあるかは自分で計算するんだ。
971デフォルトの名無しさん:2011/05/16(月) 15:29:14.77
自動で計算するプログラムを自分で作れば、自動で計算してくれるよ。
972デフォルトの名無しさん:2011/05/16(月) 16:00:07.43
JavaのPanelとかEventListenerとか
そういうフレームワークは自作するしかない。

俺も作ってるがやりだしたらきりがなくて
ゲームがつくれない(・3・)
973デフォルトの名無しさん:2011/05/17(火) 20:05:07.09
VertexShaderで変換をかけた結果を保持することって出来ないのでしょうか?

例えば、スキンメッシュモデルの頂点を変形済みにして、ハンコのように何度も描画するとかです
もっと具体的に言えば、スキンメッシュモデルを
・Depth値書きだし用
・法線書き出し用
・DepthShadow用の遮蔽フラグ吐き出し用

といった感じで、同じポーズで何度も描きたい時に、頂点変換を毎回かけるのは勿体ない気がします。
もちろんそのためのマルチレンダリングがあるのですが、古いグラボだと対応していないとかもあるので…
974デフォルトの名無しさん:2011/05/18(水) 00:03:26.12
DirectXViewerで見ると、.xファイルが真っ黒に表示されて、テクスチャとかアルファ値が適用されません

テクスチは.bmpで.xと同じファイルに入っています
ファイルのパスはD:\CG\commonです。

Metasequoia(フリー)で作って.x形式で保存しています。
975デフォルトの名無しさん:2011/05/18(水) 00:31:46.76
DirectXViewerは糞だから
ちょっと古めのSDKに入ってるmeshviewでみれ
976デフォルトの名無しさん:2011/05/18(水) 00:41:05.77
あれ、早く直してくんないかな?
なんでバグってんの?
977デフォルトの名無しさん:2011/05/18(水) 01:04:13.89
質問です。
テクスチャをレンダリングターゲットに指定し、PixelShaderで出力色のa成分に値を入れて出力しているのですが、
いざそのテクスチャを使ってみるとa成分が常に255になってしまっています。

D3DRS_ALPHABLENDENABLEをFALSEにするなどしてみたのですが、うまくいきませんでした
a値をそのままテクスチャに出力するにはどうしたらよいのでしょうか?
D3DRS_ALPHABLENDENABLEをTRUEにして、
SrcBlend = ONE;
DestBkend = ZERO;
としてみても駄目でした

rgb成分は他用途で使っているため、余っているa成分に情報を吐きたいのですが・・・
(rgbには画面深度を入れ、a成分には太陽光があたっているかのフラグを入れたい)
978デフォルトの名無しさん:2011/05/18(水) 01:14:51.91
テクスチャのフォーマットがX8R8G8B8 になってるとか
979デフォルトの名無しさん:2011/05/18(水) 16:09:17.03
テクスチャのラッパークラス作るとき
Texture,Cube,Volumeクラスそれぞれサブクラスにする?
テクスチャインターフェースみたいな基底クラス作ってもあまり役に立たない。。。
980デフォルトの名無しさん:2011/05/18(水) 16:32:22.57
そりゃ使用用途が異なるんだから、サブクラス化しても仕方ないだろう
どんなラッパーにしたのか知らないが、
CComPtr<IDirect3DTextureX> で十分じゃないのか?
981デフォルトの名無しさん:2011/05/18(水) 17:27:26.10
それラッパじゃなくてスマポでは
と、言おうと思ったが、用はラッパにしようが無いからスマポでおk って話か
982デフォルトの名無しさん:2011/05/18(水) 17:33:47.87
>>982
そういうこと
強いて挙げれば、俺はRENDER_TARGETなテクスチャは自動でリストに登録されるようにしておいて、
ロスト時とリセット時に解放と再確保を自動でやるようにさせてるけど
983デフォルトの名無しさん:2011/05/18(水) 23:55:18.21
DirectX勉強しながら作った俺システムでもそうなってるな。
ちょっとほっとした。
984デフォルトの名無しさん:2011/05/19(木) 02:41:05.08
>>980
ありがとうございます。参考にします
985デフォルトの名無しさん:2011/05/19(木) 08:35:42.54
テクスチャとか頂点バッファってPresent()したら
即解放して良いことになってる?
なにかフラグとか確かめなくてよい?

Texture* pTexture = ...;
pDevice->Begin()
pDevice->End();
pDevice->Present(...);
pTexture->Release();
986デフォルトの名無しさん:2011/05/19(木) 09:02:39.15
じゃあそれ以外のタイミングでいつ解放しろと
987デフォルトの名無しさん:2011/05/19(木) 09:02:43.94
>>985
Presentどころか、Endの段階で消してOK
988985:2011/05/19(木) 10:42:36.99
頂点バッファをGPUがまだ使っているか非同期で調べるAPIがあるから
怪しい段階でRelease()していいのかなと思ったけど
そのへんはRelease()内で隠蔽されてるのかな。
989デフォルトの名無しさん:2011/05/20(金) 00:16:23.25
不用意に開放されない為に参照カウントがあるのさ
990デフォルトの名無しさん:2011/05/20(金) 06:43:21.36
文字列ってたぶんビルボードに書き込む人が多いと思いますが
表示サイズが小さい(16pxくらい)と形が崩れませんか?
991デフォルトの名無しさん:2011/05/20(金) 09:30:24.66
>>990
大きめに作っておいて、表示の時縮小するよー
自作クラスでは、テクスチャに用意する文字の大きさを指定する機能つけてある
992デフォルトの名無しさん:2011/05/20(金) 10:36:05.22
>>991
ID3DXFontを横で描画させると劣ってるのがはっきりわかるんですよ

ビットマップはこれで取得してます
GetGlyphOutline(hdc, code, GGO_GRAY8_BITMAP, &GM, 0, NULL, &Mat);
993デフォルトの名無しさん:2011/05/20(金) 12:30:23.55
>>990

(1)ポリゴンのXとYそれぞれの座標に-0.5fのオフセットが加わってない
(2)GetGlyphOutline()から作るテクスチャを大きくし過ぎてかつミップマップを作ってない
(3)テクスチャフィルタの設定がなしとかになってる

とかだと思う。
994デフォルトの名無しさん:2011/05/20(金) 13:41:38.81
ミップマップで多少改善しました。
でもあんまり綺麗なフォントじゃないね。

自作テキストフィールド作りたいけど難しい
995デフォルトの名無しさん:2011/05/20(金) 16:48:54.88
そいえばDirectX用のフォントに特化したライブラリって見かけない
誰か作ってくれないかな
996デフォルトの名無しさん:2011/05/20(金) 17:31:07.98
glfontなライブラリなら腐るほど見かけるがなwww
997デフォルトの名無しさん:2011/05/20(金) 17:46:38.71
単体でライブラリ化するほどか?
クロプラ開発の必要もないし。
DirectWriteもあるし。
998デフォルトの名無しさん:2011/05/20(金) 18:03:49.65
DirectWriteは少なくともXPのサポート終わるまでは使えないだろう
999デフォルトの名無しさん:2011/05/20(金) 18:56:54.63
1000 忍法帖【Lv=8,xxxP】 :2011/05/20(金) 19:35:06.72
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。