鬱だ氏のう DirectX (Part 10)

このエントリーをはてなブックマークに追加
1 ◆Manna2uCLg
DirectXについて、にいさま達がマターリと
技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

ちなみに、言語はC++がメイン。
C# / VB.NET 使いは、専用スレの方が話がスムーズに進むと思われ。
2 ◆Manna2uCLg :03/08/21 08:04
3 ◆Manna2uCLg :03/08/21 08:05
//// 関連
- vb.NETでやるDirectX
http://pc2.2ch.net/test/read.cgi/tech/1039357620/
- Managed DirectX vol.2
http://pc2.2ch.net/test/read.cgi/tech/1061285378/

- C++相談室 part22
http://pc2.2ch.net/test/read.cgi/tech/1060361082/
- ★初心者にVisual C++を教えるスレ★ Part7
http://pc2.2ch.net/test/read.cgi/tech/1056280510/
-Win32API質問箱 Build13
http://pc2.2ch.net/test/read.cgi/tech/1059549320/
リンクが生きてるかどうかくらい確認しろよ
C++相談室は関係ない。
質問です、DTMなどで使用するMIDIキーボードの入力データーを取得したいのですがDirectInputで取得できるでしょうか?
仮にEnumDeviceで列挙され、デバイスを作成したとしてGetDeviceState、GetDeviceDataで
キーデーターを取得とする場合MIDIキーボードはジョイスティックとして扱われるのでしょうか?
また、DirectInputでデーターを取得できない場合はほかにどのような方法があるのでしょうか?
なにぶんMIDIキーボードが手元に無いので検証の方法がありません。

よろしくおねがいします。
>>6
・・・・・・・・・・・・・・・・・・・・・・・・・・。
>>6
いまどきはMIDI楽器でゲームするのが流行りなのか?
ギターやドラムもほしいな。
>>6
おとなしくmidiInなんたら系の関数使っとけ
101:03/08/21 15:51
宇治社中改 は、消えてたのか…
未確認ですまそ
12デフォルトの名無しさん:03/08/21 20:46
度数をラジアンに変換するには、D3DXToRadianというマクロがあるんですけど、
その逆でラジアンを度数に変換するマクロか関数ってありますか?
>>12
はいな!
D3DXToDegree
ラジアンを度に変換する。

1412:03/08/21 20:59
>>13
ありがとうございます
どうでもいいけど、この程度の関数でもD3DXほにゃららって
どうも腹立つんだよな。

C++版のAPIもとっととC#版みたいにしてくれりゃ
使ってやるぜゲイツ!って気になるにやぶさかでないんだが。
最初、くだらねーw と思ったけど、案外役に立ってる関数

        D3DXCreateTeapot()
>>15
関数の名前関連なら、
D3DXAssembleShaderFromFileA
みたいに途中までD3DX以外の省略なんて一切しない勢いなのに
最後のAってなんだよ、とかの方が俺は気にいらない。
18トリビアinDX:03/08/21 21:13
>>16
ティーポットの元ネタって知ってる?
>>18
某有名所のABOUTんとこに書いてあるから
かなりの人が知ってそう。しかもDirectXスレだし。
>>19
(σ`・ω・)σ 根畜生!(最近知っていい気になってた俺の気持ちを少しは以下略)
>>17
どうせマクロでラップされて直接使わないからじゃね?

D3DXって「3」の部分でシフトを放さないといけないから
慣れないうちはD#DXとか打ってたなぁ。
22デフォルトの名無しさん:03/08/22 00:04
WinAPI+DirectXで質問があります。
ダイアログ上でDirectinputを使いたいのですが、
ジョイパッドの入力は通常のウィンドウと同じで取得できるのですが
キーボード入力の取得がうまくいきません。
どうしたらよいでしょうか?
>>16
いやまったく。くだらないけど、ありがたい。
何でもいいからとにかく表示するものが欲しいとき、
非常に便利っすね。
>>22
DirectX SDKサンプルに答えがあります
DirectX9でサーフェースのDCが復活したそうですが、そのDCに対して
描画した場合も、Lockと同じくダーティ領域云々が発生するんでしょうか?

それともDirectX6以前の様にVRAMに直接描いてくれます?
26デフォルトの名無しさん:03/08/22 11:12
>>18
知りたいっす >ティーポットの元ネタ
ttp://www.t-pot.com/about/about.html
思い当たって見に行ってみた。これすか。
( ・∀・)つ〃∩ ヘェーヘェーヘェー  知らんかった
>>17
なぜAをつける…
CreateFileとかもCreateFileAって書いてるのか?
誰か自分のライブラリUPしてくれませんか?
Aつけてたら後でUNICODEにするときどうするんだよ・・・
UNICODEは逆から読むとEDOCINUなので使いません
な、(ry
ウニコード
35デフォルトの名無しさん:03/08/22 18:35
DirectX9 DirectGraphicsにて、
320*240のウィンドウを作り
WM_PAINTでStretchRect()で画像を表示するプログラムを作りました。

ウィンドウをドラッグすると描画されず真っ白になってしまうのはどうしてなんでしょうか?

初歩的なことで申し訳ありません、ご教示ください
3622:03/08/23 00:57
>>24さま
サンプルがまさに自分が求めていた処理を行っていました。
ありがとうございました。
37デフォルトの名無しさん:03/08/23 11:54
>>35
ウィンドウをドラッグしたときにWM_PAINTはきていますか?
35じゃないけど、トップウィンドウをドラッグしてもWM_PAINTは来ないような。
単純にウィンドウを移動先にベタコピーするだけ。
>35
そもそもゲームでイベントドリブンなのが間違い。
>>39
はぁ??
救いようがないヴァカだな
4235:03/08/24 03:14
>>37さん
はい、ウィンドウドラッグ中もWM_PAINTは来ていました。
VCのアウトプットウィンドウにメッセージを出して確認しました。
しかし、その方法で見てみたところ常にWM_PAINTが来ていました。
原因はわからないのですが不可解な動作ですよね。。。
DirectGraphicで使用したウィンドウは常に更新されつづけるのかしら・・・
DirectGraphicではClearとPresentで更新するんじゃ無いの?
君のゲーム設計でのWinMessageの取り扱い次第のような気がするが…
44デフォルトの名無しさん:03/08/24 03:39
○  ヘコヘコ     ★ 無修正DVD ★       ○  ドピュ
( ヽ  ○   モロ見えサンプルDVDプレゼント中 ( ヽ.。   ○
)))」 ̄[     http://www.d-para.com       )))」 ̄[
>>35
このままでは埒が明かないので、
ソースをどっかに上げてみなされ。
case WM_PAINT:

device->Clear(1, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER , D3DCOLOR_XRGB(0,0,0),1.0f,0);
device->BeginScene();
//描画
device->EndScene();
device->Present(NULL,NULL,NULL,NULL);
ValidateRect(hWnd,NULL);
break;

でどう?
更新領域の有効化忘れでWM_PAINTが継続ポストされるっていうオチ?
>>46
ちょっと訂正。
うちの場合、ゲームループ時は描画処理入れてるけど、
WM_PAINT時はPresentだけ行って、
前回描画した画面を上書きしてるだけだった。
これでドラッグ中もちゃんとでるが・・・。
WM_PAINTが来るたびにレンダリングしてたら大変だ罠。
普通はValidateRectだけする。
アクティブ時(レンダリングループが回ってるとき)は
どうせループ側で描画されるから更新領域の削除のみ。

非アクティブ時(レンダリングがとまっているとき)はPresentも行う。

こんな感じがよろしいのではないかと。
5135:03/08/24 12:45
恐縮ながらWM_PAINTのソースです。
case WM_PAINT:
Device->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 0, 0);
Device->BeginScene();
RECT SrcRect,DestRect;
SetRect( &SrcRect, 0, 0, Width, Height);
SetRect( &DestRect, 0, 0, Width, Height);
Device->StretchRect( Surface, &SrcRect, BackBuffer, &DestRect, D3DTEXF_NONE);
Device->EndScene();
Device->Present( NULL, NULL, NULL,NULL);
break;
>>51
とりあえず、WM_PAINTが何の目的でポストされるか調べて見れ。

それはさておき、ValidateRectを追加することで
WM_PAINTがポストされ続ける現象は収まると思う。
ドラッグすると白塗りされる現象に関してはこれだけじゃなんとも。
5335:03/08/24 13:53
WM_PAINTにValidateRectを追加してみました。
WM_PAINTがポストされつづける現象は無くなり、ドラッグ時にも白塗りはなくなりました。
ありがとうございます!

しかし、ここでウィンドウの端を掴んでウィンドウサイズをグリグリ変えてみると
同じようにウィンドウが白くなってしまいました。
>>53
ウィンドウクラスで背景ブラシを白に設定してるなら
それをNULLにしてみたら?

すでにNULLになっていたら・・・う〜ん、
正直、出てきている情報だけじゃ判断は難しい。
5535:03/08/24 14:27
わ!ブラシをNULLにしたらサイズをぐりぐり変えても正しく画像がウィンドウに貼り付けられました。

う〜ん、なんでだろうなあ???
ブラシを設定していても、Presentで描画されて正しく表示されそうなのに・・・
>>55
DefWindowProcがなんかしてるのかもね。

それから、WM_PAINTベースでやってる今のプロジェクトは破棄して
SDKのフレームワークを利用したりして作り直したほうがいい。

WM_PAINTは「君のクライアント領域のここが消えてる(無効になってる)から
描画して」というメッセージ。
Windows側の都合でガンガン送られてくる事があるので
WM_PAINTハンドラでレンダリングするのは非効率極まりない。

例えば、いったんウインドウを画面外に出して、ゆっくり画面内に戻すと
画面内に戻って来た部分を描画させるため、WM_PAINTを1つ処理する傍から
新しいWM_PAINTがポストされてしまう。
>>55
ただ単にブラシで塗りつぶされなくなっただけだと思われ
まぁフツーはApplication.OnIdleとかApplicationEvents.OnIdleとかでやるわな(同じだ)
俺はWM_PAINTのハンドラはPresentとValidateRect呼んでるだけ。
いちいちレンダリングする必要はないよ。
レンダリング部に再入しているんじゃないのか
漏れはWM_PAINTでは再描画フラグ立てるだけだ。
どうやって検証したもんか悩んでるんですけど、
例えばD3DDevice->Resetとかを意図的にエラーにする方法ってあるんですか?
例えばデバッグ版ランタイムで実行して○○というツールを使えば、とか
まあ、DirectXのtutorialからしてWM_PAINTでレンダリングしてるからな。
誰か>>62を訳してくれ。
ハードがエラーを返す状況をシミュレートしたいってことなのでは?
>>65
そうそう
エラー処理が正しく実行されるのか検証したい
それは自分でエラーの生じる状況を作ってやる必要があるんじゃないかな?

単純に呼び出し側がD3D_OKを握りつぶすんじゃなくて、
Direct3Dランタイムの方もエラー時と同じ挙動をさせたいんでしょ?
おれは戻り値にエラーコード入れて確認してる。
>>67
そんな感じ
例えば実際にHALデバイスをサポートしないアダプタでHALでCreateDeviceしちゃったときに
どうなるのかテストしたい、みたいな

無茶言うなって事ですか?
>>69
難しいでしょうね。

デバイスロスト時の処理は、実際にデバイスロストさせるなどして
試してみるしかない。
自分の環境で起こせないエラーは、仕様を確認しつつ、
D3D_OKを握りつぶして仮チェックするくらいしかできない。
漏れは普通に、実行中に画面のプロパティで解像度・色変えて
持ちこたえるか確認するが。
今は色数変えても何事も無かったように動くように作ってある
自分はアホだから、窓サイズ変わっただけでも一旦全部解放して
一から作り直す。
>>73
俺もそう。
バックバッファのサイズを変えるなら、
いったん全部解放したほうがメモリ配置に優しいかもなー。

まぁ、D3DPOOL_MANAGEDにしとけば解放する必要はないわけだが。
DirectDrawの頃はCapsの項目ごとにEnable/Disableを切り替えられたのに
今はそういうソフトを用意してくれないね>MS
Visual Studio 6.0 と .NET 2003 を一緒に入れているわけだが、
DirectX9.0b SDK をインストールしたら
新機能であるAppWizardが、後から入れた.NET 2003で選択できないんだけど何とかできないですか?
>>77
何度も何度も同じ話題が出ているのだが
オマエはファイルのコピーも満足に出来ないのか?
しかしそんなにAppWizardって需要があるのか?
>>79
ちょっとした実験的なもの、学習的なものを作る場合には重宝するよ。
難点はPCHを設定してくれないことか。
ログ読んでも分かりませんでした。ヘタレですいません。
>>79
他人が作ったAppWizardって便利だし使わない?
最近ではGCCをVSで使うときに重宝したよ

>>81
どの部分がわからないかがわからないとわからないよ
>>81
ここではなく、C#スレの方にあったと思うぞ。
>>78
おまいも過去ログには存在しないと何度言えばわかるんだ
>>84
どこに過去ログと書いてある?
勝手に脳内変換するなよ
AppWizardはDLLの一種なんだから必要なものを必要な場所にコピーすれば動く
PC初心者ならともかく、プログラマがその程度も考えられないのが不思議
>>86
プログラマだからといって必ずしもVisualStudioについて詳しいとは限らない罠
統合環境に詳しくなくてもプログラマなら動作原理が予測できる
出来ないのは考えようとしないから
>>85
藻前の身近で何度も話題にでたって漏れの汁ところじゃねーよっ!!
珍しく回答側が言い訳するパターンだな
AppWizardの話はmanagedのスレで出てるね
もう落ちたようだが
.NET2002とかにDX9のAppWizardをインストールしていて、
2003を入れる代わりに2002をアンインストールした人は
比較的簡単に自力で解決できたかもね。
DX9AppWizard関連のファイルは、アンインストされずに残るから。
>>86
DLLの一種というか、JScriptですよ。プププ
番組の途中ですが、>>88たんによるDLLと
AppWizardの類似性に関する長文レスは

ご 遠 慮 下 さ い
>>86はVC++6ユーザー
96デフォルトの名無しさん:03/08/27 13:56
あるD3DFORMAT型の数値からBit深度を逆算する関数ってありますか?
DXGetErrorDescription9みたいな

それともいちいちSwitchで調べるんですか?
>>96
いちいち調べてください。
>>96
普段使うのはたいした数じゃないだろ。
どうして正解を聞かないとプログラムできないわけ?
>>98
>どうして正解を聞かないとプログラムできないわけ?
は?既に組んであるけど不細工だからどうにかならんかなと思っただけだけど?
どこにもやり方がわかりませんなんて書かなかったし

どうしてそんな頓珍漢な憶測が飛び出してくるわけ?
頭おかしいんじゃないの?
そこで逆ギレですよ。
ハッシュでも使ってエレガントに実装しる!
不細工なのは御前が不細工だからだろ( ´,_ゝ`)プ
顔は不細工でもかまわんけど脳みそが不細工なのはヤだな。
まあマターリと卓球でもしようぜ。
( ´ー)ρ┳┻┳°σ(ー` )
105デフォルトの名無しさん:03/08/28 14:11
DirectX9のSDKインスコして、サンプルプログラムコンパイルしたが、
実行すると、たちまち未定義命令例外が出てしまう(movhlps xmm0, mmx1)。
Pentium!!!だからSSEは動くだろうし、なぜ未定義命令例外...。
同様の現象出ている人いませんか?
>>105
CPUの刻印をよく見てみろ

「Pontium川」

そういうことだ。
>>105
SSEがDiableになってるとか。
Disable
>>105
バイナリの方はどなのよ
>>105
コードのアライメントの問題じゃないか?
ほとんどの命令が16バイト境界に置かないとだめらしいぞ。
うちのCPUコアがけでSSEが使えなくなった。
Athlonだけど。
112105:03/08/28 22:53
SDKは今日落とした9.0bで、ランタイムも然り。
例外は、D3D関数内で起きていて、コードはバイナリレベルで見たけど、問題なし。
その命令までSSEの命令が動いているので、SSEがDisableという可能性も無く、
アライメントはレジスタ間の命令だから、関係あったらむしろ怖い。
その一命令前はメモリアクセスしていたが、アドレス最下位バイトは0で
16バイト境界にあり、特に問題はなさそう(というかD3D内であって、自身の
コードではないので、これがバグってるとしたら、問題と思われ)
VTuneとかが悪さをしているのかと思って、OSからクリーンインスコしたけど、
再現してしまいました。となるとビデオカードか? (GeForce FX5600)
3DMarkはちゃんと動いてるし。う〜ん。マシン毎入れ替えか!?
Illegal instructionとDirectXでググると、いくつか同じような現象が
出ているみたいだけど、ここの住人には居ないのかな〜?
113105:03/08/28 22:55
同じバイナリを他のマシンで実行したらちゃんと動いた。
これはマシンの問題なのか...鬱だ氏のう...
114デフォルトの名無しさん:03/08/28 22:57
>112
DX7あたりの似たサンプルで、同じことやってみれ
115デフォルトの名無しさん:03/08/28 22:58
HDDが壊れてるのかもよ
116105:03/08/28 23:26
レスThanksです。明日またトライしてみます。
Slot1のPentium!!! 450MHzという化石マシンで開発しているのがイカン
のかもしれません。そろそろマシン更新したいんですがね。
会社のマシンなので贅沢いえない...これをネタに買い換えを交渉するか...。
デスクトップの色深度が32bitに設定されている状態で
実際に色深度を変える事無く16bitの時どのフォーマットが使われるか
知る方法はありますか?

それとも手近な環境ではどれもR5G6B5だけだったんだけど
X1R5G5B5になる環境ってまず無いのかな?
>>117
CheckDeviceTypeで16bitのD3DFORMATを確認する。
両方可能な環境もあるがそんなことを確認してどうするんだろう?
3Dのシミュレーションを作っているのですが、
参考になるサイトや情報無いでしょうか?
ちょっと古いですが、FFTみたいなタイプ。
マップは全部モデルで作ってるのかな?
何を参考にしたいんだね…
↓高速フーリエ変換についてのサイトを紹介するヤシ
>>118
両方調べてValidだった方という意味ですか?
ユーザーが手動でデスクトップの色深度を16bitにしたときに
どのフォーマットが使われるのか知りたいんですけど・・・

>>119
出来るだけフレキシブルに対応したいだけです
フルスクリーンの16bitモードとウィンドウでの16bitモードで
描画結果が違ったらイヤなので
あとついでといっては失礼ですが
16/32bit両方とも、ValidだったフォーマットでEnumDisplayModeしたとき
使える解像度に差がある環境ってありえるかわかる方いますか?
アナクロで無駄な苦労を続ける人が多いな。ご苦労なこった。
DirectX8は事実上 X8R8G8B8とR5G6B5しかないよ。
>>125
とどのつまり、そのセリフが欲しかったんです
信じてみますありがとう
>>126
意外とそういう要素って大事だよね。

DirectXっていらないステータス多すぎるんだよ。
どう考えても使わない使えないいらないものが多すぎる。
この問題だって結局、8888と565しかねーんだから、
それ以外を用意しておく必要ってあるのか?
DirectXを作ってる人って使う側が全く見えていない気がする。
くだらねー手続きばっかりですすまねー。
今更どうでも良い話だがS3/Virge系だとX1R5G5B5とR5G6B5が選択可能だったな
>>127
しかしここで選択肢が用意されてないと本当に使いたい人がどうしようもなくなる
そういう通常は不要なものをバッサリ切り落とすというのはライブラリ集なんかに期待した方がいいんでないかね
>>129
いや、それ、逆でしょ。
DirectXは不要な設定をわざわざしなければいけないようになってるけど
必要なときによんでくるような設計にできないわけじゃないでしょ。
131 :03/08/30 03:30
少し関係ないかもしれませんが,
テクスチャの1テクセルの中に貼り付け対象の画像のピクセルが
何個も入ってることってあるんですか?
>>131
よくしらないけど。
ないんじゃん、ずれることはあっても。
テクスチャサイズの制限などで
元画像が小さくなって貼られるときは
複数のピクセルが1テクセルになるけど
134132:03/08/30 11:57
>ないんじゃん
うそつき俺。(´・д・`)めっ
誰か>>131を訳してください。
>>133
131は、1テクセルの中にその元画像がそのまま入ってる事があるか
聞いてるんじゃないのかね。 自分で何言ってるか解らんが。
>>136
安心しろ。俺もお前が何言ってるか解らん。
>>127
これで多すぎると思う奴は、ラッパー使えばいいだけじゃん。
俺はむしろDX8から設定できる項目が減ってしまって困っているくらいだが。
>>138
そのラッパーに満足できず自分用ラッパーを作ろうとしたときに
まずつまずくところではあると思うんだけど
膨大な設定値を前に「で、普通みんなどうしてんの・・・」みたいな

でもそういう細かいところもちゃんとサポートしてるラッパーなんて
そうそうないだろうけどね
D3DDEVTYPE_REF・D3DCREATE_SOFTWARE_VERTEXPROCESSING
でCreateDeviceしても、環境に依存する部分はあるのでしょうか?
>>139
言ってることがよくわからんな。
DirectXを触ってて、「膨大な設定値だ」なんて思ったことも無い。
>>141
画面クリアしたいだけなんですけど。
HRESULT Clear(
DWORD Count,
CONST D3DRECT* pRects,
DWORD Flags,
D3DCOLOR Color,
float Z,
DWORD Stencil
);
"画面クリア"が何を指すのか。
>>142
それのどこが膨大なんだ?
>>142
これを以って「で、普通みんなどうしてんの・・・」なんて言い出す奴がいたら、
俺、泣いちゃうかも。
>>143
そう、問題はそれでしょ。
普通画面クリアっつったら素直に通常考えうるようにしてくれりゃ
いいのに、なんのつもりでこんな設定をさせるのか意図がわからない。
もし、このパラメータになんらかの意図を持ってNULL以外の値を
使うならもはやClearの用途はClearでない。
うーんセンスわりー。ってこと。
ほかにもあるぞ
HRESULT D3DXCreateTextureFromFileExA(
LPDIRECT3DDEVICE8 pDevice,
LPCSTR pSrcFile,
UINT Width,
UINT Height,
UINT MipLevels,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
DWORD Filter,
DWORD MipFilter,
D3DCOLOR ColorKey,
D3DXIMAGE_INFO* pSrcInfo,
PALETTEENTRY* pPalette,
LPDIRECT3DTEXTURE8* ppTexture
);
いやーD3DPOOL_MANAGEDを設定してみたかっただけなのに
容赦ないねぇ。ほんとに全部なんかいれなきゃ駄目ですか?w
番外編(マイクロソフトってことで)
HFONT CreateFont(
int nHeight, // フォントの高さ
int nWidth, // 平均文字幅
int nEscapement, // 文字送り方向の角度
int nOrientation, // ベースラインの角度
int fnWeight, // フォントの太さ
DWORD fdwItalic, // 斜体にするかどうか
DWORD fdwUnderline, // 下線を付けるかどうか
DWORD fdwStrikeOut, // 取り消し線を付けるかどうか
DWORD fdwCharSet, // 文字セットの識別子
DWORD fdwOutputPrecision, // 出力精度
DWORD fdwClipPrecision, // クリッピング精度
DWORD fdwQuality, // 出力品質
DWORD fdwPitchAndFamily, // ピッチとファミリ
LPCTSTR lpszFace // フォント名
);
頭おかしいだろ?
>>146
ハァ?
「画面」が何を指し、それを「クリア」するとは、どういう行為なのか?
そのために、どういうパラメータが必要なのか?
その点から考えてDirect3DDevice::Clearは妥当だ。

ていうか、ネーミングの話が微妙に混同されてるし。
>>149
だからクリアだろ。
引数なんて必要なだけでおかしいだろ。
>>150
だから何をクリアしたいんだよ。
昔ながらの、ベーシックのクリアだとすると、フロントバッファを
背景色でクリアする事になるが、それで良いの?
>>151
仕様でレンダリングターゲットってのは変えられないでそ。
153152:03/08/30 19:35
×仕様でレンダリングターゲットってのは変えられないでそ。
○仕様でClearでレンダリングターゲットってのは変えられないでそ。
>>152
漏れの場合クリアと言えば、まずその動作を思い浮かべるから。
>>153
強いて言えば、フロントバッファの時点でターゲットの問題じゃないw
誰が誰かわからん。
とりあえず150だけが孤立してるだろうから
お前だけでもトリップ付けれ。
引数が多すぎるという点のみ同意
構造体渡しにして欲しいな
>引数なんて必要なだけでおかしいだろ。
つまりだ。汎用性のある関数はいやだ、と。
じゃ、Zバッファやステンシルバッファをクリア対象にするかどうかの指定をしたいときや
クリアカラーを指定したいときはどうするの。

別関数を用意する?
それってパラメータを関数名に組み込むのと同意だよ。
リファレンスの複雑さは変わらないよ。
160150:03/08/30 19:51
>>159
>それってパラメータを関数名に組み込むのと同意だよ。
違うよ。
別の関数にすれば、
少なくとも使わない人はみなくてすむじゃない。
その前に別の関数を用意しなくても引数にデフォルト値を設定しといて
くれれば多少は楽にいくんだけど。
D3DRECT* pRects=NULL
例えば↑こんなんやっといてくれれば文句無い。
>>160
それは違うな。
使わない人は見なくて済むのではない。使わない人は全ての”Clear”を
見た上で、自分が必要なClearを見つけなければならない。

ステンシルやZバッファ等もある以上、一定量の複雑さは避けられない。
DirectXのリファレンスを見たくないから
高レベルなライブラリをどっかで拾って使う。
でも、そのライブラリに満足できなくて、
自分で作ろうと思ったら、パラメータがいっぱいで嫌になる。
こういう事か。

結論。
大工道具も使えないのに家を建てようとするな。
>>160
省略できるのは引数リスト末のみというデフォルト引数の性質上、
デフォルト値を適用したい引数と、こちらが指定したい引数が入り乱れている場合、
難しいことになる。
単純に引数の並びを変えただけじゃ対応は仕切れないし、
呼び出し方法に柔軟性が増える分、思わぬミスを呼ぶ恐れもある。

それらを補えるだけのメリットがあるわけでもない。
所詮は素人と面倒くさがりと不勉強な人間におもねった設計でしかないからね。
> でも、そのライブラリに満足できなくて、
> 自分で作ろうと思ったら、パラメータがいっぱいで嫌になる。
> こういう事か。

いい経験になったのでは?
刃がすべて出っ放しの十得ナイフと
職人さんの、用途ごとに違う種類がそろった道具箱

ま、ライブラリでラッピングすれば両方使えるわけだが
ソフトってそう言うものだ罠。
けど、マイクロソフトのAPI群にパラメータが多すぎるのは
設計レベルで抽象化に失敗しているせいもあるとは思うが。
>>160
自分で好きなようにラッピングして、関数を一回作れば良いだけだと思うが
予め用意されている必要は全くない
>>166
んで、結局できるものはみんな同じようなラッパーということだね。
>>165
その例はまったく当を得ていない。
用途ごとに細分化された職人の道具こそがAPIのパラメータだ。
>>167
同じようなラッパーだが、同じラッパーではない。これ重要。
要するに150は骨抜き魚しか喰えないんだろ。
>>165
>けど、マイクロソフトのAPI群にパラメータが多すぎるのは
>設計レベルで抽象化に失敗しているせいもあるとは思うが。

詳細きぼん。
ちょっとカッコいい事言ってみたかっただけじゃないよね?
APIを抽象化してどうするんだろう
仕舞いにはマシン語も抽象化しろとか言い出すんだろうか?
173150:03/08/30 22:25
>>170
アホか。ただ使いにくいっていってるだけでしょ。
パラメータが無駄に多いのが職人の道具か?
お前の作る関数もあんなに引数が多いのか?
あのクソみたいなパラメータの多さは、関数を使う側を意識して
ないからあるものであって決して質のいいものじゃない。
ただ単に設計失敗してるだけだろ。

あと、もうちょっと使う頻度を考えろ。
あまり使わないものとよく使うものをいっしょにするな。

Clearの例でいうとおおよそ大部分の人間が
Clear()で引数なんてほとんど0(デフォ)で事足りるだろ?

全部覚えるとかいってるやついるけど、この先仕事で俺と
あたったときにその言葉は後悔することになるぞ。
全部覚えるんだなw?(俺だっておぼえちゃいねーのにご苦労なこった)
二言はねーなw?

 さ ぁ 厨 度 が 上 が っ て ま い り ま す た

>>173
気持ちは分かるけど、結局 API であってユーティリティではないと。

ラッパー関数を書いて引数のなしの clear() を作ればいいだけなんですから。
そうすれば、毎回プログラムを書くときに、「なんてパラメーターの群れだ」と
怒りながら長々とカッコの中を埋める必要もなくなります。
Clear() をデフォにしたところで、その内部で
Clear(パラメータいっぱい)を実行することには変わらない。
薄皮1枚レイヤーが被るだけで、そんなことはAPIの仕事ではない。
DirectXのAPIは昔と比べりゃだいぶよくなったが
まだ平均からすれば悪いほうぢゃねーの?

まあ、いろんなハードウェアに対応する必要上仕方ないかもだ。
>>173
APIのような低レベル層だから、必須パラメータは多くなって当然だろーが。
いったいどんなウマーな設計したら、それを減らせる魔法が使えるってんだ。

>全部覚えるとかいってるやついるけど、この先仕事で俺と
>あたったときにその言葉は後悔することになるぞ。
違う意味で後悔しそうだ。
お前みたいなのがいっぱしのプログラマ名乗ってたら洒落にならん。

>全部覚えるんだなw?(俺だっておぼえちゃいねーのにご苦労なこった)
で、それって誰が言ったの?
普通にドキュメント見るだろ。
そもそもデフォルトがどうこう以前に、
そういう前提で踏み込んでいったらClearという命令自体隠蔽される
だがそれはAPIの仕事ではない
DirectXとそこら辺に落ちている【初心者でもできる】みたいな物を
混同しているんじゃないのか?
要するに「俺が使わない機能のパラメーターなんか邪魔だ、そんなもんはDirectXから消せ」
ってことなんでしょ?

アフォか?
なんだマカーがいるのか?
>>181
>俺が使わない機能
っていうけど使う人がいるの?

まあ、こんなにパラメータがあるわりにはついこの間まで
リフレッシュレートの設定すらできなかったからな。
制作者の頭がおかしいのもあながちはずれではない。
184139:03/08/30 23:36
うわー何気ない愚痴がとんでもないフレームになってるよTT

漏れが言いたかったのは全然違う事で
引数1つとってもアホみたいに設定できる値があって
どういう設定が一般的でどれがマイナー(ハードによって未対応)で
っていうのがヘルプみてもサパーリわからんし
何を基準に選んでいけばいいのか初心者には難しすぎる
ということ

例えば16bitのバックバッファフォーマットとかだと
32bitはX8R8G8B8が一般的なのにX1R5G5B5に対応してるハードは
あんまり無いみたいなそういう慣例(常識?)がまったくわからない
>>184
ヘルプで説明不足な部分は、サンプルで解消できることが多いよ。
>>183はフリーソフトの作者に要望をつきつけて罵倒するタイプ
>>185
いやサンプルって悪い意味でDirectXのサンプルじゃん
実務レベルのサンプルはそうそう無いんじゃない?
「普通どうするの」ってゲームとかで実装するときに途方に暮れてるんだと思うけど
>>187
よくわからんが、ヘルプ見てサンプル見て、それでも途方にくれてるようなら
無理してDirectXなんて使わなくていいじゃん。
良くも悪くも3Dに関してはまだ発展途上。
わかりにくいとかグデグデ言ってるなら5年くらい待ってろ
そうすれば少しはAPIもサンプルも出そろってくる
つまり大工道具一式が目の前にあって、
周りの家を見ても家の建て方が分からないと言いたいわけだな?
初心者でも簡単に思った通りの家が建てられたら、大工などいらない
で、OpenGLあたりと比較するとそのへんどうなんだ?
変わらん
>>190
俺が設計士やってお前が土方でうまくいくと思うよホント。
>>193
いや、お前の方が土方だよ。
能力要らずで作れる家の設計と部品が上がってくるのを待っている、な。
>>194
いや、大工道具一式目の前に出されても俺には使えないよ。
その代わり設計には自身があるからさ。
ま、無能な奴は消えろってことだ。
いい加減、技術的な話題を振れや。
ちなみに glClear は引数1個ダヨ
>>197
それは素晴らしい!

続きはぜひこちらで
  http://pc2.2ch.net/test/read.cgi/tech/1039984523/
もの凄い勢いでレスついてると思ったら……
結論:( ´∀`)Clearは引数1つで十分。
あっそ

勝手に言っとけ
こんなどうでもいいことで騒いでる奴は
どうせ大したもの作れてないだろ
>>202
上の話はよく読んでないけど引数の数ということで。
塵も積もればなんとやら。
汎用性だとかいって激薄のラッパーしか作らない奴がいて
かなり面倒なソースになってる。
いうまでもなく関数の引数の数が爆発する。
ちょっとしたことでいちいち面倒な設定がつきまとうので
そいつのクラスのラッパーをまた作らないと仕事にならない。
まわりにこんな奴いない?
>>200
>>198へ逝ってください
>>204
OpenGLスレって人少ないの?
Direct3Dでの関数の引数の数だけ、個別の関数呼び出しをするのがOpenGL。
OpenGLで引数が一番多いのはテクスチャの更新だったかな。

void glTexImage2D(
 GLenum target,
GLint level,
GLint internalformat,
GLsizei width,
GLsizei height,
GLint border,
GLenum format,
GLenum type,
const GLvoid *pixels
);

>>147にある引数でここにないフィルタなどの設定は、別の関数で行う。

パラメータが複数必要な機能の実現方法は大きく分けて2つあって
・ステートを持たせて、関数を複数回呼ぶ(GL)
・関数に引数を沢山のせる/構造体を渡す(D3D)
となるわけだけど、その優劣を比べたいのかね?

話題のclearにしても、結局glClearColor()/glClearDepth()を呼び出して
再設定する羽目になると思うんだが・・・
う〜んホント自分の愚痴から全然違う方向に話が進んでる・・・

漏れは引数がいっぱいあろうと別にかまわないし
そんなことでDirectXがクソだと言うつもりも全然無い

大工の話が出てたけど、漏れが途方に暮れたのは
例えばレンチ1つとっても、六角とか四角とかアホみたいに種類があって
しかもそれぞれミリ数がずらっとそろってたりして
自分で使う用に便利セットにまとめようとしたときに
「んで、どれを現場に持ってけばいいわけ?」というところ

つまり引数そのものの数じゃなくて、引数に渡せる膨大な規定値を
何を基準に選べば良いのかほとんどわからない
自分が必要な機能を選べばいいとかいう頓珍漢な答えが来そうなので
話を戻すけど、例のサーフェイスフォーマットでも
X8R8G8B8と似た形式のX1R5G5B5がほとんどサポートされてないみたいな

みんなこういう問題(取捨選択)ってどうしてんの?
どれが来ても良いように、メジャーなフォーマットには全対応
209デフォルトの名無しさん:03/08/31 15:41
DirectXって、もともと
「与えられた環境で、いかに最速に動かすか」
というコンセプトで、それを目指して、いろんな表現方法を取り入れたみたいだけど、
DX9.0になって、ようやく「意味ねーことやってた」って気付いて、
そこで終わりになったんでしょ。
OSによって資金に余裕ができたから、一つ未知の領域にチャレンジってことだたと想うけど。

漏れ的には、任天堂のゲームキューブの3D開発環境のがよっぽどイイ気がする。
使ったことないけど。
210デフォルトの名無しさん:03/08/31 15:44
だから、このスレタイには、感心したよ
三角ポリゴンしか使えないって時点で既に鬱だ氏
211氏の文意とは微妙に違うけど…
誰かDirectXで多角形も扱えるようなソースくれないかなぁ
211氏の文意とは微妙に違うけど…
誰かDirectXでNURBSも扱えるようなソースくれないかなぁ
三角ポリゴンだけだとテクスチャがまともに貼れない。
将来NURBSで描画できるようになるかもしれんね。
何年先になるかは知らんが
>>207
とりあえずピクセルフォーマットに関しては
X1R5G6B5とR5G6B5の違いなんて
ロックして書き込むとき以外は考える必要ないから、
取捨選択に迷うことは無い。

>>209
そりゃチップ仕様がキッチリ決まってるコンシューマハードなら楽で当然。
GCに限らずXboxだって同じことかと。
>>216
Xboxは、めんどくさかった。もちろんパソコンよりは、3倍くらい(当社比)マシだったけど。

でも、ヘルプの日本語はPC版のほうがよかった。全く同じ英文を訳している場合でも、
XBOXのほうは、かなりひどい。しかも、PCの例外的なデバイスのための説明文なんか
が削られないまま残っているから、PCで開発した経験のない人には意味不明な
記述が山盛りあった。
>>217
へぇ意外だ。Xbox=PCでグラボ決め打ち感覚と思っていたので。
>>214
三角形だろうと多角形だろうと、頂点の組み合わせが変わるだけで、テクスチャ座標には関係しない
よって三角形ではなくてもオマエは永遠にテクスチャをまともに張ることは出来ない
>>212
俺も欲しいぜ、多角形プリミティブ。
NURBSは来るにしても、多角形は絶対来ないだろうなぁ。

くそぉ、OpenGLなら多角形あったのになぁ。
凸型くらいなら簡単だけど、凹や回が俺にはむりぽ…。
>>219
えとね、Direct3Dで、台形のポリゴンに正方形のテクスチャを
四隅合わせて破綻しない様に貼れる?
>>221
それは三角形だろうが多角形だろうが難易度は変わらない
>>222
ちゃんと考えてくれた? もしくは試してみた事ある?
引数の個数の次は何がネタになってるの?
>>221
「破綻しない」って具体的にどういう状態?
>>225
三角ポリゴンの境目が露骨に出ない かな
結論:
四角形ポリゴンが一発で描画できないDirectXはダサイ。

ところでテクスチャってどうやって貼られるんだろう。
もしかして単に三角形二枚にしてるだけ?
>>226
まず台形にテクスチャを展開するときの種類を答えてください
どの手法を使ったときの話ですか?
>>228
>>221 でも言った様に、四隅合わせてフィット

>>227
低レベルで四角扱えるのは、四隅のUV01にするだけで問題なし
> 四隅のUV01にするだけで問題なし

具体的な処理方法はどんなの?

> 低レベルで

OpenGLは低レベル云々関係ないね。
231212:03/08/31 18:15
>>220
おお、同志!用途はなんでしょ?
私は卒研で必要で(多角形自体とは無関係ですが)。
OpenGLだと出来るんですねぇ。乗り換えを検討してみようかな
処理法って何よ。 線形補完で良いのか?
OpenGLネタはOpenGLスレへ
219はどうした
235220:03/08/31 18:32
>>231
やぁ、すいません。OpenGLで出来るというのは聞いた話でして
実際は良く知らなかったりで、タハハ。たぶんあると思います。

用途というほどではなく単に趣味です。ただ、空間に好きな多角形を
配置することが出来るだけで、今の仕事、すごい思考の助けになるんです。

tessellationでぐぐると、色々出てくると思います。私には無理でしたが
学術でやっている方なら理解できると思います。
頑張って下さい(そしてソースを公開してください(笑)。

私の場合線だけで十分なんですよね。ただあれだと裏が透けますし…。
前時代に戻って陰"線"処理を勉強してみようか…tessellationよりは敷居が低そうだ…。
>低レベルで四角扱えるのは、四隅のUV01にするだけで問題なし
問題ありすぎです。
そんなことしたら境界線が出て当たり前です。
そもそもVGAが三角形しか描画できないことをご存知ないようです(・∀・)ニヤニヤ
238212:03/08/31 18:48
>>235
キーワードありがとうございます。なるほど、多角形を
三角形プリミティブで埋めていく感じなんですね。
しかしこいつは難しそうだ。

手元の教科書見ると隠面処理はあるのですが
隠線処理って載ってないですね。これまた難しそうだ。
そちらもお仕事がんばってください。
>>236-237
的を射てない揚げ足取ってないで、貼れるなら貼ってくれよ。
このままだらだら茶濁してるなら消えるよ。
台形の破綻はどうしようもないと思われ。
別に致命的な欠陥でもなし。
>>239 消えていいよ
で、四角形に正常にポリゴン貼れるの?貼れないの?
なんか、自分はろくに工夫もせずに
低レベル処理層にいちゃもんばっかりつけてる奴が多い。

引数の奴にしても、台形の奴にしても。
>>243
じゃあ 工夫して貼ってみてくれ。 いくら分割しても良い。
>>244
Direct3Dは別に科学技術用じゃないよ?
正確な結果なんていらないの。
1枚のテクスチャを破綻無く貼り付ける必要なんてないの。
木を見て森を見ず
>>245
うん。 三角ポリゴンしか使えないDirect3Dに正確な結果求めてないし、
求めようともしてないけど、219を始め、いまいち意図が分かって無い人が
多い様だから。
あまりにも初歩的な質問にごめんなさい。
抜き色のやりかたがよく分かりません。

D3DXCreateTextureFromFileExでテクスチャーの読み込み時に
ColorKeyを0xFF000000にセットしましたが
その後のアルファ値のブレンディング係数なんかの指定がよく分かりません。
(SetRenderStateとSetTextureStageState)

よろしくお願いします。
>>235 >>238
tessellationはかなり面倒だな
自分も昔やった記憶がかすかにあるけど、あまりスマートじゃなかったっけ
一応コード探したけどみつからずスマソ

大学数学レベルだが、外積が分かる程度でなんとかなったと思う
質問ならこういうスレより学術板行った方がいいかも
あまり携わるもんじゃないから、ここは知ってる人少なそうだ
ともかくVGA自体が三角形しか描画できない仕様なわけで、
三角ポリゴン2枚で描画しようとする以上は、UVが歪むことは避けられん。
これはどのような描画APIを使っても一緒のことです。

>>244
ハードウェアを直に叩く物と考えたほうがいいんでないかな。
ハードの仕様の中での正確な結果は必要です。
251248:03/08/31 19:30
あ、解決できたようです・・・。>>248は無視してください。
とりあえずテクスチャ座標はテクセルとピクセルの誤差修正を忘れずに
>>248
まずはDirect3Dがどういう手順で描画しているのか勉強したほうがいいかもねぇ。
ヘルプの「固定機能パイプライン」「テクスチャ」「テクスチャブレンディング」あたりを参照しなされ。
>>251
そういうときは「無視してください」より
解決した方法を書いとくといいと思うよ。
ここ2日で一気にレベルが低下したような…

夏厨が最後のあがきか?さっさと宿題やって寝ろ
>>238
陰線処理なら、「(ほにゃらら)コンピューターグラフィックス」てな感じの
ダサ目の本を漁れば腐るほど載ってると思うが、、、。
2日ぶりに来たら、板間違えたかと思った(デブ板だったかなーと)

>>139
ttp://www.netsphere.jp/osaru/
ここのDxInfoLibで各ビデオカードの実装状況なんかを見て決めるんだよ。
あとは、実際に色んな環境で試してもらって後から手直し。

今はGeForceとRadeonとIntelの内蔵グラフィックだけを気にすれば
いいんじゃない?RivaとかG400あたりは気分次第で。

PermediaとかVoodooがいた頃よりは選択肢が減って楽になったよ。

>>238
隠面処理はZバッファのおかげで何も考えずにできるようになったから
物凄く簡単だけど、隠線処理は自分でやると面倒だよ。
一番簡単なのは、面はいらなくてもとりあえずZバッファに面を描画
してしまって、後から線だけを描画。
257=デブ板住人
デブ板ってやっぱりデブが集まるの?
261デフォルトの名無しさん:03/09/01 01:21
久々にプログラミングでもしてみようとBCCとDirectXインストしてようやく
サンプルがすべてコンパイル出来る環境が整った。
あれやこれや調べてたら丸1日かかったぜ。
Cいじるの10年ぶりくらいだけど最近はこんな複雑になってるのね・・・
先が思いやられる。QuickC+DOSの頃が懐かしいなぁ。
あのころに比べたらよくなった面も多いと密かに思ってたりするおれ
DirectXヘルプも親切だしハードウェア叩かなくても高速な描画できるし
263238:03/09/01 06:07
>>249
面倒な様で怖じ気づきそうですが、
外積程度ならなんとかなりそうです。

学術板というと、数学板とかでしょうか?
今日一日調べて、もし疑問が出たらそちらへ行ってみます。
レスありがとうございました。

>>256 >>257
220=235さんへの感想を言っただけで
私自身は隠線処理の必要はなくて…すいません。
その220=235でありんす。皆さんレスありがとうございます。

>>249
面倒ですよね。その外積やらアークサインだのが分からず挫折しますた…。
>>256
例コードがN88-BASICみたいな本には良く載ってますね(笑
ただ詳しい物は少ない気がします。さわりだけで、すぐ隠面処理の解説に移るという…。
>>257
問題は、その面なんですよね。多角形に対する三角面の割り当てと言いますか…。
>>263
誤解させちゃって申し訳ない。マジで頑張って下さい。

自分のような素人でも、DirectX使えば…なんて錯覚しちゃいますが、
変わったことやろうとすると、やはり地力が物を言いますねぇ。
出かけ前の駆け足駄レスすんませんでした。
265デフォルトの名無しさん:03/09/01 13:49
DXで多角形とか、言ってるけど、
どんな図形も三角形の組み合わせであらわせるから、
自分でインプリメントするなり、ライブラリ作ればいいじゃん。
誰もそうしないなんて言ってない
>>264
テッセレーションと一言で言っても色んな分割法があるわけで、
例の台形の歪みをなくす程度のことなら線形補間された格子を作るだけでいい。
NURBSみたいなのになると、とてもレスでかけるようなことじゃなくなるけど。

それから256へのレスを見るあたり、対象の本を微妙に甘く見られてるようなので、リンク先。
基礎的なことなら何でも載ってると言っていいんじゃないかと思います。
http://www.amazon.co.jp/exec/obidos/ASIN/4274064050/ref=ase_satoojapan0d-22/250-2891884-1884238
画面は16ビットカラーモードであって、
32ビットカラーのサーフィスを作成することは可能でした。
しかし、32ビットカラーのサーフィスをバックバッファへ描画しようとしても、
できないようです。
何か方法があるのでしょうか。
それとも、やはりフォーマットは統一させなくてはなりませんか?
269268:03/09/01 18:21
すみません、いくらか補足します。
SDK は DirectX9 SDKを用いています。
フォーマットが D3DFMT_R5G6B5 のバックバッファに
D3DFMT_X8R8G8 のサーフィス内容を描画(転送)したいと考えています。
>>268
サーフェースはフォーマット変換をサポートしていますか?
テクスチャーを縦方向にスクロールさせたいんだけど
UVの設定方法がさっぱり分からん。別の方法でやったほうがいいのか?
>>271
縦方向ならVにスクロール量を加算すれば、とりあえず縦スクロールする。
273268:03/09/01 19:11
>>270
あせるあまりにそういった確認をしていませんでした。
CheckDeviceFormatConversion でチェックしたところ、
ハードウェアでサポートされていないようでした。
これでなぜ描画できないのかが理解できました。
ありがとうございます。
274デフォルトの名無しさん:03/09/01 19:20
テクスチャをプリミティブでリアルタイムにバックバッファに、
陰面処理の右手手法によって、Zバッファつきで描画するさい、
ラスタースクロールの、シューデング効果は、MTBFの関係から、
必ずしも、アフォン変換の相対的正当性が結果において、
絶対という理論は、否定できえないという見解は、どう思われますか
275271:03/09/01 19:21
>>272
おお、出来た。サンクス。
UVカット
277220=264:03/09/01 20:08
>>267
やーこりゃどうも。何とかして入手してみたいと思います。感謝!
(台形やテクスチャの話をしていたのは別の方です。念のため)
>>267
歪みを無くす事って出来るの?
分割数増やす事によって誤魔化すだけじゃないの?
>>278
歪みをなくす、と書いたのは悪かったな。
歪みを減らす、とでも考えてください。
リアルタイム3Dなんて誤魔化してナンボだべ。
>>280
うん、俺がどうでもいいと考える次元に突っ込んでいて
激しく取り残された感があって非常にさびしい感じだ。
>>280
つか、やってる内に四角ポリゴン一枚の為にどんだけ三角ポリゴン
使うんだって事になって誤魔化す(分割する)事を辞めた。
みんなすげーな
しばらくコンシューマ機ばかりいじってるから、DirectXで考慮しなきゃいけない事とか(ハードサポートとか)面倒だよ
>>283
それ違うと思う。
対応能力が無くなってるんだよ。
>>284
283さんは、たぶんそういう意味合いで自戒を込めて言ってるんじゃないかなぁ
286デフォルトの名無しさん:03/09/02 13:56
borlandでdirectxやってたけど・・・あまりの互換性の低さに絶句・・・
本質的じゃない部分に相当手間を取られる・・・やっぱvisual c++が
必要なのかなぁ。

winnyで落とそう。
>>286
具体的にどんな不都合があるの?
漏れはその内VCからBCに戻ろうと思ってたんだが。
>>286
タイーホ
289デフォルトの名無しさん:03/09/02 14:35
>>287
borland用のライブラリが付属してないのは知ってるよね?
つまりlibを自分で作るかどっかから拾ってくるしかない。

それで拾ってきたものを使うとやはりところどころバグがあって
間違えた関数の外部参照や定義をしてる箇所がある。

じゃあ自分で作ればっても自分で作ってもバグがない保証は
どこにもない。これで大丈夫だろうと思っても依存関係で思わぬ
エラーが発生することがある。またその原因を探るのも一苦労。

くやしいけどMSから提供されるオリジナルのライブラリを有難く使うのが吉と
思った。

DirectXを知り尽くした人間なら問題ないとは思うが・・・
何言おうが割れ厨房のいうことにゃ、耳を傾ける気にならんがな
傾けたところで290には分からないだろう。
Shadeでモデリングした自作の美少女モデルが
うんこをもりもり出すような3Dゲームを作りたいと思い立って
8月の頭からC++の勉強を始めたんだけど・・・

いつになったらDirect Xの勉強に到達できるのかな・・・遠いなぁ・・・。
> winnyで落とそう。

やれやれ…
294デフォルトの名無しさん:03/09/02 18:46
>>286=>>289=>>291なん?
9月なのに残暑厳しいことで。
295デフォルトの名無しさん:03/09/02 18:50
長瀬愛ちゃんがセーラー服姿で大奮闘!小さな身体にルーズソックスがよく似合います。
お得意の騎上位での腰振りは必見です!!今すぐサンプルムービーで確認だ!

http://66.40.59.77/index.html
>>294
それもそうだろうが、むしろ何故かここへ日記を
書いてる>>286>>292が同じ奴に見える

かまって欲しいんだろう、わざと極端なこと書いて
297291:03/09/02 21:23
>>294
違う
厨な質問で申し訳ないんですが、DrawPrimitive() ってバックグラウンドで描画してくれないんですか?
必要な行列等をCPUで作って、VSで頂点&光源計算 -> 描画を裏で走らせたいんですが…
>>298
HEY!BOY!現状を説明してみちゃくれないかYo!
俺よりできるやさしいおにいさんがきっと説明してくれるYo!
>>299
HEY!GUY!現状はサンプル通りですYo!
DrawPrimitive()の直後にPresent()が来ているから疑問に思いました(EndScene()もあるけど)
頂点が閉じたメッシュの中にあるかどうか判定するには
どんな方法があるのでしょうか?
要は複雑なモデルに対する当たり判定なのですが・・・。
>>300
DrawPrimitive()はバックバッファに描画するYo!
Present()はフロントバッファとバックバッファをチェンジする呪文だYo!
>>298
NVIDIAのサイトにでもいけばヒントになるスライドが置いてあると思ー。
>>302は質問の意図が分かってないようだ。
>>304
>>302のレスはレスで、復習になったYo!
今の世の中、情報の選り好みはせずに自ら取捨選択する
情報は多い方がいいYo!
>>292
>Shadeでモデリング
ここから間違ってるヨカーン

下痢でいいならサンプルのパーティクル逆さにしてパラメータいじれば( ・∀・)イイ!
>>306
想像してワラタ
ActiveMovieControl で、再生位置を取得するにはどうすれば
いいでしょうか?
>>308
  ( 'A`)シラネェヨ
 /(ヘ っ )ヘ
310デフォルトの名無しさん:03/09/03 19:55
だいぶアフォな質問だと思うのですが、
DirectX8のSDKと9のSDKって両方インストールして大丈夫なもんなんでしょうか。

これからちょっとプログラムの勉強をしてみようと思ってるんですけど、
Web上の参考になるサイトなどは割りとまだ8の所が多いし
かといって9を使っている本やサイトもあるので、
どっちで勉強を始めればいいかも迷っています、、、
9でいいよ
>>310
おれは7,8,9が入ってる。インストール先を変えれば問題ない。
今から始めるのなら9がいいでしょ。
>>311>>312>>313

どもです。マジ助かりました。
結構分りやすくて好きなサイトが8の場合が多いんで
どうしようか迷ってたんですが、複数のSDKを入れて大丈夫なら
9メインで教えていただいたサイトなど参考にしながら
何とか色々やっていこうと思います。
>>313
おれは9しか入ってないが7しか使っていないw
DX9の目玉であるプログラマブルシェーダーは
どうせビデオカードの対応が足りてなくて
ブルジョア以外は絵に描いたもちだからな〜。
>>316
すでにDX8からできなかったっけ?

そして初歩的な質問なんですが、所謂「固定機能」というのは一体何の事なんでしょうか?
ヘルプ見るといきなり「固定機能パイプライン」などとあるのですが、何を持って固定機能なんだかわかりません・・・
誰か教えてください、おながいします('A`)
ピクセルシェーダ2.0とかそっちでしょ。
1.0と2.0じゃ機能が違いすぎる。
HLSLしかり。
319デフォルトの名無しさん:03/09/04 00:13
D3DXComputeBoundingBoxのような物を自前で実装する場合、
すべての頂点を比較しながら境界を抽出するのでしょうか?
それとももっと簡単な方法があるのでしょうか?
>>317
機能が固定されてるんだろ?
それしか出来ないつーことでわ
>>320
従来のように、マトリックス設定して頂点と法線渡して。。。というあたりの機能のことでよろしいですかな?
ずっと自前で計算していたから、そのあたりがいまいちピンと来なかった・・・
>317
DX7で言うところのT&L方式のことを、(DX8以降では)固定頂点パイプラインと呼んでいる。

DX8以降のプログラマブル機能の場合、ジオメトリ計算以降のプロセスは全部
自分でプログラムできる(というかする)でしょ。
でも、T&Lの場合は、一部の機能をオプションパラメータとして少々設定できるのを除けば、
ジオメトリ計算からレンダリングのプロセスは、お任せで毎回同じでしょ。だから固定。
>>322
なるほど、DX7のT&L方式のことをすっかり忘れてました
こんな超初歩的な質問に丁寧に答えてくれてありがとうです
>>314
9のSDK入れても7や8で開発はできるよ。ヘルプだけ保存しておけば十分。
っていうか、本当に勉強する気があるなら、8の解説読みながら脳内変換で
9で書けるようにしなさいと。

>>319
D3DXComputeBoundingBoxは与えられた頂点に何の仮定も持たない(持てない)
から、全部チェックするしかないかと。
D3DXComputeBoundingBoxは単純にXYZ座標の最大値と最小値を求めるだけだから
やっていることは簡単だよ。

ちなみにD3DXComputeBoundingSphereの方は手を抜いていて、頂点座標の
平均値を出しているだけ。
325デフォルトの名無しさん:03/09/04 19:09
テクスチャをプリミティブでリアルタイムにバックバッファに、
陰面処理の右手手法によって、Zバッファつきで描画するさい、
ラスタースクロールの、シューデング効果は、MTBFの関係から、
必ずしも、アフォン変換の相対的正当性が結果において、
絶対という理論は、否定できえないという見解は、どう思われますか
アフォンか? >325
読みにくい。
文節を正しく区切ることすら学んでこなかったのか?
既出のネタですよ
>>274でガイシュツ
最適な境界球を求めるのは奥が深いんだよな。
だれかパクらしてくれ。
コンピュータ・ジオメトリって本に最小包含円のアルゴリズムが載ってたから、
それをそのまんま3次元にしたらできたよ。
関数の数が5つに膨れ上がったけど。
っていうか、ひさしぶりに見たら何やってんのか自分でもよく分からん。
なんかそこの処理だけで100行以上あるし。
動きの激しいアニメーションがある場合ってどうすんの?
334298:03/09/04 23:25
どなたか>>298を解答していただけないでしょうか?
>>334
この辺からパフォーマンス関係の資料探すよろし。

NVIDIA Developer Home
http://developer.nvidia.com/page/developer_home.html
>>298
バックグランドでの描画ってのが意味分りません?
複雑なモデル同士の正確な当たり判定のやり方教えてください。

全ポリゴン同士の交差判定で無理矢理接触割り出すとして、
モデルの中に内包されてるかどうかは、どう判断すべきでしょうか?
>>337
そういうのは境界球or境界箱レベルで既に検出されてる。
>>337
内包されているかってことは、モデルが閉じているのが前提条件になるけど、
任意の点から適当な方向にレイを飛ばして、そのレイと交差するポリゴンの
数が奇数なら中、偶数なら外っていう判定の仕方がある。
全ポリゴンの交差判定した後に、代表でお互いのモデルから1頂点ずつ判定
すれば十分かと。

一番説明が簡単な代わりに重い手法なんで、その辺は覚悟がいるかと。
340337:03/09/06 08:37
>>339
なるほど。
ただ、これでは凹面では無理みたいですね。

ところで話は変わりますが、
市販のゲームで当たり判定がリアルな物って何かありませんか?
>>340
当たった後の挙動がリアルってのには目がいくけど。
当たり判定がリアルってゲームは気にして見たこと無いな。
当たり判定がリアルでも
ただ単にストレスが溜まるだけだろう。
当たり判定がリアルかどうかは、かなりやりこまないと見えてこないから、
ゲーマーに聞いてみるとよいのではないかな。
見た目と判定の差が少ないなんて
ピンボールとかビリヤードのゲームくらいだろ
339ではないが>>339の方法は凹多角形でも可能でそ

それからポリゴン単位の当たり判定にこだわるのもいいが
多くの場合では、よりマクロな部分、例えば物理シムなどをしっかりさせなければ
リアリティが感じられないと思われ。
それに当たり判定を正確にしてもフレーム単位で動かしていたのでは
フレーム間の移動分の誤差が出てしまうわけだがそのへんはどうするつもりなのか。

とりあえず人に聞いてばっかいないで、実際にテストコードを書いたり
各アルゴリズムの計算量の比較をしてみたり、誤差計算をしたりしてみれ。
>>340
ずいぶん大雑把で申し訳ないんだけど、
ナムコのゲームの話で「ポリゴンヒット」って用語を
聞いたことがある。ポリゴン単位で当たり判定を
取っているのを、そう表現してたっけな。

確か、Ace Combatシリーズの話の中で出てきたと記憶してる。
で当然、描画モデルと当り判定モデルは別でポリ数落としてるんでしょ?
アフォン変換
Zバッファの様な物使って、レンダリングのついでに厳密な判定て出来んかね。
>>349
ソリッドモデル&ボクセルとか?
351339:03/09/06 17:36
>>340
345の言うとおり凹凸関係なく判定できるよ。
飛ばしたレイがポリゴンの境界と交わると面倒だから、そこだけ注意が必要。

凸だけでいいなら、各ポリゴンの面法線との内積で判定できる。
他にも前提条件があれば、もっと高速な方法はいくらでもあるよ。
モデルが変形しないならBSP使うとか。
>>346
たぶん、AceCombat04の話だとおもうけど、あれは、地面に配置された建造物の当たり判定が
見ためどおりになるようにしたってだけの話だったと思う。
例:港湾施設のクレーンのオブジェクトは、ちゃんとアームそのものに当たり判定があるとか、
  接触しなければ、つり橋のタワーの隙間をきちんと通り抜けられるとか。

今確認したら、手元にある
CGWORLD別冊「MAKING OF GAME GRAPHICS 1998-2001」に記事があったYO!
MAYA3で、マップから、オブジェクトのモデルのヒット属性やエフェクトの属性まで作ったのだそうな。
353デフォルトの名無しさん:03/09/08 18:33
超初心者的質問で申し訳ないのですが、
某ゲームA(パッケージ)のゲーム中のフルスクリーン画面に自作アプリBから
画面にテキストを表示させることは可能でしょうか?
ちらつくのを覚悟でGDIで上書き描画するか、オーバーレイを使え
C#で9.0bSDK使ってます。
下位バージョンのDirectXに対応させるにはどうすればいいのでしょうか。
DirectXの機能はAudioVideoのAudio部分しか使ってません。
>>355
いろいろとよく分からんが、
下位バージョンてのはDX8?
AudioVideoてのはDirectShow?
357355:03/09/08 22:10
AudioVideoはDirectSoundです。
ホントはMicrosoft.DirectX.AudioVideoPlayBackといいます。
勝手に略してました。

下位バージョンは出来るだけ下位のがいいですが、最悪8.0くらいまで互換性が欲しいです。
友達に試してもらったところ9.0でも使えないようなので。
MC++でラッパーDLLを作成しC#から呼び出すのが一番簡単
>>355
友達のPCのドライバを更新してやれ。
>>353
よくゲームのチートツールがやってるね。
覚えてる中では、ちと古いがDiablo2のMapHackがソース公開してた。
>>353
適当な話しになるかもしれないけど。
テキストを表示するウィンドウを常に「最前面に表示」(Z軸最前面)属性をつけて、
ウィンドウを完全透明化し、テキストにフォーカスがうつらないようにすればいいのではないかと
362361:03/09/09 00:06
テキストにフォーカスがうつらないようにすればいいのではないかと
            ↓
テキストクリック時にフォーカスがうつらないようにすればいいのではないかと
>>361
それじゃ駄目だよ
>>357
C#スレで聞いたほうがいいかも。
C++だとDX9とDX8のDirectSoundはほぼ変化なし。
365357:03/09/09 15:03
DOSから必要なDLLを抜き出したら9.0の友達はうまく行きました。
他にもいろいろ試してみたいと思います。
354、360、361、362、363さん ありがとうございます
せめて保守っとこう
368デフォルトの名無しさん:03/09/10 23:39
でやぁぁ!
DirectX9でプログラム書いてるんですが
文字描画は何を使ったらいいんですかね。
D3DXFONT重すぎ_| ̄|○
デバッグだけでもとおもって使ってみたが何だあの重さは・・
デバッグだけでいいならD3DXFONTだとかGetDCとかでいいと思うけど。
とりあえずGetGlyphOutlineで毎回メモリイメージを取得していくのがいいんでは。
強引にどでかいDXTテクスチャを用意って話もどこかで聞いたような…(;´Д`)
ていうかゲーム機ならそれが普通だし。
デバッグ用なら2バイト文字を使わないで
1バイト文字のみテクスチャで用意するのが一番簡単で速いと思うけど...
そーもいかない事情があるんでしょーなー

ちょっと前に自前のフォント描画ルーチンを組んで
ちょーど開発日記に書こうと思ってたトコなので書いたら晒します
>>369
もしかしてロギングしたい値の分だけDrawしてない?
文字列化したのを一まとめにしてから流さないと
逐一Drawしてたらそりゃ重いよ
374372:03/09/12 06:05
日記書いたので晒します。一番上の今日の日付のトコです。
長文でわかりにくい文章になってしまったのですが、
フォント描画の実装方法を何種類か説明してあるので役に立つかもしんないです。
http://robrob.at.infoseek.co.jp/mmo/diary.html
>>374
お、あのMMOPRGの作者さんですか。朝からお疲れ様です。

ノベル、アドベンチャー系をやるなら
2値ではなく、GetGlyphOutlineでグレースケールデータを取得して
もしくは自力でオーバーサンプリングしてグレースケールデータを作って
VRAM上のキャッシュバッファ用テクスチャのαに入れる方法がベストかと。
376369:03/09/12 08:37
みんな参考になりますありがとう・゚・(ノД`)・゚・

>強引にどでかいDXTテクスチャを用意って話もどこかで聞いたような…(;´Д`)
ここの過去ログだったかで自分も見ました。
SUGEEEEEEEEEEと思ったけどちょっと強引すぎるような(´Д`;
まあフォントを丸ごとテクスチャにするのもいいが
それはそれでメモリを結構食うはずなので
GetGlyphOutlineで毎フレーム取得するのがいいんでないかと
毎フレーム取得する必要はない
それをやってテキスト描画が遅いと喚く奴がやたら多いが、
テキストを書き換える必要が出たときだけ書き直せばいい
俺はむしろテクスチャ化、というか文字画像を自前で持つことを
それほどまでに嫌う理由が分からん。

コンシューマは全部それでやってるんだぜ?
容量的にはPCのほうが遥かに余裕あるだろうに。
380379:03/09/12 10:24
言い過ぎた。

s/全部/大抵/
フォント持ってるハードってサターンだけじゃないの?
ふぉんとですか?
PSもROMに16x16の持ってたと思うにょ。
PS2は何種類か持ってたな。 32x32位のもあった様な気がする。
ふぉんとですか?
キミ、寒いよ。
ギャグがウケなかったら相手に聞こえなかったと思って何度も繰り返すタイプ?
スルーできない君の寒さも(ry
>>380
スレ違いスマソ
たまにみる、この書式は何のものなんでしょ?気になって。
文字列置換
>>389
サンクス、でもその先が…Perlか何か?無知ですまんですたい
Perlだな。
C++できる奴なら一日でCGI組めるくらいは上達するから
一度やってみれ。
392388:03/09/12 18:54
>>391
ありがとうございます。おかげで、ひっかかり解消です。
C++に近いんですね。触ってみようかな…。

スレ違いすいませんでした。
C++に近い・・・かなぁ
似てるのは行末にセミコロンってところくらいじゃないか?
近いかどうかは微妙だが・・・。
C++が分かるやつなら簡単なCGIくらいすぐに作れるようにはなるだろ。
Perlはイマイチ好きになれない
Perl使うくらいならPHPの方が楽だし
スクリプト言語の好みを語るスレはここですか?
↓Ruby信者登場
正規表現とかワイルドカードのたぐいだろ。
別にDOSでも使えるじゃん。
つーか、今時分コマンドライン使う最大の理由じゃないの?
文字描画は速度を求めるならTexture用意してUV切り出しで描画が普通だと思うが。
>>398
知ったかキタ━━━━━(゚∀゚)━━━━━━!!
恐ろしいまでにスレ違いなので続けるならPerlでDirectXを使う話で
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
>>399
アホがキタ━━━━━(゚∀゚)━━━━━━!!
>>401
それはintとstringとvectorとmapしか使えないC++環境で
DirectXを使えってのと同じだな。
構造体もないのん?
呼び出せる関数はあるのだろうか…
405デフォルトの名無しさん:03/09/13 00:04
俺、STLはstringとvectorしか使ってないや。
listとかmapとか使うとソースが分けわかんなくなる。
きったねぇ感じで非常に鬱な仕上がりになるんだけど・・・。
stringやvectorもあまり綺麗な仕上がりにはならないな。
他の人はどうですか?
>>405
す、すごいな
さすがにそこまで発展しちゃうと、スレ違いも極まれりって気がしないでも無くもない
407デフォルトの名無しさん:03/09/13 00:26
>>406
いや、DirectX使ってる人がどんな組み方してるのか知りたいじゃん。
その辺によく落ちてるサンプルってクラスを使いこなしてる感がないし、
一体自分が正しい組み方してるのかどうなのかわからなくなるよ。
MSのサンプルは読みにくさMAX。
クラスの使い方、ライブラリのまとめ方に関しては出直して来いレベルだ。
Direct3DとWTL組み合わせて使ってる人いない?
>>408
俺は、
WTLは、exeのサイズを小さくしたい時にだけ使ってる。
DirectX使ってる時点で、容量食いまくり。
なので、俺は使っていない。
というか、DirectX関係は、
DirectX9Appウイザードで、勝手に作られる奴を基本に使ってる。
ナムコのゆめりあベンチも、そんな感じだったし。

コロコロバージョンアップしていくDirectX相手に
初期化とかのクラス作っていくのが馬鹿馬鹿しくなってきた。
作るならアタッチして、何かするクラスレベル

>>407
>クラスの使い方、ライブラリのまとめ方に関しては出直して来いレベルだ。
サンプルだからしょうがない。
変に高度なことやってそれを理解できなかったら終わりだし。

DirectX触るプログラム初心者って結構多いだろ
DirectXが Cを引きずってるのもそれだ

俺自身は、
DirectXがテンプレート使いまくりだったらうれしいかもしれない。
頂点データとか、いろんなパターンあるし。
>>409
×DirectX触るプログラム初心者って結構多いだろ
○プログラム初心者でDirectX触る奴、結構多いだろ
411デフォルトの名無しさん:03/09/13 15:49
>>409
初心者が多いからこそ、サンプルだからって手を抜かないでほしい。
DirectX初心者がとりあえず一番速く覚えたいと思われる、
スキンメッシュサンプルがアレではさすがに滅入るだろ。
(アレを見る前にうまくIF氏のページ等にたどりつければ幸いだが・・・)
スキンメッシュのサンプルは、いまではMSのサイトに
単純化した奴が載ってるね。

Managedだけど。
DX9のサンプルフレームワークはわりと便利だよ。

欲を言えば、レンダリングを別スレッドにしたものがあると良かった。
あと、D3Dとかの基幹オブジェクトの解放タイミングのせいで
こちらが追加したテクスチャとかのオブジェクトをスマートポインタで
管理できないのがちょっといやだな。
便利だよと言われても、自分で使いやすいものを一発作ればそれまでだし
初学者が手っ取り早く画を出せるって意味では便利だろう。
まだ海のものとも山のものとも知れないDirectXを前に
いきなりフレームワーク設計からやれってのは酷な話だ。
>>411
409は「手を抜いている」と言ってるんじゃなくて
「高度なことをやっても理解されないかも」と言ってるんだが…
417デフォルトの名無しさん:03/09/13 22:29
>>416
ちゃうちゃう、わかりやすさの面で手を抜いてるっていってるわけよ。
サンプルに高度なことなんて求めないでしょ。
>>417
あんた、DirectXの初心者とプログラム(特に3D)の初心者を混同してるんじゃない?
3Dの基礎までDirextXに求めるのはズウズウしい。
スキンメッシュを扱いたいなら、
3Dソフトの扱いや概念程度の知識持ってからやって欲しいもんだ。
物理エンジン使うのに、”全然物理分りません、でエンジン使えません”
だからこの物理エンジン手抜きだ!って言うような物。
419デフォルトの名無しさん:03/09/13 23:12
>>418
別にそんなこといってないじゃん。
DirectXのヘルプを嫁ばほとんど解決する話だろ
嗚呼…やっと普通の流れに戻ったと思ったのに。思ってたのに。
もうVC++なんて終わった言語の話なんてどうでもいいじゃん
一度、同等なものを自力で作ってみるのが一番いいんだけどね。
内部でどんなことをやってるのか想像もつかないような状態ではとてもとても
>>421
連休だからね
そうか! 世間では連休というやつだったのか!
↑ひきこもり登場

↓なにごともなかったように次の質問どぞー!
ワンスキンモデルでマテリアルが分かれてる場合に、
マテリアル別にレンダリングしたいんですが
頂点やポリゴン情報は一連(マテリアル別けしてない)のデータでもってます。
やっぱレンダリング前に一処理加えて、マテリアル別の情報に分けるのが普通?
それともポリゴン情報とそれに関連する対応マテリアルが分っていれば
一連のデータでレンダリング出来るやり方があるのですか?
D3DXライブラリは使わない方向なので、処理のアルゴリズムっていうか手法を
教えてくれると助かります。
>やっぱレンダリング前に一処理加えて、マテリアル別の情報に分けるのが普通?
当然しなければならないけれど、
基本的には頂点バッファ1つとインデックスバッファ1つで行ける。
マテリアルごとに頂点バッファ/インデックスバッファの区間を知ってればいい。
D3DXMESHの内部もそうなってるんじゃないかな。
後は、マテリアルごとにDrawIndexedPrimitiveの引数にそれらを設定していけばOK。

という感じの回答でいいのだろうか?
ぶっちゃけ質問の意味がよく分からんのだが…
429427:03/09/14 12:29
>>428
頂点バッファとインデックスバッファがモデルにつき一つで
面(インデックス?)ごとのマテリアル対応情報は分っているのです。

DrawIndexedPrimitiveでインデックスのオフセットや読み取り開始位置、
頂点数、ポリゴン数を指定していけば
頂点バッファとインデックスバッファが一つでも描画できると言う事でしょうか?
挑戦してみます。ありがとうございます。
ともかくDrawIndexedPrimitiveの引数の指定だけで行ける。
ID3DXMeshとか確かそうなってたはず、
とか思って見てみたらやっぱりそうなってた。
D3DXATTRIBUTERANGE参照。
ちょっとおそいレスだけど
文字列の描画は俺は
GetGlyphOutlineで取得したデータを1文字ごとに
必要になった時点でサーフェスに突っ込んでキャッシュ化
で、次にテクスチャ作成して文字列をそこに書き込む。
具体的には1文字サーフェスからテクスチャのサーフェスにCopyRects
んで、この文字列テクスチャもキャッシュ化
あとはこのキャッシュ化文字列テクスチャを描くだけ
文字キャッシュも文字列キャッシュも一度つくれば
描画だけなのでそこそこ速い
ただ文字列キャッシュについては大きなテクスチャ1枚用意して
SetTexture()を減らしたほうがさらに速いと思うがやってない。
ついでにstlは使いまくり
map,list,vector,setあたりはがんがん使ってます。
stringも普通につかってる
ただOctTreeとかのバイナリツリーは自作
DirectX8.1、またはDirectX9のDirect3Dの全画面モード時に、
Windowsのメニュー(ファイル(F)とか)を出すにはどうすればいいのでしょう?
>>433
それは全画面モードではないだろう。
Windowモードで全画面サイズに広げるんじゃないの
435433:03/09/16 20:15
>>434
なるほど。思いつきませんでした。

普段はメニューが出ていなくて、
マウスカーソルを画面上部に持っていくと、
表示画面に重なって(?)メニューが出るゲームがあります。

ぱっと見はWindowモードに見えないのですが、
あーいうのもWindowモードなんですか?
画面モードは別のAPIで変える感じなんでしょうか?
でも、表示画面に影響を与えずに
メニューを表示したり非表示にする方法がわかりません…。

どこかにサンプルソースありませんかね?
EDITボックスをDirectX上で表示してますが
全部つくりもんです。
つまり描画からなにから
一からクラス化しました。
メニューもそれでいいんぢゃない?
9ならこんな>IDirect3DDevice9::SetDialogBoxMode
8はシラネ
>>437
それたしかタイトルバーありで作ってると
メニューと一緒にタイトルバーが出てきたような
8はできない。
だが、435の言ってるメニューの出るフルスクリーンゲームは
9じゃないだろうな。

エロゲーかなあ。
古いDirectXでWindowモードで動かしているとか、
描画はCreateDIBSectionのビットマップでDirectSoundだけ使っているとか。
8が必須と書いてあるが使ってるのはDDrawってなオチとか。

>>438
ウインドウスタイルを変更すれば良いかと。
D3DXLINE、異常に重くない?
D3DXSPRITEはそこそこ軽いのに・・・
>>440
同人ソフトで悪いが、チンチラソフトという所のがそんな感じ。
箱にはDirectX8必須と書きながら、256色で320x240.... 
この前、買っちまったよ 

   _| ̄|○
2世代ほど前の4角形を多様したポリゴンゲーつくろうとおもうてるんだけど、
メタセコイアだと4角形描いても正確に平面性が維持されないでこまっとります。(3角形2つに分割されてとがる)
手動であわせるのもなんだか…

市販のとかはできるのかな?
あとモデラー自作するとしても平面性を維持させる処理は難しそう・・
意味わかんね
三角形を2つ合わせて四角形を作るのは普通だろ
四角形が完全に平面にならないことを言ってるのでは。
最終的に三角ポリになったときに対角線がくっきり出るのかな。
平面てなんだよ。 平面て。
どっちにしろ444の説明だけじゃワケワカラン
450444:03/09/17 19:53
>三角形を2つ合わせて四角形を作るのは普通だろ

それは盲点でした。たしかに3角形ふたつで4角形になりますね!
平面性の維持もこれで解決できそうです。ありがとうございました。
はぁ?????
今年の残暑は厳しいからかな……
あぁ、解った。
BOXで四角作った後、メタセコが勝手に切った対角線じゃ無い方の
頂点を動かすと対角線で折れ曲がるって事か。 氏ね
いったいなんだったんだ…
メニューはゲームの雰囲気に合わせたデザインのものを
自分で作った方がそれっぽくていいんじゃないか?
ダイアログとか必要ならそれも同様。
エロゲだと時々あるけどね・・・フルスクリーンでWinのメニュー使うやつ。
メニューを作るくらい大した手間じゃないんだけど、
なんであれを使いたがるのか理由が知りたい
457本物の444:03/09/17 21:52
ちょっとまてや、
>>450は偽者。

三角形が完全に同一平面にないから汚くなることをいってるわけ。
人世代前のゲームってそのへん綺麗だったんでどうだったのかなぁ、と。思って
458本物の444:03/09/17 21:54
つーかホント450ムカつくんだけど、オマエ最低。

ってえらそうでスマンけど…
>>本物の444
夏休みはもう終わったよ…?
460本物の444:03/09/17 21:58
>>459
なにか気に入らんことでもあった?
質問が厨房くさいなら指摘してくれ
>>456
個人的な感想なんだけどあのメニューがあるとちょっとだけ安心感があるんだよね。
フルスクリーンアプリだと止まったら戻れなくなっちゃうんじゃないかという
不安感があるし
462444:03/09/17 22:14
混乱を防ぐためにもう一度わかりやすく

メタセコイアを使ってモデリングしていると
4角形を描いたとき、既存の頂点を使って描いた場合や
後で頂点を動かしてしまった場合は4角形の平面性がうまく維持されないので
綺麗な平面にならないので4角形多用のローポリモデルがどうしても不自然になってしまう。

DirectXを使っていると強制的に3角形に分割されるけど
プログラムで法泉ベクトルをいっしょにしとけば目立たなくはなるのは分かってる、、
でもやっぱり光だけじゃなくモデル自体の形のずれも気になるので。

聞きたいのは

・メタセコイアを使うのを前提でこれを回避する方法があればその方法。
・他のモデリングツールはどうなってるのか、自分でモデリングツールをつくるべき?
・一世代前のローポリのゲームも実は微妙にずれてた?微妙な平面性の不一致くらい許容するべき?

まぁ、なんかネタ扱いされてるけどよろしく。
463444:03/09/17 22:16
まぁとりあえず今は目視で限りなく平面に近いだろうと思われるように調整してるけど
実はこれで十分だったりするのかな?
やっぱり意味が解らない。
頂点の値は確認してみたか?
465444:03/09/17 22:39
>>464
4角形かいたらそのときは平面性を保ってても
あとで1頂点移動すると
4角形の4点ってのは同一平面上に存在しなくなってしまうということ。

頂点の値を確認ってx,y,zのこと?それは調べてもどうしようもないような。
それとも自分で残りの3点から平面方程式を導き出してその上にくるようにもう1点をおけということかな?
あまり現実的じゃないし実際には近隣の4角形ポリゴンとの兼ね合いもあってむりぽい。
まあ一番意味がわからんのはここに質問を投下したことだな
>>462
メタセコに、頂点を平面に並べるプラグインがあったと思うので、
それを探しなされ。
平面で形作ったら、回転系のコマンドで回転・移動
>>465
関数電卓で他の三点が自分が置きたい位置にあるのか計算しれ

なんつーか、とりあえず何処か逝け
469444:03/09/17 22:56
>>467
ども、それあれば解決しそうっすね、探してみます。
サンクスです

>>468
DirectXに限った話じゃないから微妙にスレ違いか…そういやそうだな、すまそ
>>444
メタセコは間違ってないよ。君がモデラーとして頭悪いんだよ。
平面の定義って分る?
幾つかあるが、三頂点が定まれば平面は定義されるんだよ?
そこに勝手な一頂点を加えた所で同じ平面に為る訳ないじゃん。
数学的に無理な事を言ってるからネタ扱いなんだよ。
471444:03/09/17 23:04
>>470
そんなことはわかってるし
だからそれを保つための方法をきいてるんだけど、
わかりにくかったならすまそ
つーか470は頭わるすぎ、ローポリモデラースレでも四角形の平面性を維持するのは苦心してるとかローポリスレでも話題になってるのに…
>>472
なってない、なってない。
一つの頂点を動かすからいけないんだろ。
四つの頂点を動かせ。
なってたように記憶してるけど…なんか箇条書きで

4角形ポリゴンの平面性をできるだけ高める

みたいな。というかオレも前から444のは気になってるんだけど
結局目視しかないのか。
ローポリスレは閑散としてますが…
http://pc2.2ch.net/test/read.cgi/gamedev/1005582865/18
おそらくオレがそう思ってたのはこのカキコかも
つーかDirectXスレで何を言ってる?
DirectXは三角形ポリしか描画出来ないだろ。
DirectXで3Dプログラムしてて4ポリの平面性とか言ってる奴っているのか?
モデラー上でも4頂点を選んで移動や回転させれば良いだけじゃん。
>>477
はい?おまえ話ゼンゼンわかってないだろw
479444:03/09/17 23:25
とりあえずプラグイン探したけどみつからなかったです、X,Y,Z平面上にそろえるようなのぐらいしか。
>>476
んーむ、結局手作業なのね・・・
>>471
1頂点を自由に動かしつつ、平面に保ちたいと言うと、
他の三点の内、最低1点は好き勝手に動く事になるが、
それで良いの?
481444:03/09/17 23:27
>>480
そりゃわかってますよ、さすがに。
結論:

目視で手作業(藁
>>481
だったら、動いても良い辺で動かせば良いんじゃないの。
484477:03/09/17 23:31
馬鹿ばっかだな。
平面の方程式
ax+by+cz+dw=0
程度使えないのか?
3頂点で式を出して残りの1頂点は連立させて
同じ平面上に来るようにすればいいだけだろ?
ココってプログラマ以外も来てるの?
485477:03/09/17 23:34
つーか平面のねじれを考えず、
後で1頂点だけ動かしたいなんてモデラーは勉強しなおせ。
>>484
少しは上読めよ
はぁ?
一番のバカは477でAF
489477:03/09/17 23:40
数値入力やミラープラグインを使えよ。
それを防ぐ目的の機能を使わずに、
それが問題になる手法を使い
その手法で回避したいなんてアホ過ぎるんだよ。

プログラムでint型で小数部の切り捨てを提唱して
intでどうしたら回避できますか?ってのと同じ程度だ。
浮動少数点型を使えってなるだろ。
おっと恥の上塗り
>>480-481
じゃあ問題ない
万事解決、ヨカッタネ
オマエハナー
>>471
444は数学的に無理だってのを分っていると豪語して
その数学的に無理な事をどうにかしたいって?
……

教えあげるよ。
>4角形を描いたとき、既存の頂点を使って描いた場合や
この既存の頂点が同一平面上に来るように
平面を形成する前に調整する。
>後で頂点を動かしてしまった場合
その動かした頂点が平面を形成する位置以外には決定しない。
その必要がある場合は、上記と同様に頂点を動かす前に他の頂点を調整する。

つまり、君の様な状態になってからでは遅いのよ。
モデル作る時のポイントやポリゴンは考えて作っていく物です。
>>493
つーかそんなこと常識ですけど?
それを分かった上で平面上に4点がそろわない問題ってのは語られてるのに…
なにあたりまえのことをえらそうに。文章キモすぎ。
しかも作る前に考えるって、、、おまえモデリングしたことないだろ。

>>444
ローポリモデルだとあとで手動でできるだけ調整する。
昔の綺麗なローポリもたぶん手動じゃないかねぇ
数学云々言い出すやつにかぎってモデリングどころか数学のことも分かってないという罠
>>494
で文盲の494にお聞きしますが
>作る前に考える
などど493の何処に書いてありますか?
>>494

>>444 を読んでみろ。
今月は「マはモデリングソフトを触りましょう」強化月間です
無料のメタセコ、数値入力しまくりでマ向けっぽいLW3Dなど積極的に触りましょう
>>496
書いてないけどそういう意図にもとれるだろ、少なくともオレと494はそうとった
>それを分かった上で平面上に4点がそろわない問題ってのは語られてるのに…
前提から無理な物を語るなんてアホ過ぎだろ。
それを分ったなんて容認してるから馬鹿なんだろ。
他の奴の意見をちゃんと読み取れ、
その前提に為らないようにモデル制作をするって理解出来ない?面倒でそんなやり方出来ない?
マジで無能モデラーだぞ。
>>500
ホント理解してないな…おまえは、
一回モデラー触ってみろ
どうでもいいけど2平面の2頂点共有までなら数学的にも
2つの4角形の平面性を保つことができるぞ
>>500
LW3Dの正規ユーザーですし、モデルは数値入力とプラグインで殆ど作りますが?
>>503
4角形の平面性維持ってどうやってる?
>>504
計算と数値入力。
つーか自分でDirextXで作る時は結局分割描画になるから
4ポリなんて殆ど使わないけど。
ともかく平面を形成したいなら平面の方程式。
それから、生物ではまず使わない。
自前計算とは恐れ入る
>>506
モデラーより3Dプログラム歴の方が長いからね。
プログラムじゃポリゴン上を数値出して歩かせるとかやってるからね。
それと会社のモデラー教わった人もプログラマだったし。
プラグインの作り方やLWの処理理論とかも教わったし。
すげー、ちょっと尊敬。


自前計算を自動化することを考えたら


1つ
3点のX,Y,Z座標ともう1点のX,Y,Zのうち2つの座標を入れたらのこりのひとつの値を
返すようなプログラムを書く

2つ
平面1と平面2を入力したら交差する部分の直線の関数を返すような
プログラムを書く

ぐらいしかおもいつかんのだけど、これってどう?
>>508
それが平面の方程式。
三点のxyzから外積により法線(正規化する)を求める。
その法線とxyzのどれか一つの頂点を使い、求めたい頂点の未知成分と連立。
求めたい頂点の法線は同じなのは分るでしょ?
数分で求まるよ。
でパネル開いて数値入れれば終わり。
プログラムだとハイトマップとかで使うよ。
http://pc2.2ch.net/test/read.cgi/gamedev/1005582865/-100
煽ってる奴少しここ読んで頭冷やせ。
511ちゃちゃ:03/09/18 02:01
「騙された」系でないことを確認。
512444:03/09/18 02:03
とりあえずめっちゃ参考になりました、
どうもアリガd。特に505氏、やっぱ現場の人はちがうねぇ
513デフォルトの名無しさん:03/09/18 02:47
458 名前:本物の444 投稿日:03/09/17 21:54
 つーかホント450ムカつくんだけど、オマエ最低。

 ってえらそうでスマンけど…

459 名前:デフォルトの名無しさん 投稿日:03/09/17 21:57
 >>本物の444
 夏休みはもう終わったよ…?

460 名前:本物の444 投稿日:03/09/17 21:58
 >>459
 なにか気に入らんことでもあった?
 質問が厨房くさいなら指摘してくれ

晒しage
このスレってレスが多い日は、大抵しょうもない話してるな。
515デフォルトの名無しさん:03/09/18 08:34
>>439
今、思い出したんだけどほとんどのエミュレータはフルスクリーンでメニューが出るよ
516デフォルトの名無しさん:03/09/18 10:49
このスレみてモデリングツール触ってみたけど、
意外と平面を保ったまま動かすことってできないのな。
立方体作って頂点1つつまんで動かすとボコボコにひしゃげる。
はじめて知ったよ。
まあ、全部三角形化して問題ないようにしてから
プログラマにデータよこして下さいってだけだけどな。
518デフォルトの名無しさん:03/09/18 11:10
>>517
プラグイン作れって言われたら逃げられないけどね。
安いモデリングツールって使ったこと無いから苦労がわからん
頂点を引っ張って平面が崩れないなんて当たり前だと思っていた
俺はメタセコしか使ったことがないから3dsとかMayaとかの世界はサッパリ分からんな
521デフォルトの名無しさん:03/09/18 16:31
(・∀・)ツマラン...
>>519
上ではLightWave使ってるやつでもそういう症状出てるって書いてるガ…
523デフォルトの名無しさん:03/09/18 20:08
つーか結局ポリ数ケチんなよウンコって話じゃね。
524:03/09/18 20:18
全く話を理解してない人ww
525デフォルトの名無しさん:03/09/18 20:35
>>524
いや、結果はそうだろ。
自分の考える理想の形にしたいならとりあえずポリ数を増やすのが楽。
(俺のレベルだと、プラグインとかがどうなってるのかは知らない。
 こだわったこと無いしこんなところ。)
どうしても平面にしたいときは膨らませてブーリアン演算でも使ってきっちまえば
これでスッパリ平面にならないときって要はポリ数が足りないんでしょ。
メタセコでこれができるかどうかは知らないけど。
>>522
それ安物
>>525
閑散としているローポリスレへの燃料投下お願いします
>>525はほっとくとして、三角形化できないモデリングソフトってそんなに多いのん?
メタセコは簡単にできるようだが。

Lightwaveも昔使ったときあったやうな気が。
皆さん本当にDirextX使いなのですか?
3Dプログラムやってる奴のレベルじゃないな。
みんな弾幕STG作ってるから
三角化できたとしても4角形平面(3角形2つ)はふつうに平面にそろえる必要があるから
何の問題解決にもならないし
ちょっと分かってないやつが多すぎるから書いとくけど444がいいたかったのは
[4角形]、[3角形2つ]
どっちの場合でも同じで4頂点を同一平面上に乗せる方法が知りたいってことだろ、

だから3角化云々は全く関係ない。
何言ってるんだかわからん。
そもそも>>444の問題についてはもう妥当な結論が出てるように見えるが。
534533:03/09/19 05:50
つーか、こうしてみると単なるディスコミュニケーションの嵐のように見えるな。

最近ゲ製系のスレみんなこんな感じになる気がしないか。
誰か犯人がいるだろ。
そうそう、スレ違いの挙句
自分の3Dへの理解不足、モデラーとしての低レベル度等々を棚に上げて
ギャーギャー騒いでたんだろ。

様は共有してるか、同一座標上にある頂点で形成される多数の平面を
それぞれの平面を保ちつつ、一つ頂点を動かし
尚且つ頂点同士のズレも無くしたいって事だろ。

完全に設計ミスだろ。その部分を丸ごと削除して作り直せ。
考え方が間違ってる。
犯人もなにも
房な質問や考え方を、房とも思わず
その指摘に逆切れしてればスムーズに行くはずがない。
>>535
はぁ?ホントにわかってないな
538537:03/09/19 08:13
現れた偽者といい頓珍漢な回答の連発といい
質問の意図をわからずに意味不明な答えをしたやつが
「質問が厨房だ」と流してるようにしか見えない。

535も536も思いっきり初期の段階で意味不明発言連発してたやつの書き込みだろ…
まぁ、変な煽りを入れている奴はそもそも質問に答えられるような能力はないと
>>537
>462
>4角形を描いたとき、既存の頂点を使って描いた場合や
>後で頂点を動かしてしまった場合は4角形の平面性がうまく維持されない

>465
>頂点の値を確認ってx,y,zのこと?それは調べてもどうしようもないような。
>それとも自分で残りの3点から平面方程式を導き出してその上にくるようにもう1点をおけということかな?
>あまり現実的じゃないし実際には近隣の4角形ポリゴンとの兼ね合いもあってむりぽい。

これは444の発言ですが、既存の頂点、近隣の4角形ポリゴン、などと発言してますが?
>>534

>>535

犯人が自ら名乗り出ててワラタw。しかも自覚がないしw
わかってない発言連発の奴の方が何にも答えてない。
しかも、誰も444なんて名乗ってないのに偽者発言。
おまえ、444だろ?自分の思った通りにならないと
はぁ?って書くしか能がないのか?
因みに俺は509で数値を出す方法を提示してるが
分ってるお前はどうなんだよ?
理解しようと頑張る奴には教える気も出るが
努力もしない奴の世話なんかやってられん
>>450
>>457
545533:03/09/19 11:04
しかし、俺は>>533で初めてこの話題に口出したんだがな。(苦笑)
とんでもねえ低級エスパーがいるよな。まあ、みんな頑張ってくれ。
>>545
ん、何か文意を間違ってとってないか?533がアレだとは誰もいってないぞ
>>542
505=509?だとしたら444はそれで納得してお礼いってるじゃん
548533:03/09/19 11:10
>>546
そうなのか。俺自身がいきなりディスコミュニケーションに巻き込まれてるかも。_| ̄|○

とりあえず皆マターリと卓球でもしよう。
( ´ー)ρ┳┻┳°σ(ー` )
(´・ω・`) 何事も無かったかのようにマターリ次の話題どうぞ↓
>>547
その444は偽者なんだろ?
537様がおっしゃっている。
目算でもかなり近いところまでは作れるだろうし、
あとは本当に微妙な調整だけを、ツールなりプラグインで
仕上げにやれば良いだけじゃないの?そんな簡単な話じゃないか。

今作ってるツールでは、平面の操作と、平面上の点の
操作を分ける仕様になっております。モデリングツールじゃないけど。
DirectX 9 は3D専用ですか?
専用ではありません
ネットワークからサウンドまで、さまざまなリソースが扱えます
専用 では ありません
ネットワーク から サウンド まで 、
さまざまな リソース が 扱えます
555433:03/09/19 18:10
なかなか返事が書けませんでした。

>>443
そうです、そうです。
これは、DirectX9のSetDialogBoxMode()を使ってるんですかね?

これで、表示画面が縦に潰れないで、
メニューで表示画面が隠れるようになれば、
期待通りです。

ttp://www.earthwell.net/mitodoke/
の体験版では、DirectX8できているので、
DirectX8でもやりかたはあると思うのですが。

>>515
DirectX8のDirect3Dを使っていてメニューの出るエミュレータで、
ソースが公開されているものがあれば是非教えて下さい。
前にC#でDirectX8上から、
フルスクリーンで標準コントロールを貼り付けていたソースがあったけど、
今行ったらページ作り直しとかで消されてた
557443:03/09/19 20:18
>>555
そうです、DirectX9のSetDialogBoxMode()を使っています。

これをやるのは物凄く簡単で、WM_SETCURSORのハンドラでLOWORD(lParam)が
HTMENUかHTCAPTIONだったらSetDialogBoxMode(TRUE)を呼び出した後に
DrawMenuBar(hWnd)。
それ以外の値だったら、SetDialogBoxMode(FALSE)を呼ぶだけ。

縦に潰れるのはSetDialogBoxMode()が勝手にやってしまうので、DirectX9で
潰れないようにするのは面倒です。

X8の場合はD3DPRESENT_PARAMETERSのSwapEffectにD3DSWAPEFFECT_COPY、
FullScreen_PresentationIntervalにD3DPRESENT_INTERVAL_IMMEDIATEを
指定すればなんとかなるかも。
WM_SETCURSORのハンドラではDrawMenuBarを呼ぶだけ。
ただし、X9のようにメニューを開いた状態で描画を続けることは無理なんで、
メニューを開いたら描画を止める必要があります。
(っていうか普通にやると処理が戻らないんで自然と描画が止まる)

X7の場合は、SetDialogBoxMode(TRUE)の代わりにFlipToGDISurface()で
同じようにできます。
>>554
2Dのプログラムもこれで作るものでしょうか?
作るかどうかは本人が決めることであって、
他人が口を挟むべきことではありません
>>558
Direct3Dのジオメトリ演算をさっくりパスすれば
あら不思議、お手軽2Dライブラリですよ?
561558:03/09/19 21:13
Direct3D使ってできるんですね。ありがとうございました。
というか「DirectX入門」みたいなページで8以降を扱っている場合、
ほとんどは2Dから入ってると思うんだが…
DirectX以前に2Dをやるなら、DIBでのイメージ操作くらいは
やってからにすべきだと思うのだが
いまさらDIBなんて、旧型ノートに足引っ張られてる
エロゲ屋だけが弄ってればいいのさ。
いきなりDirect3Dでオーケィ。
できる奴はなにやらせてもすぐに腕が上がる。
この俺様のようにな!
DIBすら使えないせいで、テクスチャの書き換え程度も出来ない馬鹿が、
フォントフォントってうるさいんだが、あんたが全部面倒見てくれ
きっぱりと御免こうむる!
DirectX 9の本はほとんど3Dばっかりだったので、3D専用と思ってました。
そういやテクスチャはD3DXのビットマップから直接読み込むAPI使って
終わらせてる本が多いよなぁ
>>568
敢えて語る事も無いだろ。
静的テクスチャならそれだけで用足りるからのぅ。
そこらの入門書だったらそんなもんでいいんじゃねーの。
571433:03/09/20 00:08
>>557
作者様でしたか。お答えありがとうございます。

アドバイスにしたがって、
今のプログラム(DirectX8)を少しいじってみました。
頑張ればできそうな感じです。
ただ、場合によってはメニューバーがちらついたり、
ダイアログボックスを出すとダイアログが欠けたりと、
少し面倒な感じです。

時間のある時に、もっと小さいコードを用意して、
試してみたいと思います。
それか、とっととDirectX9に移行するかします。

ありがとうございました。
572げいつ:03/09/20 12:54
作者は私です。
ゲイシは一行も関わってないだろうなぁ
ゲイツの書いたコードが入っていることの
どこが嬉しいのか分からない
むしろ>>574がなぜそんな疑問を持つのかわからない
誰もうれしがってないよ
YU SUZUKIはプログラマじゃないのに
VF3でPROGRAM YU SUZUKIとなっている (EXEの中に書いてある)
質問なんですが VC6のDirectX9 AppWizardにあたるものが
.netには見当たらないのですが、同じようなものはあるのでしょうか?
>>577
ないよ。
ファイルコピーと一部テキスト書き換えでVC6のやつを持ってこられるけど。
すでに.NETに入ってる他のAppWizardを参考にしてやってみれ。
あと、その質問は死ぬほどFAQなので、
せめて現行スレくらいは検索しろコンチクショウ。
579577:03/09/22 00:49
>>578
どうもありがとうございました
よく知らんが、.NET用のはあって2003用のがないんじゃなかったっけ?
581578:03/09/22 07:57
>>580
あ、そうだっけ。
勘違いして申し訳なかった。>>577
582578:03/09/22 08:13
ついでに訂正。

>>578
>ファイルコピーと一部テキスト書き換えでVC6のやつを持ってこられる

>ファイルコピーと一部テキスト書き換えで.NET2002のやつを持ってこられる
が正解。

.NET2002用のウィザードはSDKに入ってる。
directX8.1つかってます。
ELECOMのPSコントローラを2本させるUSBコンバーターを買ってきまして
こちらはコントロールパネルを見ても正常に動作しているのですが、
どうやれば両方認識させるようにできるのかがわかりません。

とりあえず、LPDIRECTINPUT8 g_pDInput、LPDIRECTINPUTDEVICE8配列 g_gInputDev[2]
と宣言して、
g_pDInput->EnumDevices(......,コールバック関数,.....)
は一回呼だし、このコールバック関数の中でなにかをうまくわりふらなければならないとは
おもうのですが、どうすればいいのかわかりません。
VS.NET2003用のWizardは、もうじき出る DirectX9 SDK Updateに
含まれるらしい。

これでFAQとおさらばか?
これでFAQとおさらバカ?
>>583
DIENUM_STOPを返さずにDIENUM_CONTINUEを返すだけじゃねーの?
DirectDraw7のswitcherを弄っているんですが
最小化ボタン等が不要だったのでウィンドウ生成時 WS_OVERLAPPEDWINDOW を
WS_CAPTION | WS_SYSMENU に変更したところウィンドウ表示の時だけ
画面が描画されなくなってしまいました

どこをなおしたらWS_CAPTION | WS_SYSMENU でも正常に動くようになるでしょうか?
VS.NET2003用のWizardっていつでるの?
>>588
出てるよ。MSのサイトへ行って、DX9 SDK Updateを落としてくるべし。
これをインストールすると、VS.NET2003 にWizardが登録される。
>>587
WS_THICKFRAME を追加してみたら?
保守らねばならないようだ
592337:03/09/28 10:53
複数の円状に切り抜きマスクをつけたいのですが、
何かいい方法無いでしょうか?

単純に減算合成で抜くと、
後から重なった部分は抜けないですし・・・。
意味分からん
>>592
テクスチャLockしてアルファ成分いじって直接穴あける
595デフォルトの名無しさん:03/09/28 23:34
テクスチャ全体の大きさを取得することって出来ますか?
できます。以上。
597595:03/09/29 01:22
やり方を教えてください。
自分で調べろ。以上。
とにかく最近の子はヘルプも読まないしSDKのサンプルも見ない。
おまけに他人のソースを盗用してゲーム会社に入ってくる始末。
結局自分一人では組めないので2chとBBXが必要。
Meltdownの内容が公開されていた。
ttp://microsoft.com/japan/msdn/directx/meltdown2003/default.asp
601デフォルトの名無しさん:03/09/30 04:52
DirectX3のヘルプを探してます
何か入手方法ありませんか?
DirectX5以前てヘルプあったっけ?
なんだか初期の頃、ヘルプ見た記憶無い
日本語のドキュメントはなかったと思う
InsideWindowsとかの付属CDにSDKは入ってたと思うが、
ヘルプも一緒に入ってるのかな。
DirectX3の英語版ヘルプはSDKと同時に配布されてるよ。
日本語版ヘルプは翻訳が遅れたため、
DirectX5 SDKと同時に配布されている。
>>601
・Cマガなどのバックナンバーをあたる
・DX3を使ったCD付き解説本をさがす
・MSに日本語HELPのCDを配布してもらう
版元品切れらしいが、これを探してみるとか
http://www.ascii.co.jp/books/detail/4-7561/4-7561-1728-7.html
質問です、
マウスカーソルがちらつくので
ソフトウェアマウスカーソルでちらつかないようにしたいのですが

windowモードでマウスカーソルがwindowからはみだす時に、

デスクトップのCDC取得してそこに描画かけるか、
猫でもわかるプログラミングにあるような透明のウィンドウ作ってマウス描画
とか考えてるのですが、
こんな感じでいいのでしょうか、それとももっと楽な方法あるのでしょうか。
宜しくお願いします。
609デフォルトの名無しさん:03/10/02 11:52
3Dの表示ですが
DrawIndexPrimitiveを実行した順番に描画されてしまいます
つまり奥にあるはずの物体が手前に表示されてしまうというわけです。

現在はどのようにし描画しているかというと
Direct3Dの初期化(Zバッファ有効)
ワールド、ビュー、プレジェクション行列の設定
インデックスバッファ、頂点バッファの作成
BeginScan();
表示したい位置に表示されるように頂点バッファの内容をいじる
DrawIndexPrimitive();
EndScan();
>>609
>表示したい位置に表示されるように頂点バッファの内容をいじる
↑これが失敗してるとか。
ZバッファがFALSEのままとか。
奥にあるつもりが実は手前にあったとか。
611デフォルトの名無しさん:03/10/02 16:23
DirectInputのアクション・マッピングを利用してるのですが、
if(od.uAppData == SHOOT) // 処理
とやると、ボタンを押した時、離した時の両方で反応してしまいます。
何かうまい方法はないでしょうか?
普通に一般的な押し下げ処理すりゃ良いんじゃないの。
一般的な押し下げ処理とはどういうことでしょう?
ごめん、想像してたのと違った。

アクションマップての使った事無いけど、 dwDataには何入ってんの?
あなろぐすちっくや感圧用に0〜255とかが入ってるなら、離された時は
0なんじゃないの。
ヘルプに
〜下位バイトの上位ビットはボタンが押されたときに設定され、離された時に消去される
ってしっかり書いてんじゃん。 例もあるし。
616デフォルトの名無しさん:03/10/02 18:18
アクションマップの話がでてるので便乗です。
バッファリングデータを2個以上取得した時の話なのですが、
その時は
for(i=0;i<取得した数;i++)
{
 if(didod.uAppData == BUTTON1)
  // 処理
}
とやる以外にスマートな方法というのはありますか?
617デフォルトの名無しさん:03/10/02 18:19
アクションマップの話がでてるので便乗です。
バッファリングデータを2個以上取得した時の話なのですが、
その時は
for(i=0;i<取得した数;i++)
{
 if(didod.uAppData == BUTTON1)
  // 処理
}
とやる以外にスマートな方法というのはありますか?
618デフォルトの名無しさん:03/10/02 18:19
2重投稿すいません(;´Д`)
619デフォルトの名無しさん:03/10/02 19:03
DirectX9で、特定の線やポリゴンを
ライトとか関係無く常に同じ色で表示したいのですが、うまくいきません。

色の種類があまりに多いので、その都度マテリアルを指定するのではなく
できれば線毎に色指定したいんです。

チュートリアルの様に(FVFがD3DFVF_XYZRHWとD3DFVF_DIFFUSEで頂点毎に色指定)
出来れば理想なのですが、あれを未トランスフォームの座標やる方法はないでしょうか?
それかマテリアルとライト等を適用しないようにして頂点に色もたせろ。
つか頂点シェーダ組んでみろ。マテリアルてのが内部でやってることを想像できればこんなことで悩まん。
立体交差がある非定型のマップでの当たり判定を行いたいのですが、
上手い方法が思いつきません。
どういう方法が一般的なんでしょうか?

具体的には螺旋上の物でも判定できるような…。
F−ZEROとかはどうやってるのかな…?
>>619
ライティング済み頂点フォーマットを使えばいいだけじゃん
古い言い方するとLVertex
>>621
まずは普通に汎用的なの作れば?
もしかしてハイトマップしか作ったこと無かったり・・・・

>>621
素直に実装すれば、立体交差不可のような制限など生まれないはず。
何の解決にもなってないが。
625!621:03/10/03 02:20
>>623-624
621じゃないですが、
普通に・・・って普通ってどういうのをいうのでしょうか?
とりあえず自分が考えた方法は

方法
@ハイトマップに階層を持たせる。
A三角形を床にならべて三角形ごとに判定。
B幾何学図形を上手く並べて判定。
Cハイトマップをつなぎ合わせる。

考えられる問題点
@データを作る為のツールが鬼。
A三角形同士の繋ぎ目の判定がおそらく鬼。
B設定する人の手間が鬼。Aと同じく繋ぎ目の判定が鬼。
C上手くつなぐのが鬼。Aと同じく繋ぎ目の判定が鬼。

ですがあまりスマートな方法は考えられませんでした。
626デフォルトの名無しさん:03/10/03 02:29

( ゚д゚)ポカーン …
627625:03/10/03 02:52
>>626(´・д・`)ダメナノー?
ポリゴン(三角ポリ)単位で判定すれば良いだろうに。
そうすればそのポリゴンがどのような傾きや大きさや形をしてようが
そのポリゴンとの当り判定なんて楽だろ。
で、最初にポリゴン同士のつながり情報(頂点含む)を
データ読んでノードでもなんでも作っとけば
後は位置さえ解っていれば数ポリのコストで判定が出来るだろ
(綱渡り処理だが高速だ)

後さ、ツールとか設定なんていらんだろ。
データ構造決めて、そのデータをモデル読んで構築する
アルゴリズムさえ組めば良いんだよ。
ま、三角ポリ以外は不可とかの仕様程度必要か。
629デフォルトの名無しさん:03/10/03 04:00
>>628
じゃあ、625の方法Aってことですね。
頂点を共有する三角形を全て判定に使うんですね。
おおっ!なんかよさそうですね。
ありがとうございます。
>>620 >>622
よ、ようやくできました。ライティングは明示的に
falseにしなきゃなんですね。これで夜明けまで・・・。

しかしおかげでFVFと頂点シェーダへの理解が深まりました。
お二人ともレスありがとうございました。
最近こういう質問見るたびに固定機能が悪の元凶じゃないかと感じてきた
632630:03/10/03 06:15
>>631
いえ、D3DRS_LIGHTINGがデフォルトでTRUEな事を知らなかった
私がバカなだけで、固定機能(とそれへの依存症)は関係ないです…。

「ライト使ってないのに…」と思いこみ、ずっと悩んでました。
633630:03/10/03 06:17
あ、うちへのレスじゃないのか…大恥
電車で寝てきまつ
634631:03/10/03 07:58
630へのレスなんだけど、別に630が悪いと言ってるわけじゃない。
要するに固定機能があるせいで余計にややこしくなってるのではと思う次第で。
初めから数学的に頂点変換なりライティングなりの仕組みとか勉強した上で、
自分でシェーダを書いていったほうが、直感的で分かりやすいんでないかなと。
635デフォルトの名無しさん:03/10/03 08:30
df
636デフォルトの名無しさん:03/10/03 11:19
マテリアルってシェーダを使うときに何に使われているのでしょうか?
いっそのこと、かつてのIM,RMみたいに固定機能とシェーダを完全に
切り離してしまった方が分かりやすいかもしれないな。

>>636
頂点シェーダではマテリアルは使わない。っていうか使えない。
  ∧⊂ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (゚Д゚)ノ <  シェーダ
  | ⊃|   \__________
  |  |
  ⊂ノ〜
  ∪
639636:03/10/03 20:53
>>637
サンクス!
640デフォルトの名無しさん:03/10/03 21:44
DirectXというかVC++6.0での質問かもしれませんがよろしくお願いします。
VC++でのエディタの入力支援機能でLPDIRECT3D、LPDIRECTSOUNDは表示されるのですが
LPDIRECT3D9、LPDIRECTSOUND8が表示されません。(数字が最後につくもの)
必要なヘッダと思われるd3d9.hやdsound.hはインクルードしています。
DXSDKのInclude,Libのディレクトリも最上位にしています。
なにが原因なのでしょうか?

環境
VC++&DirectX9.0b
>>640
プロジェクトのあるディレクトリに「プロジェクト名.ncb」ってファイル無い?
これが入力補完のデータベースだから
VisualStudioを一旦終了して、そいつを削除する。
で、もう一回VisualStudio立ち上げてクラスビューを出すとそいつが再編成される。
VisualStudio6.0でコード補完が効かなくなった時に良くやってた。
VisualStudio.net以降は上手く行くか微妙・・・
642デフォルトの名無しさん:03/10/03 22:43
DirectX8からDirectX9に移行しようとしてるのですが
D3DXAssembleShaderFromFileからエラーが返ってくるようになりました。
もしかして、シェーダアセンブラってそのまんまじゃ駄目ですか?
643642:03/10/03 22:52
すいません解決しました。
「頂点宣言」なるものが必要なようです。

#なんためのバージョン宣言なんだろう・・・。
644640:03/10/03 22:54
>>641
レスどうもです。
試してみましたがダメでした。
OS再起動しても変わらずです。
d3d9.hなどにtypedefされている「〜9」がだめっぽなので
なんとか調べてみます。
なんともレベル低いのですがDrawIndexedPrimitiveの引数、
BaseVertexIndexとMinIndexの違いについて教えて下さい。

例えば6つのVBに対し、IndexBuffer = { 0,1, 2,3, 4,5, 0,1 }のLINELISTで
後ろの4つ(4,5 0,1の部分)だけ2線で表示させたいのですが、
DrawIndexedPrimitive( D3DPT_LINELIST, 0, 0, 4, 4, 2 )では違うようで・・・。
>>644
外部依存関係のとこにあるd3d9.hやらをプロジェクトに参加させて(Header Filesとかにドラッグ)ビルドすれば
DX9の物もIntelliSenseが働きます。一度ビルドすれば消しても大丈夫です。
>>642
頂点宣言とシェーダーのバージョン宣言は全然意味が違う。
シェーダーを少しでも理解してれば、そんなアホな発言はしないはず。
サンプルコピペ君ですか?
つーか、”「頂点宣言」なるものが”って存在を知らないのか?
DirectX8からDirectX9に移行じゃなくて、移行しなくても理解出来てないんだろ。
648640,644:03/10/03 23:36
>>646
ばっちり表示されました。
スレ違いの質問に答えていただきありがとうございました。
>>645
DrawIndexedPrimitive( D3DPT_LINELIST, 4, 0, 4, 4, 2 )
650デフォルトの名無しさん:03/10/04 00:41
>>647

いやDirectX8のときも

dcl_position
dcl_normal0
dcl_texcoord0
dcl_texcoord1
dcl_tangent
dcl_binormal

↑コレってあったんですか?
少なくともDirectX8のときはなくても動きました。
>>650
だから馬鹿の上塗りは止めろ。
バージョンが違うから必要になったんだろ。
>#なんためのバージョン宣言なんだろう・・・。
お前の発言だ。
バージョン宣言さえすれば要らないがの如く考えを突っ込んでるだよ。

しかも、それは頂点宣言じゃないぞレジスタの設定だろ。
>>651
>頂点宣言じゃないぞレジスタの設定
すみません_| ̄|○

>バージョンが違うから必要になったんだろ。
DirectX8でdcl云々がなくてもたまたま動いてただけかもしれないとか
考えてたわけですよ。
>>649
レスありがとうございます。しかし表示されない・・・他が駄目なのか。

IndexBufferの6番目の値までなら、どんな組み合わせでも表示されるのですが
7番目と8番目が絡むと、なんか途端に駄目でして・・・出直してきます。
>>651
>だから馬鹿の上塗りは止めろ。
それを言うなら恥の上塗り
>>654
だから馬鹿の上塗りは止めろって(ゲラ
恥の上塗りの典型的な例が>>655
>>601

その本 もってる。
ほしきゃあげるけど、どうやってれんらくとりあえばいいんだ
>>656
恥部の上澄みハァハァ
>>658
ごっくんしますた(;´Д`)ハァハァ
>>658
先走りですか?

>>659
あなたがごっくんしたのはカウp(ry
>>660はグロ
初カキコで少し質問させてもらいます。
現在directx8を使ってプログラミングしているのですが
directx8には線分を描画する機能はあるのでしょうか
よろしくお願いします
663(^^):03/10/06 15:53
ありますよ(^^)

DrawPrimitiveで(^^)
D3DPT_LINESTRIP(^^)またはD3DPT_LINELIST(^^)を使えば
線になります(^^)
山崎っぽいな
665デフォルトの名無しさん:03/10/07 16:27
VC6.0のWin32 Console Application環境下で、ジョイスティックのフォースフィードバック機能を使用することって可能ですか?
DirectX8SDKのサンプルプログラムのようなwinMainを使った方法ではなく、main関数を使用するオールドタイプなプログラムでフォースをかけてみたいと思ってます。
皆様の手ほどきをお願いします。。。

可能です
>>666
そうですか残念です。
そうですね
>>665
何か問題あるの? わけ解らん。
670667:03/10/07 20:27
>>669
問題は私が665ではないところではないでしょうか。
>>665
もうちょいメッセージの勉強汁
おないがわかってないのはDirectXto関係ない
672デフォルトの名無しさん:03/10/08 04:25
質問です。
描画の順番で、
始めに、αで無い物の描画を行い(この描画は手前の物から描画)
最後に、α物の描画を行う(この描画は奥のものから描画)
という理由は、わかるのですが、
そもそもα物ってどうやって知るのでしょうか?

もしかして、
テクスチャにα情報が入っているかどうか。
頂点情報にα情報が入っているかどうか。
を調べなきゃ駄目ですか?
すみません、質問です
この度GeForce4TiからRadeon9600proに替えましたところ、
DrawIndexedPrimitiveにて正常に表示がされなくなりました。
DrawIndexedPrimitiveUPでも同じです。
Index16とIndex32も試しました。
D3DPT_TRIANGLELISTで、vertexはvector、normal、texUVです。
index数、vertex数ともに処理できる最大値は超えていません
インデックスバッファを展開しDrawPrimitive(UP)での表示はうまくいきます。
Win2ksp4にVC++6.0sp6、DirectXSDKは8と9を試しました
DirectXランタイムは9.0bです
どんな原因が考えられるでしょうか?
>>673
とりあえず、ドライバは最新?
>>674
ドライバは最新から3個前までと付属のものカタ3.2を試しましたが駄目でした
DirectXコンパネのデバッグレベル最大にするとどうなる?
9.0bRuntimeのリリース版が入ってますが(汗
ナローでがんばって9.0bSDK落とします・・・
>>672
事前に分かっているはず
・作る前に仕様を決めておく。
・ある程度デザイナー任せにする場合。まともなゲームならばXファイルなんか使わずに個々のゲームに相応しい
独自形式に変換するのが常識。変換のときにフォーマットも調べるはず。
>どんな原因が考えられるでしょうか?
・部分的に最適化されたモジュールをつなぎあわせただけのドライバ
・RADEON
・ATI
681デフォルトの名無しさん:03/10/09 20:10
さがりすぎてみつけにくいですよこのスレage。
682673:03/10/10 03:39
>>673です
コンパネのOutputLevelをあげたところ
Direct3D8: (INFO) :Failed to create driver indexbuffer
Direct3D8: (ERROR) :Driver not handled in DrawPrimitives2
とのことです。

頂点数を減らして調べたところ
vertex78個 index168個で正常に表示
vertex81個 index171個で上のエラーがでて、表示おかしい

d3dcaps8では
MaxPrimitiveCount :1048575
MaxVertexIndex :16777215
となっているので明らかに少なすぎると思うのですが・・・

Radeon使ってる方はいませんでしょうか?
683デフォルトの名無しさん:03/10/10 03:40
あげます
684673:03/10/10 04:30
3dMark03のCPUTESTにてこんなものがでました
ドライバのバグか?
ttp://sylphys.ddo.jp/upld2nd/pc/img-box/img20031010042856.jpg
685673:03/10/10 06:03
>>684はデバッグバージョンのランタイムで出るようです
リリースバージョンでは実行できました。
いいの?
686673:03/10/10 06:38
すみません自己解決しました
DrawIndexedPrimitive(UP)のNumVerticesにindex数を突っ込んでました(汗
Geforceはこれで動いちゃうんだからすごい適当だわ

>>685
ああ、そういえばこれ↓まぎらわしいですよね?
スタート->Microsoft DirectX 9.0 SDK
->Install DirectX Runtime->Install Debug DirectX or Install Retail DirectX

Install Retail DirectXの存在を知らないとハマリ確定ですし。

あと、
SDKのインストールのときのDebugとRetailの設定と
コントロールパネルのDebugとRetailの設定と
Install DirectX Runtimeってどういう関係になってるんでしょうね。
>>686
おめでとうございます。
689デフォルトの名無しさん:03/10/10 14:50
Windowサイズに合わせて、バックバッファの大きさを変更したく
サンプルをひいこら読んでいるのですが、うまくいきません。

他のバッファはそのままで、バックバッファの
サイズだけ変える方法は無いのでしょうか?
フロントバッファのサイズを変えずに、バックバッファのサイズだけ変えるの?
691689:03/10/10 18:38
>>690
すいません、両方です。
VertexBufferとか以外と言う感じでお願いします。

どんなウィンドウサイズになっても、クライアント領域のxy座標と、
射影後の座標が一致するようにしたいんですが…なかなか出来なくて。

とりあえず、バック(フロント)バッファと、クライアント領域の
大きさがぴったり同じだと、調整・計算無しで一対一にて対応できるので、
できれば両方を常に同じ大きさで合わせたく思ってます。
692689:03/10/10 18:41
どうも説明が下手ですいません。
クライアント領域のxy座標というのは、WM_LBUTTONDOWNの
lParamで来るようなPOINT値のことのつもりです。
新しいD3DPRESENT_PARAMETERS作ってリセットするといいと思うにょ。
694689:03/10/10 20:38
>>693
レスありがとうございます。お礼が遅くなってすいません。
上手くいってから…と思ったのですが、未だ苦戦中でして…。

でもやり方が合ってるようでホッとしました。凄い力づけられます。
どうも「VertexBufferまだあるやんけ〜」みたいなエラーが出ちゃうんすよね…。
695デフォルトの名無しさん:03/10/15 12:18
DirectXのヘルプについて質問お願いします。
関数などのパラメータ説明に使われいる[in]や[out]の意味は何なのでしょうか。

さすがに何となく意味は分かるのですが、
例えばD3DXMatrixLookAtLHの演算結果を返す
D3DXMATRIX* pOutが、[in, out]指定なのが疑問で…。

この内部でも出力にしか使われて無さそうな
パラメータに、なぜ[in]もついているのでしょうか。
>>695
あんま意味ないんじゃね?
だって引数全部にinってついてない?
697695:03/10/15 13:47
>>696
レスありがとうございます。なはは、そうかも知れませんね。

一応ポインタへのポインタ(D3DXCreateMatrixStackなどに)には
[out]のみのがあるのですが、「ポインタへのポインタだからoutのみ」では
ちょっと直接的というか納得できなくて…。

自分のコメント書くとき、参考にしようと思っていただけなので、
適当にやってみます。お付き合い感謝です。
当該関数から見てinとかoutってことだぞ?
たしかCOMでの表記法だったと思われ
699デフォルトの名無しさん:03/10/16 21:46
線(LINELIST)を描画する前に
device->SetRenderState( D3DRS_DEPTHBIAS, 16 );
面(TRIANGLELIST)を描画する前に
Device->SetRenderState( D3DRS_DEPTHBIAS, 0 );

なんてしておけば、例え面の上に線があっても、
線の方がくっきり見えると思っていたのですが、全くそんな気配がありません。

使い方が間違っているか、または線にはZバイアスが適用されないのでしょうか?
ビデオカードは一応、Zバイアスをサポートしてます。
>>699
ヘルプ読んだ?
ラインとポイントのプリミティブには適応されないよ。
因みに俺も知らなかったが、君のレス読んで1分後にはヘルプで答え見つけたぞ…
D3DRS_DEPTHBIASは使い物にならないだろ。
デカール用に調整した射影行列の方が良くないか。
>>700
お恥ずかしい、スカっと見落としてました。言い訳のしようもありません…。

>>701
おかげ様でであっさりと、何のコストもなく綺麗に実現できてしまいました。
この時間まで試行錯誤してたのが嘘みたいです。

お二人ともレス感謝、ありがとうございました。
xfileをたくさん落とせるサイトないですかね・・?

特に公開目的じゃないので著作権とかは適当でいいです。
>>703
D3DXCreateTeapotでいいやん(w

まあ、何をそんなに欲しがってるのか分からんが、
別にxfileでなくてもLWとか3dsとかのモデルデータを手に入れてメタセコでxfile出力とか。
LWとかのモデルデータならどっかで手に入るかもしれない。
ぶっちゃけ自分でモデルをメタセコで作ってxfileで放出なんてのでもいい。
2,3日触ってればあのモデラーは結構つかえるようになるよ。
705デフォルトの名無しさん:03/10/19 13:41
>>704
まだDirectX始めたばっかで、
いろいろなオブジェクトがどう表示されるかとかちょっと興味あったもんで、、、

自分でxfileそれなりに作れた方がいいだろうし、試しにメタセコイア触ってみることにします(´-`)ノ

レスありがとうございました。
706デフォルトの名無しさん:03/10/19 17:57
DX9.0Update(Summer 2003)のD3DXCreateFontが使い物にならない予感。
フォント幅を自動調整してくれない時点で終わってる。
問題なく使いこなせている方いらっしゃいますか?
3Dゲーム作るには必須ですか?
>>706
テクスチャをロックして自分で好きなように設定すればいいだけの話
709706:03/10/19 18:48
>>707
>>708
ありがd
Summer 2003の前バージョンで作った描画ライブラリの中で使っているD3DXCreateFont部の
Summer 2003への移植で困っています。前のバージョンだとD3DXCreateFontはGDIのHFONTを
引数に渡すだけでGDIと同様の描画結果(しかもアルファ付)だったのでとても使い勝手がよかったです。
>テクスチャをロックして
GDIではアルファ属性テクスチャーに書き込めない罠。ロックしたりアルファビットを設定
したりするのは処理時間が掛かりすぎるような予感がしまつ。
Summer 2003のドキュメントのD3DXFONT_DESC Structureのメンバに嘘書いてるし、
D3DXCreateFontは後で改修される予感。(結局待ちまつ。)
>>706
自分もそいつに手こずっている。フルスクリーンモーで描画されない。
Text3Dサンプルでも同じ症状だから、根本的にバグっている悪寒。
>>709
処理負荷ってそれじゃあD3DXは魔法でも使っているというのか?
インタフェイスを呼び出す条件は自前だろうがD3DXだろうが変わらんのだが
>自分もそいつに手こずっている。フルスクリーンモーで描画されない。
>Text3Dサンプルでも同じ症状だから、根本的にバグっている悪寒。

フルスクリーンモードではバグってます。
ちなみに、ドライバを更新すると、突然、正しくフォントが
描画されるようになったケースが個人的な実験で検証したことが
あります。

つまりドライバの実装が、DirectXのそれに合致してないケースが
あるのです。
713デフォルトの名無しさん:03/10/20 19:41
ポータルシステムって知ってます?

俺が持ってる本「3Dグラフィックス数学」に書いてあるんだが、なんのことだか
よく分かんない。

カリングのための視錘台を"小さく"して、より多くの不可視オブジェクトを
取り除こうというものですか?
>>713
少し気合い入れて数学勉強してみ。
そうすれば本に書いてある事も理解できるはず。

てか、あの本
基礎数学を本気で知ってる事を前提に書かれてるな。
>>713
まずportalという単語の意味を調べなさい。
>>714>>715
どうもー。

portal=入り口、門かな。挿絵を見てみると、そんな感じはある。

数学か・・・。あんまり厳密に理解できなくても、ある程度試行錯誤したら、
一応動くプログラムは作れて、そんな感じでやってきたので、基本的な
ところがおろそかになってます。まぁ、本をよく見て追ってみます。
>>714
最初の線形代数とかは復習ですな。
簡潔に書いてあるから好きだけど
3dグラ数は買って1年ほど経つけど読んでないや
数学ちんぷんかんぷんな俺には難しい・・・
ああ、でもそろそろやらないと・・・
来年の今頃はDirect3Dプログラムちょちょいのちょいと組めるようにならないと・・・(涙
DirectX初心者です。質問させてください(いろいろ調べてみたのですが・・汗)
シェーダでテクスチャuvをピクセル単位で同次除算させようと、
mov oT0.xyzw, r0.xyzw
と、変換済みのxyzwをテクスチャ座標に設定しています。
しかし、ピクセル単位で/wされていないようなのですが、どうしてでしょう?
(oT0.wに適当な数値を入れても描画結果に変化はありません)
さらに不思議な事に、
SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS, D3DTTFF_COUNT3 | D3DTTFF_PROJECTED )
をステージに設定すると、ピクセル単位で/wされ綺麗に描画されるのですが、
D3Dエラーがでまくっています。
Direct3D8: (ERROR) :Stage 0 - Count in D3DTSS_TEXTURETRANSFORMFLAGS must be 0 when programmable pipeline is used
(シェーダの時には0にしなさい!って事だと思うのですが・・・)
シェーダで同次除算させる時にTEXTURETRANSFORMFLAGSなどの設定は必要なのでしょうか?
環境はDX8.1/vs1.1です。
ピクセルシェーダが自前ならtex3Dprojとかで事が済むんだがのぅ。
最近HLSLしかやってないから固定機能のほうは忘れた('A`)

とりあえず、言われた通りにD3DTFF_DISABLEを使ってみては…
(全く自信が無い、つーか動いたらそれもそれで理由不明w)
併用した結果は仕様外の環境依存で、
D3DTSS_TEXTURETRANSFORMFLAGSと併用せずに
全部PixelShaderでやれってことじゃないの?

あ、VertexShaderか
>720
>721
レスありがとうございます。
やはりVertexShaderだけでは無理という事なのかなぁ・・・。
使用しているグラフィックボードは、PixelShaderが使えない奴なので、
なんとかVertexShaderだけで出来ないかと悩んでました。

D3DTSS_TEXTURETRANSFORMFLAGSを立てると、うまく/wされて
綺麗に出ているだけに、諦め切れないと言うか・・w

SSVと四角形の板との当たり判定の処理を作っています。SSVがキャラクター、
四角形の板の組み合わせが地形と想定しています。

単体同士のテストでは、どうやら大丈夫のようですが、いくつかの四角形の
板の組み合わせと当たり判定をとると、2つ以上の板と衝突する場合に、
条件によってはすり抜けてしまいます。

おそらくは、壁擦りのための処理で、衝突した場合に押し出したときに、当たり
判定の処理が終わった壁に再び衝突してしまうのが原因のようです。

すり抜けの現象が起こりにくい処理の仕方とは、どういったものでしょうか?
725デフォルトの名無しさん:03/10/22 18:48
>>724
「1つ前の座標をとっての当たり判定をやっているならそれをやめる。」
っていうのが私の出した結論ですが、どうでしょうか?
ごめんSSVって何ですか
>724
>判定の処理が終わった壁に再び衝突してしまうのが原因のようです。

その衝突が検出できているのであれば、
衝突しなくなるまで判定とる。

とかじゃ、ダメ?
728デフォルトの名無しさん:03/10/22 19:21
>>727
やめたほうが無難。
あっさり無限ループに入る。
判定回数に制限を入れても結局解決には至らないし。
すいません。SSVはSphere Sweep Volumeのつもりです。

>>725
その通りの手法です。一つ前の位置と現在の位置をとって当たり判定を
とれば、速い速度で壁にぶつかったときにもすり抜けることがないので、
この手法でやっていますが、あんまり勧められない方法なんですか?

>>727
その方法ならできそうな感じがあります。ちょっとテストしてみます。
730デフォルトの名無しさん:03/10/22 19:57
>>729
>あんまり勧められない方法なんですか?
はい、その方法でやっている限りこの問題の解決は難しいと思われます。
なんとか正常に動いているように見えるようにするぐらいが精一杯ではないでしょうか。
とはいっても市販のゲームもかなりこれに近い方法でやっているのではないかと
思われるゲームが多々ありますのでそれでいいと思えばそれでいいのではないでしょうか。
Q 壁をすり抜けるのですが?
A それは仕様です。
>728
無限ループになるかな?
前回の位置が保証されていれば(壁に入っていない)、
必ず解は出ると思うけど。。。

>730さんお勧めの方法は?
733デフォルトの名無しさん:03/10/22 21:01
>>732
>前回の位置が保証されていれば(壁に入っていない)、
前回の位置なんて保障されてないでしょ?
もう他の物体があるかもしれないし。

>お勧めの方法は?
当たり判定をする空間をしっかりと限定する
(こうすることで壁の向こうの壁の存在を気にしなくてよくなる。
 説明するの面倒臭いから限定方法は自分で考えて(できるっしょ?))
その後は普通に当たり判定をして、めり込んでいれば戻す。
もちろん一つ前の座標が必要になるときもありますが
しっかり当たり判定をする空間をきっちり定めてあれば
抜けが問題になることはないと思います。

でどんなもんでしょ?
そもそも接触というのを瞬間的な座標修正用に考えるから問題が出る
座標ではなくベクトルで考えればいい

ビリヤードを例えにするが、壁際のボールAにボールBを当てたとすると、
ボールBはボールAに力を伝える
ボールAは壁によって進行方向であるベクトルを曲げる
ボールBはボールAの反作用を受けて進行方向を変える
この進行方向は次フレームに繰り越して座標を決定する
接触判定はあくまでベクトルの変化に使うのであって瞬間の座標決定には使わない

壁ずりは反作用によるベクトル変化で自然に出来る
この場合はビリヤードの玉のような動きではなく、自分で推進力を発生させる必要がある
735デフォルトの名無しさん:03/10/22 21:28
>>734
( ´∀`)いいたいことはわかるんだけど、なんかすごくバグりそうだよ。
>>733
点P(x1, y1, z1)を考えて、x1*x1+y1*y1+z1*z1<1、こういうので判定するって
こと?これだと原点を中心とした半径1の球の中にしか点Pは存在しないって
ことになるけど、複雑な地形は表せないしなぁ。違うのか。
737デフォルトの名無しさん:03/10/22 23:15
>>736
逆に聞くけど
どうして1つ前の座標を知らなくちゃいけないの?
VMR-9を使ってテクスチャに動画をレンダリングさせて
それを表示してるんだけど、はまってしまいました。

ウインドウのサイズが変わったときに
バックバッファの大きさを変更するために
IDirect3DDevice9::Reset() を呼び出したいんだけど、
この呼び出しが 失敗してしまいます。

いったいどうやってサイズが変更したことを
VMRに伝えればいいんでしょうか?

どなたかご存知でしたらご教授お願いいたしますです。
739738:03/10/23 03:33
ちなみに Reset() は CreateDevice() したのと
同じスレッドで呼び出しています。

もしかして デバイス作り直すんでしょうか?
だったら・・・めんどいなあ。
Texture とか全て破棄してからじゃないと reset できなかったような気が。
というか初期化&もろもろ用意処理、破棄処理ってすでにあるだろうから、
安直にそれ呼べばいいんじゃない?
D3DPOOL_DEFAULT系で宣言した奴は全て解放しないとだめです。
D3DXEFFECTみたいのにもOnResetDeviceだとかいう関数あるのでちゃんと呼び出してあげてね。
>>737
一つ前の座標が無くても判定はできると思いますが、この場合どうしても、
速い速度で衝突したときに抜けてしまうと思います。たとえば球同士で
判定する場合、現在の原点の位置同士の距離を測って、その距離を
2つの球の半径の合計と比較するといったほうがあると思いますが、
これは速い速度での衝突が判定できない場合があると思います。

点P(x1, y1, z1)を考えて、この点が存在できうる範囲を
0<=x1<=1, 0<=y1<=1, 0<=z1<=1とすると各辺の長さが1で点(0.5, 0.5, 0.5)を
中心とした軸に合わされた箱になる。これで当たり判定をとると、確かに
速い速度で衝突したとしても抜けない。が、箱の一辺が空いていて外に
出られるとする、箱は部屋のようなイメージで、空いている一辺はドアとする。
このときは箱それぞれについて判定しても、今いる部屋については意図した
結果が得られるが、そうではない部屋については意図した結果が得られない。

もしかして、空間を限定するというのは、今いる部屋だけに限定するという
ことなのかな。ただ、今いる部屋を限定するには1つ前の位置がいるような
気がする。
離散的に判定してる限り、条件次第で壁抜けするのは仕方ないんぢゃない?

連続的に判定するか、壁を十分に厚くするか、あるいは時間刻みを十分に細かくするか。
その程度しか思い浮かばないけど。
思うに、壁の法線ベクトル計算に入れれば解決するんでない?
法線があれば裏抜け解るはずでしょ?
745デフォルトの名無しさん:03/10/23 19:05
>>742
そうなんですけど、それじゃ駄目なのでしょうか?

「今いる部屋」から出るための判定をパスしない限り
「そうでない部屋」へはいけないようにして。
「今いる部屋」から出るための判定をパスして
「そうでない部屋」へいったら、その部屋が「今いる部屋」になる。

とかやるわけです。

で抜けてしまう場合の判定には1つ前の座標を使えばいいと思います。
ただそれは大きく距離を移動したときの判定や、
判定後の位置補正にだけに絞って使ってはどうでしょうか?

>>744
抜けるのは微妙な誤差で抜けてしまうのでそれだけだと
何かと問題が多いみたいです。
746745:03/10/23 19:07
×抜けてしまう場合の判定には
○すれ違ってしまう場合の判定には

スマンです。
DirectXで深度バッファの値を参照したいのですが、
どうやって見るんですか?

単純にLockできないようだし・・・。
>>738
 IDirect3DDeviece9で作成した関連するデバイスを全部解放しろ。
そうすればリセットで成功するはず。

ビデオボードが2枚以上刺さっている場合はIDirect3DDeviece9も
 作り直せ
当たり判定のことを聞いた者です。

みなさんどうもありがとうございました。みなさんとのやりとりでだいぶ
つかめました。

>>744
見えないオブジェクトのカリングに似た処理は、当たり判定にも必要である
のでその手法でだいぶ理想の形に近づけました。
750738:03/10/24 01:06
みなさん、ご回答ありがとうございます。

PixelShader/Texture/Font すべてResetの前に
解放してみましたが、やはり駄目でした。

ダミーのデバイスを作っておいて、
IVMRSurfaceAllocatorNotify9::ChangeD3DDevice()を使って
1 .正規 -> ダミーに切り替え
2 .正規デバイスを Reset
3. ダミー -> 正規
と切り替えればもしかしたら楽にいくのかと思ってやってみましたが
やはり駄目でした。

というか ChangeD3DDevice を呼び出すスレッドは
DirectShow内部のスレッドなのでしょうか?
それともデバイスを作ったスレッドなのでしょうか?

それにしても DirectShow 難しい・・・
751デフォルトの名無しさん:03/10/24 01:30
DirectX8.1bSDKをインストールして、
VC++5.0でコンパイルしたら、
dsound.hでいきなり

構文エラー : 識別子 'DWORD_PTR' がシンタックスエラーを起こしました。

というエラーが発生してしまいました。

何が悪いのでしょうか?
よろしくお願いします。
752751:03/10/24 01:56
解決しました。インクルードができていませんでした。
お騒がせしました。
753751:03/10/24 02:14
すいません。またお騒がせします。
やはり駄目です。定義位置には遡れるのですが
サンプルをコンパイルしようとすると次のような
エラーがでてしまいます。インクルードの優先順位の問題でしょうか。

DWORD_PTR' : 識別名を宣言するのに、型が指定されていません。
ウザ。VC5もってねーのでVC6だが、

メニューのツール - オプション - ディレクトリを開け。
表示するディレクトリ - インクルードファイル に DirectX8.1のincludeを登録し、矢印ボタンで一番上に持ってくる。
表示するディレクトリ - ライブラリファイル に DirectX8.1のlibを登録、矢印ボタンで一番上に持ってくる。
756デフォルトの名無しさん:03/10/24 10:19
糞APIである、D3DXFONT, D3DXSPRITEを使わないことをここに宣言します。
D3DXSPRITEを使わないスプライト処理は完成しました。
D3DXFONTを使わないGDIを使った文字描画処理を作る予定です。
D3DXFONTは、機種依存が激しい(仕様変更も激しい)ので早くおさらばしたくなりました。
現在ATIのVGAで開発しているが、あまっているマシンにELSAのnVIDIA搭載VGAを挿して
RadeonとGeForceで動作保証するものを作る予定です。(Matroxは却下。)
>>756
 たしかにクソAPIだな

何を今更
759756:03/10/24 11:58
ELSA GLADIAC FX731 128M (GD731-128AR)
GeForceFX 5600 / AGP8x / DDR-128MB
このVGAを買ってきて、Radeon9700Proで開発した自作ライブラリのテストする予定です。
これでnVIDIA系でも、自作ライブラリバチーリ安定動作の予感。
>>759
自分はスプライトは作成済み。
 フォントは使ってるけど。
>>756
なぜそこでGDIを使うのかわかんね。
762751:03/10/24 12:18
>>754
親切にレスありがとうございます。
インクルードはできていました。
どうやらファイルの拡張子が.cに
なっていたのが原因のようです。
763756:03/10/24 13:13
>>761
2ちゃんねるのフォントが使いたいから
ttp://www.bekkoame.ne.jp/ro/tn_ws1100/2ch/
bmpファイルでキャラクタデータ持つのマンドクサイでつ
764デフォルトの名無しさん:03/10/24 13:23
DirectShowのMP3エンコーダフィルタ
Lame_dshow.ax (Lame mp3)
のビットレートの変更などのインターフェイスを
知りたいんですが知っている方おられましたら
ご教授お願いします。

>>738
あー、それは漏れもはまったはまった。数日間試行錯誤したわ。
resetできないんだよな。あれを解放しないと。
おまいも試行錯誤すれ。
人民解放軍ですが何か?
767738:03/10/25 20:42
>>あー、それは漏れもはまったはまった。数日間試行錯誤したわ。
やはりそうなんですか。

まずは サンプルの VMR9Allocator に WM_SIZE のハンドラを
追加して、そこでいろいろ実験してみました。

結局 Reset() の呼び出しは いまだにうまくいってませんが、
以下のような方法はうまくいきました。

(1) OnSize() が呼ばれたら (2)がすむまで Sleep
(2) PresentImage() 内で DeleteSurface() して、(3)がすむまで Sleep
(3) OnSizeの制御を再開し、 CreateDevice()
(4) PresentImage() の制御を再開し、ChangeD3DDevice()

これで一応うまくいっているようだけど、こんなんでいいんだろうか。
768デフォルトの名無しさん:03/10/26 10:39
板違いの質問かも知れませんが、お願いします。
市販のゲームではDirectXがCDに入っているのをよく見かけますが、
DirectXで開発したゲームをCDに焼いて個人で売るときには
開発したバージョンのDirectXをCDの中に入れてもいいんでしょうか?
そうしないと、ネットワークに繋いでいない人は、そのゲームを簡単に
できないということになってしまうんですが。

770768:03/10/26 13:14
>>769
ばっちり書いてありました^^;
ありがとうございました。
771デフォルトの名無しさん:03/10/27 07:51
DirectXGraphicsでカメラを自分の向いている向きに対して相対的に動かしたいんですが、上手く動きません。
現在の所その部分は以下のような流れになってます。
m_vPosが現在のカメラ位置、m_vAtがカメラの見ている位置です。

vAtDirection = m_vAt - m_vPos;//カメラの向きを出す

D3DXMatrixRotationYawPitchRoll(&matRotationTransform,
y,x,z);//回転行列を作る。(x,y,zが目的の回転角度)

D3DXVec3TransformNormal(&vAbsoluteDirection,
&vAtDirection,&matRotationTransform);//相対的な方向から絶対的な方向にする

D3DXVec3Normalize(&vNormalizedDirection,&vAbsoluteDirection);//正規化する
vDistanceDirection = vNormalizedDirection * Distance;//Distanceが移動距離

m_vPos += vDistanceDirection;
m_vAt += vDistanceDirection;

どなたか、ご教授お願いします。
>>771
m_vPosとm_vAtは自分の向いている向きで毎回初期化してる?
少なくともそこに書いてあるコードだけだと、自分の向いている向きに対して
相対的ではなくて、カメラの向いている向きに対して相対的だが。

それとD3DXMatrixRotationYawPitchRollじゃなくてD3DXMatrixRotationYあたりで
1軸だけの回転にしても思い通りにならない?
773デフォルトの名無しさん:03/10/27 23:42
>>772
レスありがとうございます。
自己解決しました。
聞きたかったのはカメラに対して相対的という事です。
自分の表現がよくなかったです。すいません。

間違ってた点は、カメラの軸に対して回転しなくてはいけないのに、
D3DXMatrixRotationYawPitchRollを使って
ワールド空間の軸に対して回転していた事です。
カメラの軸を計算して3本出して、それぞれに対して
D3DXMatrixRotationAxisを使って回転したら上手くいきました。
774767:03/10/28 01:10
うまくいったー と思っていたら、
ムービーが停止中だといつまでたっても
PresentImageが呼ばれないので
無限ループになってしまうことが判明(当たり前だけど)。

再生位置を変えずにVMRに再描画させるメソッドって
ないでしょーか?

ほんとに DirectShow むずい。
775デフォルトの名無しさん:03/10/28 15:18
DirectSound8 にて,Stream再生をしている時のボリュームの問題に悩んでいます。

環境は,DirectX 8,1,VisualStudio.NET 2003 です。
テスト環境は以下にもありますが,
ThinkPad X21,自作PC(SoundBluster Live!) となります。

SetCooperativeLevel を,DSSCL_PRIORITY で,
CreateSoundBuffer は,DSBCAPS_PRIMARYBUFFER のみで生成。
Stream用のSoundBufferには以下を設定しました。
DSBCAPS_CTRLPOSITIONNOTIFY | DSBCAPS_GETCURRENTPOSITION2 | DSBCAPS_CTRLVOLUME

現在,悩んでいる問題は,
普通にボリュームを設定してBGMを流すのには特に問題はないのですが,
そのアプリが非アクティブの状態の時に再生,ボリュームを設定させ,
(DSBCAPS_GLOBALを設定していないので,この時に音は流れない)
その状態でアプリをアクティブにすると,再生時に設定したはずのボリュームは
反映されずに最大音量でBGMが流れるのです。

さらに,この問題は起きる環境と起きない環境があります。
DX8.1SDKに付属するサンプル,StreamData を改変してのテストでは,
ノートPCの Crystal SoundFusion では確認されるのですが,
SoundBluster Live! ではまったく問題ありません。

現在は,アプリがアクティブになった時に停止,80ms程度待った後に再生を
再開させることで対処しています。
(アクティブ時にボリューム再設定や停止,再生では改善されない。
 また,GetVolume をすると設定したはずの正しい値が帰ってくる)

対処がスマートではなく,そもそもなにか再生方法に問題があるのかもしれない
と思いここに質問させていただきました。
どなたかご存じの方がいらっしゃいましたらお願いします。
頂点シェーダーの質問です
頂点の座標変換の手順についてなのですが

頂点データーを用意する
1.回転行列を作る
2.移動行列を作る
3.回転行列と移動行列で回転移動行列を作る
4.頂点データーに回転移動行列をかける
5.ライティングの処理をする

3以降を頂点シェーダで処理するか、また
4以降を頂点シェーダで処理するか、また
5だけを頂点シェーダで処理するか。

いったいどの方法をとるのがよろしいのでしょうか?
3は外部でやっとくべきです
動くオブジェクトなら3もだろ
オブジェクトの頂点全てが同じ移動行列と回転行列で変換されるというのに
各頂点でそれらの行列を掛け算する必要があるわけなかろう。
オブジェクトではなくフレーム
ついでにボーンを使うと各頂点単位で掛ける物が異なる
ボーンを使って各頂点単位でかけるものが違えど、
回転行列と移動行列はかけますが…

そもそもジオメトリブレンディングとはどういうものなのかよく考えろと。
ボーンの場合はさらにメッシュ単位で行列をかけ直す必要がある
オブジェクトの頂点全てが同じとかいう妄想を抱く前によく考えろ
頂点シェーダーの話だろ
おまえこそよく考えろ
>オブジェクトの頂点全てが同じ移動行列と回転行列で変換されるというのに
いい加減この恥ずかしい間違いを認めろよ
誤解を招く言い方で悪かったな。反省。
「オブジェクトの頂点全てが同じ移動行列と回転行列」云々だけれども、
ボーンの場合でも同じ行列パレットで計算されるってことを言いたかった。

といってもボーン構造の場合の変換、
p = p0 * {w0*M0 + w1*M1 + w2*M2 + (1-w0-w1-w2)*M3}
の中カッコを一つのトランスフォームと考えたら、
頂点一つ一つについて別々のトランスフォームを使うとは言える。

ただ今は移動行列と回転行列の掛け算について焦点が言ってるわけで、
>ボーンの場合はさらにメッシュ単位で行列をかけ直す必要がある
メッシュ単位で行列を掛けなおす、って分かってるのなら、
頂点単位で移動行列と回転行列を掛けなおす必要はないのは分かってると思いますけど。
DirectX5から離れてて戻ってきたら、なんか3D一色になってて、どうすればいいんだ...
郷に従え
同人ソフトやフリーソフト見ると
今でも圧倒的に2Dが多いですが
話の流れを読めてない>>788を発見。
790デフォルトの名無しさん:03/10/31 19:55
MicrosoftVisualC++でデバッグしたところ、以下のエラーが表示されました。

例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
例外処理 (初回) は MJ.exe (KERNEL32.DLL) にあります: 0xE06D7363: Microsoft C++ Exception。
Direct3D8: (ERROR) :*** Exception in d:\builds\nt32_chk\multimedia\directx\dxg\d3d8\fe\d3dbase.cpp Line: 3442

Direct3D8: (ERROR) :Invalid primitive count

Direct3D8: (ERROR) :Unable to get client during presentation

ぐぐっても、ドイツのサイトが一件表示されただけでさっぱりわからなかったので
これが、何のエラーかを教えていただきたく、投稿しました。
よろしくお願いします。
×投稿
○投降
馬鹿か
DrawPrimitive系の引数に決まってるだろ
Break on D3D Errorのチェック入れれば場所まで分かるだろうが
おおかたプリミティブ数じゃなく頂点バッファサイズでもいれてんだろ
>Direct3D8: (ERROR) :Invalid primitive count
お前はプログラムやめろ
やはりプログラミングするなら英語は必須だよな。
目の前に情報があるのに読もうとしない人ってかなり多い気がする。
いや英語の問題じゃない
こういう奴は日本語で表示されたとしても考えようともしないだろう
C#でもDirectShow使わせてくれよ・・・
Longhornがでれば(以下略
英語は関係ない。これくらいだったら中学生でも分かるし。
>>790はプ単にログラマ向きの頭していない人間だと思う。
初心者ですが、SDK8.0でVC6.0環境の
skineedmeshでの質問ですがソース中に

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT )
{
CMyD3DApplication d3dApp;

if( FAILED( d3dApp.Create( hInst ) ) )
return 0;

return d3dApp.Run();
}
という文があってCreate( hInst )、Run()は複雑すぎてよく分からない
のですが例えば描画に関係するHRESULT CMyD3DApplication::Render()
が一度も出てこないのに描画できるのが不思議です。長くなりましたが
教えてほしいのはHRESULT CMyD3DApplication::Render()はどこから
呼び出してるのでしょうか?
>>799
DirectXの勉強する前にすることあるんじゃない?
消防か厨房だろうが今は学校の勉強しとけ
>>793 = >>798 = >>800 ム版でここ以外カキコ禁止な。
つ〜かプログラム分からずここにいて楽しいのか。
漏れには理解できんよ。(w
>>801
既に随分前から他のスレにも出没してる様だが。
803デフォルトの名無しさん:03/11/02 00:13
directX7とdirectX8のSDKをインストールしたいんですが
どこに行ったらおいてあるんでしょうか?
検索しても見つけられませんでした
どなたかおしえてください
>>803
そんな貴方は雑誌のCDから手に入れると(・∀・)イイ!!です
805デフォルトの名無しさん:03/11/02 00:29
>>804
お金持ってないんでなるべく今インターネットで落としたいのですが。。。
>>803
ググると、1ページ目にある訳だが。
>>805
ネットでダウンロードすると電気代やら色々かかるので
古本市ででも探すと(・∀・)GOOD!!ですね
808デフォルトの名無しさん:03/11/02 00:40
>>806
ダイレクトXのホームページからダイレクトX9はダウンロードできたんですが
7と8がみつからなかったのですごくこまってるのです
むしろどうやってDirectx9のダウンロードしか見あたらないページを
検索できたのかが気になる
http://www.microsoft.com/japan/msdn/directx/downloads.asp
810デフォルトの名無しさん:03/11/02 01:11
>>809
ありがとうございました
ほんとに検索だけは苦手で・・・
検索できないとこれから先やっていけないぞ
でもさーMSのドキュメントって心底検索しにくいと思わない?
>>812
いや、別にMSの検索使わなくてもGoogleで事足りるし
苦手というよりかは面倒というだけだろ
>>812
MSDNとか最悪だな
欲しい物があるところに自力でたどり着けた事がまずない
自分がどうしようもない馬鹿なのを他人のせいにする奴がいるな
確かにMSのドキュメントを辿るのはめんどくさいな。
検索すれば済むことだけど…
DirectXで作成したソフトを起動させていると
無音時にサウンドにノイズが乗るのですが、
これは仕様?、あるいは環境のせいでしょうか?

ちなみに、DirectX9Wizardでも発生します。
サウンドカードを買い換えろ
>>819
今使ってるのは、マザーのオンボードサウンドです。
やっぱりサウンドカードの問題なんですか?

基本的にメーカー製パソコンはオンボードサウンドだと思うのですが、
この辺は諦めてるのでしょうかね・・・?
ビデオカードが激しくノイズを撒き散らしているとか。
環境なのは確実だから、これ以上は自作PC板等で。
オンボードを使っているくせに、ノイズがどうこういうのは頭がおかしいとしか思えない
そういう粗悪品を平然と作って売るメーカー(以下略
sage
825デフォルトの名無しさん:03/11/04 00:03
dp8simuiの使い方を教えて下さい・・・
起動してからためしにSimplePeerでセッションを作成しようとしても
失敗してしまいます。
826デフォルトの名無しさん:03/11/04 18:42
ビルドすると物凄い量のエラーがでてしまいます。
エラーがでるのはd3dxmath.hとd3dx8math.inlです。
構造体の再定義だったり、定義されてない変数だったりエラーは多様です。
ひとつのcppファイルでビルドしたときは問題なかったのですが、
複数のcppファイルに分けてからこのようなエラーがでるようになりました。
原因になりそうなことが思いついた方はアドバイスお願いします。
インクルードの仕方が間違ってるのでは。
複数のcppに分けるのが初めてなら、ソースファイルの分け方から勉強したほうがいいかもね。
828デフォルトの名無しさん:03/11/04 19:01
何度と出た質問だったら申し訳ないんですけど、
パソコンXPでマイクロソフトのホームページでDirectX7の日本語ドキュメント
ダウンロードしても開けなかったんですけど、解決方法ってわかりますか?
829デフォルトの名無しさん:03/11/04 19:07
>>827
初めてではないんです。
一応今までは問題なく分けてきました。
ソースの最後の方で{}や;が抜けていると大量エラーがでることがあるので
それらも重点的に調べましたが原因がつかめません。
おっしゃる通りインクルードの仕方が原因っぽい感じはしますが、
エラーが出てなかった時とやり方は変えてないハズなんです…
830デフォルトの名無しさん:03/11/04 19:07
>>827
初めてではないんです。
一応今までは問題なく分けてきました。
ソースの最後の方で{}や;が抜けていると大量エラーがでることがあるので
それらも重点的に調べましたが原因がつかめません。
おっしゃる通りインクルードの仕方が原因っぽい感じはしますが、
エラーが出てなかった時とやり方は変えてないハズなんです…

>>828
XPは対応してませんよ。
831デフォルトの名無しさん:03/11/04 19:08
なんかよくわからない二重投稿になってしまいました。すいません。
>>828
おおかたDLミス。もっかい落とすが吉。
別にXPだから駄目とかはないし。
833デフォルトの名無しさん:03/11/04 20:42
Direct3Dの座標がさっぱりわかりません。
例えば画面サイズを640*480にし、カメラの位置を(0, 0, -20)、注視方向を原点とし、
物体のサイズが縦24px,横32pxの小さいものなのに、xを10.0f増加すると画面から外れてしまいます。
DirectDrawや、変換済み頂点を使った時のように普通に640*480ではないのはどうしてでしょうか?
>>830
>d3dxmath.hとd3dx8math.inl

ホントにこれでエラー?
バージョンがあってない気がするんだけど
紙の上に点を描いて虫眼鏡で1cmずらしても見えるのに、
顕微鏡で1cmずらしたら見えないのはどうしてでしょうか?
>>833
0.01fずつ増やしてみ。
837833:03/11/05 06:44
レス遅れました。申し訳ありません。
>>835
言いたいことはなんとなくわかるのですが、
なぜ3Dが顕微鏡になるのか、というのがわからないのです。
>>836
10では消えてしまいますが0.01でしたら当然消えなくて、ちょっと右に動きますね。
>なぜ3Dが顕微鏡になるのか、というのがわからないのです。
カメラがそういう設定になっているから
>>833
>物体のサイズが縦24px,横32pxの小さいものなのに、xを10.0f増加すると画面から外れてしまいます。
じゃなくて、
物体のサイズが縦24px,横32pxの小さいものだから、xを10.0f増加すると画面から外れてしまう。
つまりカメラ動かしすぎて、物体が見えなくなったってことよ。

>DirectDrawや、変換済み頂点を使った時のように普通に640*480ではないのはどうしてでしょうか?
だって3Dだもん。ってだめ?
>>837
スケールの問題
今、モニターを見ているとして右に100m移動したら多分モニターは視界から消えるが
10cm移動しただけでは視界に残るはず。そういうこと
>>833
3Dをやるならピクセル数なんて概念は忘れろ。
3Dの座標はピクセルとは関係ない。
Xを10増やした場合に画面上でどのくらい動くかなんて、動かしてみなきゃ
分からない。まつげに触れるほど近い位置で5cm動かしたら視界から消えるが、
30cmも離れていれば消えない。

それと、3Dのシーンを考えるときは、映画監督の視点で考えた方がいい。
画面に映るものはカメラチェックで確認。
3Dが初めての奴は大抵カメラマンの視点で考えてしまうが、カメラとは独立
した視点から考えた方が分かりやすい。
某所でも同じ質問があったけど完全に無視られたのでこっちで質問

D3DXのやってることを把握したいんだけどD3DXのソースとかみれないのかな?
MicrosoftのDirectXチームに就職すれば見れるよ。
てことは一般人には見れないでFAなのね・・・
昔「D3DXSpriteの実装みてみろ」みたいなカキコがあった記憶が
あったので気になった。(そもそもこれが記憶違いか?)
複数の頂点を任意の頂点から時計回りに整列したいのですが、
何か軽い方法でやれないでしょうか?
(トライアングルファンを構成したい)

今は任意の頂点から一つの頂点にベクトルを引いて、
その内積との差を全部比較してソートしているのですが、
比較の際、ベクトルを全部正規化してるので
余計な処理処理が挟まっているような気がしまして・・・。
846デフォルトの名無しさん:03/11/07 14:53
メッシュに張るテクスチャについてなのですが、
トランプや麻雀は裏や形は全て同じで表の柄だけ違いますよね。
この場合、種類の数だけのメッシュを作るのは全く以って無駄だと思うのですが、
表のテクスチャだけ種類によって張り替えるのはどうしたらよろしいでしょうか?
一応メッシュの表に適当なテクスチャを張っておいて、
if(MeshMaterialTexture == "適当.jpg")の時に種類に合ったテクスチャを
張る方法は思いついたのですが、毎回ifでチェックしてるので無駄が多い気がします。
何かよい案はないでしょうか?
その毎回ifでチェックすることによる、何マイクロセカンドかの無駄すら許せないのか?
精神的にやばくなってるから、一度病院に行った方がいいぞ。
848デフォルトの名無しさん:03/11/07 15:44
?どういうことですか?
自分で思いついた方法じゃ無駄がありそうだから
他に最良の方法がありそうだと思って聞いたのですが…
2chは回答初レスで流れが決まる!ここは運だ!
変なレスが先についてしまうと、流れは変わらない!


オレなら裏面と表面のを別の描画リストに分けておくかな。
トランプや麻雀ならなお簡単だろう。
模様がテクスチャなら頂点リストを一種類用意してテクスチャを切り替えればいいのでは?
形状が同じならいくつも用意する必要はない
なんで種類の数だけメッシュを用意する必要があるのか意味不明
メッシュにテクスチャが関係付けられているようなライブラリでも使ってるとか。
>>847
少しCPUの仕組みでも勉強したら?
>>845
返事になっていなくて申し訳ないけど、
適当な軸でソートしてTriangle Stripsってわけにはいきませんか?
854846:03/11/07 20:45
Direct3Dは始めたばかりでよくわかってないのですが、
テスクチャも張ったxファイルを作成してメッシュを表示しています。
>>849さんと>>850さんのご解答を読む限りでは
リストを用意しろってことみたいですが
よろしかったら詳しいやり方のヒントだけでもいただけないでしょうか?
カードの形状ぐらいでXファイルを使う理由がよく分からんが、
Xファイルを頂点部分だけ読み込んで、テクスチャだけ切り替えれば?
856845:03/11/07 23:31
>>853
レスありがとうございます。
最初はStripで描画しようとしていたのですが、
ソート方法自体が思い付かずファンを使ってました・・・。

この適当な軸でStripをソートとはどういう方法で行うのでしょうか?
もしよろしければ御教授お願いできませんか。
857846:03/11/08 06:43
>>855
今自分の使っているDXの本では関数でメッシュを作成する方法は飛ばされてまして。
一応変換済み頂点くらいでしたらいじれはしますが…
>Xファイルを頂点部分だけ読み込んで、テクスチャだけ切り替えれば?
これの方法がいまいちわかりません。
一枚のテクスチャを張るのでしたらできると思いますが、(ビリヤードの玉とか)
例えば麻雀牌のように面が6つあって、テクスチャも4つ必要な場合は
>>846みたいな方法しか思いつきませんでした。
本質を教えず厨を量産する解説本ばかりなのか・・・?
>>858
そんくらい人に聞かなくても本屋に行って調べればわかるだろうが、
最近の若者は自分で調べることもできんのか。
本屋行かなくてもサンプルにチュートリアルがあるからそれ見て勉強すればよい。
その後チュートリアル以外の散サンプルをやればいい。

解説書は補間に使うくらいでいいんじゃね?
859のレス先はあってるのか?
あってるならアホだな
あってるならむしろ禿げ同w
>>858を疑問レスだと勘違いしできるのは凄いな、あってるなら。
皮肉でしょ
そんくらい人に聞かなくても本屋に行って調べればわかるだろうが、
最近の若者は自分で調べることもできんのか・・・?

とやってれば皮肉として完璧だったのだがw
皮肉と気づいてないとすれば凄いな
最近は糞本多いから効率悪い
人に聞くなって言ってる奴は友達がいないんじゃねーの?
全然関係なくてワロタ
869846:03/11/08 14:54
なんか俺に対してのレスなのかよくわからない状態ですが、
少なくとも調べてから質問しています。
回答者の中には上の目線からでしか回答できない人が結構いますので、
その人からみればこんなの検索すりゃあわかるだろってコトでも
俺にとっては無理なことだったりもします。
何、開き直ってるの?
そりゃ無理だと諦めれば永遠に無理だろうよ。
逆上がりが出来ないから無理だということしか出来ない奴と、黙々と練習する奴、
前者のオマエはただの負け犬。
ぬるぽ
872846:03/11/08 15:20
開き直ってるわけではありません。
勝手に調べてないって決め付けられるのがイヤなのです。
今だって調べています。
まだ初心者ですので上級者にとってはアホな質問と思われるものをすると
毎回のように「調べて来い」といわれてまして。
そんな検索かけないような厨とは違います。
>>870さんのように
>そりゃ無理だと諦めれば永遠に無理だろうよ
と決め付ける方が多いもので…誰も諦めたとは言ってないのに…
>俺にとっては無理なことだったりもします。
自分で無理だと宣言しているのに何を言ってるんだか

>そんな検索かけないような厨とは違います。
そこらの厨も、そうやって検索した程度で調べたつもりになっている
調べるんじゃなくて、考えろ。
誰かから手法を教えてもらうのではなくて、自分で編み出せ。

それが出来ない奴には何を教えても、教えた事以上の
進歩が期待できない。
独自手法ばかりの椰子ほど手に負えないものはないけどな
>>871
ガッ
DirectXを普通に使える人なら>>850のレスで終わりだよな。

初心者には探すのが難しいかもしれないが、
必要な資料はDirectXSDKのヘルプのどこかに必ずある。
878846:03/11/08 18:22
>>873
無理と言ったのはあくまで例での話しですよ。
前後の文章からわかると思うのですが…
>そこらの厨も、そうやって検索した程度で調べたつもりになっている
だからどうしてそう表面の意味しか取らないのですか?
「検索」=本当にただGoogleなどで検索しただけなわけないじゃないですか。
SDKをはじめ、BBXログなども調べてますよ。
そうやって小姑の粗探しみたいなことしてて楽しいですか?

>>874
おっしゃるとおりです。
が、俺の最初のレスから読んでいただいてますか?

>>877
ありがとうございます。SDKを重点的に調べてみます。
>>846
はトランプ描きたいだけ?
四角形作って描画するカードに応じた
テクスチャ張ればいいだけじゃないのか?
880846:03/11/08 18:35
>>879
トランプや麻雀牌のように、
裏が同じで表が違うものを書きたいと思っています。
メッシュはxファイルから読み込んでます。
それで表面のみを変えたいのですが>>846のような方法しか思いつかず、
無駄が多そうなので質問しました。
そこで色々な回答をいただきましたが技術不足で色々調べている、といった状況です。
>>880
トランプならxファイルとか言わずに適当に長方形作って、
例えばクイーンの裏を描画したいんならクイーンの裏の
テクスチャを張って長方形を描画するってのじゃダメなの?

……てか漏れの言ってることはほとんど>>850と同じ気がするけど
>SDKをはじめ、BBXログなども調べてますよ。
調べたつもりになっているだけ
SDKのチュートリアルを実践していれば、頂点を作ってテクスチャを貼るくらい出来る
SDKのどこを調べたのか具体的に挙げてみろ
自分が何も調べていないのが分かるはず
883846:03/11/08 19:01
>>881
まだ関数から長方体を作ってテクスチャを張る、というのができないのです。
今やってる解説書では全てxファイルからの読み込みになってまして。
>>882
んー俺の言ったこと理解できてます?
正直ここまでくるとプログラミングのやりすぎで日本語ができないんじゃないかとすら思えます。
あなたが言ってるのはあくまで上級者の立場でしかないんです。
あなたには簡単に思える検索も俺ら初心者には厳しいんです。
「つもり」なんて答えが見つからない限り使える言葉ですし。
そりゃ答えが見つかってないんですから「つもり」と言われればそれまでですよ。
というか頂点を作ってテクスチャを張るくらいはできますよ。
884882:03/11/08 19:11
ん?
>というか頂点を作ってテクスチャを張るくらいはできますよ。
どっちだYO!!
ミス
×882
○881
>>846はテクスチャの貼り付け方じゃなくて、
テクスチャの貼り付けをいかに早くするかということを聞いてるんじゃないのか…?
話が混ぜこせになってよく分からん
普通に描画するトランプの数字で分けたんでいいんじゃね?


switch( ... )
{
case 表:
    pTexture = 表のテクスチャ;
    break;
・・・
}

SetTexture( dwStage, pTexture );
>>883
>まだ関数から長方体を作ってテクスチャを張る、というのができないのです。
>というか頂点を作ってテクスチャを張るくらいはできますよ。
精神障害?
そうか?
関数(おそらくD3DX?)を使って頂点データを作るのと、自分でせこせことメモリ確保して頂点情報作るという違いがあると思うが。
Xファイルを使わずに、動的に頂点情報を設定してテクスチャを
貼ると言うのは、SDK のチュートリアルにある訳だが。
>>846
気持ちはわかるので以下。
846が知っておくことは、ローポリと呼ばれるモデリングスキルに関する内容です。
これは最下層のプログラムになると、頂点に設定するUV座標とはどういうもので、
何のために存在するのか、という事になってくるかな。
データ容量を節約しながらモデル(メッシュ)を作るために必要になります。

メッシュでそれぞれの面に別のテクスチャを指定できるのかは私は知らんのだが、
1枚のグラフィックは裏と表の絵を用意して、UV座標をうまく設定すれば
長方形の裏には裏の部分の絵の表示、表には表用の絵を表示できる。
でもこれだと表(だっけ?トランプの同じ面て)の絵は重複して無駄なので、
1枚のグラフィックに全ての絵を詰め込んでUV座標で使用する箇所を変更できる。

どうしても無理そうだったら裏メッシュと表メッシュを作って、裏メッシュだけを切り替えながら
少し座標をずらして表示するってのもありかと。
つーか上の目線とか、上級者の立場とか、調べていないと決めつけるとか
ガキの理論だって気が付いてないのか?

実際にお前が何をしてようが、分らなくて出来ていないなら事実は調べていないに等しい。
調べる事とは、目的を果たしてこそだろ。
あと、初心者の立場とか上の目線とかも言ってる時点で
プログラムのプの字もする資格は無いというか向いてない。
プログラムでは実行結果を求める通りコーディング出切るか出来ないかしかない。
出来ないのにグダグダ言ってる時点でお終いだよ。

最後に言うと
経験で分る部分と、理論を知っていなと出来ない部分と、考え付かなければ出来ない部分があり
今回は明らかに、理論を知っているかと考え付くか。
上級者とか関係無いし、出来ない分らないと為れば我々が普通で、君が下過ぎるんだよ。
一つ言えることは、ここでグダグダ検索しただの調べただの、
厨と一緒にするなだの言う前に、チュートリアルくらいやれよ。
やはり、どうも和んでいないようだな。

あー、見たとこ>>850できれいさっぱりケリついてますね。あとは自分で考えましょう。
>>850で十分な手がかりにならないようなら、この問題が解決しても
すぐ次の問題に引っかかるだけでしょう。
Include と Lib のパスを設定の最上段に持っていくという指示があるのですが、
Visual Studio .NETの場合どこで設定するのでしょうか?
                  \_    _/ _/
                    \ / /
                      ξ                           
                    Λ⊥Λ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                    ( ´∀`) < 指示があるのですが♪
              ◯    /    /   \________
                \/       |               
                 / // ̄| | |
                 (_)__)(_)_)
指示があるのです
も少し詳しくいうと
http://www.geocities.jp/toru_website/
の開発環境の設定の仕方のところです。DXSDK/INCLUDEとDXSDK/LIBの優先順位上げなきゃ
いけないけどVC++ .NETはどこで設定するのかわかりません
ありがとうございます。
だけど、上のページの5番から
5.次にすぐ下のリスト項目の中にDirectXSDKのインクルードファイルがあるフォルダを追加します。
とありますが、すぐ下にリスト項目が出てこないんですが。
ワレ物使ってる?
使ってないですよ。大学のMSDN AAというライセンスのVS .NETです。
みなさんのはプルダウンメニューの「インクルードファイル」を選ぶと下になんか表示されるんですか?
質問系のスレを根本から否定したい人がいるようですね(・∀・)ニヤニヤ
何か勘違いしているアホがいるが、ここは、
>技術情報交換&雑談するためのスレッド。
雑談です。
おまいらさぁ、プルダウンメニューの「インクルードファイル」を選ぶと下になんにも表示されないよな
雑談したけりゃゲ製作池
雑談が嫌ならこのスレに来るな
DirectXと相性がいいモーション製作ツールって何かいいのあります?
モデリングしかしたことないからおまいら何使ってるか教えてよ
やっぱりMAXにプラグイン買い足すのがいいの?
なんでDrawPrimitiveに四角形リストが無いんだよ
スプライト描画が面倒じゃねーか
>>909
キャラスタがあれば便利だが、何を作るかにもよるが標準機能でもじゅうぶんいける。

>>910
別に大して変わらん
諦めてインデックスバッファ使うしかないよ
Delphiの話で恐縮ですがQDを使ったテクスチャの読み込みにBMP以外を
使うにはどうすればいいですか?
メッシュとテクスチャを受け取ったのですがテクスチャのほうがJPGで困ってます
>>913
別にalphaを使ってなければ、PhotoShopででも開いて拡張子を変換すれば?
>>914
あ、それで大丈夫なのですか
メッシュにファイル名が入っていたのでダメだと思いこんでました
早速やってみます
916845:03/11/10 09:29
>>910
四角形リストって内部的には三角形リストを二つ描いてるの?
917910:03/11/10 16:09
一つの矩形だけならSTRIPやFANでいいんだけど、
一回のDrawPrimiiveで複数の矩形を描画しようとすると、
繋がったらまずいので、TRIANGLELISTで二つ一組で描画するしかない。
でもそれだと一矩形につき六つ頂点が必要になり、
それを回避するためにはDrawIndexedPrimitiveを使わざるを得ない。
→マンドクセ

まあ最適化せず矩形ごとにDrawPrimitiveを呼んでも、充分な速度は出ているんだけどね。
どっちみち複雑なポリゴンを表示させるのであれば、
矩形ポリゴンが使えようが使えまいがDrawIndexedPrimitiveは必須なので、今更面倒だとは思えない。
919デフォルトの名無しさん:03/11/11 03:11
SDKが現在3つDL可能なんですが、最終的にインストールする順番とかあるんですか?

これだけインスコすりゃいいってファイルがあればいいんですけど。
C#、C++ともにサンプルのコンパイルが全く不能・・・・・

インストールすりゃいいってもんじゃないぞ
パスを通せ
>>919
というか、全部インストールすんの?
低い順番にやったらいいんじゃない?
922デフォルトの名無しさん:03/11/11 10:22
成功しました。スマソ
ただC#のDxの空のプロジェクトのコンパイルができねぇでげす。
他の奴は普通に出来てるんですが。△ポリゴン表示とか。

D3DBlank.cs って奴が開くとエラーが出てます。
グラフィックスクラスがどうのこうのと・・・・・

なんど最インスコしてもこれだけは直りません。
検索で出来たプロジェクトファイルのD3DBlank.cs 以外をMediaフォルダに
入れろってのがあるんですが、入れても変わらないです・・・・
グラフィックスクラスってのはどこかで入手できませんか?
923デフォルトの名無しさん:03/11/12 17:28
Dx9で、D3DXFontを使わずにFontを表示したい。
BitmapにしてTextureに読み込むのは出来るんだけど
ファイルを作らずに メモリ内で完結させたい
リソースというのは無しで。
CreateTextureしてGetSurfaceLevelしてGetDCして そこにTextOutしたんだけど
なんか上手く書けてない
なんでだろ〜
アルファ付きが使えないからDirectX9のGetDCは使い物にならない。
素直にDIBに描いた後にLockして変換をかけつつ転送しろ。
>>923
GDI系関数あんまり好きじゃないんだよなぁ俺は…
やっぱGetGlyphOntlineで
「不通」の会社なら、繋がらない。
927デフォルトの名無しさん:03/11/13 10:35
背景スクロールの方法を教えていただけないでしょうか?
変換済みの頂点でしたらtu,tvをいじるだけで簡単に繰り返しができますが、
変換されていないものはどうやったらいいのでしょうか。
よろしくお願いいたします。
>>927
基本的には2Dのマップチップと考え方は一緒。
カメラ固定で背景のオブジェクトを動かす。
オブジェクトの長さにあわせてループさせる。
>>928
ありがとうございます。
と、いっても2Dの時は繰り返し画像をtu,tvいじって繰り返してただけなので
マップチップは使えなかったりしますが(;´Д`)
これから勉強してきます。
未トランスフォームでも、uvを直接いじれるし、
テクスチャ座標をトランスフォームさせることも出来る。
え゛そうなんすか!
逝ってきます…

ありがd
932デフォルトの名無しさん:03/11/14 06:54
>>930
>>927ではないのですが便乗させてもらいます。
未トランスフォームの頂点から面を作るとしたら
struct D3DXTLVERTEX {
float D3DXVECTOR3 Position;
float tu, tv;
} vertex[4];
で普通にトランスフォーム済みと同じようにUV操作すればいいですが、
xファイルからの場合はどうやればよろしいのでしょうか?
Xファイルもメッシュにuvが格納されているから、
好きなように操作すればいい。
934デフォルトの名無しさん:03/11/14 18:33
読み込み後はどこに格納されてますか?
D3DXLoadMeshFromXに始まり、読み込み後のメッシュ情報が格納されている変数は
全部調べたつもりなのですが見つかりません。
なぜかロードできない現象に悩んでるのでソースをさらします。

LPDIRECT3DDEVICE9 d= GGraphics::Get()->GetDevice();
char buf[256];
GetCurrentDirectory(100,buf);
if(FAILED(D3DXCreateTextureFromFileExA(d, filename,0,0,0,0,D3DFMT_UNKNOWN, D3DPOOL_DEFAULT, D3DX_FILTER_NONE ,D3DX_FILTER_NONE,0xFF000000,NULL,NULL,&m_pTexture ) ))
{

}
MSDNによれば、エラーコードは「D3DXERR_INVALIDDATA データが無効である。 」でした。
bufはデバッグでカレントディレクトリを調べるためのものです。
しかしカレントディレクトリにfilenameで指定したファイルがあるにもかかわらず失敗しました。
Direct3Dの初期化には成功しています。
bmpはWindowsペイントで作成した256*256フルカラービットマップです
936935:03/11/14 19:51
すみません。ディレクトリ間違ってました。本当にすみません。
>>934
ID3DXMesh::GetVertexBuffer
しかしD3DXLoadMeshFromXを使っても余計な苦労をするだけだから、
Xファイルくらい自前で読み込むべきだと思うのだが。
その程度も出来ない段階だと、どっちにしろすぐに詰まる。
DirectX8 がインストールされている環境でプログラムを動かすには
DirectX8 用の関数を使わなければならないのでしょうか?
>>937
自前で読み込むと言うのはどういうことでしょうか?
初めて聞きました。
>>938
DirectX7 でも DirectX6 でも Win32 でも Win16 でも DOS の int21 でも良い。
下位互換性があるからバージョン8以下なら大丈夫
>>939
D3DX系の関数の大概は、同じ処理をする物を自分で作れるよ。
算術系は言うに及ばず、
XfileだってHelpにリファレンスがある以上は自分でデータ読み込めるよ。

テキストデータならエディタで
頂点、インデクス、UV、Texture、親子関係、ボーン、アニメーション入ってるなら見れるよ。
で自分で読み込んで普通に描画すればいいじゃん、普通にアニメーションさせればいいじゃん。
>>938
コンパイル、ビルドして動かすのは無理な場合がある。
既にある実行ファイルを起動するのは問題無い。
944939ではない:03/11/15 13:03
>>942
まぢで!?と思って見たらホントだった。
ちょっとやってみるわ。
まずはtigerから
945デフォルトの名無しさん:03/11/17 05:22
質問なのですが、スクリーンの特定位置に(これは状況によって動きます。)
カメラのマトリクスを考慮してモデルを表示したいのですが、
うまくいきませんでした。
↓のプログラムで取得したXYZの値を平行移動に設定して
表示をしているのですが、全然目的とちがった所に表示されてしまいます。
入ってくる値などは確認しましたが、正しかったぽいです。
よろしくお願いします。

void Hoge::S2W( int PosX,int PosY,float PosZ,float *X,float *Y,float *Z )
{
D3DXVECTOR3OutPos;
D3DXVECTOR3 ScrPos( ( float )PosX,( float )PosY,( float )PosZ );
D3DXMATRIX WorldMat;
D3DVIEWPORT9Viewport;
D3DXMatrixIdentity( &WorldMat );
D3DDevice->GetViewport( &Viewport );
D3DXVec3Unproject(&OutPos,
&ScrPos,
&Viewport,
this->GetProjMat(),// D3DXMatrixPerspectiveFovLH()の値
this->GetViewMat(),// D3DXMatrixLookAtLH()の値
&WorldMat );

*X = OutPos.x;
*Y = OutPos.y;
*Z = OutPos.z;
}

入ってくる値を確認して正しかったのなら間違ってないんではないかね

あと、どうでもいいけど戻り値はベクトルのまんまでいいと思うよ
>>945
D3DXの算術処理は使った事ないし、君の言ってる意味も良く分らないが
ワールド行列は単位行列で良いのか?
見た瞬間、違うような気がするが…

自前でやった方がいいんじゃない?
それにしてもD3DVIEWPORT9型って…知らなかった
なんかマイヒットで衝撃の型だ。
>D3DXVECTOR3 ScrPos( ( float )PosX,( float )PosY,( float )PosZ );
トランスフォーム後のオブジェクトのローカル座標を入れる場所に、
トランスフォーム後のワールド座標を入れて何がしたいのか意味不明。
949945:03/11/18 01:42
読み返してみたら意味不明でした。すんません。
簡単にいうとスクリーン座標(0-640,0-480)からワールド座標を求めて、
求めたワールド座標を使い、3D描画をしたいということです。

>946
実装段階ではベクトルにする予定です。ご指摘ありがとうございます。

>947
この関数はスクリーン座標からローカル座標を求めるものなのでワールドを単位にすれば計算結果はワールドに
なるのでそうしました。
>948
入れているのはトランスフォーム後のワールド座標ではないです。スクリーン座標です。
プログラムがわかりづらくて申し訳ありません
950947:03/11/18 02:14
>>945
良く言ってる意味が分らないんだけどさ、
スクリーン座標って事は、描画後の値でZ値が無い(分らない)わけだ。
そこから、ワールド行列も無し(単位行列)で、ワールド座標なんて求まるかい?
(D3DXライブラリ関数がどうのでは無く、数学的にって事)

>ワールドを単位にすれば計算結果はワールドになるのでそうしました。
それは間違ってると思うよ。
今、Help見たけど
D3DXVec3Unproject : ”スクリーン空間からオブジェクト空間にベクトルを射影する。”
でワールド行列の所は[in]ってなってるよ?
明らかにワールド行列を要求されてるよ?
>>950
いや、間違ってるのは多分君の方だ。
945の用途ならワールド行列は単位行列を指定するのが正しいと思うが。
952951:03/11/18 04:47
試しに作ってみたけど、こんな感じでしょ?
ttp://gamdev.org/up/img/149.zip

修正したのはFrameMove()とConfirmDevice()だけ。
ほとんど>>945そのものだから、その関数以外の部分がおかしいのではないかと。
求めた座標から行列を作るところが間違ってるとか、行列を作るだけで
SetTransformし忘れたとか、GetProjMat()やGetViewMat()がおかしいとか。
953945:03/11/18 08:56
>950
ご指摘ありがとうございます。Z軸がないのにどうやって求めるのかは、こちらも
なやみました。ここらへんは私の知識不足です。

>951
サンプルありがとうございます。これから会社なので、今夜、ビルドしてみます
他の3DはでているんでSetTransformの忘れの確立は低いと思います。
とりあえず描画部分も含みで追ってみます。
954!945:03/11/18 09:00
>>952
動かないよー。
はじめはビルドすら通らないよー。
ためしにエラーが出た部分をコメントアウトして実行してみたけど
やっぱり動かないよー。
アクセスバイオレーションでるよー。
955954:03/11/18 09:35
>ためしにエラーが出た部分をコメントアウトして実行してみたけど
>やっぱり動かないよー。
>アクセスバイオレーションでるよー。
すまん。これは勘違い。
エラーが出た部分を消したら動いた。逝ってくる。
956デフォルトの名無しさん:03/11/18 11:52
現在、Direct3Dを勉強中ですが、YUVの画像データを、Direct3Dを用いて出力したいと思っています。
YUVのテクスチャを作成し、そこにYUVデータを書き込み、バックバッファにテクスチャを貼り付けて出力しようと思ったのですが、YUVのテクスチャ作成時にエラーになります。
(D3DFMT_A8R8G8B8のテクスチャしか作成できない)
何かアドバイス頂けないでしょうか?
957デフォルトの名無しさん:03/11/18 11:56
現在カメラからの画像を取り込んでリアルタイムで画像解析をして
いきたいと考えているのですがそういったことはDirect showを使用して
実現できるのでしょうか?
>>956
デバイスがサポートしているかはチェックして、
サポートしているのを当然確認した上での質問だよな?
そろそろ次スレ?
バックサーフェイスと使用するテクスチャのフォーマットってそろえるべきですか?
GeForce2MXだとそろえなくてもパフォーマンスの違いってないみたいなんだけど
他の環境でもそうなのかどうか気になって夜も眠れません
揃えることになんの意味があるのか、小一時間問いつめたい。
最近までDibSection使ってたヘボプログラマなんで
フォーマットが違うと転送に時間がかかるなんていう発想があるのです、

・・・Direct3Dじゃそんなの気にしなくていいってことですか?
963951:03/11/18 21:23
>>954
SDK古いんじゃない?
あれ、DirectX 9.0 SDK Update (Summer 2003)のウィザード使ったんだけど。
無変換でブロック転送しているわけではないのに、
フォーマットを揃えてどういった理由でパフォーマンスが変わると思ったのか、
具体的に説明してみてくれ。
DibSectionだと無変換じゃなくてもやっぱ同一じゃないとパフォーマンス落ちるだろ。
         ☆ チン     マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  Λ_Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
          ヽ ___\(\・∀・) < 次スレまだ〜?
             \_/⊂ ⊂_ )   \_____________
           / ̄ ̄ ̄ ̄ ̄ ̄ /|
        | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
        |  愛媛みかん  |/
同一時て無変換でないの?何を変換してるわけ?
ハードウェアやデバイスドライバによりけりな気が・・・
>>956
D3DFMT_UYVY も D3DFMT_YUY2 もダメならかなり望み薄では?
うちでは
D3DXCreateTexture(pd3dDevice, width, height, 1, 0, D3DFMT_YUY2, D3DPOOL_MANAGED, &pTexture);
てな感じで出来てる (i865G)。

);
970945:03/11/19 01:26
>951
プログラムをダウンして、実行してみました。
まさにこれです。これがやりたかったのです。
これからソースの方をみてこちらのプログラムにくみこんでみます。
ありがとうございます。
971951:03/11/19 05:29
>>970
ウィザードのコードから修正した部分だけインデントがタブになっているから、
それでどこをいじったか調べておくれ。
でも、>>945のコードとやってること全く一緒でがっかりするだけだと思うが。

というわけで、問題があるのは他の場所ではないかと。
DirectX9をインストしてDirectX7でプログラム作成できます?
yattemastu
974デフォルトの名無しさん:03/11/19 22:07
質問させていただきます。
フルスクリーンモードでフルカラー(24bit)リアルタイム動画再生をしていて、
低解像度ではリアルタイム再生が可能ですが、sxgaサイズではスロー再生となってしまいます。
実装方法としては、動画像データはシステムメモリにあらかじめ読み込んでおいて、表示の際にバックサーフェスにbltfastで
ブロック転送して、flipでプライマリサーフェスに切り替えています。原因はbltfastの転送スピードが
関係していると思われるのですが、何か高速化する方法はないのでしょうか?
ちなみにビデオカードはG550で物理的な条件を満たしているはずです。
どうぞよろしくお願いします。
>>974
DirectX 7 のオーバーレイサーフェスを使うのが良いと思います。
D3D が高速ならテクスチャで表示するのもありかもしれません。。。
最近の馬鹿は、テクスチャに転送するまでの負荷を脳内除去するのか。
>>976
だーかーらーそういう書き方は良くないとおもうよ、スレが荒れる原因になる。

「テクスチャに転送するまでの時間は考慮されてますか?」って書いてはどうかなl
・知ったか厨房用語

「最近の○○は〜〜なのか?」
「連邦のモビルスーツは化け物なのか?」
>>977
ある意味イヤミになりそうな気がする。
>>976
ごめんなさい、ちょっと意味がわからないんだけど、
動画側のサイズではなく表示側が sxvga になると低速になるってことだから、
D3D でやるならテクスチャを更新するのにかかる時間は関係ないと思ったんですが。
テクスチャのサイズは動画サイズ固定で単純なポリゴン表示なので fill rate 勝負か、と。

>動画側のサイズではなく表示側が sxvga になると低速になるってことだから、
どこにそのような文面が記載されているのでしょうか?
bltfastのブロック転送の意味はお分かりになりますか?
仮に24FPSで転送したとすると、
1,280×1,024×3×24=90MB/sec
たしかにAGPバスなら論理的な用件は満たしているが、
システムメモリーからの転送で物理的にマシンが追いつくのか?
間に合わなければフレームスキップするしか無いと思うが。
>>982
いや、普通に考えて解像度が SXVGA の動画ってありえないかなー、と。
982 の人は SXVGA の動画を扱っていると考えたわけですか?
>>974
sxvgaにしたときにVRAMは足りてるかな?(まあ普通は足りてるよな・・・)
不足しててバックサーフェースとプライマリが単純なFlip動作できなかったら
表示には転送しなきゃならなくなりそうだけど。
もう一度お尋ねしますが、bltfastのブロック転送の意味はお分かりになりますか?
bltfastで転送元と転送先のブロックサイズを、どのようにして変化させるおつもりですか?
>>985
G550というのはお読みになっていらっしゃいますか?
VRAMが足りなければ確保に失敗するので、嫌でも気が付くとお思いになりませんか?
>>986
たぶん動画サイズは固定なんだろうから、システムメモリにSXVGAサイズのイメージを持って
bltfast/flip なんかしないで、テクスチャかOverlay Surface を使うのが良いんじゃないか、と
思ったわけです。

986 の人はどんな解決策を提案してるんですか?
ところで、974=982=986=987?
ちょっと質問の仕方として興味深いんで。。
>>988
bltfastの他にbltがあるのはご存じでしょうか?
それとテクスチャが使えるレベルのビデオカードなら、bltでハードウェアの拡大処理が行えるのはご存じですか?
わざわざテクスチャに転送することによって、無駄な負荷を増大させることはご理解いただけませんか?
解決方法は既に示した通り>>983なのですが、お読み頂けていないのでしょうか?

>>989
!974
>>990
blt による拡大縮小で(例えば320x480 なり 640x480なりの)動画を SXVGA フルスクリーンに
描画したことありますか?せいぜい GDI の数割増し程度で、たいしたアクセラレーションは効き
ませんよ。また、Blt だと拡大時に biliner filter すらかからないので、見た目的にもかなりアレ
な感じになります(元がジャギー感を生かしたドット絵とかなら別だけど)。

D3D の Texture あるいは DX7 の Overlay surface であれば、それなりに補完してピクセルの
目立たない拡大になります。
いや、Bltの拡大ってバイリニアフィルタがかかるのが普通だが…
以前試したときはRadeon256でシステムメモリサーフェスからのBltの場合は
かからなかったけど、今は知らない。
そんなの普通にしてもらったら迷惑なわけだが
迷惑だけど付いているのがよく問題になっている。
>>991
>GDI の数割増し程度で、
テクスチャに転送してからレンダリングをかけるよりは遙かに早い。
しかもターゲット環境は3Dのパフォーマンスが著しく悪いG550。

>Blt だと拡大時に biliner filter すらかからないので
だれもフィルターの話などしていない。
フィルターがかからないオーバーレイがどうのこうのといっていたのに、
テクスチャの速度の面で問題を指摘されると別の話で話題を逸らそうとする。

この人、勝手に自分に都合のいい条件を設定して、
間違いを決して認めようとしないタイプですな。
そもそもソースが小さいという前提を勝手に決めつけているのが間違っている。
ソースが小さいのであればフルスクリーンの解像度を落とせば済むだけの話だが、
わざわざそうせずに、
>バックサーフェスにbltfastでブロック転送
というのが条件になっている上、ソースのサイズが小さくていいなどどこにも書かれていない。
997 ◆4/ZtI/qiqk :03/11/21 09:44
話の途中で悪いですが、
ちょっと次スレ立ててきますよ。
999 ◆4/ZtI/qiqk :03/11/21 10:14
こっちやっちゅーねん

鬱だ氏のう DirectX (Part 11)
http://pc2.2ch.net/test/read.cgi/tech/1069376986/
1000 ◆4/ZtI/qiqk :03/11/21 10:15
おまけで1000げっちゅ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。