くだすれDirectX(超初心者用) part.2

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。
DirectX使いが優しくコメントを返しますが、
お礼はDirectXの布教と初心者の救済をお願いします。

DirectX Home Page
http://www.microsoft.com/japan/windows/directx/

前スレ:http://pc11.2ch.net/test/read.cgi/tech/1132965206/
2デフォルトの名無しさん:2007/03/10(土) 23:07:47
2
3デフォルトの名無しさん:2007/03/10(土) 23:08:14
前スレの999に書き込んでしまったので、再度書き込みます。

DirectShowを用いたプログラムを組んでいるんですが、
この、エラーコードの一覧というのはあるんでしょうか。
4デフォルトの名無しさん:2007/03/11(日) 02:17:47
>>1
>>3 このエラーコードて、どの?
DirectShow全般ってことなら
ヘルプにある、「DirectShowに固有のHRESULT値」ってやつがそうじゃないの?
54:2007/03/11(日) 02:20:49
>>4
目次でいうと、
[DirectShow]-[DirectShowリファレンス]-[定数とGUID]の下の
[エラーコードと成功コード]ってとこに書いてある。
6デフォルトの名無しさん:2007/03/11(日) 13:11:16
>>4
>>5
ありがとうございました。ありました。
これで、ミスの原因がわかる と思います。
7デフォルトの名無しさん:2007/03/11(日) 14:28:59
独自フォーマットの画像データを読み込んでテクスチャとして登録したいのですがどうすればいいのでしょうか?
D3DXCreateTexture()で空のテクスチャを作れる所まで分かりました。
あとは、読み込んだデータをどのようにテクスチャとしてDirectXに登録するかなんですが、よろしく御願いします。
8デフォルトの名無しさん:2007/03/11(日) 14:39:01
テクスチャをLockRectでロックしてデータを書き込む
9デフォルトの名無しさん:2007/03/11(日) 15:01:36
ベタデータなら先頭にDDSヘッダつけてFromInMemory系で読み込む。
107:2007/03/11(日) 15:31:54
>>8-9
有り難うございます。
試してみます。
11デフォルトの名無しさん:2007/03/12(月) 01:34:08
質問です
direct x 診断ツールで
direct xの機能が全部利用できませんになってます
ラグナロク?オンラインやろうとしたんですけど FAQみたらdirect xの問題ぽかったので
調べてみましたがよくわかりません

ぐらふぃっくはIntel Graphics Media Accelerator 900(915G)です
お願いします
12デフォルトの名無しさん:2007/03/12(月) 01:41:21
915か・・・・・・
13デフォルトの名無しさん:2007/03/12(月) 01:54:45
>>11
スレ違いじゃない。
板違いでもない。

そう、気違いだ。
14デフォルトの名無しさん:2007/03/12(月) 02:12:34
問題ありなんですかね。。。
15デフォルトの名無しさん:2007/03/12(月) 02:25:31
まずオンボードのチップでゲームをやろうという考え方を改めるところからだ。
今は安く買えるんだから適当なのを買いなさいよ。
16デフォルトの名無しさん:2007/03/12(月) 02:43:45
【ネガティブ派遣根性チェック】

3つ以上、思い当たる点があればアナタの性格はひん曲がっており、ネガティブ負け組人生を歩んでいます。

□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなく自分のプライベートについても指示して欲しい
□奢ってくれる派遣先正社員は尊敬する
□自分の月額金額を知らないのは当然だ
□派遣先正社員より自分の生涯収入が低いのは当然だ
□派遣先に尻尾を振り、いつまでも派遣を続けることが大切だ
17デフォルトの名無しさん:2007/03/12(月) 07:09:45
普通にノートPCについてるもんだってラグナロクぐらいなら動くよ。
どんだけ古いPCでゲーム動かそうとしてるんだ?
最近売ってるPCならオンボードでも十分動く場合が多い。
18デフォルトの名無しさん:2007/03/12(月) 08:13:44
>>11
ム板にプログラムを組まない奴が何の用だ?
19デフォルトの名無しさん:2007/03/12(月) 15:34:39
>>11
マジレスすると、オンボードのグラフィック能力だと、いまどきのゲームはキツイ。
デスクトップなら、安めなグラフィックボードを増設しな。
ノートPCならあきらめる

あと、板違いな

ネトゲ質問
http://live25.2ch.net/mmoqa/
20デフォルトの名無しさん:2007/03/12(月) 22:24:37
>>19
そら昔のオンボードの場合で今のオンボードは大抵シェーダー2.0が動くびっくり性能。
21デフォルトの名無しさん:2007/03/12(月) 23:40:44
>>20
元の話題のはIntelの915だぞ。
22デフォルトの名無しさん:2007/03/13(火) 00:34:28
裏切派遣って知ってる?
元々は正社員だったのに取引先にフリーのほうが稼げるとか騙されて派遣やってるバカのことw

前の会社を裏切り、結局派遣先からも騙されてる。まさに裏切派遣人生
そもそも信頼されてるなら直接契約するか正社員にするはずだが、派遣会社経由って舐められ杉

自分でも騙され裏切れられてることは薄々わかってるから派遣問題の話が出るとウッキー!って逆ギレw
自分で決めて派遣やってる癖に逆ギレしちゃって人間として本当に恥ずかしい
23デフォルトの名無しさん:2007/03/13(火) 01:07:29
>>21
915GはPixelShader2.0に対応しているが?
24デフォルトの名無しさん:2007/03/13(火) 02:00:46
>>23
915Gはピクセルシェーダーは2.0を搭載しているが
頂点シェーダーに関してはまったく搭載してないからな・・・

ただでさえCPUはボトルネックになりやすいのに
頂点処理をCPUエミュレートだけでやれってのが無茶な話だよ。
25前スレ997:2007/03/13(火) 11:01:03
>>前スレ998
指示に従って設定したら、その問題は解決しました。
ありがとうございます。

しかしながら、付録CDのソースをそのままビルドしてもまだエラーが出ます。

'char [〜]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

という物なのですが・・・・新しい機能? という事はこの本が古いという事なのか・・・
DirectX9とVC++.NET対応となっているのに・・・・
static charまたはconst char型の変数を変換するところでいくつもこのエラーが出ています。

もちろんヘルプも色々探しましたが、始めたばかりなのでどこも意味不明です。。
他の本でDirectXを学べばそのうち分かるのかもしれませんが、まずは真似事でも
プログラムを組んでみたいので、このエラーを解決する方法があれば
ご教授くださいませ。
26デフォルトの名無しさん:2007/03/13(火) 11:05:15
古いよ。君が使ってるのはVC++.NETじゃなくてVC++2005だからね。
プロジェクトのプロパティを開いて構成プロパティ→全般→文字セットで
マルチ バイト文字セットを使用するに変更。
27前スレ997:2007/03/13(火) 13:43:10
>>26
見事に解決いたしました! ありがとうございます。
最後に、もう一つエラーが残ってまして・・・・

ID3DXSprite::Draw' : 関数に 7 個の引数を指定できません。

という物なのですが、MSDNで見ても引数七つあったんですが・・・
これも解決策があればお教えください。

あと、警告で

ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。
データの損失を防ぐために、ファイルを Unicode 形式で保存してください。

とあったので、メモ帳からソースファイルを開いてUnicode形式で保存したのですが、
何度やってもこの警告が出てしまいます。
警告なのでこれは無視してもかまわないのでしょうか?
28デフォルトの名無しさん:2007/03/13(火) 14:58:12
>>27
なんだっけなー。 d3d9types.hの1800行目付近にある
コメント消せばおkだとおもたけど細かいトコ忘れたわ。
「d3d9types.h FOUR_CC」とかでぐぐってみたらでてくるんじゃね?
29前スレ997:2007/03/13(火) 17:11:24
>>28
それで検索したら、同じような事例が見つかり、警告はなくなりました!
そして、ID3DXSprite::Drawの引数の事ですが、調べていったところ、
どうやらMSDNの内容が日本語と英語ので異なっていたようで、
英語の方のサイトに行って、引数を正しい五つに直したところまで行ったのですが、
今度は

'ID3DXSprite::Draw' : 3 番目の引数を 'D3DXVECTOR2 *__w64 ' から 'const D3DXVECTOR3 *' に変換できません。(新しい機能 ; ヘルプを参照)
指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

というエラーが出ました。。さっきと同じようなエラーなのですが、
文字セットは確かにマルチバイト文字になっているし・・・
これさえ解決すればビルドできそうなのですが。。
30デフォルトの名無しさん:2007/03/13(火) 17:27:53
Sprite関係はしょっちゅう引数や仕様が変わるうえに、日本語MSDNが
なかなか更新されないので、英語MSDNを見るのが定説なんだっけ。
もしくは使わない。

>>29
DirectXを勉強する前に学ぶべき事があるようだ。(型関係)
31デフォルトの名無しさん:2007/03/13(火) 22:32:47
>>29
そのエラーが理解できないって相当まずいぞ・・・
32前スレ997:2007/03/14(水) 00:14:37
すいません、とりあえず猿真似から覚えていこうと思っていたのですが、
この本は自分にはまだ早いくせに時代的には古いという物だったようです。
正直、やったのはC++の入門だけで、DirectXを勉強し始めてもいないので、
出直してきます。
33デフォルトの名無しさん:2007/03/14(水) 01:28:03
C++の入門
34デフォルトの名無しさん:2007/03/14(水) 09:24:40
生でDirectXSDK使うのと
イルリッヒとかseleneとか噛ますのとどっちが楽?
35デフォルトの名無しさん:2007/03/14(水) 10:06:35
仕事とかで生DirectXを使わざるを得ない状況でないなら
ライブラリに手を出すほうが楽だろ思うけど、
そのへんは使うライブラリ次第かもな。
36デフォルトの名無しさん:2007/03/15(木) 06:24:19
派遣プログラマ、高卒、身長163cmです
この先どうしたらいいですか?
37デフォルトの名無しさん:2007/03/15(木) 11:48:58
>>36
身長を伸ばす
38デフォルトの名無しさん:2007/03/15(木) 12:07:58
1hyde以上あるから問題ない。
39デフォルトの名無しさん:2007/03/15(木) 18:01:16
回転行列をクオータニオンに変換するやり方教えて
40デフォルトの名無しさん:2007/03/16(金) 01:24:57
ネットにあるDirectXのサンプル実行しても、エラーばっかで死ぬ・・・
構文エラーとか、そういうのがずらーーーーーーーーっと。
2007年2月のSDKをインストールしただけなんだが、何かやり忘れてることある?
41デフォルトの名無しさん:2007/03/16(金) 02:16:28
根本的にry
42デフォルトの名無しさん:2007/03/16(金) 02:51:45
根本的にって何だよ
あと、C++のコンパイラはVC++ EE使ってます
43デフォルトの名無しさん:2007/03/16(金) 02:56:14
やり忘れ:ググレカス
44デフォルトの名無しさん:2007/03/16(金) 03:19:45
一応DirectXの入門サイトで、「やれ」って書いてあるのはやってみたはずなんですが、やり忘れがあるみたい・・・
45デフォルトの名無しさん:2007/03/16(金) 03:50:19
まずは質問の仕方から勉強だろうな。

最近の若い衆は質問の仕方が下手で困る。
いきなり何かを指さして「スミマセンこれわからないんですけど?」
と言われたって、こっちは何がわからないのかわからないんですけど^^;

すまん愚痴ったorz
46デフォルトの名無しさん:2007/03/16(金) 03:50:21
今までプログラミングした事は?
いきなりDirectXやろうとしてるようみえるんだが
47デフォルトの名無しさん:2007/03/16(金) 03:57:31
・DirectXでつまづいているのか?
・普通のプログラムのコンパイルはできるのか?
・どんなエラーがでるの?
48デフォルトの名無しさん:2007/03/16(金) 08:57:26
補足すると。
・そのサンプルはいつ作られたものなのか。

DirectX9.0は無駄に長い歴史があるので
マイナーバージョンアップでも仕様変更が結構入っていて
時期によってはサッパリ違うこともある。
49デフォルトの名無しさん:2007/03/16(金) 17:24:06
DirectX9で
ウィンドウモードで描画していて

ウィンドウサイズ変更すると
描画が引き伸ばされるんですが
回避するにはどうしたらいいですか?
50デフォルトの名無しさん:2007/03/16(金) 17:27:46
ウィンドウサイズ変更できないようにしろよチンカス
51デフォルトの名無しさん:2007/03/16(金) 17:32:28
>>50
ツールの描画として使ってるからウィンドウサイズ変えまくり前提なんだよチンカス

>>49
WM_SIZEでPARAMのWidthとHeightにサイズを入れて
device->Reset
52デフォルトの名無しさん:2007/03/16(金) 17:36:45
なにこれ?自演?ワロスwwwwww
53デフォルトの名無しさん:2007/03/16(金) 17:38:39
ツールねぇ・・・・
54デフォルトの名無しさん:2007/03/16(金) 17:41:29
>>51
おまえは誰なんだよ
55デフォルトの名無しさん:2007/03/16(金) 18:21:39
あー、でもそういうツール作ったときって
ウィンドウの縦横比も中身の絵の縦横比に合わせて変化させるみたいな仕様にしたら地獄みたなぁ
AdjustWindowRectだっけ?
なんか中身にあわせてウィンドウサイズを確定する仕様にするとすげー作りにくい
なんでウィンドウのサイズは自由に変更できるようにして中身の絵の縦横比の比率は
デフォルトを維持したままウィンドウと中身の絵とで隙間ができた部分は
別の色で埋めるようにしたほうが綺麗にいくかも。
まあ、仕様にまで踏み込むので仕様を決めた担当者と話しあう必要が出てくるけど

なにいってるかわからん?
56デフォルトの名無しさん:2007/03/16(金) 18:54:12
言いたいことは分かるが、そんなの難しくないし。
57デフォルトの名無しさん:2007/03/16(金) 19:58:08
>>56
難しいよー。
まず、どのメッセージ拾ってサイズ変更するのが適切か?ってのを見定めなきゃならん
んで多分変更後のウィンドウのサイズが流れてくるからそこから中身の絵のサイズを算出して
それに対して今度はウィンドウのサイズを調節してってやると結構面倒だと思われ

ウィンドウのサイズ取得→クライアントのサイズを算出→中身の絵のサイズを合わせる
→中身に合わせてクライアントのサイズを算出→クライアントからウィンドウのサイズを決定

って順にやらなきゃいけないから
中身の絵の比率を維持したままウィンドウのサイズを決定するようにすると
ちょっと面倒な計算になるよ。
固定幅の枠もあるから、単純に比率ってわけにもいかんし、メッセージごとよくわからんし。
俺はこの計算がなんかうまくいかんかった。
完璧にサポートしようとするとすげーきつい

WM_SIZINGとかWM_SIZEとかWM_EXITSIZEMOVEとか
なんかメッセージごと処理の仕方違うし結構苦戦した覚えがある。
58デフォルトの名無しさん:2007/03/16(金) 21:10:03
いや普通に出来るだろ・・・
ツール作る時にウィンドウサイズ変えるたびReset()呼び出すなんてアホの子がすることだ。
59デフォルトの名無しさん:2007/03/16(金) 21:37:11
>>58
え?何の話してるの?
もしかして>>55,57の話しじゃない?
60デフォルトの名無しさん:2007/03/16(金) 22:05:14
>>51のレスについてだ。

4分割画面の可変サイズウィンドウのモデルビューアーを
作った時は画面サイズや比率に関しては全く苦労しなかったぞ。

中身の絵の比率を維持したままウィンドウサイズを決定するのではなく、
変更されたウィンドウサイズに合わせて中身の絵が同じ比率になるようにすればよい。
61デフォルトの名無しさん:2007/03/16(金) 22:17:00
バックバッファをVGAとか固定解像度で持ってやって、
転送時にstretchbltなり使ってやって描画領域にあわせてやるというやり方か
62デフォルトの名無しさん:2007/03/16(金) 22:19:55
ごめん忘れて
63デフォルトの名無しさん:2007/03/17(土) 02:59:58
俺が昔作ったときはWM_SIZEをフックしてBackBufferWidthとかを書き換えてたかなぁ。
そうしないとピクセルと1:1にならんから汚く見える
64デフォルトの名無しさん:2007/03/17(土) 03:29:16
メインスレッドとは別のスレッドからCreateDeviceをやろうとしているんだけど
ウインドウモードは成功、だがフルスクリーンは失敗
(CreateDeviceから永久に戻ってこない)

メインスレッドでやれば両方成功するのは確認した
ひょっとして別スレッドってのはタブーなのか???
65デフォルトの名無しさん:2007/03/17(土) 08:41:41
>>63
バッファの大きさに関係なくSetViewportで1:1にすりゃいいだけじゃん。
それじゃ4分割ウィンドウで4つのウィンドウの大きさが別々の時とか対応できないだろ。
66デフォルトの名無しさん:2007/03/17(土) 08:47:25
普通にスワップチェインで好きなサイズを割り当てればいいだけ。
67デフォルトの名無しさん:2007/03/17(土) 09:14:30
>>64
CreateとResetはウィンドウ生成と同じスレッドの必要がある。
リファレンスに書かれていた希ガス。
68デフォルトの名無しさん:2007/03/17(土) 11:22:26
メタセコの場合、透視図と三面図では、ウィンドウサイズに対する
可視範囲の決め方が違うわね。どうでもいいけど。
69デフォルトの名無しさん:2007/03/17(土) 11:31:51
>>64
CreateDeviceのところにもResetのところにも、フォーカスウィンドウを作成したスレッドとは
別スレッドのからは駄目ってしっかり書いてあるだろう。ついでにReleaseも駄目。
70デフォルトの名無しさん:2007/03/17(土) 12:25:42
デバイスはウィンドウスレッドと一緒にして
他のスレッドからは完全に隔離するようにしないとね
でも同人ソフトとかで描画が別スレッドになってそうなソフトって見たことない
71デフォルトの名無しさん:2007/03/17(土) 13:18:34
思考系のゲーム以外でスレッド分けを必要だと感じたことがない。
72デフォルトの名無しさん:2007/03/17(土) 13:21:56
ゲーム以外では割と普通では?
73デフォルトの名無しさん:2007/03/17(土) 13:46:00
D3Dの場合、対象のGPUが仮想化されてないんで
スレッド分けの意義は薄い。
次期GPUで仮想化が実現されたら、スレッド化のメリットは多少ありそう。
今までみたいにステートの保存、復帰を考えなくてよくなるみたいな。
74デフォルトの名無しさん:2007/03/17(土) 13:58:01
もともと今のGPUはバッファにキューつっこんでから非同期に処理されるしな。
最悪2フレームくらい描画が遅延するんだっけ?
75デフォルトの名無しさん:2007/03/17(土) 17:09:21
ファイルロード系をスレッドにしたりせんの?
76デフォルトの名無しさん:2007/03/17(土) 19:45:29
Resetじゃなく
Presentで範囲指定すればよかった。
77デフォルトの名無しさん:2007/03/17(土) 19:58:36
xファイルから読み込んだメッシュのレンダリングされている色を調節したいのですが、
詳しく説明されている本かサイトは無いでしょうか?
78デフォルトの名無しさん:2007/03/18(日) 01:21:08
>>75
ファイルロードとストリームサウンドは確かに別スレッドにするな。
でもウィンドウスレッドと描画スレッドはネットワークゲームでない限り分けないな。
79デフォルトの名無しさん:2007/03/18(日) 02:38:59
//ray pick test
VOID RayIntersect()
{
DWORD m_dwNumIntersections; // Number of faces intersected

// Rayの設定
D3DXVECTOR3 vecStart,vecEnd,vecDirection;

vecStart=Thing[1].vecPosition;
vecEnd=D3DXVECTOR3(0,-1.0f,0);
vecDirection=vecEnd-vecStart;

BOOL bHit;
DWORD dwFace;
FLOAT fBary1, fBary2, fDist;

D3DXIntersect(Thing[2].pMesh, &vecStart, &vecDirection, &bHit, &dwFace, &fBary1, &fBary2, &fDist, NULL, NULL);

if( bHit ) {
m_dwNumIntersections = 1;
MessageBox(0,"交差してます。",NULL,MB_OK);

} else {
m_dwNumIntersections = 0;
}
}
8079:2007/03/18(日) 02:41:29
地面(Thing[2])と当り判定をするためにD3DXIntersectを使っているのですが、
bHitにTRUEが帰ってきません。
何か見落としているところはあるでしょうか?
81デフォルトの名無しさん:2007/03/18(日) 07:34:35
vecDirectionがおかしいと思うが。
82デフォルトの名無しさん:2007/03/18(日) 15:30:46
>>36-37
今すぐ派遣をやめて履歴書を書け!
そして就職しろ
身長や学歴は今更変えられないが、職歴は努力でなんとでもなる
派遣はまったく職歴にならんぞ
83デフォルトの名無しさん:2007/03/18(日) 15:38:20
学歴も努力でなんとでもなるけど・・
84デフォルトの名無しさん:2007/03/18(日) 17:53:31
学歴は今更どうにもならんだろ・・・
今から医学部受験しろとかいうのかね
85デフォルトの名無しさん:2007/03/18(日) 18:04:40
平成18年度の医学部入学者のうち1.3%は25歳以上の社会人経験者(除学士編入)
86デフォルトの名無しさん:2007/03/18(日) 20:12:58
25歳前後で医学部に入学すればなんとかなったといえるだろ
だけど語学留学したりいい歳こいてバカ大学にいったりしたらもう死んだも同然

派遣を辞めて普通に就職するのが人生リストラには一番よい
87デフォルトの名無しさん:2007/03/18(日) 20:56:48
適切な板とスレを選択できる程度の知能を持ち合わせる方が先決だろう。
まあ先天的に頭が悪いから無理だろうけど。
88デフォルトの名無しさん:2007/03/18(日) 22:22:35
超初心者なんですが、↓の様にDirectDrawの初期設定などを済ませば
ttp://www.uploda.org/uporg737128.zip.html
もう処理速度が(Windowモードでも)高速化した状態なんですか?
89デフォルトの名無しさん:2007/03/18(日) 23:09:07
>>88
受信PASSが不明な件

何か全然解らんが、DDrawを初期化したからと言って、
別にGDIが高速化される訳じゃないぞ。
90デフォルトの名無しさん:2007/03/18(日) 23:23:53
>>89
pはsageです。
ではハードに接続する固有のWinAPIがあるわけですね?
91デフォルトの名無しさん:2007/03/18(日) 23:41:57
ハードに接続する固有のWinAPIとか処理速度が(Windowモードでも)高速化した状態とか意味不明だから。
DirectDrawを魔法か何かと勘違いしていないか?
用意されているインタフェイスを適切に使用しない限り高速化もへったくれもない。
92デフォルトの名無しさん:2007/03/18(日) 23:44:33
まさにくずたれ
9379:2007/03/18(日) 23:59:33
>>81
レスありがとうございます。

vecStart=Thing[1].vecPosition;
vecEnd=D3DXVECTOR3(0,-1.0f,0);
vecDirection=vecEnd-vecStart;
なんですが、y軸方向だけ当り判定をしようとしています。
Thing[1].vecPotionから(0,-1.0f,0)の方向へレイをとばしているつもりなのですが、
これでは不適切なのでしょうか?
94デフォルトの名無しさん:2007/03/19(月) 00:22:21
vecStart=Thing[1].vecPosition;
vecDirection=D3DXVECTOR3(0,-1.0f,0);
95デフォルトの名無しさん:2007/03/19(月) 00:58:13
>>93
それはvecPositionから(0,-1,0)の座標に向かうベクトル。
vecPositionが(-1,-1,0)だったら、X軸と平行な方向(ようするに真横)に向かうベクトル。
96デフォルトの名無しさん:2007/03/19(月) 04:50:46
質問させてください。
2種類のα値を使って抜き色と半透明を同時に実現したいのですが、

SetRenderStateでαテストをONにして不要部分を抜く(ddsテクスチャのα値を使う)
SetTextureStageStateで、頂点のα値(128)を使うようにする
SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA) で半透明化する

の方法だと、抜き色されて不透明か、半透明だけか、しか出来ません。
同時に実現するにはどうやればよいでしょうか?
97デフォルトの名無しさん:2007/03/19(月) 07:17:19
>>96
テクスチャステージで頂点αとテクスチャαを乗算するようにする。
SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE)
SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE)
SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE)
9890:2007/03/19(月) 10:08:14
>>91
DirectDrawに詳しいサイトを教えてください。
お願いします。神様
99デフォルトの名無しさん:2007/03/19(月) 11:26:33
>>98
ちょっと道間違えて無い?
少なくとももう確かな資料をもってる人間からいって少ないよ
ヘルプも配布されてないだろうし
書籍も昔のみつけてくるしかないし
俺もDirectDraw触ってたけどさすがにもうほとんど覚えてないし使ってない
みんな似たような状態だと思われ
RGBのフォーマットを色々対応するだけで嫌になるよ
10098:2007/03/19(月) 11:46:49
>>99
3Dが主流になってきてるとはいえ、
趣味で2Dのゲーム作りたいんですよ。
ノートじゃスペックも足りないし。
どうすりゃいいんだorz
101デフォルトの名無しさん:2007/03/19(月) 12:03:35
そこらに転がってるライブラリみて覚えればいいジャン
102デフォルトの名無しさん:2007/03/19(月) 12:21:47
>>100
もしかしてDirectGraphicsが3D専用だと思っている?
103デフォルトの名無しさん:2007/03/19(月) 12:55:45
>>98

struct TLVERTEX_UV
{
D3DXVECTOR3 pos;
float rhw;
D3DCOLOR color;
D3DXVECTOR2 uv;
};
#define TLVERTEX_UV_FVF (D3DFVF_XYZRHW| D3DFVF_DIFFUSE | D3DFVF_TEX1)
104デフォルトの名無しさん:2007/03/19(月) 12:56:27
GDI使えばいいじゃない
105デフォルトの名無しさん:2007/03/19(月) 13:27:55
>>94-95
あああ、ほんと根本的な計算が間違ってましたね…
ありがとうございました。
106デフォルトの名無しさん:2007/03/19(月) 13:45:29
>>97
出来ました!ありがとうございます。
どうやらテクスチャステージを勘違いしていたようです。
107デフォルトの名無しさん:2007/03/19(月) 15:51:27
(モデルの上に2Dで名前表示とかする為に)
3D座標を描画される2D座標に変換するにはどうすればいいですか?

108デフォルトの名無しさん:2007/03/19(月) 16:24:56
D3DXVec3Projectでとりあえずいけたぽ
10998:2007/03/19(月) 17:52:58
>>101
はい。。。
>>102
同じなんですか?
>>103
構造体?
11098:2007/03/19(月) 18:51:26
あ、スルーしてくだちい。
111デフォルトの名無しさん:2007/03/19(月) 19:29:21
>>100
とりあえず
動作させる予定のPCのスペックと
これは諦める予定のPCのスペックを決めたらどうなの?
PC−9800とかPC98−NXとかサポートしてもしょうがないっしょw
112デフォルトの名無しさん:2007/03/19(月) 22:31:12
Windows98とかWindowsMEのサポートも無意味だな。
どっかの調査でWindows使用者の8割くらいはXPで残りは2Kって話だった希ガス。
そもそも最近はグラボメーカーも2000/XP/VISTA用のドライバしか作ってないし。

今3Dが処理(ラスタライズすら)できないビデオカードって
一般人が入手するのは不可能な気がするんだが。
11379:2007/03/20(火) 00:21:29
>>105で解決したと思っていたのですが、できませんでした…

vecStart.x = Thing[1].vecPosition.x;
vecStart.y = Thing[1].vecPosition.y;
vecStart.z = Thing[1].vecPosition.z;

vecDirection.x = Thing[1].vecPosition.x;
vecDirection.y = Thing[1].vecPosition.y-1.0f;
vecDirection.z = Thing[1].vecPosition.z;

上のように指定しましたが、やはり当りは帰ってきていません。
上で本当に、Startからy軸方向、負の向きにレイは伸びているのでしょうか?
114デフォルトの名無しさん:2007/03/20(火) 00:27:20
全然違うだろ・・・
115デフォルトの名無しさん:2007/03/20(火) 11:30:30
ワロタ
116デフォルトの名無しさん:2007/03/20(火) 11:37:14
DXなんてver6.5〜7までしか使ったことないんだが。
今はver9だっけ?
3D描画がひたすら簡単になって、
2D描画がめんどくさくなったって話をチラっと聞いたのだが、
そこんとこ軽く教えてくれ。

以前は3DをLightWaveで作って、
ファイルの拡張子をxに書き換えて、
xファイルを読み込むヘッダーを自作して、
2Dと同じようにビデオメモリに貼り付ける技法以外で3D描画は難しかったと思うたが。
117デフォルトの名無しさん:2007/03/20(火) 11:46:11
>>116
3D描画も2D描画も非常に簡単にできる。
DirectDraw至上主義な人には理解できないかもしれないが・・・。

今はD3DXの関数1つでXファイルの読み込みができる。
118デフォルトの名無しさん:2007/03/20(火) 11:58:59
3Dと2Dで扱い方が統一されたのはデカイ
119デフォルトの名無しさん:2007/03/20(火) 12:41:46
>>117
へぇ、結局Xファイルを使うこと自体は変わらんのか。
D3DX?
なんか便利そうだなぁ。
新バージョンに手ぇつけてみようかな。
勉強してみる。ありがとう。

あ、もう一つ聞いてもいい?
C++6.0でしかDXは扱ったことないのだが、
VC6.0やらVB6.0やらVB.NETやらでも扱える?
120デフォルトの名無しさん:2007/03/20(火) 16:48:14
最新版のSDKはVisualStudio.NET前提なんじゃよ・・・
今はVisualC++.NET2005の無料版もあるしVC6とか記憶から消し去ったほうがいい。

あとは別にXファイルにこだわる必要はない。
俺は自前のフォーマットに変換して使ってる。
121デフォルトの名無しさん:2007/03/20(火) 17:10:13
>>120
そうなのか…
じゃ、職場のマシンでこっそり作るのは無理かw
Xファイルでなくてもいいのはちょっと嬉しいかも。

>VisualC++.NET2005の無料版
これ自宅マシンに入れて使ってみることにするよ。
ありがとう。
122デフォルトの名無しさん:2007/03/20(火) 17:33:31
>>121
いやいやいや・・・Xファイル使わないでもモデル表示できるのは
初期のDirectXからずっとそうだろw
たんに自分で頂点データ、インデックスデータ、マテリアル、アニメーションを
全部フォーマット決めて管理・描画するようにすればいいだけじゃんw


無料版はWindowsのSDKが入ってないからPlatformSDKも一緒に入れれ。
123デフォルトの名無しさん:2007/03/20(火) 17:36:27
VC6持っていれば、VisualStudio.NET Professional 2003に
4万弱でアップグレードできたんだけどな。
とっくにキャンペーン終わったからもう無理だが。
124デフォルトの名無しさん:2007/03/20(火) 19:06:16
3Dの概念がDX上に生まれたのは7からじゃなかったか?
125デフォルトの名無しさん:2007/03/20(火) 19:52:40
3からだ
126デフォルトの名無しさん:2007/03/21(水) 13:57:05
12779:2007/03/21(水) 15:24:35
>>126
レイの始点を原点とするんですか!
>>79>>94のとおりにしましたが、TRUEは返ってきませんでしたorz
128デフォルトの名無しさん:2007/03/21(水) 17:06:26
それはもはやデータが間違ってるかコリジョンの計算が間違ってるとしか思えん
129デフォルトの名無しさん:2007/03/21(水) 17:28:36
いや、たんにvecPositionがメッシュの上にないだけだと思うが。
130デフォルトの名無しさん:2007/03/21(水) 17:34:19
確かに位置座標と方向ベクトルの違いが
よくわかってないっぽいから
もっと別のところが間違っている可能性は大いにあるな
131デフォルトの名無しさん:2007/03/21(水) 22:11:58
回転とかするときって何か行列の変換いらなかったっけ?
132デフォルトの名無しさん:2007/03/21(水) 22:19:05
当然レイを逆行列で変換する必要はあるな。
133デフォルトの名無しさん:2007/03/21(水) 23:11:57
D3DXMatrixInverse()。
134デフォルトの名無しさん:2007/03/25(日) 10:38:42
ドット絵に背景3Dの擬似2Dやりたいんだけど3D部分だけ、もしくは特定シーンだけ解像度落として描画とかできます?
135デフォルトの名無しさん:2007/03/25(日) 12:09:02
できますよ。
136デフォルトの名無しさん:2007/03/26(月) 00:06:25
フルスクリーンで解像度かえると
画面パチン言うから
一番大きい解像度で作っておいて
小さい解像度の時小さく書いて拡大すれば
137デフォルトの名無しさん:2007/03/26(月) 01:48:58
3Dだとパスなんで輪郭線綺麗なまま拡大されるのかと思ったらそうじゃない方法もあるのかな
返答ありがとうございました
138デフォルトの名無しさん:2007/03/26(月) 12:13:32
>画面パチン言うから
そのアナログ的な言い回しになぜだか和んだ
13979:2007/03/26(月) 23:56:22
VOID RayIntersect()
{
DWORD m_dwNumIntersections;
D3DXVECTOR3 vecStart,vecEnd,vecDirection;

vecStart=Thing[1].vecPosition;
vecEnd=D3DXVECTOR3(0,-1,0);
vecEnd+=vecStart;

D3DXMATRIX matWorld;
       D3DXMatrixTranslation(&matWorld,Thing[2].vecPosition.x,Thing[2].vecPosition.y,Thing[2].vecPosition.z);
D3DXMatrixInverse(&matWorld,NULL,&matWorld);
D3DXVec3TransformCoord(&vecStart,&vecStart,&matWorld);
D3DXVec3TransformCoord(&vecEnd,&vecEnd,&matWorld);

vecDirection=vecEnd-vecStart;

BOOL bHit=FALSE;
      DWORD dwFace;
     FLOAT fBary1, fBary2, fDist;

      D3DXIntersect(Thing[2].pMesh, &vecStart, &vecDirection, &bHit, &dwFace, &fBary1, &fBary2, &fDist, NULL, NULL);

    if(bHit) {
  m_dwNumIntersections = 1;
MessageBox(0,"交差してます。",NULL,MB_OK);
}

else {
  m_dwNumIntersections = 0;
       }
}
14079:2007/03/27(火) 00:01:36
色々なD3DXIntersectを使ったコードを見ながら書いてみたのですが、やはりがTRUEが帰ってこないです。
D3DXIntersectの使い方はこれであっているでしょうか?
141デフォルトの名無しさん:2007/03/27(火) 19:06:24
>>140
お前のアホさは黄金聖闘士の域にまで達しているようだなっ!
142デフォルトの名無しさん:2007/03/27(火) 21:52:47
確かにひどいなw
素直にD3DXMesh使ってD3DX系の関数でコリジョンとりなよ。
リファレンスの説明の日本語もろくに読んでないんだろ
143デフォルトの名無しさん:2007/03/28(水) 03:32:03
アナザーディメンション!

バグの迷宮に迷い込んでしまった
144デフォルトの名無しさん:2007/03/28(水) 09:33:26
>>140
一応まじめに聞いてやる。
Thing[]ってのがなにかわからん。
145140:2007/03/28(水) 14:22:42
ありがとうございます・・・;
リファレンスは日本語版も出ているのでしょうか。。
Thing[i]はこれです。

struct THING
{
LPD3DXMESH pMesh;
LPD3DXFRAME pFrameRoot;
      LPD3DXANIMATIONCONTROLLER pAnimController;
D3DMATERIAL9* pMeshMaterials;
LPDIRECT3DTEXTURE9* pMeshTextures;
DWORD dwNumMaterials;
D3DXVECTOR3 vecPosition;
D3DXMATRIX matRotation;
D3DXMATRIX matWorld;
FLOAT fHeading;
};
146デフォルトの名無しさん:2007/03/28(水) 16:21:18
2Dのゲーム作ってるのですが
背景を表示しようと思って400×400ぐらいのbmpファイルを
表示しようとしましたが
どうしてもCPU使用率が100%になりFPSが4ぐらいで動作が遅くなってしまいます
jpgに変えても同じでした
画像ファイルが大きすぎるのでしょうか?
それとも他に方法はありますか?
くだらない質問ですいませんorz
147デフォルトの名無しさん:2007/03/28(水) 16:27:04
それは素材以外の問題
ソースみせろ
148デフォルトの名無しさん:2007/03/28(水) 16:38:45
void CBACKShot::Init(void)
{ // 画像ファイルを読み込む
m_Texture.Read(g_pD3DDevice, "DataForWork/back.jpg");
// 初期位置をセット
m_vec2.x = 0;
m_vec2.y = 0;
// テクスチャの範囲を指定する
m_Rect.left = 0;
m_Rect.top = 0;
m_Rect.right = 450;
m_Rect.bottom = 450;
}
void CJikiShot::Move(void)
{     m_Texture.Read(g_pD3DDevice, "DataForWork/back.jpg");
D3DXMatrixTransformation2D(&m_Matrix, NULL, 0, NULL, NULL, 0, &m_vec2);
}
// 描画
// 引数、戻値なし。
void CJikiShot::Draw(void)
{
// 座標変換してから、スプライト描画
g_pSprite->SetTransform(&m_Matrix);
g_pSprite->Draw(m_Texture, &m_Rect, NULL, NULL, 0xffffffff);
}
すいません今はソースがうpできない状態なので
思い出して書きました
これを無限ループさせてます
まだ初めて3日なのでアホなミスしてるかもしれん
149デフォルトの名無しさん:2007/03/28(水) 16:39:51
すいません 下の二つのクラス名はCBACKのミスです
連投スマソ
150デフォルトの名無しさん:2007/03/28(水) 16:52:23
void CJikiShot::Move(void)
{     m_Texture.Read(g_pD3DDevice, "DataForWork/back.jpg");
D3DXMatrixTransformation2D(&m_Matrix, NULL, 0, NULL, NULL, 0, &m_vec2);
}

毎回テクスチャロードしてる予感
151デフォルトの名無しさん:2007/03/28(水) 16:57:38
>>150
Initで読み込めばいいだけだったのですねorz
ありがとうございました
家に帰り次第試してみます

もしかしてMoveクラスそのものもいらないのでしょうか
152デフォルトの名無しさん:2007/03/28(水) 17:04:26
何を元に作ってるのかわからんが
MoveとDrawは、分けといた方がいい

フレームスキップや3Dの半透明考慮したZソートに使える
153デフォルトの名無しさん:2007/03/28(水) 17:11:14
>>152
単純な質問に答えていただき
ありがとうございました
そうしてみます
154デフォルトの名無しさん:2007/03/28(水) 20:04:25
>>139
D3DXIntersectのドキュメントを読む限り
そのテストコードで間違いはないようだ。
しかし、無駄なコードが半分以上、
本質がぶれるので、テストをしたいなら
もっと、シンプルにすべき。
前半の変換は全部いらん。

以下のコードはHITするか?
しないならば、次の理由によると思われる。
・Thing[2]のメッシュがレイに当たらない形状をしている

VOID RayIntersect()
{
DWORD m_dwNumIntersections;

D3DVCTOR3 vecDirection = Thing[2].vecPositon - Thing[1].vecPositon;

BOOL bHit=FALSE;
DWORD dwFace;
FLOAT fBary1, fBary2, fDist;

D3DXIntersect(Thing[2].pMesh, &Thing[1].vecPositon, &vecDirection, &bHit, &dwFace, &fBary1, &fBary2, &fDist, NULL, NULL);

if(bHit) {
m_dwNumIntersections = 1;
MessageBox(0,"交差してます。",NULL,MB_OK);
}
else {
m_dwNumIntersections = 0;
}
}
155デフォルトの名無しさん:2007/03/29(木) 00:22:22
>>154
ありがとうございます。
そのまま判定してみましたが、HITしませんでした。
メッシュはメタセコイヤで作った正方形の平面をxファイルにしたものです。
ネットでD3DXIntersectの頁を見ましたが、他のページで見たことしか書いてありませんでした。
156デフォルトの名無しさん:2007/03/29(木) 00:26:13
Rayが短いとかそういうくだらない事じゃないよな
157デフォルトの名無しさん:2007/03/29(木) 00:50:24
else{}内に、Thing[1]のy座標を0.001ずつ下げるように記述して、
当たるまで下げてみようとしましたが、
結局HITは帰ってこないままです。
158デフォルトの名無しさん:2007/03/29(木) 01:19:24
>>157
明らかにMeshが怪しい。
・XFileではなく、D3DXCreateBox等でMeshを作るとどうなるか

次点として
・D3DXIntersectはエラーを返していないか、一応確認するべし
・他にD3Dはエラーを返していないか、デバッグモードで確認する
159デフォルトの名無しさん:2007/03/29(木) 19:57:44
d3dx9_29.dll とかがいらない
DirectXSDKのバージョンっていつごろでしたっけ?
160デフォルトの名無しさん:2007/03/29(木) 20:32:04
October 2004かな?
161デフォルトの名無しさん:2007/03/29(木) 21:39:00
脳味噌ぶら〜んにそこらへんまとまってたと思う。
162デフォルトの名無しさん:2007/03/30(金) 05:35:26
webインストーラが全部入れてくれるから気にしないな
163デフォルトの名無しさん:2007/03/31(土) 18:29:37
ほう。最近はそうなのか
164140:2007/04/01(日) 00:27:11
>>158
ありがとうございます。
言われたとおり、D3DXCreateBoxなどでメッシュを作ってみるとTRUEが帰ってきました。
xファイルからロードしたものでは、帰ってくる気配がありませんが、もう少し粘って見ます。
165デフォルトの名無しさん:2007/04/01(日) 00:37:46
まずはレイを可視化してみなよ。
視覚的に衝突しているかどうか見れないとわからんだろ。
166デフォルトの名無しさん:2007/04/01(日) 00:48:57
>>165
さすがに可視化くらいはしてるだろ。
まぁ164で当りが返ってきてるところを見ると、今更メッシュの形状は関係なさそうな希ガス
167デフォルトの名無しさん:2007/04/01(日) 00:55:52
>>165
レイも一緒にレンダリングしていましたが、CreateBoxにあたればTRUEが帰ってきます。
ロードしたxファイルのメッシュには、あたってるように見えても全く駄目です。

>>166
メッシュの形は、平らな平面のものにしてみましたが駄目でした。
168デフォルトの名無しさん:2007/04/03(火) 18:27:14
DirectX9でXファイルから
データを読み込んでメッシュを描画しています。
平面クリッピングを行い、メッシュの切断面を
ソリッドモデルとして表現したいのですが
良い方法はありませんか?
169デフォルトの名無しさん:2007/04/03(火) 20:28:14
>>168
ステンシルバッファを使えば簡単にできる。
170デフォルトの名無しさん:2007/04/03(火) 20:28:19
>>168
http://www.aya.or.jp/~sanami/peace/memorial/code31-40.html#CODE37

また、HLSLのclip()を使う方法もあるだろう
171デフォルトの名無しさん:2007/04/03(火) 21:35:59
>>169
>>170
ありがとうございます。
調べてみます。
172168:2007/04/05(木) 12:45:08
メッシュBをメッシュAで切り取ろうと思ったのですがうまくいきません。
まずメッシュBの切断面だけ表示しようと思ったのですが
全く変化がありません。検討違いなことをやってるのでしょうか?

m_pD3DDev->Clear(0,NULL,D3DCLEAR_STENCIL | D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET,
D3DCOLOR_XRGB(0,0,0),1.0,0);//バッファをクリア

m_pD3DDev->BeginScene();
m_pD3DDev->SetRenderState(D3DRS_STENCILENABLE,TRUE);//ステンシルバッファを有効に

m_pD3DDev->SetRenderState(D3DRS_STENCILFUNC,D3DCMP_ALWAYS);//常に合格
m_pD3DDev->SetRenderState(D3DRS_STENCILPASS,D3DSTENCILOP_REPLACE);
m_pD3DDev->SetRenderState(D3DRS_STENCILZFAIL,D3DSTENCILOP_REPLACE);

m_pD3DDev->SetRenderState(D3DRS_STENCILREF,0x1);
m_pD3DDev->SetRenderState(D3DRS_STENCILMASK,0x1);
m_pD3DDev->SetRenderState(D3DRS_STENCILWRITEMASK,0x1);

RenderMeshA();//メッシュAを描画

m_pD3DDev->Clear(0,NULL,D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET,
D3DCOLOR_XRGB(0,0,0),1.0,0);//ステンシルバッファ以外をクリア

m_pD3DDev->SetRenderState(D3DRS_STENCILFUNC,D3DCMP_EQUAL);//ステンシルが1のところを描画

RenderMeshB();//メッシュBを描画

m_pD3DDev->EndScene();
m_pD3DDev->Present(NULL,NULL,NULL,NULL);
173デフォルトの名無しさん:2007/04/05(木) 15:38:21
>>172
全然違う。

メッシュBのZ値を描画
メッシュAの表面だけ描画しながらD3DRS_STENCILPASSでインクリメント
メッシュAの裏面だけ描画しながらD3DRS_STENCILPASSでデクリメント
これで断面の部分のステンシルが非ゼロになる。

ここでのメッシュAの描画はZ値を更新しないこと。
また、メッシュAがニアクリップにひっかからないように。
D3DRS_TWOSIDEDSTENCILMODEが使える環境ならメッシュAの処理は1回で
済ませることも可能。
174デフォルトの名無しさん:2007/04/05(木) 15:39:09
1つ忘れてた。
メッシュAは完全に閉じた形状であること。
175168:2007/04/05(木) 19:22:21
m_pD3DDev->Clear(0,NULL,D3DCLEAR_STENCIL | D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET,
D3DCOLOR_XRGB(0,0,0),1.0,0);//バッファをクリア

m_pD3DDev->BeginScene();
m_pD3DDev->SetRenderState(D3DRS_STENCILENABLE,FALSE);//ステンシルバッファを無効に
m_pD3DDev->SetRenderState(D3DRS_ZWRITEENABLE,TRUE);//Zバッファ書き込み可
m_pD3DDev->SetRenderState(D3DR_CULLMODE,D3DCULL_NONE);//カリング無効

RenderMeshB();//メッシュBを描画

m_pD3DDev->SetRenderState(D3DRS_STENCILENABLE,TRUE;//ステンシルバッファを有効に
m_pD3DDev->SetRenderState(D3DRS_ZWRITEENABLE,FALSE);//Zバッファ書き込み不可

m_pD3DDev->SetRenderState(D3DRS_STENCILFUNC,D3DCMP_ALWAYS);//常に合格
m_pD3DDev->SetRenderState(D3DRS_STENCILPASS,D3DSTENCILOP_INCR);//インクリメント
m_pD3DDev->SetRenderState(D3DRS_STENCILZFAIL,D3DSTENCILOP_KEEP); //そのまま

m_pD3DDev->SetRenderState(D3DRS_STENCILREF,0x1);
m_pD3DDev->SetRenderState(D3DRS_STENCILMASK,0x1);
m_pD3DDev->SetRenderState(D3DRS_STENCILWRITEMASK,0x1);


176168:2007/04/05(木) 19:23:22
つづき

m_pD3DDev->SetRenderState(D3DR_CULLMODE,D3DCULL_CCW);//表面のみ

RenderMeshA();//メッシュAを描画

m_pD3DDev->SetRenderState(D3DRS_STENCILFUNC,D3DCMP_ALWAYS);//常に合格
m_pD3DDev->SetRenderState(D3DRS_STENCILPASS,D3DSTENCILOP_DECR);//デクリメント
m_pD3DDev->SetRenderState(D3DRS_STENCILZFAIL,D3DSTENCILOP_KEEP); //そのまま

m_pD3DDev->SetRenderState(D3DR_CULLMODE,D3DCULL_CW);//裏面のみ

RenderMeshA();//メッシュAを描画

m_pD3DDev->Clear(0,NULL,D3DCLEAR_ZBUFFER | D3DCLEAR_TARGET,
D3DCOLOR_XRGB(0,0,0),1.0,0);//ステンシルバッファ以外をクリア

m_pD3DDev->SetRenderState(D3DRS_ZWRITEENABLE,TRUE);//Zバッファ書き込み可
m_pD3DDev->SetRenderState(D3DRS_STENCILFUNC,D3DCMP_EQUAL);//ステンシルが1のところを描画
m_pD3DDev->SetRenderState(D3DRS_STENCILPASS,D3DSTENCILOP_KEEP);//そのまま
m_pD3DDev->SetRenderState(D3DRS_STENCILZFAIL,D3DSTENCILOP_KEEP); //そのまま
m_pD3DDev->SetRenderState(D3DR_CULLMODE,D3DCULL_NONE);//カリング無効

RenderMeshB();//メッシュBを描画

m_pD3DDev->EndScene();
m_pD3DDev->Present(NULL,NULL,NULL,NULL);

これでもうまくいきません。根本的におかしいのでしょうか?
177デフォルトの名無しさん:2007/04/05(木) 20:06:34
具体的に、どううまくいかないのか。
あと、根本的な問題としてステンシルバッファを作成してあるのか?
(デプスバッファとセットの物なので個別に作成するわけではないが)

MASK系でわざわざ1bitしか使わないようにしているのには何の意味が?
(今回は1bitでも問題ないが)

原理を理解していれば、1ステップずつ描画させていけば問題点は
すぐに分かると思うが。
178168:2007/04/05(木) 21:43:16
>>177
すみませんでした。
おっしゃる通りでステンシルバッファを作成していませんでした。
CreateDevice()で、バッファを作成すれば
表示はされるようになったので、何とかなりそうです。
ありがとうございました。
179デフォルトの名無しさん:2007/04/06(金) 13:50:35
>>174で思いついたのですが、D3DXIntersectで使うメッシュは、やはり閉じたメッシュじゃなければ駄目なのでしょうか?
180デフォルトの名無しさん:2007/04/06(金) 14:05:02
閉じても駄目でした。
181デフォルトの名無しさん:2007/04/06(金) 19:15:00
判定を取る最中にワールド変換してるとかじゃねーの?
182デフォルトの名無しさん:2007/04/08(日) 00:16:34
最近XNAを始めて、Matrixの使い方がよくわからないのですが
3Dモデルを左右反転するにはどうすればいいのでしょうか?

Matrix.CreateScale(-1, 1, 1)でいけるかと思ったんですが
表示がおかしくなるだけでした
183デフォルトの名無しさん:2007/04/08(日) 00:34:26
1,まず鏡を用意します。
184デフォルトの名無しさん:2007/04/08(日) 01:00:41
>>182
カリングでググるとよろし
185182:2007/04/08(日) 12:31:54
>>183
まじめに質問しているので、まじめに答えてください
>>184
馬鹿にしているんですか?カリングくらい知ってます
186デフォルトの名無しさん:2007/04/08(日) 14:36:18
左右反転というが
何軸に対して反転するんだ?
表示がおかしくなるのは、それに対する考慮が
抜けてるからだろう。
187デフォルトの名無しさん:2007/04/08(日) 15:29:13
>>185
どちらのレスもふざけてるってほどふざけたレスじゃないとおもうw
188デフォルトの名無しさん:2007/04/08(日) 19:08:17
ttp://www.plustarnet.com/aspil/Programming/
ここのページでプログラムの内容はあまり理解せず、ゲームを作ってきた者です。
スケルトンソース使って大体思い通りのものは作れるようになったつもりです。
そして最近加算合成がしてみたいと思ったのですが、やり方がよくわかりません。
スプライトを使って加算合成する方法はないのでしょうか?
やり方はなんであれ簡単なサンプルソースのリンクなどを張っていただくと助かります。
189デフォルトの名無しさん:2007/04/08(日) 20:29:58
>>188
D3DRS_ALPHABLENDENABLE, D3DRS_SRCBLEND, D3DRS_DESTBLEND
を設定するだけでできる。

設定の仕方は「ブレンドファクター121」でググれば色々例がある。
DirectX6の頃の解説だけど、画像付きでそこそこ分かりやすいと思う。
190デフォルトの名無しさん:2007/04/08(日) 20:52:02
>>186
182ですが理解しました
191デフォルトの名無しさん:2007/04/08(日) 21:40:20
>>189
ごめんなさい、いままでSpriteを使って表示していたので、
その画像合成定義みたいなのをどこに書けばいいのかわかりません。
どこか短くてわかりやすいソース等ないでしょうか?
192デフォルトの名無しさん:2007/04/08(日) 21:48:29
>>191
189のキーワードでググるという知恵もないのなら、やめた方がいいと思うよ。
193デフォルトの名無しさん:2007/04/08(日) 22:01:49
>>191
最低限の段階、Direct3Dのチュートリアルは終わらせたの?
194デフォルトの名無しさん:2007/04/08(日) 22:13:16
>>188
そこのサイトで勉強するのはやめとけ。
そこの管理人は自分の作ったしょぼいライブラリを使わせたいだけ。
何の勉強にもならん。dllだから中身も見れんし。
195デフォルトの名無しさん:2007/04/08(日) 22:17:46
使いやすいかどうかはともかく、
ソースつきのライブラリなんて腐るほどあるしな。
196デフォルトの名無しさん:2007/04/08(日) 22:20:50
そーっすね
197デフォルトの名無しさん:2007/04/09(月) 01:03:03
そこ昔は全部ソース見れたような気がするけど
見れないんだ。
198デフォルトの名無しさん:2007/04/09(月) 10:47:25
あまりの粗雑さにクレームが耐えないから非公開にしたんじゃね?w
199デフォルトの名無しさん:2007/04/15(日) 09:07:36
test
200デフォルトの名無しさん:2007/05/14(月) 22:22:51
質問です、DirectInputでマウス座標を取りたいんですけど
DIMOUSESTATE2 mouseInfo;
マウスデバイス->GetDeviceState( sizeof(DIMOUSESTATE2), mouseInfo );
↑これでマウス情報を得た後にmouseInfo.XlやmouseInfo.Ylに入っている数値って
現在のマウス座標からの増減のような気がするんですけど気のせいでしょうか?

もしそうなら任意のウィンドウのクライアント領域の座標(左上が(0,0))を取りたいんですけどどうやったらいいんでしょうか?
201デフォルトの名無しさん:2007/05/14(月) 22:31:59
Win32APIに用意されているだろ。
何故用途に応じて使い分ける程度の脳味噌が無いんだ?
202200:2007/05/14(月) 22:39:47
>>201
GetCursorPosとScreenToClientでいけそうですね。
せっかくDirectInputを使っているのでDirectInputだけでいけないか悩んでました。
でもこれだとマウスの移動に関してはDirectInputいらないんじゃないですか?
今からやりるんでわかりませんけどクリックとホイールで使うんですかね?
203デフォルトの名無しさん:2007/05/14(月) 23:03:34
正直マウスに関してはDirectInputの利点はまるでないと思う。
204デフォルトの名無しさん:2007/05/15(火) 14:42:08
> でもこれだとマウスの移動に関してはDirectInputいらないんじゃないですか?
いりませんよ。
ゲーム作ってますが、マウスの場合(というかパッドもだけど)DirectInput使ってません。
205デフォルトの名無しさん:2007/05/16(水) 00:39:54
DirectInputの利点ってなに?
206デフォルトの名無しさん:2007/05/16(水) 01:07:17
パッド使うときはDirectInput使うだろ
207デフォルトの名無しさん:2007/05/16(水) 02:13:53
使ってない
208デフォルトの名無しさん:2007/05/16(水) 08:54:04
Win32APIでアナログスティック2本とか使えたっけ?
209デフォルトの名無しさん:2007/05/20(日) 13:47:48
DirectX SDK - April 2007でDirectX9の開発は可能ですか?
210デフォルトの名無しさん:2007/05/20(日) 14:03:12
>>209はDirectX9を開発するらしい

超がんばれ
211デフォルトの名無しさん:2007/05/20(日) 16:10:47
>>210
日本語でok
212デフォルトの名無しさん:2007/05/20(日) 17:07:07
DirectX9の開発は可能ですか?

DirectX9の開発
DirectX9の開発
DirectX9の開発
213デフォルトの名無しさん:2007/05/20(日) 18:02:17
DirectX SDK - April 2007でDirectX9での開発は可能ですか?
214デフォルトの名無しさん:2007/05/20(日) 18:13:38
DirectX SDK - April 2007でDirectX9の関数が使えますかとかw
最新版使うとランタイムも最新版要求されるような
215デフォルトの名無しさん:2007/05/21(月) 01:13:16
windowsの開発経験ありますか?
なんて面接で普通に聞かれるじゃん
>>210はコミュニケーション能力がないと思われて就職できないよ

それに本気でそう思ったとしても出来るかどうかぐらい考えてやれよ
そうすればどんなに矛盾したミスリードをしたか理解できるから
216デフォルトの名無しさん:2007/05/21(月) 02:29:06
>>215
>windowsの開発経験ありますか? なんて面接で普通に聞かれるじゃん
面接官は馬鹿だからしょうがない
217デフォルトの名無しさん:2007/05/21(月) 10:01:12
>>215
単に揚げ足取りたかっただけだろうから気にするな
218デフォルトの名無しさん:2007/05/21(月) 12:24:08
DirectXってGPUで計算してくれるわけだから
電卓作るときDirectXを使えばCPUをほとんど使わず
計算できるんですか?
219デフォルトの名無しさん:2007/05/21(月) 13:00:18
何が計算できるのかをまず把握しろ。
220デフォルトの名無しさん:2007/05/21(月) 17:02:47
>>219
行列の足し算引き算掛け算割り算
ですか?
directXとopenGLどっちが覚えるのに時間掛かりますか?
221デフォルトの名無しさん:2007/05/21(月) 17:06:29
まずはSDKを入れて実際に作ってみるところから始めろ。
グダグダ聞いていても時間の無駄。
222デフォルトの名無しさん:2007/05/21(月) 18:10:15
>>221
SDKを入れようと思うんだけど、
dirextX10はwindows vista専用らしいので
windows vistaこれからさきやっていって
9のままで大丈夫なのか不安で入れられません
223デフォルトの名無しさん:2007/05/21(月) 18:16:51
日本語でおk
224デフォルトの名無しさん:2007/05/21(月) 18:19:54
>>223
10はwindows vista専用なので
windowsXPは9からバージョンアップはされないけれど
openGLはバージョンアップするという理解で
あってますか?
225デフォルトの名無しさん:2007/05/21(月) 18:27:05
グダグダ考えずにとっととプログラムを組め。
226デフォルトの名無しさん:2007/05/21(月) 18:32:58
>>225
プログラムを組む前に計画を立ててからです
227デフォルトの名無しさん:2007/05/21(月) 18:44:13
馬鹿の考え休むに似たり
228デフォルトの名無しさん:2007/05/21(月) 18:58:36
わからないものの計画をどうやって立てるのか
229デフォルトの名無しさん:2007/05/21(月) 19:06:17
計画を立てる前に、わからないといけないから
質問してるんです
230デフォルトの名無しさん:2007/05/21(月) 20:01:23
案ずるより産むが易し
231デフォルトの名無しさん:2007/05/21(月) 21:27:19
232デフォルトの名無しさん:2007/05/22(火) 18:25:26
久しぶりに見にきたらこのgdgdな流れはなんだw
directxのバージョンで悩む必要なんてねぇだろ。
それ以前にGLはスレ違い。
233デフォルトの名無しさん:2007/05/22(火) 19:46:51
DirectXを使った他人のプログラム中のDrawText()をフックして、
文字情報を抜き出したいのですが、可能でしょうか?
できるのでしたら方法やサンプルを教えて欲しいです。。
234デフォルトの名無しさん:2007/05/22(火) 20:39:05
DLLを差し替えるんだ
235233:2007/05/22(火) 21:27:01
DLL差し替えは、プログラムからチェックされてるんで
できないんです・・・。
フックに頼らない方法もあるのでしょうか?
236デフォルトの名無しさん:2007/05/22(火) 21:32:36
そこまで対策されているプログラムにどうこうしようとか考えるな。
制作者の意図通り動かせよ。
237デフォルトの名無しさん:2007/05/22(火) 21:39:05
リバースエンジニアリングを学ぶべきでは
238デフォルトの名無しさん:2007/05/22(火) 22:28:46
DirectXを使ったプログラムを作るスレです。
239デフォルトの名無しさん:2007/05/22(火) 23:30:58
超初心者用スレです。
240デフォルトの名無しさん:2007/05/23(水) 08:07:07
レス返してるのも勉強中の学生としか思えないほど
低レベルな内容だもんな。。
241デフォルトの名無しさん:2007/05/23(水) 08:22:51
じゃあお前が答えてあげればいいじゃないか
242デフォルトの名無しさん:2007/05/23(水) 19:12:13
>>240>>241
こういう奴らは自分が一番低レベルということを自覚しない
243デフォルトの名無しさん:2007/05/23(水) 19:47:45
以上、低脳の発言でした。
244デフォルトの名無しさん:2007/05/23(水) 20:45:22
引き続き、>>1000まで低脳の発言をお楽しみください。
245デフォルトの名無しさん:2007/05/23(水) 20:52:48
DirectXを使うにはどの言語が一番いいですか?
246デフォルトの名無しさん:2007/05/23(水) 20:58:00
Dが一番メジャー
247デフォルトの名無しさん:2007/05/23(水) 21:54:22
現時点での、環境の充実度、学びやすさ、Web上の資料の量と質などから主観的に判断すると、

C#
C++
Delphi
D

の順かな
248デフォルトの名無しさん:2007/05/23(水) 21:58:52
C#+Managed DirectX2.0が最高・最強

MSに製作打ち切られても平気
249デフォルトの名無しさん:2007/05/23(水) 22:05:08
ランタイムを配る面倒さを考えると、C++とSDK2004の組み合わせがベスト。
250デフォルトの名無しさん:2007/05/23(水) 22:19:28
>>249
C#+MDXの組み合わせは、ランタイム配布関連がごちゃごちゃしすぎて
かつては鬼門とまで言われてたからね

でD3DXのDLLがややこしくなったのは確かApr 2005からじゃなかったっけ
だとするとそういう意味でのベストは、C++とSDK Feb 2005かな
251デフォルトの名無しさん:2007/05/23(水) 22:28:12
Oct2004はVC6をサポートした最後のSDKだから価値があったりなかったりするんだよ。
ぶっちゃけ”VC2005EE使えよ”とは思うけど。
252デフォルトの名無しさん:2007/05/23(水) 22:45:15
へえ、そーだったんだ
Dec 2004からはVS2003以降専用になったわけね

なら、何らかの事情でVC6しか使えない、或いは英語ヘルプを読みたくないならOct 2004
D3DX関係のランタイム配布関連で、苦労したくない或いは何らかの制限があるならDec 2005
それ以外なら最新版

になるんかな
253デフォルトの名無しさん:2007/05/23(水) 22:49:07
VS2003->VS2005EEで
コンパイラバグがあらかた消えた。
仕事でもないのに今だVS6なんて使ってるのはあふォ
254デフォルトの名無しさん:2007/05/23(水) 22:49:12
VS2003の前にVS.netがあったことを忘れないであげてください。
255デフォルトの名無しさん:2007/05/23(水) 22:54:43
D3DXがDLLになったところでSDKを更新するのをやめた。
256デフォルトの名無しさん:2007/05/23(水) 23:05:03
ちなみにD3DXがDLL化される前の最終バージョンは、December 2004
2005FebからはDLL化されている。
257デフォルトの名無しさん:2007/05/24(木) 00:00:50
>>256
ぐあ、そうなんだ、すまんかった

>>252のDec 2005はDec 2004に修正
258デフォルトの名無しさん:2007/05/24(木) 00:13:53
逆にDirectXDLLパッケみたいなのができて楽になったと思うけどな
259デフォルトの名無しさん:2007/05/24(木) 00:19:59
商売やってねーなら最新使えばいいじゃん
商売やってたってCDROMにつけたってたいした手間じゃない

キーワード
DirectX エンド ユーザー ランタイム Web インストーラ
でググルととりあえず取得できる
260デフォルトの名無しさん:2007/05/24(木) 01:17:03
ユーザに余計な物をインストールさせるのは滅茶苦茶手間。
ドキュメントなんて読まないし、親切にメッセージを表示させても理解できない。
261デフォルトの名無しさん:2007/05/24(木) 01:30:57
セットアップ用のアプリを別途用意して入ってなきゃ強制的に
DirefctXのインストーラー起動させれば流石に入れないやつはいない。
262デフォルトの名無しさん:2007/05/24(木) 05:48:20
>>261
そうだよな。
別にインストールに選択項目があるわけじゃないし、
強制的に起動すればいいだけの話だし問題になるところじゃねぇよな
263デフォルトの名無しさん:2007/05/24(木) 08:19:31
ユーザにしてみれば、ボコボコ色んなバージョンのDLLを入れさせられるのは迷惑以外の何ものでもない。
264デフォルトの名無しさん:2007/05/24(木) 09:36:59
レジストリが肥大化するわけでもなしシステムディレクトリにDLLが
増える程度を気にする普通のユーザーはいねぇぜ。

そういうのはそういう知識がないと気にできない。

ゲームやるだけのユーザーは「ふーん最新版あるんなら入れとくか」
程度にしか思わん。
265デフォルトの名無しさん:2007/05/24(木) 12:32:44
MS公式のDirectX Webインストーラは
ポコポコ色んなバージョンのDLLをとりあえず全部入れる流れですが
それが何か
266デフォルトの名無しさん:2007/05/24(木) 13:10:20
配布するのに無駄にでかいランタイムは付けたくないな。
267デフォルトの名無しさん:2007/05/24(木) 16:50:30
DirectXをbolrandでコンパイル出来る所(?)までは行ったのですが
エラー:未定義の関数 'sqrtf' を呼び出した
ってなるんです
僕は何をしたら良いんですか・・・
268デフォルトの名無しさん:2007/05/24(木) 17:14:55
すいません。解決しました
#define sqrtf sqrt

そういう意味だったのか・・
269デフォルトの名無しさん:2007/05/24(木) 19:06:42
DirectXのソースを手に入れたんだ。
すげえな。
270デフォルトの名無しさん:2007/05/24(木) 21:56:44
271デフォルトの名無しさん:2007/05/24(木) 22:11:49
( ゚д゚) ・・・
 
DirectXをbolrandでコンパイル出来る所(?)までは行ったのですが

(つд⊂)ゴシゴシ
 
DirectXをbolrandでコンパイル出来る所

(;゚д゚) ・・・
 
(つд⊂)ゴシゴシゴシ

DirectXをbolrandでコンパイル
  _, ._
(;゚ Д゚) …!?
272デフォルトの名無しさん:2007/05/24(木) 22:12:51
DirectXがbolrand?
273デフォルトの名無しさん:2007/05/24(木) 22:16:54
sqrtf って float 用の sqrt じゃないのか?
274デフォルトの名無しさん:2007/05/24(木) 22:17:18
bolrand
  _, ._
(;゚ Д゚) …!?
275デフォルトの名無しさん:2007/05/24(木) 22:18:16
bolrand に一致する日本語のページ 27 件中 1 - 27 件目 (0.38 秒)

もしかして: borland
276デフォルトの名無しさん:2007/05/24(木) 22:19:24
>>273
日本語と英語の間にいちいちスペースを入れるのやめてください
277デフォルトの名無しさん:2007/05/24(木) 22:31:39
>>276
そんな事言う奴初めて見た。
Word とかでも自動的に間隔開くのが普通だし、
それがデザインの基本だというのに。
278デフォルトの名無しさん:2007/05/24(木) 22:36:30
デザインの基本がどうとかこうとかではなくスレの流れを読めってことだ
279デフォルトの名無しさん:2007/05/24(木) 22:38:23
DirectXをbolrandでコンパイル の揶揄だったのか?
280デフォルトの名無しさん:2007/05/24(木) 23:47:51
突っ込みどころ大杉
281デフォルトの名無しさん:2007/05/24(木) 23:52:22
頭の悪い奴って、あらゆる所をとことん間違えるよな。
282デフォルトの名無しさん:2007/05/25(金) 00:02:16
どうでもいいことで、スレを埋めるなよ。
283デフォルトの名無しさん:2007/05/25(金) 00:06:40
さすが超初心者用のスレだ。DirectXをbolrandでコンパイルすることすらできんヤツらがこんなにいるとはw
284デフォルトの名無しさん:2007/05/25(金) 00:09:29
まあ無理だな。
285デフォルトの名無しさん:2007/05/25(金) 00:09:59
VC++6+Win32SDKでゲーム作ってるんですが、
パッド対応の為に、DirectXSDK(2004Oct)を入手して、
DirectInput(D8)を利用することにしました。
サンプルを流用したクラス作って、機能自体は稼働させたんですけど、
開始画面のメニュー選択などでパッド利用で選択しようとすると、
カーソルが超高速で動いてしまい、激しく使いにくいんです。
今まではGetAsyncKeyStateを使ってたので、
メニュー選択時等は最初のdownだけ拾って処理させてたんですけど、
これに似たような事できませんか?
286デフォルトの名無しさん:2007/05/25(金) 00:44:37
>>283>>284
ワロタw
287デフォルトの名無しさん:2007/05/25(金) 00:47:01
>>285
要するに
押した瞬間だけ1になって
押しっぱなしだと0に戻る
離したときも0をキープする
変数を作って、カーソル移動する関数はそれを読めばいいわけだ
288デフォルトの名無しさん:2007/05/25(金) 00:47:20
>>285
DXライブラリかLunaのソースでも見とけ。
289285:2007/05/25(金) 01:05:03
>>287-288
ありがとうございます。

>>287
やっぱりそれしかないですかね。
DirectInputの戻りでup判定とか出来る余地があるのかと
思ったんですけど。

>>288
Lunaってラッパーライブラリがあるんですね。
拾ってきたので、明日あたり覗いてみます。
290デフォルトの名無しさん:2007/05/25(金) 02:36:57
>>285
パッド対応にDirectInputなんて必要ないけどな。
大抵の用途はjoyGetPosExで十分。
291285:2007/05/25(金) 11:34:21
>>290
ありがとうございます。

そんなAPIあったんですね。
今調べて初めて知りました。
こっちの方がDirectXに依存しない分、もしかすると良いかもしれないですね。
ちょっと検討してみます。
292267:2007/05/25(金) 17:45:41
borlandでしたね・・
Microsoftをミクロソフトと読んでた時期もあります
ごめんなさい
293デフォルトの名無しさん:2007/05/25(金) 20:07:39
お前大物になるぞ
294デフォルトの名無しさん:2007/05/25(金) 21:11:05
棒ランド
295デフォルトの名無しさん:2007/05/25(金) 21:29:14
>>291
振動やアナログスティックを使わないのであればWinAPIで十分。
296デフォルトの名無しさん:2007/05/25(金) 21:47:00
アナログもWin32APIで十分。
297285:2007/05/25(金) 22:09:11
>>295,296
ありがとうございます。

教えて頂いたWin32APIで書き換えてみました。
これはこれで全く問題ないですね。
ただ、なまじDirectXのサンプルとか結構見てしまったので、
フォースフィードバックとか使ってみるのも面白い気がしてます。

皆様、親切にありがとうございました。
298デフォルトの名無しさん:2007/05/25(金) 22:45:22
>>296
WinAPIで軸2つ以上取れるんだっけ?
299デフォルトの名無しさん:2007/05/25(金) 22:54:56
普通に取れる。
300デフォルトの名無しさん:2007/05/26(土) 02:40:53
DirectXゲームグラフィックスプログラミングVer2.0
これ読んでだいたいどういうものか解ったんですけど入門書って感じがしないです
良書教えてください!!
サイトでも良いです!!
301デフォルトの名無しさん:2007/05/26(土) 03:30:07
C++とC#のソースコード付きサンプル集。
初期化の基礎からHLSLまで、段階的に広い範囲をカバーしててお勧め。

ttp://www.codesampler.com/dx9src.htm
302デフォルトの名無しさん:2007/05/26(土) 08:31:12
>>300
たしかに入門書としては簡単すぎるというか足りなすぎるというか
303デフォルトの名無しさん:2007/05/26(土) 14:54:52
おれはemuleで見つけてるよ
ただだしオススメ
そのかわり英語がすらすら読めないと無理
304デフォルトの名無しさん:2007/05/26(土) 17:45:26
>>300
もうその本は楽勝ってこと?
305デフォルトの名無しさん:2007/05/26(土) 18:09:04
>>301
凄く分かり易そうです有難うございます!

>>302
機能についての資料集って感じです

>>303
よく分からないけどやってみます

>>304
書かれてる内容は分かるんですけど
まだコード繋げる事さえ出来ないので戦ってもいないです
306デフォルトの名無しさん:2007/05/26(土) 19:24:36
なんか手を出すもん間違ってないだろうか?
307デフォルトの名無しさん:2007/05/26(土) 20:21:18
correctかどうかは分からんが本人にとってrightなことをやってるんだろう。
308デフォルトの名無しさん:2007/05/27(日) 18:03:21
今DirectXで2Dのゲームを作っているんだけど
フルスクリーンで実行するときとウインドウモードで実行するときの速さが違うんだけど
どうして速さに違いが出るんだろう?
309デフォルトの名無しさん:2007/05/27(日) 18:25:25
ちゃんと同期を取れ
フルスクリーンだとフレッシュレートにあわせてFlipするが
vista 以外のウィンドウモードではフレッシュレートをあわせない
310デフォルトの名無しさん:2007/05/27(日) 18:52:10
実に新鮮でういういしいのぅ
311デフォルトの名無しさん:2007/05/27(日) 18:57:36
そもそもどのインタフェイスを使ってフルスクリーンにしているか不明、設定も分からない、
さらにどっちが速くなったとも書いていないのに、いったい何を答えろと言うのだろう。
それと勝手に結論を出した奴は間違いなく早漏。
312デフォルトの名無しさん:2007/05/27(日) 18:59:54
>>309
うん?
DirectX9からは、ウィンドウモードでも、
D3DPRESENT_INTERVAL_IMMEDIATE 以外を指定すれば
(VSYNCに合わせるかどうかは別として)同期を取ってくれるようになったんだが。
313デフォルトの名無しさん:2007/05/27(日) 22:01:48
分かりにくくてすみません!
>>309
ちゃんと同期が取れているのかは分からないのですが、
一応GetTicCountで時間を取得して1秒間に60フレームになるようにはしているのですが。

>>311
遅くなるのはウインドウモードのときです。
フルスクリーンのときはグラフィックが1秒間に60ドット移動するのですが、
ウインドウモードのときは42ドットしか移動しません。
どうして移動に差が出るのかが分かりません。

すごいですね!よく僕も早漏だって分かりましたね!
314デフォルトの名無しさん:2007/05/27(日) 22:11:43
それウィンドモードんとき処理落ちしてんじゃねぇの?
315デフォルトの名無しさん:2007/05/27(日) 23:03:55
>>314
最初は自分でも処理落ちかと思って表示数1枚にして
やり直しても変わらなかったんですよね。
316308:2007/05/28(月) 01:46:19
曲でも聴きながらコードを見直そうと、
Windows Media Playerを起動して作業をしていた所、発見しました!
Media Playerを起動しているときだけ正常に動作していたのです!
ただ閉じるとまた同じように遅くなります。

なぜそのようになるのかがまだ分かりません。
同じような現象に合った方はいませんか?
317デフォルトの名無しさん:2007/05/28(月) 01:50:57
WinMainの最初にでも、timeBeginPeriod(1)って書いてみな。
318デフォルトの名無しさん:2007/05/28(月) 02:21:06
>>317
コンストラクタにtimeBeginPeriod(1)をデストラクタにtimeEndPeriod(1)をおいたところ見事解決しました!
このAPIでタイマーの精度を変えると起動中のソフトすべてに影響されるんですね!
こんなことも分からなかった自分が情けないです!

これですべての理由が分かりました! 本当にありがとうございました!

319デフォルトの名無しさん:2007/05/28(月) 02:34:57
またそれかよ
某掲示板でも散々既出な話題だな
320デフォルトの名無しさん:2007/05/28(月) 03:40:21
何もかもが釣りっぽいがなんだか憎めんのう
321デフォルトの名無しさん:2007/05/28(月) 06:48:25
フルスクリーンとウインドウモード関係ないじゃん。
322デフォルトの名無しさん:2007/05/30(水) 17:10:44
よくあるはなしだなw
323デフォルトの名無しさん:2007/05/30(水) 18:20:37
すみません。AVIファイル(MPEG4)再生でコマ戻しに苦慮しています。
コマ送りはIVideoFrameStepが使えますが、コマ戻しに使えません。
そこで
IMediaSeeking *pMdaSeek;

pMdaSeek-> SetTimeFormat(&(TIME_FORMAT_FRAME));
LONGLONG pCurrent,pSTop;
DispMovie.pMdaSeek->GetPositions(&pCurrent,&pSTop);
LONGLONG NewPos = pCurrent + 1;
hRslt = pMdaSeek->SetPositions(&NewPos,AM_SEEKING_AbsolutePositioning|AM_SEEKING_ReturnTime,NULL,AM_SEEKING_NoPositioning);
if(SUCCEEDED(hRslt)) pMdaCtrl->Pause();
としましたが、8回試行毎に1回コマ戻しが効きません。(8はGOPの長さと同じ)
よい方法を教えてください。
324デフォルトの名無しさん:2007/05/30(水) 18:42:26
DirectShowはDirectXのカテゴリから外されました。
よってスレ違いです。
325デフォルトの名無しさん:2007/05/30(水) 19:49:21
戻したいときは直前のIフレームからそこまでコマ送りしなさい。
326323:2007/05/30(水) 20:47:01
>324
つっこみありがとうございます。
>325
あなたが依頼主だったら、家に帰れるんだがなぁ。
327325:2007/05/30(水) 21:51:15
ん?
手動じゃなくて自動でやるんだよ。運用でカバーさせようとするな。
328323:2007/05/30(水) 23:00:12
直前のIフレームってどうやって探すの?
さっさと教えやがれです。
329デフォルトの名無しさん:2007/05/30(水) 23:23:05
テキトーに指定した時間のデータしか取得したことない
俺にはコマ送りとかコマ戻しとかさっぱりだぜ
330デフォルトの名無しさん:2007/06/03(日) 02:49:50
モーションキャプチャーで取得したデータを
画像に反映するにはどうしたらいいの?
(´・ω・`)
331デフォルトの名無しさん:2007/06/03(日) 11:15:25
パラメータを対象データに適切に割り当てる。
332デフォルトの名無しさん:2007/06/06(水) 12:51:26
DirectXはじめたばかりなんですが
座標がどうなってるのか良く分かりません
1.0fとか0.0fになってるんですが
XとYで左上が0.0とか、そういう概念では無いんですか?
333デフォルトの名無しさん:2007/06/06(水) 13:04:56
自分でそのように変換しているから、そういう単位になるというだけです。
自分で変換しているのに勝手にやられているような責任転嫁はやめましょう。
334デフォルトの名無しさん:2007/06/06(水) 13:30:15
0.0の後ろにfをつけると、0.0fになります。それだけですthat's all.
335デフォルトの名無しさん:2007/06/06(水) 13:49:09
f は float の f
336デフォルトの名無しさん:2007/06/06(水) 16:10:41
>>333
自分でというかサンプルソースをいじってる段階です

>>334
なる・・・ほど

>>305
そうだったんですか、始めて知りました


ソースいじってたらウィンドウの真ん中の座標が0.0fだって事がわかったんですけど
これ、なんていう単位なんですか?
337デフォルトの名無しさん:2007/06/06(水) 17:19:34
自分にレスすんなよー
338デフォルトの名無しさん:2007/06/06(水) 17:55:55
>>336
単位なんて無い。
自分で真ん中が0になるようにしているだけ。
全ては自分自身で決めているんだから、他人が知るわけがない。
339デフォルトの名無しさん:2007/06/06(水) 18:40:55
> ソースいじってたらウィンドウの真ん中の座標が0.0fだって事がわかったんですけど
> これ、なんていう単位なんですか?
俺様ちゃんワールドやしぃ。
メートルにしようがぁ、ヤードにしようがぁ


自由だぁーーーッ!
340デフォルトの名無しさん:2007/06/06(水) 18:48:58
よしもとサンサンTV
341デフォルトの名無しさん:2007/06/06(水) 19:27:03
>>337
ごめんなさい。自分に全力レス余裕でした。

>>338-340
アーッ!
そういう事か、、、
やっぱ一番左上が0.0じゃないと違和感ありまくりでゲーム作れたものじゃない
何とか描き直します。質問に答えてくれて本当にありがとうございます。
342デフォルトの名無しさん:2007/06/06(水) 22:29:58
>>341
いくら2Dゲームだってワールド座標も使えないで
こいついままで何やってゲーム作ってたんだろうか?
と思うのは俺だけだろうか?
343デフォルトの名無しさん:2007/06/07(木) 01:45:02
・--------→ x
|
|
|

y
344デフォルトの名無しさん:2007/06/07(木) 06:29:57
x  y
┃  ┃
┃  ┃
┣━┫
┃  ┃
┣━┫
┣━┫
┃  ┃
┣━┫
┃  ┃
┃  ┃
┣━┫
┃  ┃
あ は
た ず
り れ
345デフォルトの名無しさん:2007/06/07(木) 12:35:48
3Dを2次元のテレビの画面に変換する
数学のジャンルってなんですか?
346デフォルトの名無しさん:2007/06/07(木) 12:38:59
幾何代数だっけ?

あれ違うか・・・?
高校じゃやらなかったから3D関係は全部独学なんでワカンネ。
347デフォルトの名無しさん:2007/06/07(木) 12:40:00
線形代数
348デフォルトの名無しさん:2007/06/07(木) 12:45:39
線形代数学に3Dを2次元のテレビ画面に変換する公式は書いてありませんでした
お願いします
349デフォルトの名無しさん:2007/06/07(木) 12:57:03
3D於テレビ画面変換工学です。
350デフォルトの名無しさん:2007/06/07(木) 12:59:41
式が見たければ、SDKのヘルプ見れば全部書いてあるが。
351デフォルトの名無しさん:2007/06/07(木) 13:02:04
もういいです、このすれで質問した自分が馬鹿でした
さようなら
352デフォルトの名無しさん:2007/06/07(木) 13:02:14
TV画面なんて意味不明な物に変換する公式など存在しない。
353デフォルトの名無しさん:2007/06/07(木) 13:07:36
どのスレで質問しても望む答えはもらえないだろ。
354デフォルトの名無しさん:2007/06/07(木) 16:23:47
アファイン変換と射影変換だな。
代数幾何じゃないか?
355デフォルトの名無しさん:2007/06/07(木) 16:46:42
そもそも三角関数で円を描くことは出来るが、円を描く公式だといって数学を教えたりはしない。
応用が利かず、そのまんまの公式があると思って探し回っているのは頭が悪いとしか言いようがない。
356デフォルトの名無しさん:2007/06/07(木) 17:17:59
Direct3Dをマスターするのに最低限必要な数学のジャンルは何ですか?
例えば、物体の移動とか回転等
357デフォルトの名無しさん:2007/06/07(木) 17:39:07
・物体の移動とか回転
・局所環付き空間
・六角四片四角孔ねじれ正多面体
・大二重斜方二十・十二面体系多面体
・皆殺しの數學
・ヤコポ・リカッチ
・ジーン・ガストン・ダルブー
・フィリッペ・ファン・ランスベルゲ
・シャルル=マリー・ド・ラ・コンダミーヌ
358デフォルトの名無しさん:2007/06/07(木) 18:40:15
>>357
www
359デフォルトの名無しさん:2007/06/07(木) 19:04:02
>>356
あらゆる数学・物理学に精通していないと、マスターなんてとてもとても…
360デフォルトの名無しさん:2007/06/07(木) 22:31:51
>>356
マジレスすると、線形代数くらいしっていてもいいかもだけど、
なくても教科書読みながらでなんとかなる。

どっちかというと、ゲーム作るなら、3Dより、ゲームの方の知識がいるような
361デフォルトの名無しさん:2007/06/07(木) 22:35:00
どうせ描画のコアの部分はメインPGが担当する場合が多いしな。
会社によっちゃライブラリ化されてるし。

362デフォルトの名無しさん:2007/06/08(金) 19:55:45
会社でもない限り人の作った部品を使いたくないからね
できればDirectXもつかいたくないんだけど、GDPないとつらいから
OPENGLかなぁ
OPENGLの長所の一つに巨大なライブラリーをダウンロードしなくても
すぐに始めることが出来るからね
363デフォルトの名無しさん:2007/06/08(金) 21:04:26
OpenGLの欠点はゲームを作る点に関しては面倒なとこだな。
D3DXのようなサポート関数もサウンド関係のライブラリは別途必要だし。
364デフォルトの名無しさん:2007/06/09(土) 00:46:39
OpenGL
・SDKのサイズが小さい
・拡張ライブラリは別々にインストールしなければならない
・メーカー独自拡張部分はサポートが早い

DirectX
・SDKのサイズが大きい(バージョンによっては配布サイズも……)
・拡張ライブラリやツールなど一括でインストールされる
・メーカー独自拡張はサポートされない
365デフォルトの名無しさん:2007/06/09(土) 01:06:01
SDKのサイズ云々言っている奴はどんなナローバンドなんだろう?
そんなどうでもいいことを言い回る辺り、駄目な香りがプンプン漂ってくるんだが。
366デフォルトの名無しさん:2007/06/09(土) 01:33:45
ナローバンドだろうが、SDKのサイズを気にすること自体…
367デフォルトの名無しさん:2007/06/09(土) 02:26:16
メーカー独自機能は勉強にはいいが、配布するソフトウェアには使えないしなぁ。
368デフォルトの名無しさん:2007/06/09(土) 02:29:22
XPのDirectXはバージョン9で終わりだから
10以上の機能を使うにはVISTAを買わないといけない
OpenGLはVISTAを買わなくても良い
369デフォルトの名無しさん:2007/06/09(土) 02:31:06
MSDNから無料でダウンロード可能なのでVISTA購入の手間は無いけどな
370デフォルトの名無しさん:2007/06/09(土) 08:25:12
そもそもDirectX10対応のビデオカードを持っている奴が少なすぎて、
現状ではターゲット環境になり得ない。

OpenGLの独自拡張は互換性がないので使い物にならない。
しかもOpenGLでパフォーマンスを出すには、ドライバがチューニングされた、
ぼったくりの高級ビデオカードが必用なので、
一般ユーザが持っているビデオカードでの性能を考えるならDirect3Dしか選択肢がない。
371デフォルトの名無しさん:2007/06/09(土) 08:37:35
お前らが書くような糞プログラムでそこまで速度が必要になることはないよw
372デフォルトの名無しさん:2007/06/09(土) 08:38:54
馬鹿だな。
糞プログラムだからこそ速度が必用になるんじゃないか。
373デフォルトの名無しさん:2007/06/09(土) 08:43:29
>>371
どちらかといえば逆だろ。
アルゴリズムの最適化の方が優先度は高いんだし。

たかが同人なんかの為にわざわざRadeon7000買ってチェックとか何やってんだろうとは思った。
つかGeForce2MXとかで動かないとか文句言うなよって感じだったがな。
374デフォルトの名無しさん:2007/06/09(土) 10:24:45
糞プログラムでGPUの性能を使い切ることはほとんどないよ。
大抵はCPU律速。
375デフォルトの名無しさん:2007/06/09(土) 10:31:37
頭が悪いな。
高速なビデオカードを使えば、性能を使い切らなくたって速くなるだろ。
GPUの性能を使い切るって発言があまりにも馬鹿すぎる。
376デフォルトの名無しさん:2007/06/09(土) 11:25:45
GPUの休憩時間が増えるだけの予感。
377デフォルトの名無しさん:2007/06/09(土) 11:29:26
どうでもいい処理をGPUに送り続ければフル稼働するだろう。
GPUの性能を使い切りたい馬鹿にはうってつけ。
378デフォルトの名無しさん:2007/06/09(土) 11:30:31
だがユーザーが皆高速なビデオカードを揃えてるわけじゃないからな。

自分で作ってそれで満足するだけならそれでいいが、
配布するような前提ならCPUは当然として特にテクセルレートや
フィルレートは気にする必要あるだろ。

流石にDrawPrimitive大量にコールしてCPUが悲鳴上げるなんてプログラム組むやつは居ないだろうが・・・
379デフォルトの名無しさん:2007/06/09(土) 11:57:26
DrawPrimitiveを呼ばないようにするなんて不可能だし
無駄にまとめると今度はしなくていい頂点まで計算に入ってしまって効率悪い
適度に呼べば大抵問題にはならない
PCの場合、半透明処理が異常に遅いほうが気になる
380デフォルトの名無しさん:2007/06/09(土) 12:02:25
PCゲーム作るとき、いまだに、シェーダーがターゲットにないというのに、
OpenGLもDirectXもねえ
381デフォルトの名無しさん:2007/06/09(土) 12:02:27
じゃあ半透明は抜きで
382デフォルトの名無しさん:2007/06/09(土) 12:03:58
訂正

> PCゲーム作るとき、いまだに、シェーダーがターゲットにないというのに、
PCゲーム作るとき、いまだに、シェーダー使わせてもらえないのに
383デフォルトの名無しさん:2007/06/09(土) 12:07:50
半透明つか、アルファブレンドは、
ちょっと、画面覆いつくすように描画するだけで、モタモタするからな。
(うちのはミドルエンドのカードだが)

CPU描画の方が速いのでは?って思うくらい(冗談だけどさ)
384デフォルトの名無しさん:2007/06/09(土) 12:25:43
PCのαブレンド遅すぎるよね
DrawPrimitiveがどうとか全然問題だと感じられないぐらい
αブレンドが遅い
385デフォルトの名無しさん:2007/06/09(土) 12:26:01
少なくともシェーダー2.0は普通に使うだろ・・・
当然ON/OFFはつける前提だが。
386デフォルトの名無しさん:2007/06/09(土) 12:32:00
>>383
うん、画面覆うと処理オチするときある
すっげ遅い
これ、速くしてくれよって思う
いままであまり叫ばれなかったのが不思議なぐらい重い
387デフォルトの名無しさん:2007/06/09(土) 12:39:44
>>378
前の文脈を良く読めよ。
糞プログラムを動かす時に高速なビデオカードが必用だという話だ。
まともに組んだらどんどん糞プログラムじゃ無くなっていくだろ。
なぜほんの少し前のレスすら確認する脳味噌がないんだ?
388デフォルトの名無しさん:2007/06/09(土) 12:43:54
まあ、なんも気にせんで半透明ぼこぼこ使ってたらそりゃそれだけで遅いわな
高いボード買えばちょっとは速くなるかも
αブレンドは体感ほとんど変わらないぐらい遅いけどw
389デフォルトの名無しさん:2007/06/09(土) 12:46:33
広領域αブレンドはメモリ帯域ベンチマークだからなあ
しかし昔に比べればメモリ自身もメモリ周りも速くなってるはずだが
やはり遅いんかね?
390デフォルトの名無しさん:2007/06/09(土) 12:53:05
さぁ?なんたって俺のPCはRadeonの9600で時が止まってますしw
391デフォルトの名無しさん:2007/06/09(土) 12:53:46
まあ、大抵、馬鹿が馬鹿やるところっつったらα物の描画でしょう
392デフォルトの名無しさん:2007/06/09(土) 13:02:45
Radeon9600なら別に悪くは無いだろ。
シェーダー2.0対応だった気がするけど。
393デフォルトの名無しさん:2007/06/09(土) 13:08:09
最低でもTNT128まではサポートすべき
じゃないと、いざ公開した後で泣きを見るぞw
394デフォルトの名無しさん:2007/06/09(土) 13:15:55
>>392
そもそもシェーダー2.0なんてものは存在しない。
395デフォルトの名無しさん:2007/06/09(土) 13:18:31
シェーダーモデル2.0といえば宜しいか
396デフォルトの名無しさん:2007/06/09(土) 13:30:52
>>393
そんなのサポートしてる時間のが無駄
弱小会社いた俺でもサポートしなかった
397デフォルトの名無しさん:2007/06/09(土) 13:32:37
加算アルファがなんか変とかそういうレベルだろ?Riva128って
398デフォルトの名無しさん:2007/06/09(土) 13:36:59
今普通に店で帰るビデオカードだとGeForcre5000番台〜とRADEON9200番台〜くらいだな。
それ以上は古すぎて秋葉の中古ショップとか行かないと買えない。

5年前のノートPCですらGeForce4程度は積んでたし。
399デフォルトの名無しさん:2007/06/09(土) 13:57:40
古いビデオカード積んでる奴は、PCゲームするな!
以上!
400デフォルトの名無しさん:2007/06/09(土) 14:26:07
最強のビデオカードは、PowerVRで決まり!
以上!
401デフォルトの名無しさん:2007/06/09(土) 14:30:42
逆だろう。
古いビデオカード積んでるやつは初めからエロゲーしかやらん。
同人ゲームやるような奴等はマシンスペックもそれなりだよ。

TNT128なんて世代的にPentiunIIとかの時代じゃねーの?
とりあえず表示できるように作ったとしてもCPUが悲鳴あげるだろ。
402デフォルトの名無しさん:2007/06/09(土) 14:41:47
古PCサポートを頑張るコストってなんか無駄っぽいんだよなあ
んん、、ここって超初心者用スレじゃねえか
失礼
403デフォルトの名無しさん:2007/06/09(土) 14:55:56
>>400
最高のゲームはバーチャロンOMGで決まりですかw
404デフォルトの名無しさん:2007/06/09(土) 14:59:26
>>403
うむ。同梱されてるしな

最近ベーマガの一ページ目に見開きで広告だしたりと
がんばってるから、これから普及すること間違いなし
405デフォルトの名無しさん:2007/06/18(月) 05:21:12
画像の表示
これが一体どういう事をやってんのか全然分からない
画像を表示するだけなのに、何で、こんなややこしいのか・・
誰か分かり易く説明しておくれ!
406デフォルトの名無しさん:2007/06/18(月) 05:47:45
>>405
俺、DirectXは詳しくないから画像データ形式に関してのみ。

昔はVRAMの内容をそのまんまファイルに落とすようなこともやってた。
これならファイルの内容をVRAMにコピペするだけだから表示は超簡単だった。
しかし・・・

アホ、お前のマシンじゃそれでよくても俺のマシンじゃ表示できねぇよ、馬鹿!

そこで環境非依存ビットマップ DIB(DeviceIndepenedntBitmap)という考えがでてくる。
さらに・・・

アホ、ネットワーク上でそんな生データのっけんな!
そのデータ落とすのにいくら通信費と時間がかかると思ってんだよ、馬鹿!

で、圧縮するのが当然になる。

環境非依存で圧縮されたデータ形式である gif, jpeg, png が主流となる。←いまここ。

圧縮されたデータを解凍せにゃならんし、さらに解凍したデータを自分の環境に合わせた
データ形式に変換しなきゃならんのでこれはとっても表示に手間がかかる。
407デフォルトの名無しさん:2007/06/18(月) 11:54:59
全然違うところが凄い。
408デフォルトの名無しさん:2007/06/18(月) 19:19:50
>>406
お前にプログラムの才能はないが詐欺師の才能は十分にある。
期待しているぞ。
409デフォルトの名無しさん:2007/06/18(月) 19:35:48
>>408
それはつまり、IT土方じゃなくてITコンサルをやれってことか?
410デフォルトの名無しさん:2007/06/18(月) 20:26:32
D3DXはJPEG2000の読み込みには対応してますか?
411デフォルトの名無しさん:2007/06/18(月) 20:27:41
なんで試さないの?
412デフォルトの名無しさん:2007/06/18(月) 20:33:48
???
対応していれば、試したいと思いますが…
413デフォルトの名無しさん:2007/06/18(月) 20:39:37
???
試せば、対応してるかどうかわかると思いますが…
414デフォルトの名無しさん:2007/06/18(月) 21:21:54
>>410は真性か・・・
415デフォルトの名無しさん:2007/06/18(月) 21:34:04
対応していました
ありがとうございました
416デフォルトの名無しさん:2007/06/19(火) 04:12:41
>>406
ちょっと聞きたい事と違ったけど
解りやすい説明ありがとうございますw
ややこしくなってる原因はだいたいそういう事なんですね
417デフォルトの名無しさん:2007/06/19(火) 07:40:38
聞きたかったことはDirectXの表示の話じゃないの?
表示にテクスチャ使うようになっただけだろ
418デフォルトの名無しさん:2007/06/20(水) 14:13:08
DirectAudioでWAVの再生をしようと思ったんだけど、
DirectMusicとDirectSoundどっちを使った方がいいの?

コードを見る限り、DirectMusicの方が簡単そうなんだけど、
だったらなんてDirectSoundが存在するのかわからない・・・
419デフォルトの名無しさん:2007/06/20(水) 14:21:35
>>418
歴史的な理由じゃなかったっけか
気にせず簡単な方つかっとけよ
420デフォルトの名無しさん:2007/06/20(水) 15:25:18
>>418
ヘルプの機能比較見てみると良いよ。

でも、DirectXのSound系の将来は・・・・
421デフォルトの名無しさん:2007/06/20(水) 20:31:03
その件については、ここの説明が割とお勧めだな。DirectSound\(^o^)/オワタ
http://www.4gamer.net/specials/tooearlytogetvista/003/tooearlytogetvista_001.shtml
422デフォルトの名無しさん:2007/06/21(木) 01:57:40
うわあああああDirectX10使えねええええええ
423デフォルトの名無しさん:2007/06/21(木) 08:42:35
どうせ3DオーディオならCreative一択だしALchemy正式版も出たから問題ないだろ
なんでMSがここまでオーディオ周りを退化ばっかさせてるのかは疑問だが
424デフォルトの名無しさん:2007/06/21(木) 09:57:21
10年も前の仕様が現状にそぐわないから切り捨てただけ。
サウンド機能が無くなるわけではなく、今はXAudio2という次世代の
APIの準備期間だよ。
425デフォルトの名無しさん:2007/06/21(木) 10:00:27
グラフィックに比べるとサウンドは環境そろえてるやつが少ないからなー
5.1chの環境揃えたって普通の人は結局ヘッドホンでゲームやる事になるし。
426デフォルトの名無しさん:2007/06/21(木) 23:11:38
DirectX7のオンラインヘルプがダウンロードできる所を知っている方いませんか?
MicrosoftのDownloadセンターには見当たりませんでした。
WeybackMachineには一応あったのですがなぜか1Mまでしかダウンロードできないので使えなかったです。http://web.archive.org/web/*/http://www.microsoft.com/japan/developer/directx/downloads.asp
427デフォルトの名無しさん:2007/06/22(金) 00:31:35
おおっと、うっかりupしてしまったようだ。今日仕事から帰ったら消さないとな。
ttp://smallup.dip.jp/uploader/src/smallup1634.zip.html
428デフォルトの名無しさん:2007/06/22(金) 03:00:09
>>427
ありがとうございます><
429デフォルトの名無しさん:2007/06/22(金) 20:12:15
質問です。
カメラの注視をAモデルにあわせているのですが
Aモデルを中心にカメラを回転させた後、普通カメラが正面に向いている方向に
モデルは進むものですが、自分の場合カメラを回転させた後、Aモデルへその回転量の計算が
うまくいってないらしく、回転させたカメラの正面に進んでくれません

atan2やらいろいろ試行錯誤しましたが、よろしければ正しい計算式やコードを教えてくださいm(_ _)m
430デフォルトの名無しさん:2007/06/22(金) 21:14:33
>>429
何言ってんのかわかんねえ・・・。
LookAtじゃ駄目なん?
431デフォルトの名無しさん:2007/06/22(金) 21:30:38
( ゚д゚)

普通カメラが正面に向いている方向にモデルは進むものですが

(つд⊂)ゴシゴシ

普通カメラ
  _, ._
(;゚ Д゚)
432デフォルトの名無しさん:2007/06/22(金) 21:37:21
>>430
自分でもわかりにくい文章と思いますw

普通はカメラが正面に向いている方向にモデルは進むと思います
自分の場合カメラを何度回転させてもモデルはカメラの正面進んでくれず
当然Atはモデルの座標を入れているので、たとえば90度回転させたら
横滑りみたいに移動してしまうんです・・・・。
433デフォルトの名無しさん:2007/06/22(金) 21:57:25
>>432
馬鹿にするわけじゃないけど
どっかの入門書サイト一通りやってこないと駄目だと思う

ベクトルとか行列とか理解しなきゃなにも教えられないってのがホントのところ
ここに動くコード貼るにはでかいし

要点だけ貼っても理解できないと思う
434デフォルトの名無しさん:2007/06/22(金) 22:05:21
>普通はカメラが正面に向いている方向にモデルは進むと思います

まずこれが分からない

これだと画面内のオブジェクトが全部カメラから遠ざかっていくってことだよな
それって普通なのか????
435デフォルトの名無しさん:2007/06/22(金) 22:10:42
>>429
View行列の第三列がカメラのZ軸になってるから
これをモデルの速度の単位ベクトルにすればよろし。

ただし左手座標系を使ってるとき(D3DXの関数だとLHってつく奴ね)は
Viewの段階でZ軸が反転されているから気をつけよう。
436デフォルトの名無しさん:2007/06/22(金) 22:15:04
>>434
わかりにくくてすみませんTT

>>435
本当にありがとうございますm(__)m
早速ためしてみます
437デフォルトの名無しさん:2007/06/23(土) 01:53:04
要は三人称視点のことね。
D3DXMatrixInverse(&matPose, NULL, &matView);
で、カメラの姿勢行列求めて
D3DXVec3TransformNormal(&forward, &D3DXVECTOR3(0,0,1), &matPose);
で、カメラの前方向ベクトルが求まるわね。これをXZ平面に平行にしたい場合は
forward.y = 0;
D3DXVec3Normalize(&forward, &forward); ね。
(0,0,1) を (1,0,0) とか (-1,0,0) にすればカニ歩きベクトルね。
438デフォルトの名無しさん:2007/06/23(土) 11:27:16
>>437
それは単に>>435の処理は回りくどくやってるだけでは?

ビュー行列はよっぽど変なことしない限り正規直交基底しか使わないんだから、
わざわざ逆行列求めたり単位ベクトルを変換したりする必要はないだろう
439デフォルトの名無しさん:2007/06/23(土) 12:37:00
俺としてはビュー行列から求めるよりは、モデル位置からカメラ位置を
引く方がいいな。
440デフォルトの名無しさん:2007/06/23(土) 12:42:57
>>439
>>429は姿勢の話であって、位置は関係ないのでは
441429:2007/06/23(土) 17:20:38
結局できませんでした;;
親身になって教えてくださってありがとうございます
どうやら行列やベクトルの学習が足りないようですので
しばらくプログラムのことは忘れて数学に取り組みますよ
442デフォルトの名無しさん:2007/06/23(土) 19:08:25
誰だって最初はそんなもん
443デフォルトの名無しさん:2007/06/23(土) 19:46:00
最後はどんなもんですか?
444デフォルトの名無しさん:2007/06/23(土) 19:49:34
諦めたもんが最後です
445デフォルトの名無しさん:2007/06/23(土) 20:16:24
線形代数なんて、授業全部さぼって他のにもかかわらず、
テスト前日に勉強しただけで満点とれたくらい簡単。
446デフォルトの名無しさん:2007/06/24(日) 20:38:52
へぇ
447デフォルトの名無しさん:2007/06/24(日) 21:07:22
ほぉ
448デフォルトの名無しさん:2007/06/24(日) 21:40:27
>>445
中学か高校レベルだったらそんなもんでしょ
結局3Dに使う線形なんてよっぽど手の込んだことしない限りはその程度の範囲でしか使わないし
449デフォルトの名無しさん:2007/06/24(日) 21:55:36
大学で7自由度アームの研究をやってた時は逆行列にイライラしまくってた
450デフォルトの名無しさん:2007/06/24(日) 22:25:41
「腕には一自由度の冗長性があるのです。」

って先生が手の平を机に付けたまま肘をくいくいと動かしながら言ってた。
でも7自由度の系のヤコビアンを手計算で求める根気は俺にはない。
451デフォルトの名無しさん:2007/06/24(日) 22:30:58
クォータニオンからZXY回転させた時の3軸の角度って取れないんだっけ?
クォータニオンAをZ軸に720度回転させる時の回転のクォータニオンって作れないような気がするんだけど・・・。
452デフォルトの名無しさん:2007/06/24(日) 22:54:31
>>451
結果的に同じ姿勢になる回転同士は、同一のクオータニオンで表される。
なんで720度の回転を表すクオータニオンは単位クオータニオンなのです。
453デフォルトの名無しさん:2007/06/24(日) 23:17:48
アニメーションツールとかで回転のキーをクォータニオンで持つことは出来ないって事なのね。

てことはXファイルはどうやって360以上の回転を・・・?
454デフォルトの名無しさん:2007/06/24(日) 23:20:50
>>453
だってクォータニオンじゃないもん
455デフォルトの名無しさん:2007/06/24(日) 23:25:06
>>453
ん?どう解釈してそのような結論になったんだ?
456デフォルトの名無しさん:2007/06/24(日) 23:27:48
0Frame目に z0 x0 y0 の状態で60Frame目に z720 x0 y0 って状態になるとして、
回転の成分を3軸の角度じゃなくをクォータニオンで持ってたら再現できないって事かな、と。
457デフォルトの名無しさん:2007/06/24(日) 23:32:16
再現できるようにキーを配置しろよ。
458デフォルトの名無しさん:2007/06/24(日) 23:40:59
>>456
アニメツール側で回転を何で保持するかはツールによるだろうがそれはさておき、
例えば2回転(720度分)するアニメーションであれば、キーを次のように配置しとけば
あとはキー間をSlerpすればクオータニオンだけで完結できる

・単位クオータニオン、120度回転するクオータニオン、240度(以下同)、単位、120度、240度、単位

例えば、の話ね。

オイラー角で表すとすればこの回転によって0→720とパラメータが変化するわけだが、
>>452でも書いたように結果的に同じ姿勢を表すクオータニオンは同一なので、
回転前と回転後のクオータニオンが同一であるのはおかしなことではない。
459デフォルトの名無しさん:2007/06/24(日) 23:43:49
キーの配置なんかモデリングソフトでアニメーションの一つでも作れば分かりそうなものだが、
プログラム云々以前にそのぐらいやってみればいいのに。
460デフォルトの名無しさん:2007/06/24(日) 23:51:35
そうなんか・・・俺モデラー使ったことないわ
461デフォルトの名無しさん:2007/06/25(月) 00:29:45
Lightwaveで0フレームの0度から60フレームの360度の回転でキーフレームだけ出力したXファイルは再生しても見事に回らなかった。
出力のSamplingを10フレーム単位にして出力したらちゃんと回ったけど。

アニメーションソフトのようなものはキーは3軸の角度で持たないとダメって事なのね。
462デフォルトの名無しさん:2007/06/25(月) 00:34:20
だからそれはキーの置き方が悪いんだって。
463デフォルトの名無しさん:2007/06/25(月) 00:40:44
>>461
軸の数の問題じゃねーだろ
>>457>>458読んだのか??
464デフォルトの名無しさん:2007/06/25(月) 00:43:46
ワロタ
ゆとりの社会進出もいよいよ深刻っぽいなw
465デフォルトの名無しさん:2007/06/25(月) 00:45:29
すまん
466デフォルトの名無しさん:2007/06/25(月) 00:47:27
いや、こちらこそ言い過ぎた
467デフォルトの名無しさん:2007/06/25(月) 00:50:30
Lightwave上で作ってると0の次のキーに720とか入力しても普通に再生されるから気にしたことなかったんだよ・・・
Xファイルにしたときに回転がクォータニオンで出力される事を考えながらデータなんて作ってなかったし。

ようはクォータニオン化しても正しく再生されるように途中補間用のキーを置けって事でしょ。
468デフォルトの名無しさん:2007/06/25(月) 00:53:05
>.461
その実験結果から「キーは3軸の角度で持たないとダメ」という結論が何故得られるのかが
よく分からないんだけど・・・

その現象はキー間隔の違いに起因するものであって、これは
オイラー角であろうとクオータニオンであろうと注意すべきことに変わりはないよ
469デフォルトの名無しさん:2007/06/25(月) 00:56:48
>>467
まあそういうことだね。
LWとDirectXでは、回転の表し方も回転の補間方法も全く異なるから、
できるだけ細かくキーを打つか予め補間したキーを挿入してエキスポートするのがいい。
ファイルサイズとのトレードオフになるけどね・・
470デフォルトの名無しさん:2007/06/25(月) 00:57:18
>>467

ttp://www.dstorm.co.jp/products/developer/docs/motcurve02.htm
>LightWave 6.0 以降のモーションカーブは、XYZ座標位置、HPB回転角、
>XYZスケールの9つのチャンネルカーブから構成されています。
>各チャンネルカーブは、シーンファイルのエンベロープの形式でチャンネル単位に保存されます。
>エンベロープカーブは、TCB、Hermite、2D Bezier、直線、ステップの補間パラメータから
>構成される複合カーブです。

Lightwaveのモーション情報は、こんな感じで複雑なパラメータ変化を記述できて、
その再生ルーチンも線形補間一発みたいなのじゃないんですよ。
以下でソースが公開されているから一回見てみたら?
ttp://www.dstorm.co.jp/products/developer/docs/motcurve02.htm
ttp://www.dstorm.co.jp/products/developer/download/tool.htm

逆に言えば、Xファイルを通すのをやめて最初からLightwaveのファイルを直接読み込むなら
別にキー間隔を増やす必要はないよ。
471デフォルトの名無しさん:2007/06/25(月) 18:10:59
うぅ〜3人称視点マジわからん〜〜
誰かヒントおせぇ〜〜てぇ〜
472デフォルトの名無しさん:2007/06/25(月) 18:16:53
>>471
いきなり三人称視点とか言われても、
何が分からないのか全く分からない。
473デフォルトの名無しさん:2007/06/25(月) 18:19:06
カメラと操作キャラの座標別々にするだけじゃないの
474471:2007/06/25(月) 18:19:36
スレ汚し真にすまん
解決した・・・

>>437
本当にありがとう・・・
まだ内容は理解していないがコピペして俺のプログラムで通るようにしたら
うまくいった・・・

いまからなにをやっているのか解明して習得します
475デフォルトの名無しさん:2007/06/25(月) 18:45:00
>>474
まあ理屈を理解するには>>437が分かりやすいかもしれんが、
これは>>435が言ってることを無駄にややこしくやっているだけ。

今回の場合は全然問題にはならないが、
特に逆行列を求める処理は他に比べてかなり重いことを一応頭に入れておく事。
476デフォルトの名無しさん:2007/06/25(月) 18:55:29
>>475
了解
わざわざありがとう!
477デフォルトの名無しさん:2007/06/25(月) 18:59:22
カメラの視点変更にはヨーピッチロールとか使ってる(´・ω・`)
478471:2007/06/25(月) 19:08:39
パポタの移動を参考にやってました
3日くらい涙目で試行錯誤して、ベクトルの本まで買ったがその数分後に解けるとは・・・
でもカメラ視点制御ってかなり初級なんですよね・・・はぁ・・・
479yd:2007/06/25(月) 19:34:31
円上に点を64個均等におきたいいですけどどうしたらよいでしょう?
480デフォルトの名無しさん:2007/06/25(月) 19:40:55
for (int i = 0; i < 64; i++)
  点を配置( cos( i * D3DX_PI / 32), sin( i * D3DX_PI / 32) );
481デフォルトの名無しさん:2007/06/26(火) 06:36:26
>>435
これの例神様カキコキボン
482デフォルトの名無しさん:2007/06/26(火) 16:39:49
479じゃないけど

「球面」上に、「出来るだけ均等に」点を配置したいのですが、どうしたらよいでしょう?
483デフォルトの名無しさん:2007/06/26(火) 17:04:28
>>482
x,y,zそれぞれ-1から1まで一様乱数でふる。
そうすると各軸-1から1までの空間内に均等に散らばるはず。
ここで、中心から半径1の球の中に入っていれば、
その方向と球の交わる点を使う。
球の中に入っていなければ、入るまで繰り返す。
484483:2007/06/26(火) 17:07:33
って、乱数じゃなくてNという決められた数字に対して
なるべく均等な配置をしたいということか、すまん。
>>483は忘れてくれ。
485デフォルトの名無しさん:2007/06/26(火) 17:11:21
正多面体なら自明だと思うけど、最大で20だからなぁ。
正多面体じゃない奴で>>482の希望を満たすような図形ってあるんだっけ?
486デフォルトの名無しさん:2007/06/26(火) 17:16:46
3dsMaxで作成したアニメーション(Bipedを利用したキャラクタアニメーション)をXファイルに出力し、
DirectXを用いて読み込みたいのですが、上手くいきません。
現在、PandaDirectXMaxExporteというプラグインを用いてXファイルを作成しています。
いろいろ調べて見たところ、Xファイル中のframe情報やMesh情報に名前が付かない
(conv3dsを用いた場合は名前が付く、しかし、オプションを指定しても、アニメーション情報が正しく
入らない)ことが原因のようです。

PandaDirectXMaxExporteを使って作成したXファイルをDirectXViewerを用いて開いてもエラーとなります。

PandaDirectXMaxExporteを用いてアニメーション付きXファイルを作成し、DirectXを用いて読み込む方法
を教えてください。
487デフォルトの名無しさん:2007/06/26(火) 17:20:32
>>483-484
サンクスです
点をひたすらランダムに発生させるのであれば、
たしかに言われたとおりの方法でほぼ均等に発生させることができますね・・

>>485
はい、「正確に均等に」配置するのは最大でも20が限度なのは分かっています
>>482は「出来るだけ均等に」っていう言葉自体が少々あいまいかもしれないですね・・
488デフォルトの名無しさん:2007/06/26(火) 17:37:50
>>487
量子化学の分野で使われてる Lebedev grid とかはどうなのかな?
489デフォルトの名無しさん:2007/06/26(火) 18:04:09
ここでそんな感じの事をやってる
ttp://www.cora.nwra.com/~gourlay/software/Java/Surface/
たぶん近過ぎる点は反発し合い、離れ過ぎた点は引き合うようなシミュレートをしてるんだと思う
本当に任意の点数でやろうとしたらこういった手法になるんじゃないかなあ

任意の点数でなければ"Geodesic sphere","Geodesic dome"もキーワードになるかな
490デフォルトの名無しさん:2007/06/26(火) 18:08:37
正二十面体の各面を正三角形で分割して、
それを頂点が球面上に置かれるように膨らませた感じ? >Geodesic sphere
491デフォルトの名無しさん:2007/06/26(火) 19:59:32
メタセコでモデル作って動かしてるんですが
親子関係ってどうやって関連付けてます?
492デフォルトの名無しさん:2007/06/26(火) 23:19:30
・IDirect3DTexture9からカラーフォーマット(D3DFORMAT)取得するにはどうするんですか?
・D3DXCreateCubeTextureで空のキューブマップ作った後
どうやって各面にテクスチャを設定するんですか?
LPDIRECT3DTEXTURE9 tex->GetSurfaceLevel
LPDIRECT3DCUBETEXTURE9 cubetex->GetCubeMapSurface
して、サーフェイスをCOPYするんですか?
493デフォルトの名無しさん:2007/06/26(火) 23:32:15
>>492
・IDirect3DTexture9からカラーフォーマット(D3DFORMAT)取得するにはどうするんですか?

IDirect3DTexture9::GetLevelDesc → D3DSURFACE_DESC :: Format

・D3DXCreateCubeTextureで空のキューブマップ作った後
どうやって各面にテクスチャを設定するんですか?

IDirect3DCubeTexture9::LockRect して書き込み。
これはキューブでない単なるテクスチャでも同じ。
画像ファイルからテクスチャを作ってくれるD3DXの関数も、内部では同じことをやってる。
494デフォルトの名無しさん:2007/06/27(水) 01:49:49
>>493
わかんねーよへたくそ
495デフォルトの名無しさん:2007/06/27(水) 01:51:12
分からないのか分かれないのか
496デフォルトの名無しさん:2007/06/27(水) 02:04:35
これだけ潤沢ににキーワードを提示されても何も調べられないんだとしたら、
速攻でプログラミングから足を洗った方がいいな


497デフォルトの名無しさん:2007/06/27(水) 16:10:34
毎度思うんだけど質問スレでそういう事言うなよ・・・
もっとマターリいこうぜ
498デフォルトの名無しさん:2007/06/27(水) 16:15:53
>>497
わかんねーよへたくそ
499デフォルトの名無しさん:2007/06/27(水) 16:22:19
>>492==>>494とも限らないわけで。
500デフォルトの名無しさん:2007/06/27(水) 21:10:23
限ります。
501デフォルトの名無しさん:2007/06/28(木) 00:39:35
いいからさっさと答え教えろよ
502デフォルトの名無しさん:2007/06/28(木) 00:40:54
>>501
マジレスするとこれ以上どうしろと?w
503デフォルトの名無しさん:2007/06/28(木) 00:44:31
もう、あれ
回答者のレスがよくわからなかったら
どこがどうわからないのかしつこく聞かないと駄目なところまできてる

・具体的にいうと〜がわかりません
・いま〜という認識で止まってます
・〜と考えていたのですが、〜な回答を貰ったので混乱しています

とか色々返してみれ!
504デフォルトの名無しさん:2007/06/28(木) 00:55:18
>>492の質問の仕方に対しては>>493が限度だろ。
手順を逐一説明してたら膨大なレス数になる

ここに限った話じゃないが、具体的な回答を求めるなら、具体的に質問を書け。
505デフォルトの名無しさん:2007/06/28(木) 00:57:52
つまり「分からないところが分かりません」というヤツだな
506デフォルトの名無しさん:2007/06/28(木) 01:00:18
質問に具体性が無いのに返信には具体性を求めてる、という矛盾に気付かないヤツだ
507492:2007/06/28(木) 22:08:34
>>493
わかりました。ありがとうございます。
>>494
誰だお前は!
508デフォルトの名無しさん:2007/06/28(木) 22:21:32
まあ自演なりすましは気にせずに
509デフォルトの名無しさん:2007/06/29(金) 03:47:51
質問してもい
510デフォルトの名無しさん:2007/06/29(金) 04:16:37
質問してこい!
511デフォルトの名無しさん:2007/06/29(金) 06:49:04
カエレ!
512デフォルトの名無しさん:2007/06/30(土) 01:54:29
Managed Direct Xで2Dのグラフかこうとトライしてます
で一部マスクしてかきたいなと思ってぐぐってみたらステンシル?を使うってことみたいなんですが・・・
で・・・よくわかりません
どーやってつかうんでしょ?
どーやってマスク設定してどーやって描画したらいいんでしょ?
513デフォルトの名無しさん:2007/06/30(土) 09:39:33
あ〜やってマスク設定してこーやって描画したらいいんじゃないかな?
514デフォルトの名無しさん:2007/06/30(土) 10:16:34
ステンシルバッファをロックしてバッファに直接書き込むか
ステンシルバッファをレンダーターゲットにしてポリゴンを書く等。
515デフォルトの名無しさん:2007/06/30(土) 10:29:59
>>514
Lockableなステンシルバッファって作れる?
516デフォルトの名無しさん:2007/06/30(土) 10:32:54
D3Dだとつくれないんじゃん
517514:2007/06/30(土) 10:39:43
あ、そうか。適当に書いた。すまん。
518デフォルトの名無しさん:2007/06/30(土) 11:36:03
>>512
わざわざステンシル使わなくても、Zバッファでも一応できるわね。
隠したい部分を、sz=0.0のポリゴンで先に描画しておけば、
後で描くポリゴンが隠れるわけね。
CustomVertex.Transformed[] maskVertices = new CustomVertex.Transformed[3];
maskVertices[0].Position = new Vector4(0.0f, 0.0f, 0.0f, 1.0f);
maskVertices[1].Position = new Vector4(640.0f, 0.0f, 0.0f, 1.0f);
maskVertices[2].Position = new Vector4(640.0f, 480.0f, 0.0f, 1.0f);
device.RenderState.ColorWriteEnable = 0x0;
device.VertexFormat = CustomVertex.Transformed.Format;
device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, maskVertices);
device.RenderState.ColorWriteEnable = ColorWriteEnable.RedGreenBlueAlpha;
凝った形のマスクにしたかったら抜きありテクスチャ張ってね。
519デフォルトの名無しさん:2007/06/30(土) 13:34:22
アルファ値を使うことをすっ飛ばしているような気が
520デフォルトの名無しさん:2007/06/30(土) 15:57:30
DirectShowを用いてmpgファイルを再生しているのですが、上手くいかない点があるので教えてください。

今、IVideoWindowインタフェースを用いて、ゲームのメインウインドウの子ウインドウを作成し、そこに
mpgファイルを再生しています。
mpgファイルの終わりまで再生するためにWaitForCompletionを使用しています。

上記のようにmpgの再生を行った場合、再生中のウインドウが他のウインドウに隠されたとき、
再生画面が真っ黒になってしまいます。しばらくするとゲームのメイン画面になるため、画面は
真っ黒でも再生状態になっているようです。

同じプログラムでaviファイルを再生させたときは上手くいきます。

DirectShowを用いて、mpgファイルを再生させたとき、他のウインドウに隠されても
影響のないようにするためには、どうすればよいのですか?
521デフォルトの名無しさん:2007/06/30(土) 21:50:42
2chで、質問したとき、他のスレで似たような質問しても
ばれないようにするためには、どうすればよいのですか?
522デフォルトの名無しさん:2007/06/30(土) 22:57:26
お前には無理。
523デフォルトの名無しさん:2007/06/30(土) 23:18:38
他のスレで質問しても意味ないぞ。
大体みんな似たようなスレ巡回してるからな。
524デフォルトの名無しさん:2007/07/01(日) 18:15:18
まぁ、マルチは消えろってことで。
525デフォルトの名無しさん:2007/07/03(火) 07:06:54
>>521
それをこのスレ聞く時点で間違ってるw
スレごとに合った内容を質問すれば良い
プログラムって一つの目的に対して一つの方法しかないって事はあんまり無いお
526デフォルトの名無しさん:2007/07/03(火) 08:04:51
>>521ってどうみても>>520の文章のパロだろ?
>>520が他のスレでも似たような質問をしたことを皮肉ってんだろ

こんなのにマジレスすんなよ
527デフォルトの名無しさん:2007/07/04(水) 10:50:44
すまんね。他のスレはあまり見ていないんだ
528デフォルトの名無しさん:2007/07/04(水) 11:12:20
くすだれスレしか見ないのか・・
529デフォルトの名無しさん:2007/07/04(水) 11:13:59
くすだれ
くすだれ
くすだれ
くすだれ
くすだれ
くすだれ
くすだれ
530デフォルトの名無しさん:2007/07/04(水) 11:32:58
くすっ
531デフォルトの名無しさん:2007/07/04(水) 11:35:00
くすだれw
532デフォルトの名無しさん:2007/07/04(水) 13:01:59
だれ?
533デフォルトの名無しさん:2007/07/08(日) 21:18:54
暇が出来たのでゲームを作ってみようと思ったんだけど
いきなり作るのは無理なのでまずは使いまわせる骨組みを組んでから
2Dでテトリスでも作ろうかと思ってます。

前提
・DirectXについては全くといっていいほど知らない
・1年前にC++でOpenGLのオブジェクトを無制限に読み込める
 ウォークスルーを作成。以後触ってない
・C++はクラスが何とか使える程度の知識。継承とかは知らない
・とりあえずDirectX9で作るつもり

上の条件で
ウィンドウ(全画面、ウィンドウモード切替)
描画ループ作成
音鳴らす、画像を表示する、動かす
入力系統を作る
コンフィグを作る。
アニメーションを作る、衝突判定を作る

という感じでゲームの骨の部分を作りたいのですが、
いい解説サイトか本があったら教えてください。
ぐぐっても8以前のサイトか3Dの部分だけ延々と語ってるサイトしかでてこない
534デフォルトの名無しさん:2007/07/08(日) 23:50:02
> 継承とかは知らない
535デフォルトの名無しさん:2007/07/09(月) 06:26:01
>>533
ttp://www.h2.dion.ne.jp/~takusoft/directx8/d3d/index.html
ゲームは作ったことあるか?
まずは画像を表示させて適当に動かしてみれ
536デフォルトの名無しさん:2007/07/09(月) 11:01:31
*まずは、単なる白い四角でも何でもいいから、とにかく画面に何か表示できるようにする。
 プログラムが汚いとかやり方が一般的かどうか分からんとかはとりあえず今は置いとく。
 表示させる手段は一つとは限らないから、ネットや書籍でそれっぽいやり方を見つけたら
 とりあえず何か書いてみる。

*表示した豆腐をキーボードでもマウスでも何でもいいから、とにかく動かせるようにする。
 以下同文
*豆腐の他に納豆でもオムレツでも何でもいいから、同時に複数の物体を表示できるようにする。
*当たり判定つけたりオムレツに納豆をはさんだり何でもいいから、いろいろできるようにする。

ここまで出来ればプロへの山も4%は登り切ったも当然
537デフォルトの名無しさん:2007/07/09(月) 12:41:46
オブジェクトってフレーム毎に更新されるのが保障されてるじゃない?
フレーム毎の処理は入力取得→更新された入力を踏まえた処理→出力の流れで
デバイスに関するオブジェクトもゲーム内オブジェクトも全部同じように扱えるはずじゃない?
だからそれらを一括して管理できないかなぁと色々やってるうちに日が暮れて中々進めない

俺、頭悪い人間だから直接ループでswitch分岐とか使ってガリガリ書いていくとすぐ把握できなくなるしね…
538デフォルトの名無しさん:2007/07/09(月) 12:53:44
チラシの裏に書いてろ
539デフォルトの名無しさん:2007/07/09(月) 13:00:16
>>536が正解を言っている。
540デフォルトの名無しさん:2007/07/09(月) 13:31:56
正解なんてねーよ
541デフォルトの名無しさん:2007/07/09(月) 15:21:55
>>535
thx

Cではゲームは作ったことないが
キーボードで動かせるウォークスルーはある。
といってもカメラを動かすだけで当たり判定すらなかった
から大したことはしてないけど
542デフォルトの名無しさん:2007/07/09(月) 16:10:44
>>541
動かす仕組みは同じだ
どのキーが押されたか判断して処理をさせる
とりあえずじゃなく移動・描画がちゃんと出来れば後は
適当に発想の組み合わせである程度のものは作れる
543デフォルトの名無しさん:2007/07/09(月) 23:44:55
ID3DXConstantTable::GetSamplerIndex
のパラメータには何を指定するんですか?
IDirect3DDevice9::SetTextureにこのメソッドの戻り値指定すれば
テクスチャがシェーダーに設定できるんでしょうか。
544デフォルトの名無しさん:2007/07/11(水) 08:34:53
つい最近、DirectXを始めたものです。
言語はVB、開発環境はVS2005、OSはvista

とりあえず、DirectXの入門本を購入し、3Dの箱を表示させるまではできたのですが、それを他の人のPCで動かしてもらうとエラーが出て動かないらしいのです。
エラー内容は「グローバルアセンブリキャッシュにアセンブリMicrosoft.DirectX.Direct3Dバージョン1.0.2902.0をインストールする必要があります。」というものです。

私の家のPCでは動きます。(XPとvista、XPはVB2005エクスプレスが入ってます)
ちなみに、その動かない人のPCにはDirectX9.0cが入っているそうです。
私のビルド方法が悪いのでしょうか?
VS2005はインストールしてから、設定などは触っていません。
545デフォルトの名無しさん:2007/07/11(水) 08:39:17
エラーの通りだろ。
何の疑問点があるんだ?
546デフォルトの名無しさん:2007/07/11(水) 09:09:48
DirectX 9.0cは色々バージョンあるんだよ。
2007 Aprilとか2007 Juneとか。
自分の使ってるSDKと同じバージョンの再配布パッケージを入れれば動くと思う。
547デフォルトの名無しさん:2007/07/11(水) 15:59:43
548デフォルトの名無しさん:2007/07/11(水) 19:44:36
>>545
>>546
そういうことだったのですね・・・。
解決いたしました。ありがとうございました。
549543:2007/07/11(水) 23:14:55
GetSamplerIndexでググっても1件しか出ないんですが
これどうやって使うんですか?
550543:2007/07/11(水) 23:15:53
サンプラのハンドルなんかどこから持ってくるねん!!
551デフォルトの名無しさん:2007/07/12(木) 00:34:53
D3DXHANDLEつっこめばいいじゃないの?
552デフォルトの名無しさん:2007/07/12(木) 00:46:00
つかテクスチャID3DDevice9::SetTexture()して
HLSL内でそれ引っ張ってくればいいだけなんじゃねぇの?
553デフォルトの名無しさん:2007/07/12(木) 00:55:48
>>549
GetSamplerIndexの戻り値はSetTextureやSetSamplerStateのステージ序数に対応してんのよ。
HLSLのサンプラ定数は宣言順にレジスタが割り当てられる保障はなくて、
HLSL側のサンプラ定数とDirect3Dデバイスに渡すテクスチャ等との対応をとるためのメソッドなんだよ。
でもHLSLはサンプラ定数に任意のレジスタを指定できるから、ほとんど使う場面はねぇんだなこれが。
554デフォルトの名無しさん:2007/07/14(土) 23:51:56
それで・・・どうやって使うんですか?
GetConstantByNameしたのをGetSamplerIndexに渡して
SetTextureじゃない?
555デフォルトの名無しさん:2007/07/15(日) 02:09:42
それでいいんだよ・・・って、なんか勘違いしてそうだなぁ。
逆に聞くけど、なんでそんなにGetSamplerIndexが気になるの? つーか何がしたいの?
上にも書いたけどHLSL側でサンプラ定数のレジスタ指定できるから
FXComposer的なツールを作るのでもなければ、基本的に忘れていいメソッドだぞこれ。
556デフォルトの名無しさん:2007/07/15(日) 09:41:56
Win32アプリで動くDirectSoundの適当に作ったサンプルがコンソールアプリではビルド・実行はできるのですが音がなりません
もしかしてコンソールではDirectSoundは使えないのでしょうか?
ソースはどちらもDirectSoundの処理部分はまったく同じです。
557デフォルトの名無しさん:2007/07/15(日) 13:02:11
自分でウインドウがアクティブじゃないと音が鳴らないようにしていしているだけだろ。
自らがやっていることを他のせいにするな。
558549:2007/07/15(日) 18:35:34
HLSLで設定した名前から
サンプラにテクスチャを割り当てたいです。
>上にも書いたけどHLSL側でサンプラ定数のレジスタ指定できるから
これでおk?
sampler Environment : register(s0);

IDirect3DDevice9::SetTexture(0,pTexture);
559549:2007/07/15(日) 18:36:44
>それでいいんだよ・・・って、なんか勘違いしてそうだなぁ。
って事は、>>554の方法も可能なんですね。
560デフォルトの名無しさん:2007/07/15(日) 23:47:18
>558-559
おけーです。
まぁどちらの方法で管理するかはお好みでってことで。
561デフォルトの名無しさん:2007/07/16(月) 18:05:52
9.0c以降をインストールしたいんですが
ネットに繋いでないとインストールできないんでしたっけ?
今ネット環境があぼんしてるのでネットカフェでCDにでもexeを保存して
家でインストールしたいんですが。
562デフォルトの名無しさん:2007/07/16(月) 18:08:01
SDK?それとも、ランタイムライブラリ?
双方とも、ネット接続なしでインストールできる配布パッケージがあります。

ランタイムライブラリの方は、web版じゃない方(サイズが小さくない方)を選んでください
563デフォルトの名無しさん:2007/07/18(水) 11:59:00
そもそも既に入っているのに入れようとする馬鹿が多すぎる。
サービスパックに何が含まれているかぐらい開発者なら確認するのが当たり前だろう。
564デフォルトの名無しさん:2007/07/19(木) 01:19:44
日本語だとダウンロード場所にないから困る
('A`)なにこの 糞サイト
565デフォルトの名無しさん:2007/07/22(日) 06:48:37
質問です
D3DERR_NOTAVAILABLEってエラーが出た場合、その環境は切り捨てるしかないんですかね
DelphiのQuadrupleDってコンポーネントでやってるんで
具体的に何がまずくて出てるかは分からないんですが
566デフォルトの名無しさん:2007/07/22(日) 10:16:53
SDK入れてるんならDirectXコンパネでデバッグランタイムにすると
何か情報得られるかもね。
567デフォルトの名無しさん:2007/07/22(日) 23:10:01
すいません質問させてください。
二種類のXファイルを表示したいのですが、うまくいきません。
具体的には背景と、キャラクターです。
D3DXLoadMeshFromX(_T("back01.x")1のように、一種類のXファイルを表示させることはできるのですが
複数になるとわかりません。
568デフォルトの名無しさん:2007/07/23(月) 01:34:18
まずはD3DXに頼るのをやめて自前で描画することから始めましょう。
569デフォルトの名無しさん:2007/07/23(月) 07:43:04
【派遣ネガティブ根性チェック】

3つ以上、チェックがつけばアナタの性格はひん曲がっており、
ネガティブ負け組派遣人生を歩んでいます。

□派遣先正社員の作った糞開発ツールはたとえ腐っててもマンセーして使う
□派遣先の人事権のある社員の意見はたとえ間違っていてもマンセーする
□仕様とは正社員から口伝されるものだ
□耳で聞いた仕様を正確に覚えていないのは自分の責任だ
□昼食は必ず派遣先の社員と行くべきだ
□自分の仕事で問題が発生しても解決するのは派遣の仕事ではない
□派遣先から「いつまでもここで仕事してくださいね(安い金でw)」と言われて嬉しい
□自社で仕事なんてできるわけがない
□派遣労働の問題点の話題が出ると感情剥き出しにして反論する
□派遣労働の問題を指摘する人は嫌いだ
□派遣先には仕事だけでなくプライベートについてもグイグイ引っ張って欲しい
□奢ってくれる派遣先正社員を尊敬する
□自分の月額金額を知らないのは当然だ、単金を聞いてはいけない
□派遣先正社員より自分の生涯収入が低いのは当然だ
□チビは派遣先にかわいがってもらいやすいから派遣には有利だ
570デフォルトの名無しさん:2007/07/24(火) 12:47:54
ManagedDirectXを用いてC#を使って書いています。
コンパイラはVS2005です。
XVIDコーデックのaviファイルを再生したいのですが、その方法が分かりませんでした。
AudioVideoPlaybackを使えば良いかと思い、

AudioVideoPlayback.Video video = new Video("hoge.avi") ;
video.Play() ;

と書いてみたのですが、初期化の時点でDirectXExceptionが発生してしまいます。
良い方法がありましたら、御教授ください。
571デフォルトの名無しさん:2007/07/26(木) 13:58:49
DirectX End-User Runtimes をダウンロードしたのですが
インストールするにはファイルの中のDXSETUPを起動させればいいんですよね?
かなり根本的なことですがプログラムの一覧にも表示されず
本当にインストールしたのか?といった感じで・・・
572デフォルトの名無しさん:2007/07/26(木) 14:12:15
まずはプログラムの作成と何の関係があるのかを明確にせよ。
573デフォルトの名無しさん:2007/07/26(木) 14:26:04
板違い
574デフォルトの名無しさん:2007/07/28(土) 12:19:56
DirectX Sample Browserの日本語化パッチありませんか?
575デフォルトの名無しさん:2007/07/28(土) 12:27:52
SampleInfo.XMLを弄ったら内容変えられそうだけど日本語通らない
576デフォルトの名無しさん:2007/07/28(土) 12:31:04
サンプルの日本語化って需要あるのか
577デフォルトの名無しさん:2007/07/28(土) 13:02:55
ないだろう
578デフォルトの名無しさん:2007/07/28(土) 21:17:37
おまいら
LPDIRECT3D9
LPDIRECT3DDEVICE9
ってどこで宣言してる?
サンプル通りにグローバル変数にするとファイル分割するときに困る
かといってローカル変数だと関数つくったときに引数が無駄に増えて鬱陶しい
579デフォルトの名無しさん:2007/07/28(土) 22:56:34
>>578
引数で渡さないとロストしたときに引っ掻ける場所がないだろ?
それを管理しようとすると死ぬぞ
素直に引数で渡せば問題にならない
580名無しさん@そうだ選挙に行こう:2007/07/29(日) 00:38:42
ラッパー作って、シングルトンのクラスに持たせる。
まあ、グローバルみたいなもんだが
581名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:15:16
>>580
それだとアクセスするたびにロスト調べて
ロストしてたら復旧するかスルーする仕組みにしないとバグるな
ロスト時完全スルーの構造にすると思いもかけない関数が動かなくてびびったりびびらなかったり

結局、引数が増える以上に面倒なもん管理しなくちゃいけないことになる

ところでなんで引数が多いことをまずいとおもうわけ?
MSの関数みた?あんなのだって普通の状態だと思うぜ
必要だからあるんだしね

引数は多くてもかまわないと思う(限度はあるだろうけどw)
582名無しさん@そうだ選挙に行こう:2007/07/29(日) 01:21:33
Windowsの場合、引数がレジスタにのるわけじゃないから、
少ないから早くなるってわけじゃないんだっけか。
583名無しさん@そうだ選挙に行こう:2007/07/29(日) 07:53:42
コンテキストを引数にしたくない理由。
たらいまわしになるから。
AからB、BからC、CからDと関数を呼んでいる場合に、Dでコンテキストが必要となったとき、
A、B、C、D全部に、引数が追加。
これが、最初から全部わかっていれば、まだいいが、
小さな関数が増えるたびに、引数に追加される。
これが、どうもいや。

たぶん、>>581のケースでは関係ないと思う。

別に引数を減らしたいわけじゃないです。
まあ、気にしないで。
584名無しさん@そうだ選挙に行こう:2007/07/29(日) 08:08:18
でもベクトルを引数にするならパラメタ(二次元の位置ベクトルのパラメタx,y)
を指定するんじゃなくてベクトルそのものを渡したいとか
まとめられそうなパラメタ(例えばprevとnow)は1つにしたい
そういう意味で引数はなるべく減らしたい
585名無しさん@そうだ選挙に行こう:2007/07/29(日) 08:33:53
>>584
そんなの気にしてたら、しまいにゃ引数全部void*になるよ

必要なものは端折らないってのが俺のやり方だけどな
実装の手間なんかこんなところで解決するもんじゃないと思うよ俺は
階層深いったって直しても10〜20箇所でしょ?知れてるじゃん
586名無しさん@そうだ選挙に行こう:2007/07/29(日) 09:00:38
実装よりは設計の問題かな
端折るんじゃなくて必要以上に見せないって考え
渡される側に必要な情報でも、渡す側は別に知らなくてもいい情報って結構あるでしょ?
それを考慮した上でも引数が多くなるなら仕方ないって諦めてるよ
587名無しさん@そうだ選挙に行こう:2007/07/29(日) 09:06:34
でもあくまで素人の意見だからそんな事分かってるよと思われるかもしれませんね…
588名無しさん@そうだ選挙に行こう:2007/07/29(日) 11:15:14
>>586
だったらD3DDEVICEなんてなんで隠す必要あるの?
もろインターフェースじゃん
むしろだせよ

お前テキトーいって誤魔化してネェ?
589名無しさん@そうだ選挙に行こう:2007/07/29(日) 12:43:31
構造体なりClassなりで渡せばいいだろ。
590名無しさん@そうだ選挙に行こう:2007/07/29(日) 16:44:37
>>589
構造体やクラスに梱包してしまうと
今度その構造体やクラス無しでは動かないもんになるのが嫌だな
でも、中身の仕様はそんな構造体やクラスは必要無いのに実装的にそんなもんが必要になってしまうのが嫌
このクラスだけ移して別のプログラムでそのまんま使えるなら使いてぇし
なるべくそのプロジェクト特有のもんを入れたくない
汎用性全くなくなるし

って感じだな
591名無しさん@そうだ選挙に行こう:2007/07/29(日) 17:07:32
D3DMATRIXとかD3DVECTORとか使うだけでDirectXSDKが必要になるのが鬱
592デフォルトの名無しさん:2007/07/30(月) 00:53:12
全然詳しくないので質問させてください。
いつも仕事中にWebばかり見てる派遣クンが
「DirectXがプログラムどおりに動かない原因を調べるのは僕の仕事ではありません。」
と言っています。
彼のDirectXプログラムが動かないのを調べるのは誰の仕事なのでしょうか?
593デフォルトの名無しさん:2007/07/30(月) 01:07:26
何度も同じネタを出しても何一つとして面白くない。
594デフォルトの名無しさん:2007/07/30(月) 01:10:37
最後の文が微妙に違うな
連体格の「の」が多すぎ
595デフォルトの名無しさん:2007/07/30(月) 01:10:48
実は月1で発動するスクリプトなのかな?
596デフォルトの名無しさん:2007/07/30(月) 05:45:25
DirectXと派遣コピペって何が関係あるの?
単なる荒らしか?
3D関係のところが、コピペされているようだが
597デフォルトの名無しさん:2007/07/30(月) 10:52:46
>>590
特化することを恐れるな。
汎用的を目的に設計されたものは、どこに行っても全く使えないものになるぞ。
598デフォルトの名無しさん:2007/07/30(月) 10:59:48
>>596
派遣がDirectXの仕事すると問題が多いからじゃね?
599デフォルトの名無しさん:2007/07/31(火) 00:53:16
久々に以前書いたプログラムを弄っていたらトラブったので質問させてください。

DirectInputに関してなのですが、
IDirectInputDevice8::GetCapabilities()
がアクセス違反例外をはきやがります。

出力されるエラーは
ReportID=1
****.exe の 0x77e3d6ee で初回の例外が発生しました : 0xC0000005: 場所 0x00000002 を読み込み中にアクセス違反が発生しました。 。
****.exe の 0x7c812a5b で初回の例外が発生しました : 0x00000006: ハンドルが無効です。。

の3行です。
プログラムは落ちないし、戻り値もS_OKで正常、
コントローラもちゃんと効き、ゲームも動いているのですが、どうにも気味が悪いです。
呼び出し前のDIDEVCAPSのdwSize初期化も行っています。
原因分かる方、この手の問題が起こるケースやパターンが思い付く方いらっしゃいましたらお願いします。

環境
OS: WinXP Pro
CPU: CoreDuo 1.83Ghz
Mem: 1Gbyte
VC++2003 + DirectX9.0bSDK
パッドはエレコムのPSのパッドコンバータ(JC-PS202USV)
600デフォルトの名無しさん:2007/07/31(火) 01:43:20
>>599
とりあえず手元にあるパッドでデバイス作ってGetCapabilities呼んでみたけど
例外は発生してなかった。

SEHはDLL内部でちゃんと捉えて後処理されてるみたいだから
別に気にしなくていいんじゃないか
601デフォルトの名無しさん:2007/07/31(火) 20:48:00
かなり久しぶりにプログラミングをしようと思うんだが、
DirectX10って6からどのくらい変わった?

てかSDKどこだw
602デフォルトの名無しさん:2007/07/31(火) 21:57:56
>>600
レスありがとうございます。
この例外がDLL側の問題で起きているならいいのですが、
自分が書いたコード上に問題が潜んでいるのであれば、
潜在的に今後バグが発生する危険性を抱えている事になるので、その辺が気になってます。
603デフォルトの名無しさん:2007/07/31(火) 22:07:45
>>602
DirectXのサンプルで使ってるやつないの?
604超初心者:2007/07/31(火) 22:20:31
学校の製作が家でできません・・・・・・。

環境:VC++6.0

なにやらDirectXSDKをダウンロードするとかどうとかちんぷんかん・・・・・・泣
誰か助けてください。
ちなみに「ディレクトリ」で[C:\mssdk\include][c:\mssdk\Lib]と学校ではこれやって<ddraw.h>したらできたのにできない・・・・・・なぜですか?
605デフォルトの名無しさん:2007/07/31(火) 22:28:49
>>601
6からならもう別物と考えろ。
606デフォルトの名無しさん:2007/08/01(水) 00:21:43
>>603
サンプルの存在を忘れてました・・・ということで、
サンプルのActionBasic.exeを実行してみたところ

ActionBasic.exe の 0x7c812a5b で初回の例外が発生しました : Microsoft C++ exception: MapException @ 0x0012ee7c。
ActionBasic.exe の 0x7c812a5b で初回の例外が発生しました : Microsoft C++ exception: MapException @ 0x0012ee80。

例外のメッセージこそ違うものの、2つの例外が発生。
どうやら例外は無視して良いみたいですね。ありがとうございました。
607デフォルトの名無しさん:2007/08/01(水) 09:00:21
>>604
DirectXSDK を入れればいい

これで分からんならPCの勉強しろ…
九九が分からないのに微積を教えろって言ってるようなレベルだぞそれ…。
608デフォルトの名無しさん:2007/08/01(水) 10:25:23
違うな、漢字の読み方が判らないのに朗読の仕方を教えろと言うようなもんだ。
609デフォルトの名無しさん:2007/08/01(水) 11:49:02
割り算を知らないのに合同式教えろって言ってるようなもんだ
610デフォルトの名無しさん:2007/08/01(水) 14:22:47
知りもしないものを説明出来る奴がいたとしたらそいつは詐欺師の才能がある。
611デフォルトの名無しさん:2007/08/01(水) 18:39:46
DirectDrawって消えたのかw
612yd:2007/08/01(水) 22:07:05
化石人類現る
613デフォルトの名無しさん:2007/08/03(金) 00:50:58
夏厨からの質問ですorz

エロゲを買ったところディスクを入れても反応しなかったので
調べたところ、グラフィックデバイスメモリが64MB以上必要だと書いてあった
のでDirectX診断ツールのデバイスのメモリ合計を見ると16MBで足りてなかった
のですがこれ増やす事って可能なんですか?やり方教えてください!
614デフォルトの名無しさん:2007/08/03(金) 00:52:16
要求を満たす新しいグラフィックカードを買うだけ。
615デフォルトの名無しさん:2007/08/03(金) 00:56:07
>>613
どんだけ古いPCなんだよw
616デフォルトの名無しさん:2007/08/03(金) 01:04:43
ここはプログラム板
617デフォルトの名無しさん:2007/08/03(金) 02:32:01
つまり意訳すると・・・、
GPUのVRAMを、メインメモリ使って仮想メモリ化したものを作ろうとしているんだけど、良いアイデアない?
って事かw
618613:2007/08/03(金) 03:34:18
そういうことです!
どうかよろしくお願いします!
619デフォルトの名無しさん:2007/08/03(金) 04:30:56
グラボの開発お疲れ様です。
620デフォルトの名無しさん:2007/08/03(金) 07:00:41
>>617
は?まったく理解できない
何いってんの?
621デフォルトの名無しさん:2007/08/03(金) 08:20:30
自分でプログラムを組んでいるのなら、節約して利用するだけ。
他人のプログラムなら板違い。
それ以上でもそれ以下でもない。
622デフォルトの名無しさん:2007/08/03(金) 15:43:32
いた違いさらしage
623デフォルトの名無しさん:2007/08/03(金) 22:33:34
デバドラ組めばいいだけだろ?
624デフォルトの名無しさん:2007/08/06(月) 19:03:48
増やす方法は確かあったよなってこの板じゃ無理か
625デフォルトの名無しさん:2007/08/09(木) 14:02:09
Xファイルについて質問です。
よくXファイルはフォーマットが洗練されていないということで
D3DXで読み込めるものと完全には読めないものがあるとききますが、
D3DXで完全に読めるように正規化させるツールとかはないのでしょうか?
626デフォルトの名無しさん:2007/08/09(木) 18:05:52
例外フォーマットを完全に捕らえられるツールってそれどこの魔法のアイテム?
読み込めないのは世の中のエクスポータが腐ってるのが多いってだけで
Xファイルの不出来とはあんま関係ないよ。
627デフォルトの名無しさん:2007/08/09(木) 21:28:36
Xはただのコンテナなんだから、エクスポータが拡張データを入れた場合、
D3DXに頼らず自分で読み込む必用がある。

というか、読み込み部分ぐらい自分で作れよ。
628デフォルトの名無しさん:2007/08/10(金) 07:00:18
過去の遺産DirectDrawについてなんだけど、
今MFCで画像ビューアつくろうとしてて、(ウィンドウモードで)
各画像が8ビットグレー階調だったり24ビットRGBだったりするので、
bmpファイル読み込んだとき、ビット数をチェックして、
プライマリサーフェイス作成時のDDSURFACEDESC構造体で

DDSURFACEDESC ddsd;
ddsd.dwSize=sizeof(DDSURFACEDESC);
ddsd.dwFlags=DDSD_CAPS | DDSD_PIXELFORMAT;
ddsd.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE;
ddsd.ddpfPixelFormat.dwflag=DDPF_PALETTEINDEXED8←8ビットグレーの場合

ってやってCreateSurfaceってやるとプライマリサーフェイス作成時に失敗する。
もしかしてプライマリサーフェイスに任意にddpfPixelFormatを設定することはできない?
629デフォルトの名無しさん:2007/08/10(金) 07:35:55
>>628
この時期そんなもん使ってるならその辺もろもろ自分でなんとかしろといいたくなる
初心者スレだから手段を間違ってるかもしらんからあえて聞くけど
DirectDrawなんてなんで使ってるの?
一応動くけど情報なんてほとんど無い状態なんだけど?
その辺の不具合を全部理解しててなお使うっていうならもう初心者じゃないので
別のスレいって叩かれてこいw
630デフォルトの名無しさん:2007/08/10(金) 17:16:58
>>628
ウィンドウモードのプライマリはディスプレイと同じじゃないとダメだったような。
バックバッファに作ってから、Lockしてピクセルを手動で変換がいいんではないか?
正直忘れた。
そんなんならDIB使え。
631デフォルトの名無しさん:2007/08/10(金) 18:45:00
>>628
MFCで画像ビューワ程度ならGDIで作ったほうがいいよ〜
632デフォルトの名無しさん:2007/08/11(土) 00:50:33
DirectX 10で作ったプログラムを9で動かすのは簡単でしょうか?
逆に9で作ったものを10で動かす場合に注意すべきと事かありますか?
633デフォルトの名無しさん:2007/08/11(土) 04:12:00
まずは簡単の定義を明確に示せ。
634デフォルトの名無しさん:2007/08/11(土) 05:26:59
ブルワーカーくらいの簡単さでお願いします。
635デフォルトの名無しさん:2007/08/11(土) 12:51:00
>>634
やり方は簡単でも続けるのが難しいところは変わらんなw
636デフォルトの名無しさん:2007/08/11(土) 13:30:16
すみません質問です。
ウインドウモードで三角ポリゴンを20枚を画面に表示してるんですが、
IDirect3DDevice9::Presentが25msも掛かります。
ちなみにPresentationIntervalはD3DPRESENT_INTERVAL_IMMEDIATEにして、
垂直帰線間隔を待たないようにしています。
どうしてこんなに遅いのか原因がまったく分かりません。
637デフォルトの名無しさん:2007/08/11(土) 13:32:32
あれじゃね。
MatrixG200つかってるとか。
638デフォルトの名無しさん:2007/08/11(土) 13:40:26
リファレンスラスタライザとか?
639デフォルトの名無しさん:2007/08/11(土) 14:12:14
>>636
まあせめて環境書いてもらわないと何とも言えないんだけど、
D3DPRESENT_INTERVAL_IMMEDIATEってすぐに戻るとは限らないよ。

Direct3D 9世代だと、画面のフリップは最大3回までしかキューイングできないことになってるので、
既に3回分キューされてると1回フリップされるまで待たされる。
まあそこまで高度な話じゃなくてしょぼいミスとかヘンテコハードの可能性の方が高い気がするけどナー
640636:2007/08/11(土) 14:37:57
一応デバイスはHALで頂点処理もハードウェア処理で動いてます。
ですがものすごく重いです、FPSは40前後しか出ません。

アプリケーションウィザードの急須はちゃんと表示されてD3DPRESENT_INTERVAL_ONEで
FPSもちゃんと60出てました。

すみません肝心な環境を書いていませんでした。

PCは2002年に購入したノートです。
CPU Intel PentiumIII Mobile 1000MHz
メモリ512MB
グラフィックはオンボードの
ATI Rage Mobility-M6C VRAM 8MB
画面 1024*768 (16bit) (60Hz)
DirectX9.0c

2日間何度も見直したのですが原因が突き止められず悩んでいる状態です。
641デフォルトの名無しさん:2007/08/11(土) 15:03:25
そりゃあんたのソースがどっかおかしいだけだろ・・・
642デフォルトの名無しさん:2007/08/11(土) 15:05:16
テクスチャを何枚も使っててVRAMが足りてないとか。
643デフォルトの名無しさん:2007/08/11(土) 15:10:01
>>640
三角ポリゴンを20枚ってのが常識的なサイズと常識的な実装なら
その環境でも60FPSぐらいは出るはずかな。
どこかヘマしてるような気はする。

2日悩んで分からなかったってことは多分3日悩んでも4日悩んでも
あんまり変わらんかもね。
かといって掲示板にエスパー期待する方がもっと確率低いけど。

2日バイトしてバイト代を使って誰かにデバッグしてもらうとかどうなん?
最近Q&Aサイトとかでポイントをやりとりできるところあるじゃん。
644デフォルトの名無しさん:2007/08/11(土) 16:25:43
VRAMオーバーしてないと思うんですけど。
ウインドウサイズは640*480で、使用しているテクスチャは256*256が3枚だけです。
それと深度バッファーをバックバッファー以外にテクスチャと同じサイズと枚数で作成して持っています。
最初は(今でも)自分のソースを疑ったんですが、IDirect3DDevice9::Presentだけをコメントアウトして
5ms間隔にしたらちゃんと200FPSでていました。

深度バッファの切り替えをヘルプをみながら初めて組んだのでこのあたりが疑わしいのですが、
たったポリゴン20枚で遅くなるとも考えられないので。
645デフォルトの名無しさん:2007/08/11(土) 16:48:42
グダグダ言わずにとっとと再現性のあるソースを出せよ。
646デフォルトの名無しさん:2007/08/11(土) 16:54:16
ソース出せばとっくに解決してるかもしれない程度の話なのに、
なぜそこまでソースを出し渋るのか。
647デフォルトの名無しさん:2007/08/11(土) 19:17:29
説明が抽象的すぎるんで、答える方も>>641みたいな抽象的なことしか言えない。

問題が再現する最低限のコード(ミニマムコード)を提示してみては?
648デフォルトの名無しさん:2007/08/11(土) 19:36:32
すみません、今日は疲れたのでもう休みます。
できれば明後日にでも問題箇所のコード載せますので、そのときはよろしくお願いします。

皆さんアドバイスありがとうございました。
649デフォルトの名無しさん:2007/08/11(土) 19:47:47
こんな時間に疲れたとか言っちゃえる奴はもう来なくて良いよ。
650デフォルトの名無しさん:2007/08/11(土) 20:21:53
>>648
お前みたいな奴はプログラム向いてないと思うよ。
そんな糞コードアップしたって誰もみねーよ馬鹿!


651デフォルトの名無しさん:2007/08/11(土) 22:49:36
>>628
GDI+つかっとけ

>>649-650
スレタイ
652デフォルトの名無しさん:2007/08/12(日) 16:18:17
>>651
650も超初心者だから。
653デフォルトの名無しさん:2007/08/12(日) 16:23:45
>>652
なるほど
答える方も超初心者用なのでお互い様ってことだな
質問する方も答える側が超初心者であることを心するべきと
654デフォルトの名無しさん:2007/08/12(日) 16:26:53
あれ?今日ソースうpしてくれるんでないんか?
655デフォルトの名無しさん:2007/08/12(日) 18:00:22
ほっとけや
ソースでないから、こちらが損するわけじゃねえ
656デフォルトの名無しさん:2007/08/13(月) 00:17:59
DirectXをダウンロードできません!!
どうすればいいれしょうか???
657デフォルトの名無しさん:2007/08/13(月) 00:22:22
できません、というからには何かやってみたと思うんだけど、それを説明してみ?
658デフォルトの名無しさん:2007/08/13(月) 00:39:57
>>656
googleにDirectXって入れて検索してみろ
659デフォルトの名無しさん:2007/08/13(月) 00:42:51
腕を大きく振りかぶり、数字の2を描くように、だぁぁぃれぇぇくぅぅぅとぉぉぉ!えっっっっっくっっすぅぅぅぅ!!!ってやってみたんですが
ロードできませんでした(´・ω・`)
660デフォルトの名無しさん:2007/08/13(月) 02:29:17
最後にコマネチみたいなポーズがいるんじゃね?
661デフォルトの名無しさん:2007/08/13(月) 03:20:36
30人以上の眼前でやらないとダメなんじゃなかったっけ?
662デフォルトの名無しさん:2007/08/13(月) 03:21:23
俺はニコニコ動画にアップしないと駄目って聞いたけど
663デフォルトの名無しさん:2007/08/13(月) 06:18:30
ありがとう。
今日アルタ前でやってみる。
664デフォルトの名無しさん:2007/08/13(月) 12:22:14
できました
665デフォルトの名無しさん:2007/08/13(月) 22:50:04
DirectXって、
音楽ファイルの要所要所にマークをつけて、再生しながら、
プログラムの特定ポイントとそのマーク間で同期をとる。
なんてことできますか?
666デフォルトの名無しさん:2007/08/13(月) 22:56:13
XAudio
667デフォルトの名無しさん:2007/08/13(月) 23:06:21
DirectX云々以前に、プログラムを作るのは自分だということを忘れている奴が多すぎる。
668デフォルトの名無しさん:2007/08/13(月) 23:12:59
プログラムを作るのは派遣クンです
669デフォルトの名無しさん:2007/08/13(月) 23:24:56
既存のAPIを使わず、自分でそういうのを作れるんでしょうか?
音鳴らすのも、関数にファイルセットするだけとかじゃなくて、
もうちょっと低レベルなとこまで弄れるということですか?

Javaしかやったことない上、プログラマじゃなくてミュージシャンなので、
お手柔らかにお願いします。
670デフォルトの名無しさん:2007/08/13(月) 23:33:39
いじれる
Java でもそれくらいはいじれる
671デフォルトの名無しさん:2007/08/14(火) 00:55:56
MIDIで数値入力した方がイメージに近いんじゃないの?
672デフォルトの名無しさん:2007/08/15(水) 00:39:12
DirectX9のC++の関数やフラグのリファレンスをWebから見れるサイトありませんか?
こんな基本的なことが、>>1とかMSのページから探してもどうしても見つからない…。
DX8とかC#のサンプルは見つけたんだけど。
673デフォルトの名無しさん:2007/08/15(水) 01:58:18
674デフォルトの名無しさん:2007/08/15(水) 02:01:55
次に、>>672は、「日本語のドキュメントをくれ」という
675デフォルトの名無しさん:2007/08/15(水) 02:46:01
それは流石にないだろ・・・
676デフォルトの名無しさん:2007/08/15(水) 03:46:18


DirectX9のC++の関数やフラグ

677デフォルトの名無しさん:2007/08/15(水) 09:46:59
PerfKit 5.0 Installer for 32-bit Windows XP/2000 (Version 5.00.0803.1415)
をインストール中にフリーズするけどおまいら大丈夫?
678デフォルトの名無しさん:2007/08/15(水) 12:37:12
>>673
dです
679デフォルトの名無しさん:2007/08/15(水) 13:07:44
AudioVideoPlaybackってアルファチャンネルの設定は出来るでしょうか?
出来ない場合、どのクラスを使って実現するのが早いでしょうか?
使ってるのはDirectX9です。
680デフォルトの名無しさん:2007/08/15(水) 14:11:36
それMDXじゃないの?
このスレってManagedの話もOKなんだっけ?
681デフォルトの名無しさん:2007/08/15(水) 14:58:00
MDXスレは別にあるから誘導して終わり。

Managed DirectX vol.2
http://pc11.2ch.net/test/read.cgi/tech/1061285378/
682デフォルトの名無しさん:2007/08/15(水) 15:17:20
確かにスレタイにもテンプレにも言語指定ないな
初心者であれば言語は問わない、ってことなのかな
683デフォルトの名無しさん:2007/08/15(水) 18:06:23
だから専用のスレがあるんだから誘導すればいいだけだろ。
いったい何を言ってるんだ?
684679:2007/08/15(水) 18:46:05
ありがとうございました。そちらで質問します。
685デフォルトの名無しさん:2007/08/15(水) 18:46:13
じゃあ、C++のDirectXだって専用スレがあるのに、
MDXは誘導して何でC++は誘導しないんだ?
686デフォルトの名無しさん:2007/08/15(水) 18:49:05
ウゼェ
687デフォルトの名無しさん:2007/08/15(水) 18:53:43
Managedは誘導してUnmanagedは誘導しないのなら、
スレタイか>>1あたりにC/C++限定なりの旨を書いておくべきでは?
688デフォルトの名無しさん:2007/08/15(水) 18:57:36
くだすれDirectX(超初心者用) part.2
http://pc11.2ch.net/test/read.cgi/tech/1173535400/
【C++】 DirectX初心者質問スレ Part13 【C】
http://pc11.2ch.net/test/read.cgi/tech/1182351826/
[DirectX][.NET][XBOX360][C♯C#] XNA Game Studio
http://pc11.2ch.net/test/read.cgi/tech/1159367275/
【PureVideo】DirectX Video Acceleration【AVIVO】
http://pc11.2ch.net/test/read.cgi/tech/1178285897/
Managed DirectX vol.2
http://pc11.2ch.net/test/read.cgi/tech/1061285378/
DirectX総合スレ (Part7)
http://pc11.2ch.net/test/read.cgi/gamedev/1179516297/
【簡単にゲーム作成言語】BASIC+DirectX=LGP
http://pc11.2ch.net/test/read.cgi/gamedev/1034694683/
DirectXとOpenGL、ゲーム作るならどっち?
http://pc11.2ch.net/test/read.cgi/gamedev/1009941920/
DirectXのサンプルをしゃぶりつくす!
http://pc11.2ch.net/test/read.cgi/gamedev/1032657642/
2D!!のDirectXをやってみるかもな
http://pc11.2ch.net/test/read.cgi/gamedev/1005133911/
689デフォルトの名無しさん:2007/08/15(水) 20:02:52
現在ダウンロードセンターから落とせるSDKを一通り確認してみたのですが
d3drm.hは存在するものの、d3drm.lib が見当たらず静的リンクが不能な状態です。
このlibファイルが存在するSDKというのは、どうすれば入手できるでしょうか?
690デフォルトの名無しさん:2007/08/15(水) 20:08:23
DirectX8世代の前のライブラリだよねそれ。
そもそもなんでそれ使うの?
691デフォルトの名無しさん:2007/08/15(水) 20:32:32
中古書籍でCD付きの物を探す
Cマガジンを全号買ってる友人にCDを借りる
692デフォルトの名無しさん:2007/08/15(水) 20:54:38
>Cマガジンを全号買ってる友人

こんな友人いたら国宝級だな
693デフォルトの名無しさん:2007/08/15(水) 21:56:29
Cマガあの薄さであの値段だしな
694デフォルトの名無しさん:2007/08/15(水) 22:50:19
過去形にしろよ
695デフォルトの名無しさん:2007/08/15(水) 22:58:09
DDCOLORKEY型が宣言できないんだけど何で?
696デフォルトの名無しさん:2007/08/15(水) 23:11:31
DDCOLORKEYがどこで定義されているかくらいは確認した上で聞いているんだよな?
697デフォルトの名無しさん:2007/08/15(水) 23:22:35
もしやDirectX8?
SetColorKeyも使えないみたいだし・・・
698デフォルトの名無しさん:2007/08/15(水) 23:37:55
DD、で始まってるんだから少なくともDirectX7以前だろ
699デフォルトの名無しさん:2007/08/16(木) 10:55:08
DirectDraw(笑)
700デフォルトの名無しさん:2007/08/16(木) 12:12:09
Direct泥汚
701695:2007/08/16(木) 16:13:54
そのDirectDrawなんですが、
bmpファイル(24ビットフルカラー)
を透過させて、かつアルファブレンドで半透明に表示したくて
いろいろと調べて回ったわけです。
ですが、スプライトに透過色を与える方法が見つかりません。
なのでDirectDrawならできるんじゃないかと思ったのですが、
あれば、スプライトに透過色を指定する方法を教えてください。
お願いします。
702デフォルトの名無しさん:2007/08/16(木) 16:19:31
カラーキーでパンチスルーなら出来るが半透明表示は
自分で1ピクセルずつ計算して描くしかありません。
それがDirectDrawのお力です。
703デフォルトの名無しさん:2007/08/16(木) 16:39:27
DirectDraw全盛の頃は、アルファブレンドが出来ることをウリにした
ライブラリが結構あったよな

ソース覗いてみたらピクセルフォーマット毎に全分岐を書き下したりしてて
よくやるなあと思ったわ
704デフォルトの名無しさん:2007/08/16(木) 17:38:10
yanesdk2ndでも見とけばOK
705695:2007/08/16(木) 18:58:12
思い切って参考書買ったらテクスチャが原因だった;
色指定もできるし、透明度も変えれるしマンセーだ。
D3DXCreateTextureFromFileEx
706デフォルトの名無しさん:2007/08/16(木) 21:03:04
>>705
>>701とは別の人?DirectDrawなら出来るとか言ってたのに
D3D使ってるなら初めからそう書くべきだと思うが
707デフォルトの名無しさん:2007/08/17(金) 18:02:16
struct THING
{
D3DXVECTOR3 vecPosition;
};

D3DMATRIX matWorld; で、

D3DXMatrixTranslation(&matWorld,Thing[2].vecPosition.x,Thing[2].vecPosition.y,Thing[2].vecPosition.z); が

error C2664: 'D3DXMatrixTranslation' : 1 番目の引数を 'D3DMATRIX *' から 'D3DXMATRIX *' に変換できません。
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。

と返されてしまうのですが、(&matWorld,Thing[2].vecPosition.x,Thing[2].vecPosition.y,Thing[2].vecPosition.z)ではいけないのでしょうか?
708デフォルトの名無しさん:2007/08/17(金) 18:11:47
いけません
709デフォルトの名無しさん:2007/08/17(金) 19:56:40
D3DXMATRIXを使えばいいんじゃないの
710デフォルトの名無しさん:2007/08/18(土) 03:02:45
いけません
711デフォルトの名無しさん:2007/08/18(土) 11:46:44
キャラクターの移動とかって、ゲームループにそのまま書くと環境によって歩く速度変わりますよね?
ああいうのってどうやって固定させるんですか?
712デフォルトの名無しさん:2007/08/18(土) 12:11:45
移動速度とは移動回数と移動距離を掛け算したものである
つまり、時間あたりの移動回数と移動距離を固定すればよい
713デフォルトの名無しさん:2007/08/18(土) 12:49:49
メインループとゲームのアップデートを切り分けるべき

例えばゲームを60FPSとするなら1秒間に60回だけメインループから
アップデート関数を呼ぶという感じに作る
714デフォルトの名無しさん:2007/08/18(土) 23:09:19
>>712-713
ありがとう。その方法でやってみます。
715デフォルトの名無しさん:2007/08/19(日) 00:01:28
712の方法じゃある程度以上の大きさのゲーム作るの無理だから
716デフォルトの名無しさん:2007/08/19(日) 00:38:23
問題は大きさじゃないね
717デフォルトの名無しさん:2007/08/19(日) 01:04:04
問題は何の大きさを言っているかだね
718デフォルトの名無しさん:2007/08/19(日) 01:35:25
いかなる大きさも問題じゃないよ
719デフォルトの名無しさん:2007/08/19(日) 07:39:46
DrawPrimitiveをDrawIndexedPrimitiveに変えて同じものを描画したら
フレームレートが半分くらいになった…こういうものなの?Indexedの方が速いのかと思ってた。
720デフォルトの名無しさん:2007/08/19(日) 08:19:00
描画するポリゴンが少ない場合はそうなるかもね
721デフォルトの名無しさん:2007/08/19(日) 09:42:59
頂点1万、インデックス2万個ぐらいなんだけど少ないかな?
オンボのRadeon X1200だと30fpsぐらいしか出ない。
722デフォルトの名無しさん:2007/08/19(日) 10:07:42
その程度でAPI変えてFPSが1/2ってのはおかしくないか?
723デフォルトの名無しさん:2007/08/19(日) 11:46:06
SkinnedMeshのIndexedって設定とは違うんだっけ?
これだとIndexのが微妙に速いんだけど?
724デフォルトの名無しさん:2007/08/19(日) 13:38:46
Meshは使ってないです。
やはりおかしいのかね…。調べてみます。
725デフォルトの名無しさん:2007/08/19(日) 14:47:23
>>724
インデックス順序の最適化はしてるの?
726デフォルトの名無しさん:2007/08/19(日) 17:18:10
そもそも、Indexだと何故速いのかを理解してないんじゃないか?
GPUの頂点キャッシュは16頂点分くらいしかないから、その間に
頂点の再利用をしなかったら意味がないよ。
727デフォルトの名無しさん:2007/08/19(日) 17:57:08
>>725-726
あー、なるほどなんとなくわかった。家帰ったら試してみます。
728デフォルトの名無しさん:2007/08/20(月) 03:19:11
PS3なんて頂点キャッシュの数は・・・(ry

涙も出ない。
729デフォルトの名無しさん:2007/08/20(月) 10:34:43
直接バックバッファに書き込むのと、
D3DFMT_A16B16G16R16Fで作成したテクスチャに書き込んでから、
テクスチャをバックバッファに書く(この時間は含まない)のでは、
やはり、直接バックバッファに書き込む方が速いですか?
また、どれくらい違いが出るのでしょうか?
730デフォルトの名無しさん:2007/08/20(月) 10:40:01
何故自分で試さないのでしょうか?
731デフォルトの名無しさん:2007/08/20(月) 10:44:39
前者の方が断然速い。
732デフォルトの名無しさん:2007/08/20(月) 11:00:04
常にそうとも限らんけどな

まあ自分で試せばいいことだ
733729:2007/08/20(月) 11:06:24
バックバッファと同じサイズのテクスチャを用意し適当なポリゴンをたくさん描画してみたところ、
テクスチャへの描画の方がかなり遅いことが分かりました。
ども。
734727:2007/08/21(火) 01:18:38
あー、やはりダメだ速くなんないや。

DrawIndexedPrimitive( D3DPT_TRIANGLESTRIP, BaseVertexIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount );

最初常にMinIndexが0、NumVerticesが全頂点数になってて効率最悪だったので
実際使われているMinIndex、NumVerticesをストリップごとに求めてみたけど速度変わらず。

Indexedは頂点バッファの省メモリ化のためにやるもんで、スピードは犠牲になるってことか。
735デフォルトの名無しさん:2007/08/21(火) 01:33:36
STRIPだとIndexにしても、あまり意味ないよ。
TRIANGLELISTでこそ意味がある。

短いSTRIPをたくさん描画するよりも、TRIANGLELISTで一発で
描画する方が速い場合に意味がある。
(面積0のポリゴンでSTRIPを繋いだ方が多くの場合で速いが)
736デフォルトの名無しさん:2007/08/21(火) 04:12:38
勉強で3Dの格闘ゲームもどきを作成しています。
対戦直前にXファイルの3Dキャラクター2体ロードし、対戦終了後も同様してに、
また対戦を行っていると、みるみるうちにメモリが使われていきます。
おそらく何かが開放されておらず、Xファイルを重複で読み込んでいるせいだと思うのですが
アプリ終了時の様にメッシュ等を「pMesh->Release();」で開放するとエラーが起こります。
結局それから何も解決できず混乱してしまい、もしかするとDirectX側で
何か方法があるのではと思ったのですが…DirectX以前の問題ですかね?

全ては書ききれないのでとりあえずメッシュ関係は以下の通り宣言しています。
DWORD           numMesh;  // XFile内部のメッシュの数
LPD3DXMESH       pMesh;   // メッシュオブジェクトへのポインタ
D3DMATERIAL9      *pMaterial; // マテリア記憶用配列へのポインタ
LPDIRECT3DTEXTURE9 *pTexture; // テクスチャ記憶用配列へのポインタ
737デフォルトの名無しさん:2007/08/21(火) 05:54:22
>>734
SkinnedMeshのサンプル起動してみてnon-indexedとかindexedとかちょっと動かしてみてよ
738デフォルトの名無しさん:2007/08/21(火) 07:45:18
>>734
プロファイラ使ってみれば分かると思うけど
DrawPrimitive系統の関数の呼び出しは重いんで、
できるだけ呼び出し回数を減らしたほうがいいよ。
360ならストリップリストもDrawIndexedPrimitiveでいけるのだがねぇ…
739デフォルトの名無しさん:2007/08/22(水) 00:11:07
>>736です。
どうやら生成の仕方に問題があったようで、
Googleさんの力をお借りして解決しました。
740デフォルトの名無しさん:2007/08/22(水) 12:11:30
Xファイルのサンプルなど知りませんか?
741デフォルトの名無しさん:2007/08/22(水) 12:38:39
DirectXSDKに付いてるだろう
742デフォルトの名無しさん:2007/08/22(水) 12:39:48
C:\Program Files\Microsoft DirectX SDK (June 2007)\Samples\Media\*\*.x

好きなの使え
743デフォルトの名無しさん:2007/08/22(水) 13:14:12
コピペだかマルチだかw

Xファイルを読み込むサンプルじゃなくて、Xファイルそのもののサンプルのことだったのね・・・
そりゃ確かに板違いかもな
744デフォルトの名無しさん:2007/08/22(水) 17:00:32
DirectXてのは基本的にCOMで公開されているわけですよね?
VC#からCOMの参照を追加しようとしてもそれらしい名前が見つからないんです。
Managedのほうはみつかるんですけど。
745デフォルトの名無しさん:2007/08/22(水) 17:25:10
タイプライブラリがないからでしょ
すべてのCOMコンポーネントにタイプライブラリがあるわけじゃない
746デフォルトの名無しさん:2007/08/22(水) 17:34:36
DLL呼ぶしかないの?
747デフォルトの名無しさん:2007/08/22(水) 17:55:45
DX8のVB用があるでしょw
748デフォルトの名無しさん:2007/08/22(水) 22:47:38
IDirect3DDevice9::Resetを呼ぶ前に
取得したものをReleaseするって聞いたんだが

SpriteとかFontとかはOnLostDeviceじゃだめ?
Releaseして作り直し?

IDirect3DDevice9::ResetがD3DERR_INVALIDCALLを返すんだが。
749デフォルトの名無しさん:2007/08/22(水) 23:32:32
テクスチャとかその他のリソースが残ってるかどうか調べろや
750デフォルトの名無しさん:2007/08/22(水) 23:33:12
SpriteとFontしか使ってない
751デフォルトの名無しさん:2007/08/23(木) 06:49:21
ふぉんとかなー
752デフォルトの名無しさん:2007/08/23(木) 09:57:10
審議中
753デフォルトの名無しさん:2007/08/23(木) 10:00:41
そもそもReset()に渡す引数がおかしい可能性もあるけどな。

そうでないなら「SpriteとFontしか使ってない」と勝手に本人が思ってるだけで
実はGet()系メソッドでなにかしら取得してるといかいうオチだろう。
754デフォルトの名無しさん:2007/08/23(木) 15:02:37
考えられるな
755748:2007/08/23(木) 20:49:18
Resetの引数はあってると思う。
IDirect3DDevice9を使ってるのは
スプライトとフォントの作成以外では、

SetRenderState
Reset
Release
TestCooperativeLevel
Clear
BeginScene
EndScene
Present
SetViewport

くらいだぜ
756デフォルトの名無しさん:2007/08/23(木) 20:57:44
Resetのパラメータはこんなかんじ。

ZeroMemory(m_pD3DPP,sizeof(D3DPRESENT_PARAMETERS));
m_pD3DPP->hDeviceWindow = hWnd;
m_pD3DPP->SwapEffect = D3DSWAPEFFECT_COPY;
m_pD3DPP->BackBufferCount = 1;
m_pD3DPP->BackBufferWidth = 800;
m_pD3DPP->BackBufferHeight = 600;
m_pD3DPP->EnableAutoDepthStencil = false;
m_pD3DPP->FullScreen_RefreshRateInHz = 0;
m_pD3DPP->Windowed = false;
m_pD3DPP->PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
m_pD3DPP->FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
757デフォルトの名無しさん:2007/08/23(木) 20:58:36
ミスった

m_pD3DPP->FullScreen_RefreshRateInHz = 0;
は無視してくれ
758デフォルトの名無しさん:2007/08/23(木) 21:47:32
つーかDirectXのデバッグレベル上げてデバッグ実行すれば詳細なログが出るだろ・・・
そっちを出せや。
759デフォルトの名無しさん:2007/08/23(木) 21:59:57
そんなものがあるのか
トンクス
760デフォルトの名無しさん:2007/08/23(木) 23:40:04
Xファイルから読み込むんじゃなくて、自分で頂点データを与えてmeshを作成するサンプルありませんか?
ぐぐったけど見つからない。
761デフォルトの名無しさん:2007/08/23(木) 23:40:50
それ以前にチュートリアルはやったのか?
762デフォルトの名無しさん:2007/08/26(日) 18:41:13
IDirect3DDevice9::Clearを
BeginRender〜EndRenderの外側でやるのはなぜ?
763デフォルトの名無しさん:2007/08/26(日) 20:19:58
764デフォルトの名無しさん:2007/08/26(日) 20:47:47
>>763
サンクス
765デフォルトの名無しさん:2007/08/27(月) 22:17:16
ごくごく基礎的な質問かも知れんけど

->releaseっていうのはどういう風にやればいいんだろうか

class A{
 LPD3DXFONT m_pFont;
public:
 HRESULT Create( .. );
 void SetFont( LPD3DXFONT pFont ){
   m_pFont = pFont;
 }
 LPD3DXFONT GetFont(){ return m_pFont );
 ..
}
;
例えば上のようなクラスを作って

main()
{
 A a1, a2;
a1->Create();フォントを作成
 a2->SetFont( a1->GetFont );
}

こうやって同じフォントを二つのオブジェクトで使った場合、
リリースは二回やらなきゃいけなくなるの?
766デフォルトの名無しさん:2007/08/27(月) 22:18:04
a2->SetFont( a1->GetFont() ); だった
767デフォルトの名無しさん:2007/08/27(月) 22:20:56
アホか
768デフォルトの名無しさん:2007/08/27(月) 22:22:17
当然一回ですよね
すんません(;^ω^)
769デフォルトの名無しさん:2007/08/27(月) 22:31:15
危険な匂いがするぜ
770デフォルトの名無しさん:2007/08/28(火) 11:48:18
超初心者版だからなぁ。
普通に考えたら特に不思議な質問じゃないが。

> ->releaseっていうのはどういう風にやればいいんだろうか
releaseが何をしているのかを理解すれば自ずと答えが出てくる。
調べれば沢山あるし、この程度は自分で解決できるようにするのが
まず第一歩だ。
771デフォルトの名無しさん:2007/08/28(火) 14:12:40
終わった話を後からのこのこやってきて、語り出す馬鹿ってなんとかならいのかね。
772デフォルトの名無しさん:2007/08/29(水) 01:02:19
>>761
チュートリアル?サンプルじゃなくて?
よければどこにあるか教えてください
773デフォルトの名無しさん:2007/08/29(水) 01:16:10
>>772
お前さ、ヘルプぐらい読めよ。
最低限のことすらやらないで出来ない出来ないと騒いでるんじゃねえよ。
アホも大概にしろよ。
774デフォルトの名無しさん:2007/08/29(水) 01:25:13
Direct3Dを使ってフルスクリーン表示のプログラムを作りたいです。
が、GUIをつかったvisualプログラミングができません。
int main(void) のコマンドラインのCUIプログラムなら、C++できます。
Visual C++ のコンソールアプリをつくるという方法で、
DirectXを利用したプログラムは走るのでしょうか?
教えて君ですみません。
775デフォルトの名無しさん:2007/08/29(水) 01:29:51
>>773
なんだお前?
ちなみにヘルプ探したけどないぞ
776デフォルトの名無しさん:2007/08/29(水) 01:46:49
>>774
コンソールアプリでもウインドウを作ればいくらでも動く。
なんで聞く前に試さない?
777デフォルトの名無しさん:2007/08/29(水) 01:47:11
>>775
チュートリアルに3角形を表示するサンプルがあるのさ
それってのは万物を表示する基本なのさ
お前はそれをすっとばしてるからなんもかんもわからないのさ
778デフォルトの名無しさん:2007/08/29(水) 01:51:24
>>775
ヘルプという限定された中の、たったその程度のものすら探す能力がないのなら、
もうプログラムなんてやめろよ。
779デフォルトの名無しさん:2007/08/29(水) 10:22:41
DirectX9のSDK入れてますが、そっから、DirectX8とか7の関数って使えるんですか?
780デフォルトの名無しさん:2007/08/29(水) 10:46:25
>>779
DirectX9にはDirectX7も8も含まれていないので、それらを使うことはできません。
互換関数は使えるけどね。
781デフォルトの名無しさん:2007/08/29(水) 10:55:29
  _, ._
( ゚ Д゚)
782デフォルトの名無しさん:2007/08/29(水) 12:36:41
最新のSDKからヘッダファイルが消えたからムリッポ
783デフォルトの名無しさん:2007/08/29(水) 14:17:55
えっ?

DirectXで、以前のVerが使えなくなるなんてありえるのか?
そんな劇的な仕様変更が何時の間に。
784デフォルトの名無しさん:2007/08/29(水) 14:43:01
まあ名前違うだけでどうみても以前と同じ関数たくさんあるしな
785デフォルトの名無しさん:2007/08/29(水) 21:13:11
>>783
SDKから消えているだけで実行においては問題ないだろ・・・
786デフォルトの名無しさん:2007/08/29(水) 22:46:22
SDKとランタイムは関係ないな。
787デフォルトの名無しさん:2007/08/30(木) 00:08:42
できるだけエロイDirectXSDKありますか?
788デフォルトの名無しさん:2007/08/30(木) 01:22:12
どっちみち古い関数使ってもコンパイルできないってことだな
789デフォルトの名無しさん:2007/08/30(木) 02:07:37
ん?
SDKのバージョンあってるならDirectX3でもコンパイルできるし、実行もできるぞ
790デフォルトの名無しさん:2007/08/30(木) 02:43:12
DX9SDKでDX3の関数使ってもコンパイルできないんでは?
791デフォルトの名無しさん:2007/08/30(木) 04:26:59
ヘッダはあるけどライブラリはないね。
まぁ、コンパイルはできそうだな。リンクは駄目だがw
792デフォルトの名無しさん:2007/08/30(木) 07:42:32
リンクできないライブラリに、意味はあるんでしょうか
793デフォルトの名無しさん:2007/08/30(木) 08:10:20
もうリリースしてもいいよね?
794デフォルトの名無しさん:2007/08/30(木) 14:12:37
つまりDX8で開発したい場合は最新のSDKをDLしても開発できないということなのですね
SDKのバージョンが合っているかどうかはどうやって調べたら良いのでしょうか?
795デフォルトの名無しさん:2007/08/30(木) 15:10:53
DX9がダウンロードできない

要求したダウンロード ファイルは利用できません。
このダウンロード ファイルにアクセスしようとしたときに、引き続きこのメッセージが表示される場合、
ダウンロードセンターのホーム ページにある [ダウンロードの検索] にアクセスしてみてください。
796デフォルトの名無しさん:2007/08/30(木) 15:11:51
どこかからの直リンでダウンロードしようとしたとか?
797デフォルトの名無しさん:2007/08/30(木) 15:41:49
ダウンロードしたURLすら書かない意思疎通能力のない人間が何をやっても無駄。
798デフォルトの名無しさん:2007/08/30(木) 19:21:34
メッシュのサンプルみつかんねええええ。
VBとC#のはあったんだがC++のどっかにないかなあ。
799デフォルトの名無しさん:2007/08/30(木) 22:01:15
>>794
普通はターゲットのバージョンのSDKをインストールするだろ・・・
SDKは自分でインストールしないと入らないんだぞ?
800デフォルトの名無しさん:2007/08/30(木) 23:32:40
>>799
すみません・・Microsoftのサイトに行っても10か9か何も書いてない物しか見つからなかったので・・・
801デフォルトの名無しさん:2007/08/31(金) 08:20:47
>>800
だから、旧バージョンなんかで開発するなとそういうことだw
色々苦労するぜ
ヘルプもみつかんねーし
不具合は永久に直らないし
802デフォルトの名無しさん:2007/08/31(金) 09:39:42
マイクロソフトのダウンロードリンクってわかりにくいよね
名前もほんとにこれであってんのか?っていうのでリンクはってるし
803デフォルトの名無しさん:2007/08/31(金) 11:07:00
試しにダウンロードまでしてみたけど、あっという間にたどり着いた。
調べたり探したりする能力が無いくせに、何でも他人のせいにする奴は、
結局何をやってもダメということだろう。
804デフォルトの名無しさん:2007/08/31(金) 13:03:52
>調べたり探したりする能力が無いくせに、何でも他人のせいにする奴は、

まぁ、そういはいうがな、誰でも通る道だぞ。

……幼稚園の頃に。
805デフォルトの名無しさん:2007/08/31(金) 19:06:44
CLSIDも知らんのか
806デフォルトの名無しさん:2007/09/01(土) 04:41:34
DirectXっていうがあればゲームつくれるって聞いたんですけど、
どこで打ってるんですか?
807デフォルトの名無しさん:2007/09/01(土) 05:33:00
>>806
ぐぐればDLできるけど
ただの道具だよ。紙と鉛筆があればゲームを作れるって言ってるようなもんだよ
808デフォルトの名無しさん:2007/09/01(土) 11:24:13
紙と鉛筆があれば小説が作れるって感じかな

ただ紙と鉛筆を用意できても、小説を書き上げるには大変な労力がかかる
売れる小説を書くのはさらに大変
809デフォルトの名無しさん:2007/09/01(土) 13:20:14
釣りにマジレス乙wwww
810デフォルトの名無しさん:2007/09/01(土) 19:16:34
DrawPrimitiveupの中身のソースとかってないんですかね?
テクスチャ貼り付けるときにどう処理されてるのか知りたいんです!
811デフォルトの名無しさん:2007/09/01(土) 19:28:18
>>810
大雑把に言うと、DrawPrimitiveUPの中身はビデオカードのドライバに
指示を出すだけだぞ。
812デフォルトの名無しさん:2007/09/01(土) 20:34:37
リファレンスラスタライザは?
813デフォルトの名無しさん:2007/09/01(土) 20:40:56
三角形にどのようにして補完されて貼られるかって話なら
ゲームプログラミングのための3Dグラフィクス数学とかに詳しく書いてあるよ
あれは読みやすい
814デフォルトの名無しさん:2007/09/01(土) 20:43:01
7のリファレンスラスタライザはソース公開されているけど
最近のは知らないな。
815デフォルトの名無しさん:2007/09/01(土) 21:02:43
>814
うp
816デフォルトの名無しさん:2007/09/01(土) 21:48:31
そのソースがどんなライセンスだか知らないけど、第三者が勝手にうpしていいものなのかね
フリーだからといって再頒布可能だとは限らないし
817デフォルトの名無しさん:2007/09/01(土) 22:40:19
>>816
でもお前が反対することでもないな。
権利持っていない奴が文句をいうのはおかしいと思う。
818デフォルトの名無しさん:2007/09/01(土) 22:48:11
反対してるわけでもなく文句を言ってるわけでもなくただの確認だろう
819デフォルトの名無しさん:2007/09/01(土) 22:48:33
うん?別に俺は何にも反対してないし文句も言ってないぞ?
820デフォルトの名無しさん:2007/09/01(土) 22:50:59
>>817
誤解したんだよね
ドンマイ
821デフォルトの名無しさん:2007/09/02(日) 03:13:29
「画面のプロパティ」→「設定」→「詳細設定」→「Direct3D」のとこで
テクスチャ設定とミニマップ詳細レベルのとこが
毎回ハイパフォーマンスにしても再起動すると高画質になってます

どうしたらいいのでしょうか?
822デフォルトの名無しさん:2007/09/02(日) 04:27:40
>>811
まじですかー!
勘違いしてた!そしてソースは公開されてないんですかねやっぱり・・・

テクスチャをはれるのはわかったんですがどういうアルゴリズムではられてるのかが分からい!
ソース見れば分かるだろって思ってたからびっくりです
823デフォルトの名無しさん:2007/09/02(日) 09:12:15
>>822
ソースがあるとかないとかじゃなくて仕組みわかれよw
グラボに命令だすだけで実際に貼る処理はグラボの中だろw
824デフォルトの名無しさん:2007/09/02(日) 10:24:09
ソース公開してる適当なレンダラーの中身でも除けばいいじゃない
825デフォルトの名無しさん:2007/09/02(日) 15:23:41
超初心者スレだよね、ここ。

ID3DXMesh::LockAttributeBuffer Method

HRESULT LockAttributeBuffer(
DWORD Flags,
DWORD** ppData
);

これのppDataについて、各サイトで違うこと書いてるんですが、一体どれが正しいんでしょうか?

http://msdn.microsoft.com/archive/en-us/directx9_c_Summer_03/directx/graphics/reference/d3dx/interfaces/id3dxmesh/lockattributebuffer.asp?frame=true
ppData
[out] Address of a pointer to a buffer containing three DWORDs for each face in the mesh.

http://msdn2.microsoft.com/en-us/library/bb174070.aspx
ppData
[out] Address of a pointer to a buffer containing a DWORD for each face in the mesh.

http://msdn.microsoft.com/library/ja/DirectX9_c/directx/graphics/reference/d3dx/interfaces/id3dxmesh/lockattributebuffer.asp?frame=true
ppData
[out] メッシュ属性データを格納するバッファへのポインタのアドレス。この配列は、メッシュの頂点およびエッジを記述する D3DXATTRIBUTERANGE 要素の配列である。
826デフォルトの名無しさん:2007/09/03(月) 04:26:54
ワールド座標で管理しているモデルを、スクリーン座標で指示した位置に
移動させたいのですが、ワールド座標(0.0.0)にあるモデルをスクリーン座標(100.50)の
位置に移動させたいとき、どうやって移動先のワールド座標を求めればいいのでしょうか?
(移動後のワールド空間での奥位置は移動前と同じとします)

モデルをスクリーン座標に変換して目的位置にxy座標を変えただけだと、
スクリーン座標での奥位置が元居た位置のままなので、当たり前ですがワールド座標に
戻したときに移動前の奥位置になってしまいます。
827デフォルトの名無しさん:2007/09/03(月) 11:25:30
>>826
>移動後のワールド空間での奥位置は移動前と同じとします
の意味が分からん。

ワールド空間での奥位置ってことは、ワールド空間でのz座標ってことか?
ビュー空間がワールド空間のz軸と平行のときは、それでは絶対に動かせないが。
828822:2007/09/03(月) 13:48:19
グラボの内部で処理か・・・
SetTextureでテクスチャ読み込んで,DrawPrimitiveUPに指示だすでいいんかな?

正方形のテクスチャ用意して,形の崩れた四角形にテクスチャ貼り付けるときに画像が伸びたり縮んだりするのはどう処理してるんですか?
長さの比にたいしてテクスチャのドットデータを間隔あけて読み込んだり多く読み込んだりするんですかね?
829デフォルトの名無しさん:2007/09/04(火) 00:05:49
だいたいそんな感じ
830デフォルトの名無しさん:2007/09/04(火) 01:51:32
「画面のプロパティ」→「設定」→「詳細設定」→「Direct3D」のとこで
テクスチャ設定とミニマップ詳細レベルのとこが
毎回ハイパフォーマンスにしても再起動すると高画質になってます

どうしたらいいのでしょうか?


スルーしないでください
831デフォルトの名無しさん:2007/09/04(火) 02:33:52
>>830
板違い
832デフォルトの名無しさん:2007/09/04(火) 04:52:13
>>831
じゃあ何処で聞けばいい?
833デフォルトの名無しさん:2007/09/04(火) 05:55:27
まずは、ここが何の板なのか確認するんだ。
そしてそれはビデオカードのドライバの問題だから、DirectXの話ですらない。
834デフォルトの名無しさん:2007/09/04(火) 07:03:43
>>827
> ビュー空間がワールド空間のz軸と平行のときは、それでは絶対に動かせないが。
言われて納得。どう説明したものだろう^^;

以下ダメな例
// pObjPosをスクリーン座標pMoveの位置に移動した値をpOutに入れる。
void SetPos( D3DXVECTOR3 *pOut, D3DXVECTOR3 *pObjPos, D3DXVECTOR2 *pMove ){
 // view_portとかの宣言・取得は省いてます。
 D3DXVec3Project( &screen_pos, pObjPos, &view_port, &projection, &view_mat, &world );
 screen_pos.x = pMove->x;
 screen_pos.y = pMove->y;
 screen_pox.z = pObjPos->z;  // これが問題
 D3DXVec3Unproject( pOut, &screen_pos, &view_port, &projection, &view, &world );
}

これだと、奥位置が元のオブジェクトから変更されていないのでカメラからオブジェクトの
距離が変化しない移動になってしまいます。
これをちゃんとカメラからの距離が変化するような移動にしたいのですが、どうやればいいのでしょう?

と、考えながら書き直しているうちに、何かD3DXPlaneIntersectLineを使ったマウスでのポリゴン選択の
やり方で出来るような気がしてきました。
(今まで出来なかったので諦めていたのだけど原因がわかったかも。しかも凄いアホな原因^^;)
後で試してきます。
お手数掛けました。
835834:2007/09/05(水) 06:16:37
D3DXPlaneIntersectLineを使ったやり方で無事できました。
今までうまくいかなかった原因は、何をトチ狂ったのかプレーンを
毎度毎度カメラに対して垂直になるように作っていた事でした^^;
836822:2007/09/05(水) 12:47:54
>>829
ありがとうございましたー!
837613:2007/09/06(木) 20:46:23
FVFから頂点データのサイズを計算する方法教えて
838デフォルトの名無しさん:2007/09/06(木) 20:50:35
D3DXGetFVFVertexSize
839613:2007/09/06(木) 20:51:33
これだけのためにD3DXは使いたくないです(´;ω;`)
840デフォルトの名無しさん:2007/09/06(木) 20:57:34
じゃぁ自分で計算しろ
841613:2007/09/06(木) 21:08:22
そこをなんとか・・
842デフォルトの名無しさん:2007/09/06(木) 21:52:59
>>839
むしろ今の時代D3DX使わないって選択が間違ってるw
なんで超初心者のくせにD3DXを使わないで頑張ってるの?
無駄な努力じゃない?
843613:2007/09/06(木) 22:02:45
どなたか分かる人いませんか?
844デフォルトの名無しさん:2007/09/06(木) 22:07:37
その程度が何で自分で計算できないの?
845613:2007/09/06(木) 22:12:17
その程度のことも回答できないんですか><??
846デフォルトの名無しさん:2007/09/06(木) 22:16:28
秋だな・・・
847デフォルトの名無しさん:2007/09/06(木) 22:17:20
>>843
FVFを使う場合のデータの配置順とサイズはヘルプに載ってたはず
固定機能パイプの頃の話だから最新のには載ってないかもな
OS割れ厨でなければDX8の日本語ヘルプはMSのサイトから
ダウソできるはず。MDSNライブラリのオンラインヘルプなら
割れ厨でも読めるはず

調べるのが嫌なら素直にD3DX使っとけ
848デフォルトの名無しさん:2007/09/06(木) 22:21:20
>>847
アンカーミスっててよく分からん事になってるぞ
849613:2007/09/06(木) 22:30:56
自己解決しました^^
850デフォルトの名無しさん:2007/09/06(木) 22:43:13
釣りなら釣りと
851デフォルトの名無しさん:2007/09/06(木) 23:08:04
>>849
割れ厨なのかよw
852デフォルトの名無しさん:2007/09/07(金) 10:50:20
>>842
リプレイがずれる
853デフォルトの名無しさん:2007/09/07(金) 11:24:28
DirectX 9 SDK のサンプルにある、StillCapについて教えてください。
USB接続のWebカメラで静止画撮影300万画素というものを使っているのですが、
StillCapをそのまま動かすと640×480の30万画素までのものしかキャプチャできません。
ソースコードをざっとみて、メディアタイプを設定しているところがあるのですが、
VIDEOINFOHEADERの解像度の設定は無視されるとAPIのドキュメントにあります。
静止画のキャプチャで解像度の設定をするのは、どのタイミングで
どういったAPIを使うとできるようになるのでしょうか?
どなたかご存知の方がいらっしゃいましたらなにかヒントや参考となるURLでもいいので教えてください。
よろしくお願いします。
854デフォルトの名無しさん:2007/09/07(金) 21:16:56
>>852
少しは自分でも考えような。
リプレイがずれるのはD3DXの算術系関数の環境によるSIMD命令の違いが原因。

FVF頂点のサイズ知るとか、Xファイル読み込むとか、画像読み込むとかにはまったく関係ねぇ。
まさか画像の読み込みも自前でバイナリ解析して読むのか?
855デフォルトの名無しさん:2007/09/07(金) 21:31:29
それこそ画像の読み込みなんてD3DX使うまでもないだろ。。。
856デフォルトの名無しさん:2007/09/07(金) 22:47:41
浮動小数点時代になってからリプレイ関連は各企業あんまりやってないところ多いけどな
どこも意固地にやりたいことをただやるだけじゃなくて
その環境でできることを精一杯やってるんだぜ

まあ、馬鹿な企画が無理いって環境に合わないもんを長い時間かけて作ることもあるけどw
857デフォルトの名無しさん:2007/09/08(土) 03:42:56
ケツイのことか
858853:2007/09/08(土) 11:08:47
>>855
おっしゃる通り、静止画が必要なだけなら他にもいろいろとあると思うのですが、
すでにある16台のUSB接続のWebカメラを利用したモニターアプリに
静止画同時撮影機能を搭載したいのです。手始めにStillCapサンプルを
調べてみて、解像度設定のところで躓いてしまった次第なのです。
動画が取れているので、そこから切り出す方法で静止画がとれることは
とれるのですが、それだと動画の解像度までしか撮影できないので、
なんとかカメラが持つ静止画の解像度いっぱいの精度でとれないものかと。
859デフォルトの名無しさん:2007/09/08(土) 12:01:08
ttp://kilala.mydns.jp/def/vbtips/006/

ここのサイトを参考にして、VB2005で、ジョイスティックを振動させたいのですが
うまくいきません。
アナログ、ボタン情報は取れるのですが、
振動をさせてもぴくりともorz
ここのサイトの方と使ってるUSBパッドの種類が違うのでダメなのでしょうか?
使っているものは、USBコンバータでPS2のコントローラーです。
ソースはここのをまんま利用してUSBの部分だけ削除してやってみました。



860デフォルトの名無しさん:2007/09/08(土) 12:02:59
そもそもそのサイトのサンプルで振動するの?
FFB関係は付属の専用ドライバをインストールしないと機能しないけど、
ちゃんとドライバインストールしたの?
861853:2007/09/08(土) 12:07:46
>>859
そのサイトのことは分らないけど、DirectX9SDKのサンプルのFFConstだとちゃんとプルプルしますよ。
うちのはエレコムのUSB接続PS2コントローラーですけど。
862859:2007/09/08(土) 18:08:01
>>861
FFConstをCで試してみて動いたのでそれを参考に改造したら振動しました。
右だけしか動かなかったけどorz
一つきになってるのが、ボタンが押された情報を取得してる前処理の
以下の部分で例外はきまくってJSDevice.Acquire()を呼び出しまくるようになったのが心配です。

'データをポーリング
Try
    JSDevice.Poll()
Catch ex As InputException
     '再取得して再度データを取得
     If (TypeOf (ex) Is NotAcquiredException Or TypeOf (ex) Is InputLostException) Then
        Try
            JSDevice.Acquire()
        Catch ex2 As InputException
            Exit Sub
         End Try
      End If

End Try
863デフォルトの名無しさん:2007/09/08(土) 18:27:13
右と左にモーターがある場合は別々に制御しないとダメなはずだぞ
864デフォルトの名無しさん:2007/09/09(日) 15:37:51
>>854
D3DXの話なのに、なんで、FVF頂点のサイズやXファイルの話になるのかわからん。
865デフォルトの名無しさん:2007/09/09(日) 15:58:18
>>864
これらの関数がD3DXの関数ではないなら俺も意味がわからなかったんだが。
>D3DXGetFVFVertexSize
>D3DXLoadMeshFromX
866853:2007/09/10(月) 15:27:04
この週末をぶつしてグーグルで調べまくって、いろいろと試行錯誤し、結局は自己解決しました。

同じところで躓いている人も多いみたいなので、参考のためここにも簡単に説明します。
1.CaptureGraphBuilder2のFindPinでPIN_CATEGORY_STILLのIPinを取得する。
2.CaptureGraphBuilder2のFindInterfaceでIAMStreamConfigを取得する。
3.ステップ1のIPinでEnumMediaTypesを実行し、目的の解像度のところで
  ステップ2のIAMStreamConfig::SetFormatでメディアタイプを設定する。

ステップ3はRenderStreamの前でも後ろでも大丈夫のようです。
以上。
867デフォルトの名無しさん:2007/09/10(月) 16:40:15
>>866


DirectShow周りは、情報少なくて、大変ですよね
俺もUSBカメラをいじったり、多少やったことあったんだけど、答えられなかった。
868デフォルトの名無しさん:2007/09/11(火) 16:53:45
>この週末をぶつして
869デフォルトの名無しさん:2007/09/11(火) 19:58:37
質問です。
DirectX SDKの
Tutrial6 Meshesのサンプルをビルドしてみたのですが、
プロジェクト設定の「ランタイムライブラリ」のところを「マルチスレッド」となっているのを
「マルチスレッドDLL」にしてビルドしたところ、ビルド自体はできますが、
実行しようとすると
「MSVCR80.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールしなおすとこの問題は解決される場合があります」
というダイアログが表示され、実行に失敗してしまいます。

これはどういう理由からこうなるのでしょう。
「マルチスレッドDLL」でも実行できるようにする方法はありませんでしょうか。
870デフォルトの名無しさん:2007/09/11(火) 22:15:33
>>869
manifestが設定されてないとか。
"manifest MSVCR80.dll"でぐぐってみたら?
871デフォルトの名無しさん:2007/09/11(火) 22:42:57
>>870
「リンカ」->「マニフェストファイル」->「マニフェストの生成」を「はい」に、
「マニフェストツール」->「入力と出力」->「埋め込みマニフェスト」を「はい」に設定することで実行できるようになりました。
ありがとうございます!

マニフェスト関係は疎いので、勉強してみます。なんだかややこしそうだなぁ・・・。
872デフォルトの名無しさん:2007/09/14(金) 15:36:33
VB2005で、環境マップを実現したいのですがうまくいきません
サーフェイスをテキスチャに取り込んで、そのテキスチャをメッシュに張るでいいのですか?
具体的に載っている本か、サイトがあったら教えてください。
873デフォルトの名無しさん:2007/09/14(金) 16:29:02
何がどううまくいかないのか程度のことを説明するのも面倒くさいのなら、
プログラムなどやめてしまえ。
874872:2007/09/14(金) 17:08:57
説明不足ですいません。最初に、サーフェイス、ビューポートを記憶しておいて
メッシュimMeshを描画、このメッシュのテキスチャにレンダリング画面のテキスチャを
割り当てたいのですが、うまくいかずorz

' 初期化
rTex1 = New Texture(D3DDevice, 512, 512, 1, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default)
dSur1 = D3DDevice.CreateDepthStencilSurface(512, 512, DepthFormat.D16, MultiSampleType.None, 0, False)
rSur1 = rTex1.GetSurfaceLevel(0)
875デフォルトの名無しさん:2007/09/14(金) 17:09:40
' レンダリング部
D3DDevice.BeginScene()

oldtSur = D3DDevice.GetRenderTarget(0)
olddSur = D3DDevice.DepthStencilSurface
oldView = D3DDevice.Viewport
D3DDevice.Viewport = View
D3DDevice.SetRenderTarget(0, rSur1)
D3DDevice.DepthStencilSurface = dSur1
D3DDevice.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, System.Drawing.Color.Black, 1.0F, 0)

mat.Translate(0, 0, 0)
D3DDevice.Transform.World = mat
D3DDevice.SetTexture(0, nothing)
imMesh.DrawSubset(0)

' 2回目レンダリング
D3DDevice.SetRenderTarget(0, oldtSur)
D3DDevice.DepthStencilSurface = olddSur
D3DDevice.Viewport = oldView
D3DDevice.Clear(ClearFlags.Target Or ClearFlags.ZBuffer, System.Drawing.Color.Black, 1.0F, 0)

D3DDevice.SetTexture(0, rTex1)←ここにレンダリングした画面のテキスチャを張りたい
imMesh.DrawSubset(0)

'描画終了
D3DDevice.EndScene()
876デフォルトの名無しさん:2007/09/14(金) 17:23:08
877デフォルトの名無しさん:2007/09/15(土) 00:51:09
すみません、DirectX9.0cが欲しいのですが、家族のPCが割れ?というやつらしく、認証通りません。
自分のPCの無線が絶縁状態で如何ともしがたく、慣れない部屋のPCで数時間調べ腰が痛くなってきました><
誘導でかまいません、よろしく願いいたします。
878デフォルトの名無しさん:2007/09/15(土) 00:56:55
とりあえず通報した
879デフォルトの名無しさん:2007/09/15(土) 03:12:53
とりあえず自己解決。
腰痛い。
880デフォルトの名無しさん:2007/09/15(土) 21:01:08
釣り。。。なのか?
881デフォルトの名無しさん:2007/09/15(土) 21:07:41
DirectX9.0cって、本にだいたいついてるよなw
882デフォルトの名無しさん:2007/09/16(日) 00:18:13
そもそもSDKじゃないだろ
883デフォルトの名無しさん:2007/09/16(日) 02:49:22
SDKじゃないならその辺のエロゲにすらついてるな
884デフォルトの名無しさん:2007/09/16(日) 02:54:10
XPならそもそも入れる必要性すらない
885デフォルトの名無しさん:2007/09/16(日) 04:42:21
初歩的な話で申し訳ありません。

DirectX SDKの中に入っている GraphEdit を起動して、
そこへ画像や動画をドラッグ&ドロップすると、自動的にGraph生成され
Play Graph で表示できますが、
動画ファイルではあまり気がつかなかったのですが、
BMP/JPEG等の静止画をロードした場合、表示される画像にローパスフィルタがかかったように
画像が全体にややボケて表示されるようです。


白黒白黒... と1ラインずつ縦に並んでいるシマシマの画像が、灰色ベタ塗りつぶしのような
表示になります。

このフィルタ?を解除する事はできるのでしょうか?
DirectShowでBMP/AVIファイルをロードするプログラムを
作成していて、自分で作成したプログラムでも同じようにボケた表示になってしまいます。
886デフォルトの名無しさん:2007/09/16(日) 10:41:28
GraphEdit等で、どんなフィルタが入ってるか調べてみたら?
887885:2007/09/16(日) 13:12:49
>>886

GraphEditで確認しているのですが、現状、BMPファイルをロードすると

Generate Still Video→Color Space Converter→Video Renderer

となります。Generate Still Videoの出力は、BMPファイルが24bitカラーの場合RGB24で
Color Space ConverterでRGB32に変換され、Video Rendererでそのまま表示されている
だけのようです。
この中にフィルタが入っているのでしょうか?

Windows Media Playerを起動し、同じ白黒白黒... と1ラインずつ縦に並んでいる
シマシマの画像をドラッグ&ドロップしてみると、同じように
ローパスフィルタがかかったように画像が全体にややボケて表示されるようです。
888デフォルトの名無しさん:2007/09/16(日) 13:47:53
>>887
Video Rendererで例えばDirect3DとかDirectDrawが使われてて、
そいつの拡大縮小フィルタがバイリニアフィルタだとそうなると思う。

その場合、少なくとも自分でVideo Renderer相当の奴を書けば解決。

既存のVideo Rendererの設定に拡縮フィルタの設定があるのかどうかしらんけど
設定一発で解決できる可能性は案外低いんじゃないかと思う。


889デフォルトの名無しさん:2007/09/18(火) 23:17:19
ウィンドウの範囲を指定して描画する方法はありますか?

たとえば、1つのウィンドウの半分だけに3Dの画面を表示して、
片方半分は文字入力用のテキストエディタのようにするような。
890デフォルトの名無しさん:2007/09/18(火) 23:23:26
希望する範囲を指定してPresentに渡す

それか、子ウィンドウを2つ作ってその中に描画。
3Dに限らず一般的に多いのはこっち。

似たようなことをしてるソフトを見つけてSpyでのぞいてみるといいよ
891デフォルトの名無しさん:2007/09/19(水) 23:30:45
でもたぶん
何日かしたらループするんだぜ?
892デフォルトの名無しさん:2007/09/21(金) 18:36:59
Direct3D10以降での描画はVertexBuffer必須って本当ですか?
普通の配列から直接描画関数(DrawPrimiteveUP)を呼ぶような事はもうできないのでしょうか。

ちょろっとした小さい描画をするときにまたいちいちVertexBuffer作るのもめんどいんですが・・・。
893デフォルトの名無しさん:2007/09/21(金) 19:02:03
それどころか、固定機能が廃止されたから
ちょろっとした小さい描画をするときにまたいちいちシェーダを作らなきゃいけないらしいよ
894デフォルトの名無しさん:2007/09/21(金) 21:14:09
それどころか、DirectX11ではついに固定機能デバイスが廃止されるから、
ちょろっとした小さい描画をするときにまたいちいちプログラマブルデバイスを作らなきゃいけないらしいよ
895デフォルトの名無しさん:2007/09/21(金) 21:19:59
VertexBufferは無くてもいいんじゃないっけ?
シェーダーは必須だけど。
896デフォルトの名無しさん:2007/09/21(金) 21:20:18
>>893
お前浅くしか使ってねぇから固定機能のがよくみえんだよ
ちょろっと描画なら絶対シェーダのが楽だ
897デフォルトの名無しさん:2007/09/22(土) 18:35:55
質問です。

DirectXではOpenGLみたいに
#define VERNUM 1000
float vertex[3*VERNUM];
float texcoord[2*VERNUM];
float normal[3*VERNUM];

と、頂点データの種類ごとに別々の配列に取られた頂点データでそのまま描画する事はできないのでしょうか?
今はやり方がわからないので、無理やりインターリーブになおしてやっていますが、これだと余計な処理が入るので・・・。
898デフォルトの名無しさん:2007/09/22(土) 18:38:31
VertexBufferを使えば出来る。
899デフォルトの名無しさん:2007/09/22(土) 18:56:28
>>897
その余計な処理戸やらで遅くなって困っているのか?
余計な処理と同じ事をするファンクションが標準で用意されていたら、
絶対そんなことを気にしないだろ?

いちいち余計なことを考えるな、馬鹿の考え休みに似たりなんだよ。
900デフォルトの名無しさん:2007/09/22(土) 19:03:52
>>897
VertexBufferを3つ作ってそれぞれにデータ配列を突っ込んだ上で
VertexDeclarationでデータのマッピングを定義すればできる。

とりあえずVertexDeclarationでぐぐって出てくるところ全部眺めてみ。
901900:2007/09/22(土) 19:05:13
VertexDeclarationでぐぐるとXNA関係が引っかかりまくるので
ぐぐるならIDirect3DVertexDeclaration9の方がいいや。スマソ。
902デフォルトの名無しさん:2007/09/23(日) 18:07:15
>>901
ありがとう優しい人!
903デフォルトの名無しさん:2007/09/27(木) 07:04:12
超初心者な質問ですみません
DirectXプログラミングを始めてみようと思い
http://www.microsoft.com/japan/msdn/directx/downloads.aspx
の"DirectX SDK - August 2007"から
dxsdk_aug2007.exeをDLし、実行しようとしたのですが
"有効なWin32アプリケーションではありません"と怒られてしまいました
何度DLしても同じでした
OSはWindowsXP Professionalです

どうかご教示お願いします
904デフォルトの名無しさん:2007/09/27(木) 07:35:37
壊れてんじゃないの
905903:2007/09/27(木) 17:05:16
"DirectX SDK - June 2007"なら問題なく解凍実行できました
お騒がせしました
906デフォルトの名無しさん:2007/09/28(金) 22:13:03
今までOpenGLをやり込んで、DirectXに手を出そうと思っているのですがすんなりいけますか?
一応、C++の知識はあります。
OpenGLと比べてどのような違いがありますか?
907デフォルトの名無しさん:2007/09/28(金) 22:19:57
そういったことを自分で調べられない、しようともしない人間には無理です。
残念でした。
908デフォルトの名無しさん:2007/09/28(金) 23:40:01
はいはいw
909デフォルトの名無しさん:2007/09/29(土) 01:46:52
>>907
こんな答え方しか出来ないんだったら超初心者用なんて銘打つなよ
910デフォルトの名無しさん:2007/09/29(土) 01:53:09
答える方も超初心者だから仕方ない
911デフォルトの名無しさん:2007/09/29(土) 02:25:48
今のDirectXはシェーダー使えないと話にならないな
OpenGLもcgとか使えたっけ
912デフォルトの名無しさん:2007/09/29(土) 02:32:13
というかお前ら気に入らないんだったら、せめて書き込むな。気に入らない時点でお前らの居るべきところじゃない。
913デフォルトの名無しさん:2007/09/29(土) 03:14:36
>>912
そういうのは>>912に言わないと意味ないだろ
914デフォルトの名無しさん:2007/09/29(土) 14:26:24
>906
難易度で言ったらD3Dの方がGLより全てにおいて楽

そのかわりGLはD3Dより多くのことができる,、と一応補足しておく
915デフォルトの名無しさん:2007/09/29(土) 15:27:50
ねーよwwww
916デフォルトの名無しさん:2007/09/29(土) 16:30:48
D3DとGL逆じゃね?
917デフォルトの名無しさん:2007/09/29(土) 16:39:55
>>914
そうなのか?
仕事でOpenGLしか使ってないけれど、DirectXのほうが難しくて機能が多いイメージがあったのだが。
ちょっとDirectXもやってみるか。
918デフォルトの名無しさん:2007/09/29(土) 23:24:26
結論から言うと「隣の芝」
919デフォルトの名無しさん:2007/09/30(日) 03:32:32
速度もクオリティもGLのがいい気がする・・・
でも、俺はDirectX使ってる
GL、日本じゃ情報少ないし
920デフォルトの名無しさん:2007/09/30(日) 09:40:46
GLはゲームに向かないし・・・。

結局サウンドや入力にDirectSoundやDirectInput使うこと考えたら
描画だけGLっていうのはやっぱ微妙だよ。
921デフォルトの名無しさん:2007/09/30(日) 11:55:27
GLでゲームなんてそもそも
カーマックがこだわってただけで
主流ではなかったはず。
922デフォルトの名無しさん:2007/09/30(日) 14:09:29
GLは主にCAD用途だと思ってた
923デフォルトの名無しさん:2007/09/30(日) 16:08:37
DirectXをインストールしようと思ったのですが、インストールすると
「内部システムエラーが発生しました」
というのが出るのですが・・・
どうしたらいいのでしょうか?
924デフォルトの名無しさん:2007/09/30(日) 16:13:25
修理に出す
925デフォルトの名無しさん:2007/10/01(月) 12:37:18
>>909
超初心者なんだから、初心者を超えている。即ち初級者なんだからそれでいいだろ。
926デフォルトの名無しさん:2007/10/04(木) 17:43:47
>>923
板違い

>>925
日本語でおk
927デフォルトの名無しさん:2007/10/10(水) 21:55:05
OpenGLが主流(明らかにアドバンテージがあった)のは10年前ぐらいだよね
今はその規格の安定性の有用さを生かせない分野では用なし

nVidiaやATiの方言が実装されてるのはOpenGLだけだから遊ぶにはいいかもね
特にこれからのDirectXは差をますます許さない方向へ向かっているので

それとよく引き合いに出されるDirectSoundとDirectInputだけど

>DirectSound
DirectPlayと並んでDirectX二大癌
扱いにくさと機能の弱さで他の選択肢より有利な点がない

>DirectInput
特殊なジョイパッドや三個以上接続する場合などレアなケースでしか有利な点がない
その上、普通に記述するよりソースが冗長になる
普通のジョイパッドを使うならいらない

DirectXを使う理由はライセンスに問題が発生しないから
それ以外に万人を納得させられる理由はない
928デフォルトの名無しさん:2007/10/10(水) 22:18:16
つチラシの裏
929デフォルトの名無しさん:2007/10/10(水) 22:31:05
今って描画DirectXでサウンドOpenALというのが普通らしいね
930デフォルトの名無しさん:2007/10/10(水) 23:15:46
>ライセンスに問題が発生しないから
フリーや同人にとってはコレが全てだと思うが・・・。
あとは情報の多さも利点だろ。

DirectSoundが癌なんじゃなくろくに対応されてないドライバが癌なだけ。
ハードウェアにやらせないでソフトウェアで処理するように指定して
これといったバグに遭遇したことはない。
931デフォルトの名無しさん:2007/10/10(水) 23:19:58
フリーや同人でライセンス気にしてる奴いるの?
932デフォルトの名無しさん:2007/10/11(木) 00:36:19
下手なことをするとフリーだろうが同人だろうが2chで晒し挙げられるぞ
933デフォルトの名無しさん:2007/10/14(日) 10:57:40
DirectXで文字を書いたときにMS UI Gothicを使ったとします
MS UI Gothicは等間隔なフォントではありませんよね?
その場合の文字、または文字列のドット数をしらべるにはどうしたら良いのでしょう

言語はHSPかActiveBasicのどちらかを使用しようと思っています
934デフォルトの名無しさん:2007/10/14(日) 11:09:51
フォントの幅の取得はDirectXとは無関係なんだから、こじつけてこのスレで質問するのはやめろ。
935デフォルトの名無しさん:2007/10/14(日) 11:11:37
>>934
そうなんですか
すいませんでした
936デフォルトの名無しさん:2007/10/14(日) 15:33:45
DirerctGraphicsを使用して2D画像を出力させたいんですが・・・
2000*2000とかなら正常に読み込まれるんですが
3000*3000とかで巨大なBMPを読み込ませるとなぜか、「自動で縮小」されて出力されてます・・・
ミップマップも1にしてるのに・・・なぜでしょう・・・
ご教授願いますm(_ _)m

// スプライトに表示するテクスチャの初期化
// 黒抜き(固定)
hr = D3DXCreateTextureFromFileEx(
g_pD3DDevice, name, ImageInfo.Width,ImageInfo.Height,1,0,
D3DFMT_UNKNOWN,D3DPOOL_MANAGED,D3DX_DEFAULT,
D3DX_DEFAULT,D3DCOLOR_ARGB(255,0,0,0),NULL,NULL,&Texture);
if (FAILED(hr)){
MessageBoxA(hWindow,"テクスチャの初期化に失敗しました!","DXGraphicsInit No4",MB_OK);
return 1;
}

937デフォルトの名無しさん:2007/10/14(日) 15:42:25
CapsViewer で MaxTextureWidth,MaxTextureHeight を確認しる
938デフォルトの名無しさん:2007/10/14(日) 16:03:50
>>937
m(_ _)mありがとうございます
僕のでは2048*2048が限界のようでした・・・
さらに調べるとこれはビデオカードの問題なのでどうしようもないことも判明しました・・・

しかし本当にこのスレはネ申が多く在籍してるな・・・
本当に助かりました><



939デフォルトの名無しさん:2007/10/14(日) 19:57:55
>DirerctGraphics
940デフォルトの名無しさん:2007/10/14(日) 20:33:15
ディラークト グラフィックス
941デフォルトの名無しさん:2007/10/14(日) 21:31:54
ダイレルクトゥ グラフィックス
942デフォルトの名無しさん:2007/10/14(日) 22:23:56
座標変換済み頂点を4個指定してテクスチャを自由変形させるとき、各頂点のrhwはどうやって算出すれば良いですか?
943デフォルトの名無しさん:2007/10/14(日) 22:26:38
算出も何も置きたい座標にセットしろよ。
944デフォルトの名無しさん:2007/10/15(月) 00:51:15
>>942
地平線を求めて、各頂点の地平線からの距離を求めれば、
それが rhw になるわよ。
945デフォルトの名無しさん:2007/10/16(火) 20:06:44
えっへん
946デフォルトの名無しさん:2007/10/16(火) 23:28:12
DirectGraphicsで2Dのマップエディタ作成してるんですが
これって自動でクリッピングされてますよね?
DirectDraw使ってたころは自分でクリッピング書いてましたが
DirectGraphicsになってからは自動で行われるんでしょうか・・・
教えてくださいm(_ _)m
947デフォルトの名無しさん:2007/10/17(水) 00:30:30
変換済み頂点で描画している場合、クリッピングが必要あるかどうかは
「ビデオカードによる」ってのが本当なんだけど、実際には気にしなくていいよ。
たぶんID3DXSprite使ってそうだけど、その場合もクリッピングは不要。
948デフォルトの名無しさん:2007/10/17(水) 00:58:08
>>947
お返事ありがとうございますm(_ _)m

スプライトに2D貼り付けて出してるだけの2DRPGを作成してるのです
3Dは一切使ってませんが・・・巨大なマップ用意するとどういうわけか
重くなるような気が・・・・
949デフォルトの名無しさん:2007/10/17(水) 01:10:53
「気が」ではどうにもならん、測定しる
巨大っていうのも程度による、明らかに画面外だと判り切ってる部分は描かない方がいい

まさかとは思うが、リファレンスラスタライザが使われてるってオチは無いか?
950デフォルトの名無しさん:2007/10/17(水) 01:14:14
REFではないです・・・
どうみても重くなっているので制御かけますm(_ _)m
951デフォルトの名無しさん:2007/10/17(水) 01:24:09
いくらなんでも画面の何倍もあるような広大なマップを
正直に描画してたら重くなるぞ。
Draw1回ですむならいいけど、チップとして大量に描画してるんだろ?
952デフォルトの名無しさん:2007/10/17(水) 01:45:40
>>951
そうですね
1024*768画面でチップの大きさは50*50でそのマップが幅50*1200 高50*1200です
これが下地で、さらにチップをペタペタ700こくらい貼り付けてます
953デフォルトの名無しさん:2007/10/17(水) 07:56:54
>>952
ロード時にテクスチャを1枚にまとめるか
DrawPrimitiveUpでも使ってクリップしながら描画したらどうだ?
954デフォルトの名無しさん:2007/10/17(水) 13:28:17
>DirectGraphics
955デフォルトの名無しさん:2007/10/17(水) 18:03:06
また小男たちの重箱の隅つつきかね?
956:2007/10/17(水) 18:54:50
というDirectGraphicsの描画は自動でクリッピングされると
思っておりました・・・
957デフォルトの名無しさん:2007/10/17(水) 19:00:27
こうやって間違った用語の使い方をしているのに、
いつまで経っても気がつかなくて本当にいいのだろうか?
958デフォルトの名無しさん:2007/10/17(水) 19:05:45
いつまで経っても、って何だよ

一人の人間がずっと気づかないんではなく
気づかない人間がたくさんいるってだけだろ
959デフォルトの名無しさん:2007/10/17(水) 19:06:04
別にいいだろ。Xが抜けていても普通、通じる。おまえにだって通じている。
通じているのに通じないふりして悦に入ってるやつはかっこわりーぞカス
960デフォルトの名無しさん:2007/10/17(水) 20:51:05
指摘されなきゃ一生そのままかも知れないが、そいつの人生だ好きにさせろ。
961デフォルトの名無しさん:2007/10/17(水) 21:27:01
>>960
xがないってだけで人生論まで飛び出たかw
死ねよヘボw
962デフォルトの名無しさん:2007/10/17(水) 21:35:28
なんかいちいちくだらん事に絡むアホがいるな
963デフォルトの名無しさん:2007/10/17(水) 21:41:36
DirectXを勉強したいのですがプログラミングで前提となる知識は何が必要でしょうか?
一応、C,C++基本(?)は終えました。
参考までに使った書籍は
http://www.amazon.co.jp/dp/4756102700/
http://www.amazon.co.jp/dp/4756131212/
http://www.amazon.co.jp/dp/4756118089/
以上です。
今からDirectXを勉強し始めても問題ないでしょうか?
964デフォルトの名無しさん:2007/10/17(水) 21:43:54
問題ないと思うけど、
ウィンドウだしてプロシージャ書ければ

あとは行列とかベクトルとか画像処理とか
965デフォルトの名無しさん:2007/10/17(水) 22:06:32
>>964
有り難うございます。
一応、現在大学2年生で数学の知識はあります。
とりあえず、DirectXを始めてみます。
966デフォルトの名無しさん:2007/10/17(水) 22:25:01
何かやろうとするときに、いちいち誰かの許しを請おうとするのはやっぱり病気なんだろうな
967デフォルトの名無しさん:2007/10/17(水) 23:17:05
アニメーションさせてると、何フレームかに1回ぐらいの割合で
描画更新中の画面が見えてしまう(画面下半分ぐらいが更新間に合わないのか、
そこから絵がズレている)のは何がおかしいのか、思い当たる人はいますか?
968デフォルトの名無しさん:2007/10/17(水) 23:26:59
ヒント:VSync
969デフォルトの名無しさん:2007/10/19(金) 16:53:05
加えて
「ティアリング」もな
970デフォルトの名無しさん:2007/10/19(金) 20:48:44
じゃ俺はフリッカ
971デフォルトの名無しさん:2007/10/19(金) 22:38:13
「そこから絵がズレている」という現象をさす用語としてはティアリングが正解だな
最近はあまり見ないがBBXでも何回か見た記憶が
972デフォルトの名無しさん:2007/10/26(金) 23:42:42
DirectXSDKについてくるサンプルのDwarf.xなんかをDirectX Viewerで見てると、角の部分の法線が
 ↑
←┌
と二本出てるんですが、これは1頂点に法線が二本あるんでしょうか?
それとも頂点がふたつあるんでしょうか?
973デフォルトの名無しさん:2007/10/26(金) 23:54:18
頂点が二つ
974デフォルトの名無しさん:2007/10/27(土) 00:41:15
>>967
原因は、モニターのVSYNC(垂直同期)のため。
画面が全部書き換わる前に、人間の目に見えてしまう現象。
詳しい原理的なものは、うのみにせずググってみてほしい。

一人称視点の洋ゲーなどでは、VSYNCを取らないものが多く、
気にしていない開発者や、ユーザーも多い。(というか、外人は気にならないのか?)
(とはいえ、オプションで切り替えられるものもあるけど)

和製のスクロールが激しい2Dゲームなどでは、VSYNCを取らないと、気になることが多い。
また、コンシューマでは、2D、3D関係なく、VSYNCを取るのが当たり前のようだ。


この問題の解決策は、VSYNC同期をとること。
VSYNCの同期の取り方は、環境依存だが可能なので、ググってみてほしい。

ただし、同期をとった場合、VSYNC以上のFPSで表示できないという欠点がある。
また、モニタにより、対応する周波数が違うので、注意。
一般的に(和製ゲームで)よくつかわれるのは、60Hz(つまり、60FPSで描画)だと思う。
液晶モニタや、CRTディスプレイでも、60Hzや、70Hzあたりは対応しているようだ。
975デフォルトの名無しさん:2007/10/27(土) 06:29:28
>>973
サンクスです
976デフォルトの名無しさん:2007/10/27(土) 13:39:09
ここで、聞くのが適当かわからないのですが・・・

前に、この手のスレで、
「3Dで角度(angle)なんか使わない(データとして持たない)」
「全部、ベクトルでやる」
というような議論を読んだのですが、

実際に、ベクトルで角度的なことをやっている、
ソースや、解説されている書籍、webサイトなどをご存じの方はいらっしゃいませんでしょうか?

前に↓「ゲームプログラミングのための3Dグラフィックス数学」を期待して買ったんですけど、
http://www.amazon.co.jp/dp/4939007375
その辺のことが、ぜんぜん書かれてなくてがっかり・・・


不適切なら、適切なスレに誘導して下さい。
977デフォルトの名無しさん:2007/10/27(土) 13:44:21
ソース公開されてるやつだとLunaが3軸の直行ベクトルで回転を保持していたが。
クォータニオンに比べると相互変換が高速なのが利点なのかねぇ。
978976:2007/10/27(土) 13:50:46
もう少し、具体的な話を書きます。

アクションゲームなどでは、
例えば、
・キャラクターの向いている方向を、一定角度変える
とか
・2つの角度の(近いほうの)差をただしく得る
・角度を制限する
などといった実戦的なことです。

頭が固いせいか、ベクトルで持っていたら、いちいち角度にもどして計算が面倒だな、とか。

ベクトルで持っていて、角度を変える場合、
・回転行列を用意して、
・トランスフォーム
・新しいベクトルゲット
とか、考えて、妙に面倒だな、などと思ってしまうのですが。


前に、知り合いの3Dプログラマに聞いたら、適材適所で、
ロール、ピッチ、ヨーで角度を持つこともある、って普通に言われちゃったんですけど。

いま時は、どうなんでしょうか?
979976:2007/10/27(土) 13:51:18
>>977
サンクスです。
見てみます。
980デフォルトの名無しさん:2007/10/27(土) 14:22:50
>>976
全部ベクトルとして持つというと、それは姿勢を表す直交行列のことでしょう。

>・キャラクターの向いている方向を、一定角度変える
回転行列をかけます。

>・2つの角度の(近いほうの)差をただしく得る
2つの行列の正面方向を表すベクトルを1つの平面に射影して、それに対してatanで求めます。
ていうか、これは3Dの場合は角度で計算するのは相当に困難なはずです。

・角度を制限する
具体的にどういう条件で制限するのか説明してもらえないと分からないです。
981デフォルトの名無しさん:2007/10/27(土) 14:29:40
>2つの行列の正面方向を表すベクトルを1つの平面に射影して、それに対してatanで求めます。

訂正

2つの行列の正面方向を表すベクトル2つが作る平面上で、2次元問題に落としてatanで求めます。
射影したらどれかの軸の情報が失われて全然違う値に。。。
982デフォルトの名無しさん:2007/10/27(土) 17:53:53
全部行列って意味をなさないと思うな
どこを作ってるかにもよるけど

例えば、キャラに「3回転する」ってアクションがあったとして
この「3回転」ってパラはキャラが持つしかない

んでモデルの持ってる行列はインスタンス情報であって
描画するときに実行中のアクションとパラを見て参照すればいいだけだ
姿勢行列なんてもつことないと思うけどな

例えばマリオを100体描画してもロードするモデルは1体で
もってるパラは姿勢行列じゃないと思うんだよね
3次元座標と進行方向のベクトル、速度ベクトル等、その他パラ・・・
って感じで姿勢行列なんてもっても今どういう状態なのかわかりずらい
こんなの必要になんのって描画のときだけじゃねーの?違う?

ウンコなライブラリでたまにロードしたモデルとインスタンスが
1対1になって各ローカルの行列全部メモリにもってるもんがあるけど全く意味ないと思う
983デフォルトの名無しさん:2007/10/27(土) 19:12:35
tiny
984デフォルトの名無しさん:2007/10/27(土) 19:17:59
>>982
例えばバウンディングボックスで
当たり判定をする場合どうする?
三次元の物なんだから、位置と姿勢の情報がなきゃ
何もできんだろ

それを毎フレーム作るのか、保持し更新するのか
行列で持つのか、四元数で持つのか、三角関数で持つのか
それは自由だが
985デフォルトの名無しさん:2007/10/27(土) 19:20:39
>>982
実際に操作するコントローラー相当のものが
必要な行列データとモデルへの参照を持ってればいいだけだと思うが。

まぁそれぞれ一長一短だしいいんでね。
Tiny.xの全フレーム行列で保持しているモーションフォーマットだけは理解しかねるが・・・。
986デフォルトの名無しさん:2007/10/27(土) 20:02:47
>>982
姿勢ってそれボーン行列のこと言ってる?
その前にインスタンスのワールド変換行列はどこへ?
987デフォルトの名無しさん:2007/10/27(土) 21:18:17
ボーン入りXファイル読み込んでスキンメッシュアニメーションしてるんですが、
各ボーンの向きと長さを取得する方法ってありませんか?
現状、子ボーンのオフセット行列が子ボーンの根っこの位置を持ってるので、
その差を使って計算してるのですが、先端にひとつ余計にボーンをつけなきゃならないのと、メッシュが分割されたときうまく子ボーンのオフセット行列が取れない問題があってうまくいってません。

それともXファイルになった時点で向きと長さの情報って失われてますか?
988デフォルトの名無しさん:2007/10/27(土) 22:00:57
必用なら拡張情報としてテンプレートを追加してXに入れるしかない。
989987:2007/10/28(日) 00:54:36
>>988
なるほど…確かに拡張として仕込んだほうが読み書きさえ出来ればあとはスマートになりそうです。
ありがとうございました。
990デフォルトの名無しさん:2007/10/28(日) 13:49:39
Xファイルを3つ並べて XXXってやったら
25歳以上かどうかの質問がでてきました。
僕の頭は感染しているんでしょうか?
991デフォルトの名無しさん:2007/10/28(日) 13:53:45
>>990
しかもDirectときたもんだ
992デフォルトの名無しさん:2007/10/28(日) 23:19:51
メタセコイアとかで立方体のメッシュXFileを吐き出すと頂点が8個じゃなく24個のメッシュになってしまうので
この重複頂点を読み込み時に結合して8頂点にしたいんですが、
D3DXWeldVerticesを使えばいいということで合っていますか?
資料が少なくていまいちわからんのです…
MSDNのサンプル(http://msdn2.microsoft.com/en-us/library/bb205562.aspx#Mtps_DropDownFilterText
どおりにやってみても、成功が返っても頂点数は変わってません。
993デフォルトの名無しさん:2007/10/28(日) 23:33:12
法線が違うなら24個で正常。
994992:2007/10/29(月) 00:11:32
レスありがとうです。
Epsilons.Normal(や、その他)の値を大きくして実行すればいいと思ったんですけど
24のままです。
どうやったら8コにまとめられるんでしょうか…
995デフォルトの名無しさん:2007/10/29(月) 00:26:21
一度D3DXを使わず直接頂点指定をしてボックスを表示してみろ。
たったそれだけで状況が理解できるから。
996デフォルトの名無しさん:2007/10/29(月) 00:29:52
法線や色の異なる頂点を1個に結合したら、法線や色も1個になってしまうよ?
それは意図した結果?
997デフォルトの名無しさん:2007/10/29(月) 00:52:06
つまり球を8頂点で近似するということになる
998992:2007/10/29(月) 01:08:43
みなさんお付き合いありがとうございます。

>>995
プリミティブを描画するのにそれぞれ頂点が必要になるっていうことですか?
でもIndexedだと8コで問題ないですよね?違う話ならすいません。

>>996
メッシュを法線方向に膨らませて裏面のみ黒く描画することで輪郭描画、というやつをやりたいのですが、
頂点がそれぞれ別方向に膨らんでしまいスキマができてしまうのに悩んでいるのです。
なので、法線も色もひとつでOKです。

自分のイメージではWeld関数で同じ位置にある頂点をひとまとめにして、
法線を再計算した後膨らませれば素敵かと思ったのですが。

けど確かに頂点まとめるとテクスチャ座標とかには困りそうですね…

>>997
メッシュ生成関数でつくれということでしょうか?
いじりたいのは立方体に限らないので…
999デフォルトの名無しさん:2007/10/29(月) 01:19:37
>>998
その場合引き伸ばしように別途専用の頂点データを仕込んでおくほうが一般的だねぇ。
ステンシルシャドウとか2.5Dモーションブラーの場合でも仕込み用の頂点入れるし。

ちなみに法線が3Dツール上で同一なら出力される頂点は8個になる。
24個出来るということは法線、頂点色、テクスチャUVのどれかが同一ではないということになる。
1000デフォルトの名無しさん:2007/10/29(月) 01:21:01
補足

Indexedだから24個。
インデックスを使わないなら3x2x6で36頂点になる。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。