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


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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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


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

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

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

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

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



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

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


float
Tx_Left_X,
Tx_Right_X,
Tx_Up_Y,
Tx_Down_Y;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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



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

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

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

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


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



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


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

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

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

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

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



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


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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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


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

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

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

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

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

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

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

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

220 名前:202 [2011/11/28(月) 21:35:19.29 ]
ああ……



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

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

223 名前:202 mailto:sage [2011/11/28(月) 23:59:45.24 ]
>>222
バーカ

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

では次の方どうぞ。

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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



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

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


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

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

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

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


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

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

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


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

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



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

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







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<252KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef