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

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

鬱だ氏のう DirectX (Part 9)

1 :998 ◆oqSJWu4Ch2 :03/06/02 20:31
DirectXについて、お兄ちゃんたちがマターリと
技術情報交換&雑談するためのスレッド。
初心者用相談室では扱わないような少し高度な話題も受け持つ。

ちなみに、言語はC++がメイン。
C# / VB.NET 使いは、専用スレの方が話がスムーズに進むと思われ。

2 :998 ◆oqSJWu4Ch2 :03/06/02 20:33
/** 過去スレ **/
Part 1 http://piza.2ch.net/tech/kako/966/966655286.html (迷子)
Part 2 http://pc2.2ch.net/tech/kako/997/997101556.html
Part 3 http://game.2ch.net/gamedev/kako/1005/10051/1005119775.html (ゲ製作板)
Part 4 http://game.2ch.net/gamedev/kako/1016/10162/1016276254.html (ゲ製作板)
Part 5 http://game.2ch.net/test/read.cgi/gamedev/1027351925/ (ゲ製作板)
Part 6 http://game.2ch.net/test/read.cgi/gamedev/1033920036/ (ゲ製作板)
Part 7 http://pc2.2ch.net/test/read.cgi/gamedev/1039509250/ (ゲ製作板)
Part 8 http://pc2.2ch.net/test/read.cgi/gamedev/1046676308/ (ゲ製作板)

/** 外部 **/
MSのDirectX関連ページ
- DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.asp
- MSDN>DirectX
http://www.microsoft.com/japan/msdn/directx/default.asp

- DirectX Info Lib (デバイス情報のデータベース。すばらしい!)
http://www.netsphere.jp/dxinfo/
- BBX(掲示板)
http://isweb8.infoseek.co.jp/computer/bbx/
- spin
http://spin.s2c.ne.jp/
- 宇治社中改(3D基礎講座)
http://www.cc.rim.or.jp/~devilman/

3 :998 ◆oqSJWu4Ch2 :03/06/02 20:34
/** 関連 **/
- DirectX C# vol.1
http://pc2.2ch.net/test/read.cgi/tech/1040435898/
- vb.NETでやるDirectX
http://pc2.2ch.net/test/read.cgi/tech/1039357620/
- Direct3D
http://pc2.2ch.net/test/read.cgi/tech/1011762546/
- DirectShowと戦うスレ
http://pc2.2ch.net/test/read.cgi/tech/1026666092/
- OpenGL VS Direct3D
http://pc2.2ch.net/test/read.cgi/tech/1044308707/

- C++相談室 part19
http://pc2.2ch.net/test/read.cgi/tech/1052625846/
- ★初心者にVisual C++を教えるスレ★ Part6
http://pc2.2ch.net/test/read.cgi/tech/1052931903/
- Win32API 質問箱 Build11
http://pc2.2ch.net/test/read.cgi/tech/1052651750/


4 :デフォルトの名無しさん:03/06/02 20:34
スレタイ見て鬱になった

5 :デフォルトの名無しさん:03/06/02 20:39
以後放置

6 :デフォルトの名無しさん:03/06/02 21:35
>1オツ
1000ワラタ

7 :デフォルトの名無しさん:03/06/02 22:11
厨房隔離板から出てくんなよ……

8 :デフォルトの名無しさん:03/06/02 22:13
キター

9 :デフォルトの名無しさん:03/06/02 22:14
板違い
ゲ制作技術
http://pc2.2ch.net/gamedev/

10 :デフォルトの名無しさん:03/06/02 22:53
煽りに負けずマターリ逝きましょう

11 :デフォルトの名無しさん:03/06/03 00:14
おつ〜

12 :デフォルトの名無しさん:03/06/03 07:44
>>9
こっちへ誘導しろよ。

鬱だ氏のう DirectX (ゲ製作技術避難所)
http://bbs.gamdev.org/test/read.cgi/gamedev/1054109966/


13 :デフォルトの名無しさん:03/06/03 11:27
>>1
おつかれ、なんかこっちでやるのは懐かしい気すら

14 :デフォルトの名無しさん:03/06/03 12:58
DirectXはゲームだけが目的ではないので、特に板違いではないよ。他にもスレあるしね。
まあ、ゲ製板避難所のスレと平行してやってくってことで。

15 :工房って高校生?:03/06/04 02:52
じゃ、一発目の質問です。
サンプルやヘルプ、WinAPIバイブルと格闘して初期化して何も描画しないプログラム
(Tutorialの01と同じ結果になる物)を組んで見ました。
一応、Libryにしたいので処理を分けて組みました。
VC++6.0 DirectX9 Win2000環境です。
一瞬上手く行ってる見たい何ですが、テストアプリケーションを落すと
Clearメソッドで例外ハンドルを指してデバッグモードになってしまいます。
これってアプリケーション実行中はINVALIDCALLを返してないので
開放時の問題でしょうか?
悩む事三日目の悩める高校生です。どなたか助けて下さい。

16 :デフォルトの名無しさん:03/06/04 07:19
VC6あるのならデバッガでおいかければ?

17 :デフォルトの名無しさん:03/06/04 15:31
>>15
どこにどう処理をわけたのかわかんなきゃ答えようがない質問だと思うんだが。

18 :デフォルトの名無しさん:03/06/04 18:28
>>一応、Libryにしたいので処理を分けて組みました。
ここら辺りがよくわかりませんな。

19 :工房って高校生?:03/06/05 01:40
すみません。
処理を分けたってのは、初期化してグラボの性能みてデバイス制作部分(関数単位)
とClearだけ実装した関数、Presentだけ実装した関数、Windouwsの処理部分
各オブジェクトをReleaseする部分と分けたのです。
つまり、ソースファイルなりLibなりをプロジェクトに組み込めば
関数単位で呼び出してアプリを構築出来る様にしたいのです。
で、Clear部分は、Libraryのglobal領域にZバッファやステンシルを使用したかの
フラグがありそれを見て適応したクリアーを呼び出してるのです。
引き数にXRGBの型を渡せるようにしてあり、任意のカラーでクリアできます。

20 :デフォルトの名無しさん:03/06/05 09:05
初期化し忘れだったら笑うなw

21 :デフォルトの名無しさん:03/06/05 10:31
俺のおすすめは、処理を分ける云々はひとまず置いといて、まず
六つのチュートリアルをすべてやってみたほうがいいと思うけど。(すでにやってたらスマン)

>>アプリを終了させると、、、
WM_DESTROYメッセージでどんな処理をしてるの?
g_pd3dDevice->Clear(...); はどこで処理してます?

22 :デフォルトの名無しさん:03/06/05 16:13
スコープの問題に一票

23 :デフォルトの名無しさん:03/06/05 20:39
ライブラリに分けるのは相当うまく設計していない限りお勧めはできないな

24 :デフォルトの名無しさん:03/06/05 20:44
分けるのは当たり前として、分ける理由が個別のグローバル領域確保という時点で、
うまく設計されている可能性はゼロ

25 :デフォルトの名無しさん:03/06/05 20:59
ソース出せ、といいたい……
安心しろ、誰もパクらんからw

26 :デフォルトの名無しさん:03/06/06 02:11
DirectX用のライブラリがいくつかあるみたいだけど、
どれが出来が良いのかな?この板(スレ?)的にお勧めが
あったら教えてください。

27 :工房って高校生?:03/06/06 02:14
皆さん解決しました。
親身な問い、辛口問い、でしたが一人で詰まっていたら解決しなかったです。
ちなみに、問題は設計でした。
Windowsのメッセージ処理で各オブジェクトを開放したあとも
一回だけClear,begin,end,presentが回ってしまい
Clearの呼び出し前に!NULLの条件を付けたら問題はなくなりました。
勿論、beginやpresentにも付けてなかったです。
精進が足りないみたいです。
ちなみにVCはもっと精進が足りません、MFCはチンプンカンプンで
デバッカで変数の値やアドレス追う程度しか使えません。

28 :デフォルトの名無しさん:03/06/06 03:24
>>26
よほど高度な機能があってサポートが期待できない限り、
(ぶっちゃけ市販のゲームエンジンほどに)
DirectXを生で使うのが一番いいんじゃないかと愚考します。

29 :デフォルトの名無しさん:03/06/06 09:06
>>28
同意。
質問文からはどの程度の機能があればいいのかもサッパリわからんしね。

そこそこいいんじゃないか、と思うのがLuna。
ttp://www.twin-tail.jp/

30 :デフォルトの名無しさん:03/06/06 13:36
今のDirect3Dは下手にライブラリ化する必要が無いくらいに使いやすいと思う。

31 :デフォルトの名無しさん:03/06/06 13:55
ライブラリ化はするだろう
ただしそれは自分が使うために機能をまとめることであって、
それをわざわざ他人にしてもらう必要性がないということ

32 :デフォルトの名無しさん:03/06/06 16:44
Wizardが吐いたコードをそのまま使うヘタレですが、何か?
さすがにシーンクラスは作るけど……。

33 :デフォルトの名無しさん:03/06/06 17:33
そら正道や思うでー。

CD3DApplicationに不満を覚えて自分でフレームワーク作ったけど、頭痛いトラブル続出で、
ほぼ安定した今でも素直にCD3DApplication使ったほうが苦労がなくて済むんちゃうかと
揺れてる今日この頃。

34 :26:03/06/07 03:29
みなさんありがとうございます。
生で使うのは難しくはないでしょうか?
というか知り合いにそういう風に脅されてまして。

C言語は一通り勉強してて、UNIX上で小さなゲームやら
システムやら開発したことはありますが、Windowsプログラミング
に関しては素人で、DirectXもまだ扱ったことがありません。
いずれは自力でDirectXのコードを書く予定なので、それくらいなら
はじめから自分で勉強して自力で記述した方が良いんですかね?

35 :26:03/06/07 03:35
29さん、Luna見てみようと思います。
ありがとうございます。

どの程度の機能というのも難しいですが、
ある程度汎用的で、将来自力でやることを踏まえて
良い勉強になるようなライブラリが良いですね。
って要求多すぎっすか?すんません・・・。

最近のDirectXは使いやすいのでしょうか?9.0とか。
あと、皆さんははじめはどのように勉強しました?
マイクロソフトのドキュメントをゴリゴリ読んでいった
んでしょうか?それとも書籍やネットで勉強したんでしょうか?
参考までに教えてくださると嬉しいです。


36 :デフォルトの名無しさん:03/06/07 06:16
>>26
俺simpleXっていうライブラリ使ってるんだけど
超初心者の俺でもめっちゃつかいやすいよ
あんたもつかってみ

http://www.geocities.co.jp/SiliconValley-SanJose/8134/

37 :_:03/06/07 06:20
http://homepage.mac.com/hiroyuki43/jaz09.html

38 :デフォルトの名無しさん:03/06/07 06:23
26さんがどういう層のライブラリを欲しいのか分からない…

本はI/OのDirectX8実践プログラミングがある。周りで評判が良いので買った。
この本は大まかな指針を提示してくれるので、DirectX入門にはよいと思う。
でもDXSDKのヘルプやサンプルが最高の教科書。後はネット上のサンプルなど。

もし3Dデビューしたいのなら、Direct3Dを叩いて勉強するのが一番だよ。
3Dやってく上での問題はAPIの形式じゃないから。

39 :デフォルトの名無しさん:03/06/07 09:47
>>Windowsプログラミングに関しては素人で、DirectXもまだ扱ったことがありません。

ということでしたら、まずはWindowsプログラミングに慣れることから
初めてはいかがでしょうか。
私もはじめてWindowsのコードを見たときは難しそうだなと思いましたが、
Petzoldを読み始めてからは、意外と簡単に感じるようになりました。
DirectXに関しては公式の日本語ヘルプで十分だと思います。しかし、
このヘルプのコードを理解するには、Windowsプログラミングの知識が必須です。

40 :26:03/06/07 19:38
確かに、ヘルプを少し読んでみましたが良く分かりませんでした。
Windowsプログラミングの知識が必須ですか・・・、
頑張って勉強しようと思います。38さんの仰る本も
今度見てみようと思います。勉強しなければいけないことが
たくさんあるなぁ。早くみなさんの会話についていけるように
頑張りたいです。

41 :デフォルトの名無しさん:03/06/07 19:48
もしWindowsプログラミングの参考書を買おうと思っているなら、これがおすすめです。
http://www.ascii.co.jp/pb/msp/36001/36001.htm


42 :26:03/06/08 01:42
>>41
わお、わざわざありがとうございます。このスレの
人たちはホント親切で感動しますた!
個人的にはあの有名な猫でも〜のサイトでも読むか、あの人の
書いた本でも買ってみようかと思ったんだけど、41のがいいっすか?
買ってみようかな。それにしても高い・・・。なんでこんなプログラミング
関係の本とかアホみたいに高いんだろう・・・。書籍もアカデミック版
とか出してくれ・・。

43 :デフォルトの名無しさん:03/06/08 02:07
図書館に頼むのが吉

44 :デフォルトの名無しさん:03/06/08 02:16
Petzold本は一家に一冊あって損はないと思う。

45 :デフォルトの名無しさん:03/06/08 18:26
ちと、お聞きしたいのだが、

Windows Media Player 9 で、avi ファイルとか再生して、
そのあと更に別のファイルを見ようと、ファイルを Media Player 9 に投げると、
必ずといっていいほど、"ASSERT Failed" というダイアログが出てくる。
DirectShow あたりのソースコードでアサートに引っかかってるみたいなんだけど……
(ちなみに、Media Player 6.4 での再生だと出てこない。)

更に、MIDIシーケンサの「Sonar 2.1」で、VSTプラグイン等を設定しようとすると、
やっぱり似たような アサートダイアログが出てくる。
正直鬱陶しい。


DirectX コンパネでの、デバッグ出力レベルをすべて Less にしても出てくるし、
Retail 版のランタイムを使用する設定にしても出てくる……

……これって、どうにかならんのですかね?

46 :26:03/06/08 19:40
大学の図書館でPetzold本を検索してみたら、
一応あったが・・、1989年出版って・・、初版かいな!
ある意味貴重かもしれないけど。
>>43
図書館に頼んだら入れてくれますかね?

47 :デフォルトの名無しさん:03/06/08 20:22
>>46
図書館によると思われ

>>45
解決方法知らないから力になれんが、こっちも参考に見てみるといいかも。
ttp://pc2.2ch.net/test/read.cgi/win/1053402028/l50
ttp://www.experts-exchange.com/Networking/Broadband/DSL_Cable/Q_20294228.html

48 :26:03/06/09 17:09
このスレでみんな絶賛するから、とうとう買っちまったよ。
petzold。高かった・・・。まぁ先行投資だと思って頑張ろう。
DirectXへの道のりは遠いのであった・・・。

スレ違いスマソ。

49 :デフォルトの名無しさん:03/06/09 19:00
みごとに騙されて増すな

50 :デフォルトの名無しさん:03/06/09 19:01
みてね〜♪
http://www1.free-city.net/home/s-rf9/page002.html

51 :工房って高校生?:03/06/10 03:23
書き込みが多くてすみません。またまた質問です。
8.xの頃のFVFは使い方は分るのですが、VERTEXELEMENT構造体についてです。
頂点データの構造体を宣言して、一つの構造体で座標や法線やUVなどを扱う場合に
VERTEXELEMENT構造体に値をセットする方法は、ストリームを0指定、offsetでストリームを区切ってくと
考えて宜しいのでしょうか?

またその場合(データタイプの宣言時)、実際の頂点バッファサイズ(頂点数)はコーディングするまで未定ですね?
つまりFVF時代は出来た、良く使う宣言をヘッダーに宣言しておいて使うってような感覚で
良く使う組み合わせのVERTEXELEMENT構造体を予め宣言しておくって出来ませんよね?
(offsetが未定の為)

どなたか御講義お願いします。HELPだと上記の理解が精一杯です。

52 :デフォルトの名無しさん:03/06/10 11:15
前者はそう。

後者はできる。実体をどこかのcppで定義してヘッダでexternなど。
でもそんなことをする必要があるかどうかは疑問。
毎回シェーダにあわせて専用の形式を作ればいいんでは?

53 :デフォルトの名無しさん:03/06/10 18:11
>>49
全然

54 :デフォルトの名無しさん:03/06/10 23:25
DX9を使ってますが、
スキンメッシュ作成のサンプルってどこかにないですかね。
Xファイルから読み込むやつじゃなくて、
メッシュを新規にスキンメッシュ化する方法で。

ID3DXSkinInfoがうまく動いてくれないんだよ。

55 :デフォルトの名無しさん:03/06/11 04:34
メッシュのデータと別にボーンのデータを持っておいて、
自力で頂点の重み付けをしたい、ってこと?
そんなのはLightWaveとかに任せちゃえばいいと思うんだが。

ていうか、D3DXで出来ないことを実装したいのならともかく、何か不満があるの?
基本的なことは大体出来る気がするんだがなあ。

56 :動画2音声:03/06/11 14:44
DirectXの初心者です。
さっそく質問ですが、
DirectShowサンプルとして提供されている
WavDestというフィルタを拾ってきました。
そして、「REGSVR32.EXE wavdest.ax」でフィルタ
の登録もでき、GraphEditで使用できるようになりました。
そこで、CLSIDを定義してプログラム上からフィルタグラフ
マネージャを利用してWavDestフィルタを呼び出したい
のですが、なにをどうしていいかわかりません。
初歩的な質問でもうしわけないですが、
ご教授おねがいします。

57 :デフォルトの名無しさん:03/06/11 15:15
SHLSLHSHLSHHHSHSLLLHHHSLHSLHSLSHHHLSHLHSLHSLHLHHHLSLHSLHS

58 :デフォルトの名無しさん:03/06/11 22:49
なんでアセンブラのニーモニックのSHLを連呼してるのかと思ったがHLSLのことか

59 :デフォルトの名無しさん:03/06/11 23:12
  ∧⊂ヽ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (゚Д゚)ノ <  シェーダ
  | ⊃|   \__________
  |  |
  ⊂ノ〜
  ∪


60 :デフォルトの名無しさん:03/06/12 12:46
d3dx9d.dllを自作ゲームと一緒に配布したらまずいかな?
名前を変えればバレないかな?


VC++を買う踏ん切りがつかん、、、

61 :デフォルトの名無しさん:03/06/12 14:45
>>60
再配布パッケージを使いなよ

62 :デフォルトの名無しさん:03/06/12 15:35
デバッグ環境のDLLって再配布パッケージに入ってたっけ?
っていうか、なぜデバッグ環境のを配布せにゃならんのだろう。

63 :デフォルトの名無しさん:03/06/12 17:02
>>59
不覚にもワラタ

64 :デフォルトの名無しさん:03/06/12 22:49
directxを始めたばかりの初心者です。
directx9 sdkについているdirect graphicsのsampleを
実行すると一瞬だけウインドウが表示されてその後消えてしまいます。
何が原因なのかさっぱりわからずに困っています。
誰か教えてもらえないでしょうか?


65 :デフォルトの名無しさん:03/06/12 23:00
自分でコンパイルしてデバッグ環境でどこで落ちてるのか調べてみては?
そのくらいの情報量じゃ、当人でない人から見たらお手上げだよ。

66 :デフォルトの名無しさん:03/06/13 09:26
>>64
65に同意。
ただ「消えます」って言われてもねぇ。

67 :デフォルトの名無しさん:03/06/13 10:59
DirectX9でポイントのサイズを変えて描画しようとして、
DWORD m_Pointsize = 4;
hr = m_pd3dDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT)
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(DWORD*)&m_Pointsize);
として描画しようとすると、描画時に
Direct3D9: (INFO) :Result of drawing primitives with D3DFILL_POINT fill mode
and point size not equal 1.0f could be different on different devices
と出ます。
REFの場合、正しく描画されますが、HALの場合は1ポイントで頂点が描画されます。
HAL時にD3DCAPS9.MaxPointSizeを調べ、64でしたので、HALの制限ではないと思います。
「ポイントサイズが1じゃないと、他のデバイス上で描画結果が異なるかも」
というのは分かったので、この情報がもうでないようにする方法と、
HALで正しく表示させる方法に、心当たりがあれば教えてください。

68 :デフォルトの名無しさん:03/06/13 13:19
>>67
DWORD じゃなく float でサイズ指定しないとまずいのでは?


69 :67:03/06/13 14:04
試しに、
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(FLOAT*)&m_Pointsize);
と、やってみましたが、だめでした。

また、ヘルプに
「Direct3DDevice9::SetRenderState メソッドは DWORD 値を使うため、
次のコードに示すように、アプリケーションでは値を格納した変数を
キャストしなければならない。
pDevice9->SetRenderState(D3DRS_POINTSIZE, *((DWORD*)&PointSize));」
と書いてるので、ここが原因ではないと思います。

70 :デフォルトの名無しさん:03/06/13 15:28
>>67
D3DFVF_PSIZE あたりが臭いような。
何の根拠もないけど……w

71 :54:03/06/13 15:34
>>55
いや、Mikotoもどきを作ろうとしているんだよ。
それに動的なボーンの追加、変更とかをやりたいんだ。

LightWaveは高いって。
MikotoがXファイルに出力してくれれはいいんだが。

72 :デフォルトの名無しさん:03/06/13 15:58
>>69
SetRenderStateのプロトタイプの型がDWORDだからfloatで直接渡せないので
型を騙してコンパイルを通すようにしているだけ
float値が必要なのにDWORDの値を送ったら正常に動かないのは当たり前
少しは考えろ

73 :デフォルトの名無しさん:03/06/13 16:08
>>67
んー、それは要するにハードウェアが対応してないってことでは?(w
MAXPOINTSIZEって、もしかするとポイントスプライトの時専用だったりするとか、
そういうことはないかね。

>>68
そのままだとDWORDに暗黙変換されるから、ああやってメモリイメージ渡すのよ。

>>71
自力で頂点重み付けをしたいと。。。
ぶっちゃけその辺のサンプルは見たことがないっす。
しらみつぶしに頂点に最も近いボーンに関連付けさせるしかないんでは…
もちろん、二つのボーンに影響しそうな部分は適当にブレンドして。
Gemsにスキニングの話があったような気がしないでもないなぁ…。

74 :デフォルトの名無しさん:03/06/13 16:09
>>72
いや、だから本人はそうやっていたんでは?
68が言ってるからわざわざ試しただけで。

75 :デフォルトの名無しさん:03/06/13 16:11
なんか最近あちこちで句点が使えない攻撃的なヤツを見かけるが、気のせいか。

76 :デフォルトの名無しさん:03/06/13 16:24
>>74
書いてあることを考えようともしていないだろう
それとも説明されても分からないほど馬鹿なのか?
floatの構造を持つデータをDWORD型と騙してプロトタイプを回避するように、
ヘルプにも書いてあるだろ

>>68が言っていることを試したって、やっていることを全然はき違えている
>>67の段階で
>DWORD m_Pointsize = 4;
何故この程度の間違いに気が付かない?

77 :69:03/06/13 16:24
一応、
floatm_Pointsize;
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(DWORD*)&m_Pointsize);

floatm_Pointsize;
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(float*)&m_Pointsize);

DWORDm_Pointsize;
hr = m_pd3dDevice->SetRenderState( D3DRS_POINTSIZE, *(DWORD*)&m_Pointsize);
は試しました。
だめだったけど。

78 :デフォルトの名無しさん:03/06/13 16:57
DirectX9のDirect3Dで2Dアプリケーションを作ろうとしています。
FAQのような気がしますが、答えを見つけられなかったので質問させて下さい。

画面サイズは640x480を考えています。

以前は、テクスチャサイズが2のn乗でなければならないという制限があったと
思うのですけれど、試してみたところ640x480のテクスチャでも表示できてい
ます。(DrawPrimitiveでテクスチャを描画しています。)

DirectXが新しくなって、テクスチャのサイズの制限がなくなったのではと少
し期待しているのですが、これは、たまたま私のビデオカードで表示できてい
るだけで、ビデオカードによっては表示されない場合があるのでしょうか?

以前のDirectXのマニュアルには「テクスチャサイズは2のn乗にしろ」という
ような記述があったような気がするのですが、DirectX9のマニュアルでは見つ
けられません。


79 :68:03/06/13 16:58
>>77
正しいのは一番上のやつです。
>DWORD m_Pointsize = 4;
だけ見て書き込んじゃったけど
エラーメッセージ見てみたら D3DFILL_POINT がまずいんじゃない?
D3DFILL_SOLID でやってみるといいかも。


80 :デフォルトの名無しさん:03/06/13 17:01
68が指摘してたのは変数宣言のほうだったのな。
申し訳ないが適当にソースを読んでたのが悪かった。
だからってなんでそーいう攻撃的な発言するんだ。
正しいこと言っててもそれじゃ敵を作るだけだ。

>>77
floatで宣言した変数をDWORDに代入すると暗黙の変換が起こるだろ?
ソレを避けるためにFLOATのメモリイメージを77の一番上の方法で渡すの。

>>78
nVidiaの一部のドライバが2^nじゃないテクスチャにも対応していたらしい。
やっぱり2^n制限はあるから2^nで作るとよいです。

81 :デフォルトの名無しさん:03/06/13 18:28
>>76は、なぜそんなに必死なんだ。



会社や学校で嫌われていないかい?

82 :デフォルトの名無しさん:03/06/13 19:49
>>78
D3DPTEXTURECAPS_NONPOW2CONDITIONALでヘルプを検索。

83 :デフォルトの名無しさん:03/06/13 21:00
>>75
2ch中毒、疑心暗鬼
>>81
不毛

84 :デフォルトの名無しさん:03/06/13 22:21
香ばしい人がいるな

85 :78:03/06/13 22:32
>>80
>>82

ありがとうございました。モヤモヤしていたのがクリアになりました。

うちは、ATI RADEON9000なのですが、DirectX Caps Viewerで見ると、
確かに D3DPTEXTURECAPS_NONPOW2CONDITIONAL がついていました。

やはりテクスチャを分割して組み合わせないといけないということですね。こ
ういう場合、皆さんはあらかじめグラフィックファイルを256x256などに分割
したりしているのでしょうか?それとも、ファイルを読み込んでから、分割し
てテクスチャにコピーしているのでしょうか?

D3DXCreateTexture系の関数で手抜きをするとなると、後者は難しそうですね。
この辺をうまくラップしてくれるようなスプライトライブラリは公開されてい
ないですかねぇ。なければ自分で作るしかないですが。


86 :デフォルトの名無しさん:03/06/14 01:47
D3DXCreateTextureは拡大させずにピクセルをそのまま読み込めるはず。
拡大フィルタだったかなんだったか忘れたが、その辺の設定をするべし。

分割して組み合わせってのは、テクスチャメモリを効率よくさせたいということかね?
それは普通はめんどくさいから、画面サイズより大きなテクスチャを確保する。
例えば640*480の画面に一枚絵を張りたいなら1024*512のテクスチャを用意。
流石に256*256が限界なVGAは無視してもかまわんと思う。
そのようなVGAはちょっと古すぎだし、3Dのサポートもままならん。

87 :78:03/06/14 06:01
>>86
D3DCreateTexture*Ex()で、Width,Heightを1024,512にして、Filterを
D3DX_FILTER_NONEにして、テクスチャ座標を
(0., 0.)-(640./1024., 480./512)にして期待通りに動きました。

これでずいぶん楽になります。
あとで、他のビデオカードでもうまくいくか、試してみます。

テクスチャ座標の誤差が出て、ピクセルが欠けたりしないかちょっと心配して
しまいますが、3DのAPIっていうのはこういうものなのでしょうね。

基本的な質問に、重ね重ねありがとうございました。


88 :86:03/06/14 09:50
ああ、テクスチャ座標とピクセル座標の関係だが、ヘルプに出ているよ。
ピクセルは点のように思えがちだが、面積を持つ正方形ということらしい。
だから640*480の画面のスクリーン座標は(-0.5,-0.5)-(639.5,639.5)になる。

89 :86:03/06/14 09:58
ぶっ
(-0.5,-0.5)-(639.5,479.5)だぜ
鬱死

90 :デフォルトの名無しさん:03/06/14 10:32
(・∀・)イイヨーイイヨー

91 :デフォルトの名無しさん:03/06/14 10:41
n/1024とかn/512とかは浮動小数では有限小数になるので、
あとはグラフィックプロセッサがどうラスタライズしてるかですな。

>>89のようにちゃんと座標合わせてフィルタ切っておけば
まず100%正確な描画は保証されると思う。
バイリニアでもたしか各ピクセル±1〜2くらい誤差が出たと思ったけど、
見た目で分かるほどではない。

92 :デフォルトの名無しさん:03/06/16 03:14
DirectX Texture Toolを使おうとしたら
「This program uses the reference rendering device.
Your computer has a reduced-functionality reference device installed.
You can still use this program to manipulate textures, but the textures will not be visible in this program.
Install the DirectX SDK to install the reference device.」
というコメントが出ます。翻訳したところ、
「テメーの状態では全ての機能が使えない。SDK入れろ」と言われているようです。
DirectXSDK8.1bを入れているのですが、まだ何か足りないのでしょうか?

93 :デフォルトの名無しさん:03/06/16 04:30
いままで OpenGL でプログラムを書いていましたが、DirectX9も勉強してみたくなり、
OpenGLのプログラムをDirectX9に移植しています。

作業はおおむね順調で、大部分はすんなり移植できたのですが、
2つほど問題にぶつかってしまいました。

1. DrawPrimitiveで D3DPT_LINESTRIP をかくときに、 線種/線幅は
どうやって指定するのでしょうか? 線種に関しては、DirectXのヘッダをのぞくと
D3DLINEPATTERN なんてのがあってそれっぽいことができそうなのですが・・・
線幅はまったく情報がつかめませんでした。

2. テクスチャに関しても DrawPrimitiveUP のように メインメモリのデータを
直接テクスチャとして貼り付けることはできないのでしょうか?
現在は pTex->GetSurfaceLevel()で取り出したサーフェスに対して
D3DXLoadSurfaceFromMemory() を呼び出していますが、
OpenGLに比べてだいぶ遅くなってしまいました。
(OpenGLで glBindTextureを毎回呼び出したときぐらい遅い)

開発環境は VC++です。以上、よろしかったらご教授お願いいたしますです。


94 :デフォルトの名無しさん:03/06/16 07:47
1→ID3DXLineでヘルプを検索。

2→CreateTextureでD3DUSAGE_DYNAMICを指定すると、動的テクスチャを作ることができます。
ただ、D3DPOOL_DEFAULTなんかと一緒に指定しなきゃいけなかったり制約があるので、
その辺はヘルプを参考にしてくらはい。

95 :デフォルトの名無しさん:03/06/16 07:47
>>91
ピクセルが欠けたりはしないけど、色が微妙に変わってしまうことがあるから
100%正確ではないな。32bitカラーでRGB値が1小さくなったりする。(GeForce)

>>93
Direct3Dでは線種/線幅の変更は不可能。
線種はテクスチャで、線幅はポリゴン化して自分で処理する必要有り。
DX9ならID3DXLineがやってくれるから、そっちを利用するのがいいかと。

それと、メインメモリのデータをテクスチャとして貼ることもできない。
必要なら毎回転送しないと駄目。
D3DXLoadSurfaceFromMemoryはピクセルフォーマットの変換をしながら
1ピクセルずつCPUが更新していくから、フォーマットの変換がいらない
場合はUpdateTextureかUpdateSurfaceで転送した方がいい。
(メインメモリ側のバッファもTextureやSurfaceにする必要有り)
頻繁に更新するテクスチャはD3DUSAGE_DYNAMICを指定するのも忘れずに。

96 :93:03/06/17 01:54
情報ありがとうございます。おかげさまで助かりました。

まだ触り始めて1週間ぐらいの感想ですが、
OpenGL も DirectX も一長一短がありますね。
でも、DirectX の方がローレベルなところまで細かく制御できて
面白いです。

ちなみに、その他のOpenGLオンリーの便利機能は
・セレクション/フィードバック
・ディスプレイリスト
あたりかと思ってますが、あってますかね?(DirectXにももしかしたらあります?)
本当にセレクションがないとしたらちょっと残念。


97 :デフォルトの名無しさん:03/06/17 07:41
昔のDirect3Dには似たような物はあったが、今は自分で実装しろって
ことになってる。

98 :デフォルトの名無しさん:03/06/18 01:50
最近のDirectX9とかは昔に比べると鬱ではないですか?

99 :デフォルトの名無しさん:03/06/18 02:02
DirectX8以降のDirectX Graphicsはいいね。

100 :工房って高校生?:03/06/18 04:43
昔かどうかは分りませんが、手元にある3Dグラフィックスの本にある
3Dモデルを空間内で座標変換しビュウ画面にスキャンラスタライズして描画する部分の説明を読んでると
座標変換やシェーディングしたojbectのピクセル単位の描画などは、
とても簡単に実装できるようになってると思います。

DirectDrawとの比較は分りません。8.1からのヒヨッコ世代ですので。


101 :デフォルトの名無しさん:03/06/19 01:05
DirectXのビルド番号とバージョン番号の対応表みたいなの
持ってる人とかURL知ってる人とかいたら教えてくれませんか?
おながいします。

102 :デフォルトの名無しさん:03/06/19 01:25
>>99
俺は7までしか使ったことないけどそんなにいいの?
簡単になったとか?


103 :デフォルトの名無しさん:03/06/19 07:30
俺は別によくなったとは思わないがな。
かゆいところに手が届かなくなって、大雑把になってしまった。
例えばプライマリサーフェスに直接描画なんてできなくなった。
初期化関係はCheck系のメソッドが出来たおかげで、ある程度限定した
用途ならEnum系を使わなくても済むようになって楽にはなったけど。
でも、初期化なんて1回書いたら終わりだし。

104 :デフォルトの名無しさん:03/06/19 11:46
>例えばプライマリサーフェスに直接描画なんてできなくなった。
7以前でもバックバッファに書くものだと思うんだけど、何故プライマリ?

105 :デフォルトの名無しさん:03/06/19 18:15
キャラクタに表情をつけるには、表情のモデルデータを表情の種類だけいくつか作って普通にブレンドすればいいんですか?

106 :デフォルトの名無しさん:03/06/19 18:20
工房頑張れ。
俺も工房だが。

107 :デフォルトの名無しさん:03/06/19 23:25
>>104
たまにはプライマリに描画したくなることもあるんだよ。
普通に必要だったら、使えなくなってたらかゆいところどころの話じゃない。

108 :デフォルトの名無しさん:03/06/20 00:20
次期WindowsではGUIからすべてがバックバッファに描画されるというのに、
いつまでフロントバッファ直描きにこだわってますか。

109 :デフォルトの名無しさん:03/06/20 01:32
たんに一例として出しただけで、こだわってるわけじゃないけど?

110 :デフォルトの名無しさん:03/06/20 05:16
プライマリって・・・。
使わないものを比較に出されても困る・・

111 :デフォルトの名無しさん:03/06/20 13:40
ぶっちゃけ、必要ないじゃん。ねえ?

112 :デフォルトの名無しさん:03/06/20 17:01
時代はオールバックに向かっているんだよ。
ポマードはたっぷりつけるんだ。

113 :デフォルトの名無しさん:03/06/21 05:27
DirectX8で質問です。
マルチテクスチャに対応していないビデオカードで
マルチテクスチャを表示しようとすると、
動かない、表示しない、のどちらになるんでしょうか?
SetVertexShaderの時点で止まりますか?

114 :デフォルトの名無しさん:03/06/21 07:46
どうなるのか自分で試してみたら?

115 :デフォルトの名無しさん:03/06/21 09:48
表示しない

116 :デフォルトの名無しさん:03/06/22 04:35
DirectX8で、今までテクスチャの読み込みにD3DX使っていたんですが、
自前でやろうとした所、LockRectがどうしても失敗してしまいます。

POOL_DEFAULTは駄目だそうなので、POOL_MANAGEDにもしました。

何か心当たりのある方いらっしゃいますでしょか。

117 :デフォルトの名無しさん:03/06/22 05:10
DirectX8、DirectShowを使ってMP3を鳴らしているのですが、
一度でも音を鳴らした後に終了すると以下のエラーがでます。
(無音のまま終わらせるとでない)

ASSERT Failed

g_cFGObject == 0
At line 5868 of d:builds\nt32_chk\multimedia\dshow\filters\core\filgraph\filgraph\filgraph.cpp

このg_cFGObject == 0って何でしょうか?



118 :デフォルトの名無しさん:03/06/22 07:58
ソース見たら?

119 :デフォルトの名無しさん:03/06/22 12:21
>>118
初歩的な質問かもしれませんが、
DirectShowのソースってどうやって見るのでしょうか?
(libの中のソース?)

120 :デフォルトの名無しさん:03/06/22 16:43
FGObject・・・filgraphObjectじゃないの?
それが0ということは作成されてないとか?
あるいはオブジェクトが削除されたということか?

121 :デフォルトの名無しさん:03/06/22 21:36
>>120
分かりました。
どうもCoCreateInstanceを2度やっていたのがまずかったようです。
空のIGraphBuilderが生成されちゃってたという事でしょうか。
お騒がせしました。

122 :デフォルトの名無しさん:03/06/23 05:00
D3Dのライト有効にしたらポリゴンが全て真っ黒になってしまいますた。
どうやれば直りますかね?

123 :デフォルトの名無しさん:03/06/23 06:23
>>122
だからライトを無効にすればいいだろうがボケ

124 :デフォルトの名無しさん:03/06/23 22:28
>>122
法線が明後日の方向むいてんじゃないの?

125 :デフォルトの名無しさん:03/06/24 00:49
ライティングを有効にしたにもかかわらず、ライトを配置していないとか

126 :デフォルトの名無しさん:03/06/24 04:37
最近、固定機能のライティングとか設定がめんどくさいから、
シェーダで書いたほうが直感的で分かりやすいとか思うようになってきた
フォンシェーディングとかも出来るし

127 :デフォルトの名無しさん:03/06/26 07:48
DirextX8でフルスクリーンモード時にWindowsのメニューを表示したいのですが、
Present()すると、メニューが上書きされてしまいます。
DirectDraw時代のClipperみたいなものはないのでしょうか?

D3DPRESENT_PARAMETERSのSwapEffectは、D3DSWAPEFFECT_COPYを使っています。

皆さんどうされているのでしょうか?
また、参考になるWebページなどをご存知でしたら教えて頂けませんか?


128 :デフォルトの名無しさん:03/06/26 19:42
error C2146: 構文エラー : ';' が、識別子 'DXGetErrorString9A' の前に必要です。

#include <dxerr9.h>
でインクルードして、
DXTRACE_MSG( "メインウインドウ作成に失敗" );
のように使っています。

c:\dxsdk\include\dxerr9.h(26)の
// Return: Converted string
//
const char* WINAPI DXGetErrorString9A(HRESULT hr);  ←ここにカーソルが来る
const WCHAR* WINAPI DXGetErrorString9W(HRESULT hr);

C++で使っているせいかなぁと思うのですが、原因は何なんでしょうか?

129 :デフォルトの名無しさん:03/06/26 19:42
あ、DirectX9です

130 :デフォルトの名無しさん:03/06/26 19:49
■■■かわいそうな「ゲーム君」を2ちゃんの力でトップにしよう!■■■

HSPプログラムコンテスト2003オンライン投票
http://www.onionsoft.net/hsp/contest2003/entryn1.html

HSPプログラムコンテスト2003に一番乗りで出展したものの              
Windowsに標準でついてくるゲームを手軽に起動できるという(というかただのショートカットつめあわせ)
しょーもないプログラムでたたかれまくっているプログラミング暦3年(!)の高校生の
作品、ゲーム君をみんなの力で一位にしよう。
【【【 投票方法 】】】
http://www.onionsoft.net/hsp/contest2003/entryn1.html の一番下、エントリーNo8の「ゲーム君」
評価を「A」で選んでコメントを記入して「送信」(コメントいれるとなおよし)           
http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi?md=cmt&id=8
でいままで送信されたコメントが見えるよ!(けっこう笑える)    
順位 http://www.onionsoft.net/hsp/contest2003/eval/eval.cgi

131 :デフォルトの名無しさん:03/06/26 20:19
D3DXって、レイと球・ボックスの交差はあるくせに球・球の交差とかボックス・球の交差はないんだね。

132 :デフォルトの名無しさん:03/06/26 20:28
>>131
レイトレっぽいのに使ってね、って意図だからじゃない?
ちなみに速度と角速度をパラメーターにもつ
楕円体と平面の交差判定は14次元の多項式になる。
こんなもん自分でなんて作ってられないよね。
Direct3Dとは別に、本格的な汎用ゲームAPIが欲しい。
BPSとかでゲームシーンを簡単に構築出来るやつが。


133 :デフォルトの名無しさん:03/06/26 20:36
>>126
同意。
PixelShader1xは、まだ制限がきつくて別の意味で難しいけど
2x以上なら格段に楽になる。
ステートの方は直感的じゃなくて、覚えるのが苦痛。

134 :デフォルトの名無しさん:03/06/26 20:45
>>131
球と球の交差だけは勘弁してくれ。
ヘルパー関数無しでも流石にできるだろう(w

135 :デフォルトの名無しさん:03/06/26 20:47
>>134
うんできるよ。でもあったらいちいち新しい関数書かなくていいから便利だし。

136 :132:03/06/26 20:56
BPSじゃなくてBSPでした。失礼。

137 :デフォルトの名無しさん:03/06/26 21:02
D3DXの関数といえばD3DXCreateTeapotのヤケクソっぷりに笑った。

138 :デフォルトの名無しさん:03/06/26 21:16
でも3Dオブジェクト同士の当たり判定となると
まさかID3DXMesh同士でやるわけにもいかないし
それようの新たなオブジェクトが必要になるよね。
やっぱりそれぐらいが3DAPIの限界かもね。
でもそれをやってくれたら、世界が広がるっつーか
敷居がもう一段低くなるのにな。

139 :デフォルトの名無しさん:03/06/26 21:42
鼻くそほじっているだけで全部やってくれたら、世界が広がるっつーか
敷居がもう一段低くなるのにな。

140 :デフォルトの名無しさん:03/06/26 22:12
>>139
ありがちな返答だな。
こういう文句は全部やった上での
感想みたいなもんだよ。
まさか昨今のゲームや3Dアプリレベルの代物が
個人がゼロから作れるなんて思ってやしないだろ?
いったいどれだけの労力がかかるか。
それらを作るのに時間を浪費した
その見返りに金でももらえるんなら喜んでやるさ。
妄想なんて語らんよ。

141 :デフォルトの名無しさん:03/06/26 22:22
>>139
あと敷居は低ければ低いほど良い。
これは俺の持論。
君みたいな人は気に入らないんだろう。
自分が今まで積み上げてきた、言わば自分の特技
アイデンティティ的ものが、ぽっと出の奴等に
APIコール1つで実現されちゃたまらんわな。

142 :デフォルトの名無しさん:03/06/26 22:36
何を主張してるんだかサッパリ分からん

143 :デフォルトの名無しさん:03/06/26 23:08
つーか既存でも自作でも
処理を理解しないで関数呼んでじゃロクな実装にならんだろ。
多分、思うような実装にならずD3DXは使えんとか言い出すのがオチ。

そもそも誰でも共通で使える処理なんて基本の処理だけで
それ以上は、自分で必要な処理を加えて自分なりの処理になるもんだ。
関数クレクレ房は、自分が実装できずにいる能力の無さを棚にあげて何を言ってるのやら。

144 :デフォルトの名無しさん:03/06/26 23:28
>>143
>共通で使える処理なんて基本の処理
だからこの部分を定式化してあればラクだなと。
俺が指しているのは最初から最後までこの部分だよ。
結局は誰が作っても各オブジェクトが区分木に分割されて
保持され、バウンディングボックスで衝突判定されて
ビューボリュームでカリングされるエンジンになるんなら
最初から作ってあった方がラクじゃない?
勘違いしないんで欲しいんだけど、「能力」じゃなくて「労力」
確かに能力はないけど、能力がないからクレクレ言ってる訳じゃない。
労力がないから言ってるの。
君のような意見の方はザラにいるけど、逆に実際に取り組んだことがあるのかと
勘ぐってしまうよ。

145 :デフォルトの名無しさん:03/06/26 23:46
MSがHavokのライセンスを買って、D3DXにでも組み込んでくれないかのぉ。

146 :デフォルトの名無しさん:03/06/27 00:11
クレクレで貰ったとして、自分なりに組み込めたのならそれでいいと思う

147 :デフォルトの名無しさん:03/06/27 00:12
あー、どっちの話も理解できるけどな。

ま、プログラミングするならとりあえず末端まで理解しとけってのは正論だが、
すべてのことに首を突っ込み、あまつさえ自分でコードを書きたがるようなヤツは、
これからはフェードアウト組確定だろうよ。

何かオンリーワンの技術を持つでもなく、
ありものを組み合わせて優れたソリューションを提示できるでもなく、
車輪の再発明に無駄なコストをつぎ込んでるだけなんだから。

148 :デフォルトの名無しさん:03/06/27 00:14
ゲームの世界もやっと一般系のようになってきたってことかな。

149 :デフォルトの名無しさん:03/06/27 05:04
一度でも実装やコード書いたなら、自分のリソースとして持ってるか
DirectXで提供されてるかの違いだけだろ。
マジで、クレクレ房はプロジェクト毎にコピる事すら出来ないのか?
労力やありの物なんて言って奴は、絶対に実装出来てない&理解出来てない奴だろ?
一応さ、DX8の頃の3D系算術処理や物理処理は自分(あま、会社か)のPS2用のをC++に直して使ってるよ。
関数のヘルプ見て、関数呼び出すのとなんら手間なんて変わりませんでしたが?
(むしろヘルプ見たりヘルプで調べたりが無い分、手間はかかってないかと)
DX9では、まんま使いまわしだしさ…(シェーダーの部分を少しイジッた程度)

出来る&理解してるが、関数欲しいって言って奴は
マジでソースの資産化が出来てないのか、嘘付いて出来てない&理解してないんか?
と勘ぐってしまうよ。

150 :デフォルトの名無しさん:03/06/27 05:18
>確かに能力はないけど、能力がないからクレクレ言ってる訳じゃない。
>労力がないから言ってるの。

一応、日本語の突っ込みを入れると
能力がないんなら、それが労力がない原因だと思うよ…
…その意見や考えで仕事をする奴を、俗に使えない奴って…

151 :デフォルトの名無しさん:03/06/27 06:37
プログラムを放棄してるゲームツクール化房のなんと多いことか‥‥

152 :デフォルトの名無しさん:03/06/27 07:58
>>140
>まさか昨今のゲームや3Dアプリレベルの代物が
>個人がゼロから作れるなんて思ってやしないだろ?

モデルやモーション、テクスチャやグラフィックが大変なのであって
貴方の求める機能の部分は用意されていても、無くても開発スピードになんら影響しないよ。
理解出来なくて組めなくて、お勉強に時間がかかるから用意して欲しいんじゃないの?
本当に全部やったのかな?
自分の能力の無さ、理解力の無さを棚に上げるようにしか聞えんよ。

153 :デフォルトの名無しさん:03/06/27 09:18
だから俺は鼻くそをほじるから、だれかやっといてくれよ

154 :デフォルトの名無しさん:03/06/27 11:25
だから何をそんなに必死なのか分からん。
お互い電柱を相手にファイティングポーズ取ってるように見える。

155 :デフォルトの名無しさん:03/06/27 11:45
> 出来る&理解してるが、関数欲しいって言って奴は
> マジでソースの資産化が出来てないのか、嘘付いて出来てない&理解してないんか?

理解度と、ありものを使うかどうかは別の問題だろう。
FFT理解してても、MP3とかOgg Vorbisとかを自分で作り直したりはせんのと同じで。

いや、意地でも再発明してるヤツもいるかも知れんが……。

156 :デフォルトの名無しさん:03/06/27 12:33
MP3やOgg Vorbisなんかはさすがにやらんけど、MD5とかだと再発明しちゃう罠。

157 :デフォルトの名無しさん:03/06/27 14:58
馬鹿じゃねーの。MP3なんて規格モンじゃん。
つまり、同じデータを複数が同じく処理できるようにあるものじゃん。
で、ゲームの処理なんてゲームごとに違うのに
クレクレの挙句、全てのゲームでまったく同じ処理をしてる如くの発言。
最適化や独自データ形式なんて縁がない人なのか?


モデルもXFileじゃないと描画出来ないとか、Xfileに変換するプラグインとか
言っちゃうレベルの奴だったりして…

158 :デフォルトの名無しさん:03/06/27 15:24
>>157
だからキミが誰を叩いてるのかわかんねーよ。

159 :デフォルトの名無しさん:03/06/27 16:29
>で、ゲームの処理なんてゲームごとに違うのに

いかにも古い世代の思い込みだね。
テレビゲームごときに一体どれほどの処理の幅があると言うんだい。
そりゃゲームそのもののロジックは個々に違うが、
他は今のハード性能をもってすれば容易に共通化・汎用化できるものばかりだろ。

こういう極めて高度な汎用エンジンが出てくる情勢について、何か思うところはないのか?
ttp://www.4gamer.net/specials/gdc24/cry.html
それとも、居場所がなくなる危機感を抱いてるからこそヒステリックに否定するのか。

というかスレ違い気味だが。続きはこの辺でどうかね。
ttp://bbs.gamdev.org/test/read.cgi/gamedev/1054235183/

160 :デフォルトの名無しさん:03/06/27 16:57
>こういう極めて高度な汎用エンジンが出てくる情勢について、何か思うところはないのか?

無料配布のDirectXとミドルウェアを比べている時点で理解してないだろ。
例えるなら、本屋のレジ横にある無料の冊子に
3Dの数学と物理の処理が全て記述してあるのが当然のような発想だ。

161 :デフォルトの名無しさん:03/06/27 17:26
>>159
ゲームだからこそ共通には出来ないんだが
たしかにQuake系なんかのシステムは売られていて共通化できる
しかし似たり寄ったりのゲームになってしまって飽きられる
そしてツクール系と同じ現象が起こることになる
似せないように作ろうと、用意されているものの範疇をこえれば、
結局自分で何かしらを作らなければならない

162 :デフォルトの名無しさん:03/06/27 17:53
>>161
CRYエンジンは、今までのQuake系とかツクール系のような
応用範囲が限られるエンジンじゃないから騒がれているのでは。

この3次元世界の事象をあらかた網羅されて、それを自在に扱えるとなれば
描画系や力学系にはもう仕事残ってないじゃん。

163 :デフォルトの名無しさん:03/06/27 17:58
>>138
SOLIDとかOPCODEとか使ったら?

164 :デフォルトの名無しさん:03/06/27 19:41
俺もヘタレなのでOPCODE使ってる。速いんだもん。

165 :デフォルトの名無しさん:03/06/28 03:53
あー勘違いしてる人が多いかも。
そのCRYエンジンとやらを導入すれば、
物理計算や描画全て上手く行くとでも思っているのかな。
そんなのMAYA導入してCG制作は何でも出来るとか言ってるのと同じ位勘違い。
MAYAならデザイナが、そのエンジンならプログラマ?(オペレーター)が使いこなせないと意味がないでしょ。
でだ、3Dの数学的意味や物理の意味を知らずに使いこなせる訳が無いでしょ。
マニュアルも理解出来ずに宝の持腐れがオチ。

166 :デフォルトの名無しさん:03/06/28 09:52
まあDirect3D自体が数学的な知識なけりゃどーにもならんな
知らなかったらその辺の入門書にありそうなメッシュの表示程度しかできないし

167 :デフォルトの名無しさん:03/06/28 11:11
質問です。
DirectShowを使っていろいろなファイルを再生しています。
ファイルとしてならば再生できるのですが、次に、
データとして再生をしてみたいと思うのですが、そんなことができるのでしょうか?

たとえば一つのファイルの中に五個のデータが以下のように
連結されているとします。

|----------------|-------------|------------------|-----------|

一つのファイルとして一つのデータならば通常通りにすればよいのですが、
連結されたファイルの中で、ある一定の点から一定の点までを指定して
再生してみたいというわけです。よろしくお願いします。
とりあえずヘルプは目を通したつもりです。
うまい具合にIMediaSeekingインターフェイスを使えば
できそうな気がしないでもないですが…。

168 :167:03/06/28 11:14
図では四個しか書いてなかったです、鬱。

169 :デフォルトの名無しさん:03/06/28 11:27
>でだ、3Dの数学的意味や物理の意味を知らずに使いこなせる訳が無いでしょ。

そりゃそうだ。それについては誰も異議を唱えていないと思うが。

170 :デフォルトの名無しさん:03/06/28 11:31
>>165
こいつこそ何もわかってないだろ。どっからMAYAなんて言葉持ってきたか知らんがな。
いや、心当たりがあるが、あいつかな(ワラ こんなところまでご苦労さん 工房ちゃん

171 :デフォルトの名無しさん:03/06/28 12:26
DirextX8.0の日本語ドキュメントをダウンロードしたんですが、
exeファイルを実行しても「指定されたパスが見つかりません」とかいって
解凍できないんですよね・・・。どなたかお助けを。
それともWinXPではだめなんでしょうか。

172 :167:03/06/28 12:30
>>171
そのメッセージボックスが開いている間に
C:\Document and Settings\<<UserName>>\Local Settings\Temp
の中に生成されるフォルダの中に入っていたりします。

173 :デフォルトの名無しさん:03/06/28 12:31
XPが駄目なのではありません
責任転嫁はいけません、>>171が駄目なのです

174 :デフォルトの名無しさん:03/06/28 12:37
>>172
あぁ!ありました。ありがとうございました。
なんかややこしいことになってるんですね。


175 :デフォルトの名無しさん:03/06/28 12:39
>>173
うっさいヨガ。
MSのサイトではXPはサポートされてないみたいに
書いてあんだよ。

176 :デフォルトの名無しさん:03/06/28 13:08
そもそもDirextX8.0ってなに?

177 :デフォルトの名無しさん:03/06/28 13:14
拡張されたDirectX8.0だろ。


178 :デフォルトの名無しさん:03/06/28 13:20
http://download.microsoft.com/download/win98/dx8Cdoc/8.0/W9X2KMe/JA/DX8JHelpC.exe
XPでも何の問題もなく展開できたけど?

179 :アンチパターン:03/06/28 13:39
ゲームの処理はゲームごとに違う!

こーゆー奴は時間ばっかり使ってボリュームやクオリティの全くないゲームを作る。
処理の一般化もヌルいから同じような処理を何個も書く。
バグが増えまくって手がつけられない。
設計能力が欠落していることが問題だと思われます。

180 :デフォルトの名無しさん:03/06/28 13:59

実例を挙げず具体性のない抽象的な言い方をする典型的な例
これを続けると、いつまで経っても収束しない無駄な議論になる

181 :デフォルトの名無しさん:03/06/28 16:08
>>180
実例なんか挙げたって馬鹿の180にわかるわけないだろ。
無駄なことさせんなよ。

182 :ちよ:03/06/28 16:08
http://kotarou.free-city.net/page002.html

183 :デフォルトの名無しさん:03/06/28 16:53
>>181
実例を挙げられるような経験が無いのは分かっているので、
無理に突っ張らなくてもいいよ

184 :181:03/06/28 16:55
>>183
ごめんなさいすいませんでした。

185 :デフォルトの名無しさん:03/06/28 18:05
超初心者です。オブジェクトの移動に関して質問があります。
オブジェクトを、オブジェクトが向いている方向に移動させることができません。
DOOMみたいな一人称のゲームに良くある移動の仕方のこと(上キーで前進・左右キーで回転など)です。

D3DXMATRIXA16 temp;
if(前進)
{
MatrixTranslation*=*D3DXMatrixTranslation(&temp,0,0,1.0f);
}
if(後退)
{
MatrixTranslation*=*D3DXMatrixTranslation(&temp,0,0,-1.0f);
}
if(左へ回転)
{
MatrixRotation*=*D3DXMatrixRotationY(&temp,D3DXToRadian(-8));
}
if(右へ回転)
{
MatrixRotation*=*D3DXMatrixRotationY(&temp,D3DXToRadian(8));
}
D3DXMatrixIdentity(&Matrix);
Matrix*=MatrixScale;
Matrix*=MatrixRotation;
Matrix*=MatrixTranslation;
DX9.D3DDevice->SetTransform(D3DTS_WORLD,&Matrix);

だと、当然向いている方向へは進まずに、クルクル回りながら前後に行き来するだけです。
カメラの位置は考慮しないものとして、どうすれば上手くいくのでしょうか?


186 :デフォルトの名無しさん:03/06/28 18:08
適当だが
MatrixRotationとMatrixTranslationの掛ける順番変えてみたら?

187 :デフォルトの名無しさん:03/06/28 18:15
というよりも、行列で計算していたら無駄が多すぎなので、
座標と角度だけ別データを持って、移動量はsin,cosを乗算するだけで出る
最後に位置を行列に入れるだけ

188 :デフォルトの名無しさん:03/06/28 18:34
>>187
それってローカル座標を飛び回るときも役に立つのか?

189 :デフォルトの名無しさん:03/06/28 18:37
立つよ

190 :デフォルトの名無しさん:03/06/28 18:40
普通ベクトルで座標&スケーリング、クオータニオンで回転を保持して
描画直前にくっつけるんじゃないか?

191 :188:03/06/28 18:50
>>190
だからさ、直進してるリフトから回転してるリフトへ飛び移るところとか
想像してよ。

192 :デフォルトの名無しさん:03/06/28 18:52
>>191
別に、何か不都合が?

193 :デフォルトの名無しさん:03/06/28 18:55
>>192
ローカル座標からローカル座標に変換しなくちゃいけないじゃん。
めんどいじゃん。
足場が回転してたらのってるやつも回転やん。
めんどいじゃん。

194 :185:03/06/28 20:00
レスありがとうございます。

>MatrixRotationとMatrixTranslationの掛ける順番変えてみたら?
それだと、ローカルの中心ではなく、親オブジェクトの中心(デフォルトだと画面の中心)を回転軸として回ってしまいます。(蚊取り線香みたく)

>座標と角度だけ別データを持って、移動量はsin,cosを乗算するだけで出る
これは、できます。
自分としては行列を使った方がスマートに見えるのですが・・・。
行列よりもsin・cosの方が一般的なのでしょうか?


195 :デフォルトの名無しさん:03/06/28 20:02
計算量が全然違う

196 :デフォルトの名無しさん:03/06/28 23:08
>>195
>>188
以降ループ

197 :デフォルトの名無しさん:03/06/29 03:02
プロのプログラマーは何ていうの。

198 :デフォルトの名無しさん:03/06/29 05:24
prostitute?

199 :デフォルトの名無しさん:03/06/29 14:04
D3DXはInverseTranspose(逆転置)やMatrixMuliplyRotation(回転させる)など頻繁に使う
算術関数のラッパーをもっと強化してほしい。
いちいちラッパー作るの面倒だよ。
どうでもいい?
そうかなぁ。
ところでみんな算術ライブラリって自分でつくっちゃうの?
それともあるもの使う?

200 :デフォルトの名無しさん:03/06/29 18:51
>>199
その発想の根本はプログラマに向いてない事につながってる様な気が…
ラッパー程度で面相なら、プログラム組むの面相、コード書くのも面相。
最終的に、じゃ、人様が作った物を使おう。
それって、アプリのユーザーと何ら変わらないかと。

算術ライブラリについては、手間と思うのは数的処理を理解してないからでは?
別に必要な時に無ければ、その場でちゃっちゃと関数作って感じで
自分のライブラリに足してけば、苦もなく充実して行って
気が付けば、別にD3DXに有ろうが無かろうがって物だね。

処理や数的理解がなく、調べたりして組むのが時間かかるから
面倒とか手間なんて思うんじゃないの?
たかが数分の作業じゃん。この程度が手間ならコード書くのも手間ってレベルでしょ。
プログラマじゃないよ。

201 :デフォルトの名無しさん:03/06/29 20:04
>>200
経験だけど一番楽なのがプログラムを自分色に染めてしまうのが一番楽。
つまり、他で用意されているラッパーを一切使わずに
自分のやり方で自分用にカスタマイズしてしまうこと。
それってカスタマイズが気が付いたとき程度でいいなら楽だけど
プロジェクトがでかくなるとみんながみんな自分のやり方で操作をしてたら
同じ操作を違う方法で実装する人間が出てくる。
だから同じ操作で千差万別のバグを生んでしまうことがある。
ラッパーははじめにすべてそろっていないと意味がない。
これがDirectXレベルでそろってると楽じゃない?

202 :デフォルトの名無しさん:03/06/29 20:13
>>クソグラマ

203 :デフォルトの名無しさん:03/06/29 20:17
人に聞くのが一番。
自分で考えるのは良くない。そんなことしてると
偉くなれないぞ。

204 :デフォルトの名無しさん:03/06/29 20:58
技術者なら聞く前に調べろってあれ絶対嘘だよな
教えたくないヤツを断る方便
えらい人はみんな人に聞いて覚えたっていってるぞ

205 :デフォルトの名無しさん:03/06/29 21:13
えらいヒトって、やねうらおとか?

206 :デフォルトの名無しさん:03/06/29 21:14
>>200
一人で組んでるときは気にならないところかもしれないけど、
複数で組んでるときは気付いたら実装じゃ遅いんだよね。
でもって、いまのプロジェクト、なんか算術関数気色悪い感じでできてるし。
で、作った本人、マニュアルも書く気ないみたいだし、
最後まで面倒見る気ないくせに中途半端に実装した挙句、
後は自分で足りない部分足してください、なんて人いるからね。
作ってもらえます?とかいったらキレ気味になるしね。
一つのソースみんなで突くよりはあんたがやるのがスジでしょう?
とかいったらキレかねない。危険だ。

207 :デフォルトの名無しさん:03/06/29 21:15
やねうらおは3年前ならえらい人だね

208 :デフォルトの名無しさん:03/06/29 21:51
やねは技術は認めるが嫌いだ。人間としてどーも。
ていうかスレ違いだな……。

209 :デフォルトの名無しさん:03/06/29 21:53
えらい人ではなくえろい人です

210 :デフォルトの名無しさん:03/06/29 22:57
ここのスレッドは得ろいひとばかり。

211 :デフォルトの名無しさん:03/06/29 23:09
得ろエロやる前に、プログラム作れ。
取り合え図、シナリヲ作れ。


212 :デフォルトの名無しさん:03/06/29 23:12
>>200
君は人の用意したものを使ったほうがいいんじゃない?
だって面相だもん。
この先どんなに頑張っても、やっぱり面相どまりだと思うよ。
打ってて気付かないのか?面相。
ライブラリにいれとけよ面相。

213 :貧乏脱出!これであなたはお金持ち:03/06/29 23:18
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

/////// //////// ///////

214 :デフォルトの名無しさん:03/06/29 23:20
しかし、ダイレクトXを
使いこなしているプログラマはもしいらっしゃるなら
すごい。

215 :デフォルトの名無しさん:03/06/29 23:21
マッハバンドとかいまだに遊んでる。

216 :  :03/06/30 02:33
DirectX9.0のSDKをインストールしたら7.0や8.1向けのプロジェクトもコンパイルできるの?

217 :デフォルトの名無しさん:03/06/30 05:10
>>216
バージョン定数 でヘルプを検索しれ!

218 :デフォルトの名無しさん:03/06/30 23:55
ところで皆さん、バージョンはいくつで開発してます?
今まで私は7でやってたんですが、そろそろ8あたりに
移行していいかなぁ。新しいもの好きの私としては
今すぐ9でプログラム組みたいところなんだけどなぁ。


219 :デフォルトの名無しさん:03/07/01 00:03
9でいいだろ。DX入れるのマンドクセな奴なんか無視無視。
但し9世代の機能を何でも使ってよいというわけではない(PS2.0を無闇に使う等)。

220 :デフォルトの名無しさん:03/07/01 00:11
>>218
俺は8だな。
ほとんどの環境に入ってるし、9にそれほど必要な機能がなかったから

221 :デフォルトの名無しさん:03/07/01 00:50
必要ではなくても、8よりは9の方がいいな。
8は駄目なところが大杉。

222 :デフォルトの名無しさん:03/07/01 01:41
8よりは9の方が作りやすいよなー
GetDC復活してるし。
でもユーザに8の環境(というかハードが9未対応)が多いから8で作ってるっス

223 :デフォルトの名無しさん:03/07/01 02:21
ハードが9未対応でも、9で追加されたハードウェア支援が必要な
機能を使わなければ、問題無いのでは?

という訳で、俺は9

224 :218:03/07/01 02:58
なるほどー、結構最新版で開発してる方も多いんですね。
7とかでやってた折れアホ・・・?まぁいいや。
どうしようかなぁ。9の方が良いみたいなんで、9に
移行しようかな。

225 :デフォルトの名無しさん:03/07/01 05:04
あー、朝起きたらDirectXのヘルプが全部頭の中に入ってたりしないかなー。

226 :デフォルトの名無しさん:03/07/01 07:23
俺は全部頭の中に入ってるけどな

227 :デフォルトの名無しさん:03/07/01 07:33
グラフィックドライバが未対応で、DirectX9入れただけでシステムが不安定になる場合もあり、
一概にユーザーが最新版を入れてくれるとは限らなかったりする。

って、うちの環境のことだが。

って、まあ、そんなクソドライバ捨てていいか。

って、そのクソドライバがATIだったりす(ry

228 :デフォルトの名無しさん:03/07/01 10:26
DirectXのヘルプってちょっと不親切じゃないか。

229 :デフォルトの名無しさん:03/07/01 18:07
>>228
あんなもんで十分だと思う。

230 :デフォルトの名無しさん:03/07/01 20:53
ライブラリのヘルプでDirectXのヘルプより親切なのってあるの?
俺は十分過ぎるというか、むしろもっと無駄を削ってコンパクトにして
欲しいと思ってる。
気が向いたときは自分でヘルプの再構築やってるくらいだし。

231 :デフォルトの名無しさん:03/07/01 22:28
DirectX付属ヘルプは丁寧すぎるぐらいだねえ
ただし、3Dの基礎知識は前提になってるけど

232 :デフォルトの名無しさん:03/07/02 00:28
確かに、丁寧過ぎて膨大な量になってるな。ある程度使えるように
なってる人にはいらない説明も多いしな、Win32APIの話とか。
まぁ逆に言うと初心者の頃にはすごく助かったわけだが。

233 :デフォルトの名無しさん:03/07/02 13:26
たまに引数名の説明で「なんなんだ、これは」と思うような奴は無い?
いや、全体的にはよく出来てる、の一言なんだが…

234 :デフォルトの名無しさん:03/07/02 16:50
洗練されているに超したことは無いけど、説明が無さ過ぎて
困るよりは良いっすよ。MSACMのコードを実装したときは
解説がぜんぜん無くて大変ですた…。

235 :デフォルトの名無しさん:03/07/02 22:15
最近DirectXを使い始めて2Dのゲームでも作ろうかと奮闘中
なのですが、2Dのbmp画像を描画するだけでもいろいろ方法が
ありますよね。どういう使い分けをしたら良いのか、良く分かりません。
とりあえずSpriteだけを使っておけばいいんでしょうか。
実行速度などに違いはあるんでしょうか?

236 :デフォルトの名無しさん:03/07/02 22:19
分からなかったらとりあえずD3DXSPRITE使っとけ。

237 :デフォルトの名無しさん:03/07/02 22:28
日本語ヘルプも昔に比べるとだいぶ良くなったね。
7あたりまでは、英語ヘルプでは文中に出てくる構造体の名前がリファレンス
ページへのリンクになっていたのに、日本語ヘルプではほとんどリンクに
なってなかったけど、9のヘルプを見た感じだと英語ヘルプを忠実に再現して
るみたいだね。

238 :デフォルトの名無しさん:03/07/02 22:51
X5の時点で今くらい充実してれば…
あんな本にお金使わなかったのに…

239 :デフォルトの名無しさん:03/07/02 23:03
一枚のビットマップにキャラクタをたくさん描いておいてそれをテクスチャにするときに
切り分けたいのですがいかがなさいますか?

240 :デフォルトの名無しさん:03/07/02 23:06
>>233
DXに限ったことじゃないが、たまにあるな。

UINT hoge - 符号無し整数

んなこたぁわかってるから何のための引数か書けっての

241 :デフォルトの名無しさん:03/07/02 23:06
何がわからないの?

242 :デフォルトの名無しさん:03/07/02 23:37
DrawIndexedPrimitiveの引数の説明にかなり混乱した

243 :デフォルトの名無しさん:03/07/02 23:46
>>242
どう混乱したか説明してもらえると更にスレの質が向上いたします。

244 :デフォルトの名無しさん:03/07/03 01:00
C++のヘルプはそれなりに充実しているが、C#のヘルプはひどいよ。
C++のヘルプと両方見ないとわからない。

245 :デフォルトの名無しさん:03/07/03 01:19
VBのヘルプはどうですか?

246 :デフォルトの名無しさん:03/07/03 01:41
MSDN、詳しいのは結構だが1.8Gって……。

247 :デフォルトの名無しさん:03/07/03 01:41
いまDirectX9SDKを使って開発しているのですが
DirectXのバージョンなどによってOSが制限されることってありますか?

248 :デフォルトの名無しさん:03/07/03 01:47
9はwin95では動かないんじゃなかったっけ

249 :デフォルトの名無しさん:03/07/03 01:57
ターゲットの環境はWin98以降みたいですよ
http://www.microsoft.com/japan/windows/directx/default.aspx?url=/japan/windows/directx/downloads/drx90.htm

250 :デフォルトの名無しさん:03/07/03 02:00
>>244 それって翻訳の問題?それとも原文が腐ってる??

251 :デフォルトの名無しさん:03/07/03 02:02
>>250
文章がおかしいんじゃなくてほとんど何も書いて無い。

252 :デフォルトの名無しさん:03/07/03 02:02
>>248
>>249
公式サイトにでていたのですね
見落とすなんてお恥ずかしい

もう一点、OSによって機能などが制限されないかと
ふと疑問に思っていたのですがそういったこともないようです

ありがとうございました

253 :デフォルトの名無しさん:03/07/03 03:51
DirectX9.0なのですが、
640*480のサイズのjpgをD3DXCreateTextureFromFileで
読み込んで、ID3DXSprite::Drawで描画したら何も指定
していなのに勝手に拡大されて表示されてしまいます。
拡大率とかもちゃんとNULLに設定してるのですが。
どなたか原因が分かる方いらっしゃいますでしょうか?


254 :デフォルトの名無しさん:03/07/03 03:59
>>253
多分、グラボの性能じゃない?
2^nのサイズまでしかサポートしないんだと思うよ。
2,4,8,16,32,64,128,256,512,1024ってな具合。
おそらく640が1024になって、480が512のサイズになってるんじゃない?

255 :デフォルトの名無しさん:03/07/03 04:37
拡大率にNULLを指定すると自動補正して拡大するんじゃなかったっけ?
なんたら_NONEみたいのを指定すると上手くいくんじゃないかな

256 :デフォルトの名無しさん:03/07/03 08:24
キリバンゲット

257 :デフォルトの名無しさん:03/07/03 09:22
>>253
テクスチャ読み込み時に引数でフィルターを指定して自分で引き延ばしているのに、
勝手にとか責任を他人になすりつける考え方はやめた方が良いよ

258 :デフォルトの名無しさん:03/07/03 13:01
>>257
お前性格悪いな。初心者に何突っかかってるんだか。
彼女いないだろ。

259 :デフォルトの名無しさん:03/07/03 13:32
まあまあ、マターリと卓球でもしようや。
( ´ー)ρ┳┻┳°σ(ー` )

とはいえ、「コンピュータは人間が思った通りにではなく、教えた通りに動く」ので、
何か変なことが起きるなら、間違いは必ず人間側(大抵は自分)にある。
その辺をちゃんと理解するのが、プログラミングにおける問題解決のコツだ。

と老婆心的うんちく。

260 :デフォルトの名無しさん:03/07/03 14:22
>>253
の質問はテンプレに入れるべきだな。月1回はこの質問が飛び出す。>>85のように

261 :デフォルトの名無しさん:03/07/03 15:18
DirectX9、C++版ヘルプの、DirectX Graphics>プログラミングガイド>
チュートリアル>プログラムの>パフォーマンスの項にある、
「動的な頂点バッファとインデックス バッファの使い方」について質問お願いします。

今まさに自分がこの状況でして、これだ!と早速USAGE STYLE 2の方で
実装してみようと思ったのですが、ふと疑問が。

毎回変わるデータに対し、PrimitiveUP系関数を使わずに、
わざわざLock&memcpyしてまで、頂点バッファにこだわる利点は何なのでしょうか?

262 :デフォルトの名無しさん:03/07/03 16:56
動的なデータで速度的に優位かどうかは別として、ハードウェアTnLが使えるのが利点
複雑なライティングを使っているような場合は効果が大きい

263 :261:03/07/03 17:06
>>262
なるほど、ハードウェアTnL…。
ライティングを使わない場合は、それほど考慮しないで良いのですね。

おかげで、使用の是非を検討することができそうです。
レスありがとうございました。

264 :185:03/07/03 17:25
D3DXIntersectの第7・8引数にある「重心ヒット座標」って何なんですか?
レイの当たる角度によって変化するみたいだけど・・・
こいつらを使って、レイの当たった面の角度を求めたりとかできないもんかな?



265 :デフォルトの名無しさん:03/07/03 20:30
>>262
UPでもハードウェアTnLは使えるよ。

>>261
わざわざLockというが、CPUとGPUが同じメモリに同時にアクセスはできないから、
Lockは最低限必要な処理だよ。マルチスレッドプログラミングの経験があれば
自然と分かるかと。

UP系を使った場合でも、結局はドライバ側でLockとmemcpyをしている。
ついでに言うと、多分DrawPrimitiveUPを呼ぶ度にCreateVertexBufferしているかと。

266 :デフォルトの名無しさん:03/07/03 21:47
>>261
>毎回変わるデータに対し
頂点は変わるかもしれないけどインデックスはあんまし変わらないんじゃない?
少しでも転送量を稼げるかも(ムダかも)。

267 :デフォルトの名無しさん:03/07/03 22:11
レイとメッシュの当たり判定の確認にD3DXIntersect()を使っていますが、
うまくいきません。
スクリーン座標の点を3Dのレイにした後、
レイの始点に、メッシュ描画時のワールド行列の逆行列をかけて移動させ、
元のメッシュと比較しています。
単純に逆行列をかけるだけではだめなんでしょうか?

メッシュ描画時のワールド行列は
拡大行列 * 回転行列 * 移動行列の順にかけてたものです。

D3DXIntersect()には、
描画メッシュ、
レイの始点にメッシュ描画時のワールド行列の逆行列をかけた点、
レイの方向、
を設定しています。

ワールド行列が移動行列のみの場合はうまくいきます。
行列が拡大行列や回転行列を含む場合には、別の処理が必要なのでしょうか?

268 :デフォルトの名無しさん:03/07/04 00:42
>スクリーン座標の点を3Dのレイにした後、
Zの値はどうしてるの?

>元のメッシュと比較しています。
なんてワールド上でやらないのか分らないが、ワールド行列の逆行列しかってないなら
>ワールド行列が移動行列のみの場合はうまくいきます。
当り前やがな。

>レイの方向、
>を設定しています。
それは、どこから求めたの?


その前に、行列やら3Dの概念が理解出来てるのかい。
断片の文章に突っ込んだが、いまいち何を言ってるのかなんだよな。
カメラなんて普通は、モデルと違う動きじゃないの?
それを、なんでスクリーン上の座標をモデルのワールド行列の逆行列なんていいだすのか…

269 :デフォルトの名無しさん:03/07/04 01:47
267はカメラとは、一言も言ってないみたいだが。
SDKサンプルのPickみたいな事をやりたいのでは?
あのサンプルではメッシュはワールド内に固定だけど、メッシュが
移動や回転等する場合での、レイとメッシュの交差判定をしたい
のではないかと。

270 :デフォルトの名無しさん:03/07/04 02:20
これから試そうと思ってたんけどレイの始点からメッシュの座標を引いたらダメ?
メッシュを原点に置いて、その分レイの始点を移動させれば同じ事だと思ってたんだが。

271 :デフォルトの名無しさん:03/07/04 02:21
ああそうか、回転があるのか。これじゃダメだな。忘れてた。

272 :デフォルトの名無しさん:03/07/04 02:29
>>269
カメラを通さずに見えるスクリーン画面ってあるの?
>スクリーン座標
っていってるよ。

で、だから分らないって。
モデルを変換前のものを使用して、レイにモデルに使った逆行列をかけてって…
それって、レイがモデルと同じ動きをしてないと成り立たない。
で、それなら変換後だろうが、前だろうがモデルとレイの関係は同じだろ。
レイを視線ベクトルと同義にしたいなら、考え方が間違ってる。
行列と3Dモデルを2D描画する理論を勉強するのが先。

273 :デフォルトの名無しさん:03/07/04 06:28
おかしい・・・
DIRECTINPUT_VERSIONを定義すると実行時にエラーが出て、
定義しないとすんなり通る。

・・・と思ったら
#define DIRECTINPUT_VERSION 0x8000
って書いてたよ_| ̄|○|||

これはきっと、このスレタイのせーだ!!ヽ(`Д´)ノ

274 :267:03/07/04 12:52
269さんの言うとおりのことをしたいのです。
うまく説明できなくてすみません。
270さんの通りにやって見てだめだったので聞いてみたのですが、
回転があるとだめなんですか。

275 :教えて君:03/07/04 18:06
背景をUpdateSurfaceでバックバッファへ書き込んでいるんですが、
IDirect3DDevice9::Clear を使ってビューポートをクリアすると
それ以降バックバッファへいくら書き込んでも表示されないのです。
Clearメソッドを使う目的はスプライト(D3DX)をクリアするためです。
どうやったらスプライトだけをクリアできるのでしょうか?

276 :デフォルトの名無しさん:03/07/04 19:01
その説明じゃ状況が分からん。

一つ言いたいのは、スプライトだけを消すことは出来ない。
UpdateSurfaceで書き込むのはバックバッファ。
スプライトを書き込むのもバックバッファ。
そしてClearでクリアするのはバックバッファ。

277 :デフォルトの名無しさん:03/07/04 19:44
全部じゃねーか!

278 :261:03/07/04 20:36
>>265
> 呼ぶ度にCreateVertexBuffer
な、なんと!そんなショボーンな危険性もあるんですね。おかげ様で
Lockが必須な処理であること、故にどのみち影でやっているだろう事が良く分かりました。

>>266
なるほどー、そんな利点も。うちのデータ見たところ、かなり稼げそうです。

お二方とも追加情報ありがとうございました。勉強になります。

279 :デフォルトの名無しさん:03/07/04 20:40
内部のことはよく知らんが、
毎回CreateVertexBufferなんか使ってたら
UPのあんな速度は出ないと思うのだがどうか…。

280 :デフォルトの名無しさん:03/07/05 00:20
ドライバによって内部処理が違うような気がする。
何種類かのビデオカードでUPと毎回Lockを比較してみたが、どっちが速いかはまちまちだった。
たしかGF4TiなんかはUPがかなり速かった記憶がある。


281 :デフォルトの名無しさん:03/07/05 10:56
たぶんヘルパAPIみたいなものだろうから、中身次第でしょうな。
どっかのスライドにはUP使うなって書いてた。

282 :デフォルトの名無しさん:03/07/05 14:11
>速度について語っていいのは実際に速度を測ってみた者だけだ
との格言もありますし誰かベンチ書いてよ
ム板、ゲ製、合同で集計したらそれなりの結論が見えてくるんじゃないかと

283 :デフォルトの名無しさん:03/07/05 14:18
>>282
必要だと思ったら自分で作ればいいだろ
なんで他人任せで「書いてよ」なんだ?

284 :デフォルトの名無しさん:03/07/05 14:46
ベンチマークなんかすると、ほかのレスが読みにくくなるから止めた方がよいと思う。

285 :デフォルトの名無しさん:03/07/05 15:18
nVidiaのサイトにあるDynamicVBテンプレートクラスを使えば
UPと同等以上にできるんじゃないか?

286 :デフォルトの名無しさん:03/07/06 06:38
DirectXの勉強ができる一番良いサイトおせーて。
とりあえずマイクロソフト以外でよろしく。

287 :デフォルトの名無しさん:03/07/06 09:31
DirectXのヘルプ。

288 :デフォルトの名無しさん:03/07/06 10:27
DirectX8で空きVRAMの容量を取得するにはどうしたら宜しいのでしょうか。

DirectDrawのDDCAPS.dwVidMemFreeの様な・・・
GetAvailableTextureMemだと、途方もない数値が返ってきてしまいます。

289 :デフォルトの名無しさん:03/07/06 11:16
すでにどこかで答えたような・・・
結論からいうと、正確な値は期待できない。

290 :デフォルトの名無しさん:03/07/06 11:25
>>289
では、近い数値を得る事は出来るのでしょうか?

GetAvailableTextureMemを試してみたら、152,043,520 なんて
数字が返ってきて、どう言う数値なのかとヘルプ確認したら
返される値は最も近いMBに丸められる
なんて書かれてて・・・ 152T・・・?

291 :デフォルトの名無しさん:03/07/06 11:41
i810等でどうなるかを想像してみるといいのでは?

292 :デフォルトの名無しさん:03/07/06 11:47
>>291
i810触った事無いので全く解りませんが、
BIOSでビデオに割り当てるサイズ指定するなら、その空き。
指定出来なければ、物理メモリの空き容量

を返して欲しい。

293 :デフォルトの名無しさん:03/07/06 11:50
>>290
152043520÷1024÷1024=145MBですよ。

294 :デフォルトの名無しさん:03/07/06 12:01
あぁ そうか。単位がMBと言うわけじゃないんですね。
でもあまり関係無い・・・


295 :デフォルトの名無しさん:03/07/06 12:21
>>292
>>289

296 :デフォルトの名無しさん:03/07/06 12:30
>>295
ん・・・ここの生きてる過去スレの中には無かったけど、
GetAvailableTextureMemで得られる値が最善の値て事ですか?

297 :デフォルトの名無しさん:03/07/06 12:54
>>296
どうしてもVRAMに置きたいのなら、
試しに置いて「メモリ不足エラー」ならば他のメモリに置く。

298 :デフォルトの名無しさん:03/07/06 13:54
>>297
まだ試していませんが、DEPTHSTENCILかRENDERTARGETを
指定しない限り、OUTOF_VIDEOMEMORYは返さない様が気がします・・・

299 :デフォルトの名無しさん:03/07/06 16:23
300目前だ。

300 :デフォルトの名無しさん:03/07/06 18:54
折角なのでゲト

301 :デフォルトの名無しさん:03/07/06 21:34
DirectX9なのですが、
D3DXCreateTextureで複数種類のビット深度のテクスチャを同時に作成し、使用しても、
問題ありませんか?

つまり、
・D3DFMT_A8R8G8B8・D3DFMT_R5G6B5・D3DFMT_A1R5G5B5
 以上のテクスチャを各一枚ずつ作成し、そのテクスチャを貼り付けたポリゴンを
 レンダリングしても問題ないだろうか。
・また、ビット深度を統一しないと問題のある環境はあるのだろうか、という事です。

(自分で実験したところでは、GeForce、Radeon7500、TNT2で大丈夫でしたが)


「 (゚Д゚)ハァ?ビット深度なんて統一する必要はねぇ!そんなこと考えもつかなんだ」とか
書かれそうで怖いですが

302 :デフォルトの名無しさん:03/07/06 21:43
>>301
フォーマットごとにCheckDeviceFormatで問い合わせる。

303 :デフォルトの名無しさん:03/07/06 23:36
Direct3Dオブジェクトの作成に失敗した時に、
WinMain関数内で、retun 0;でプログラムを終了させているのですが、
return 0;の前に、FreeLibrary(hInstD3D8);というのを実行しているソースがあったのですがこれは何をやっているものなんでしょうか?
コメントで、最初に読み込んだd3d8.dllを開放と書いてありました。

304 :デフォルトの名無しさん:03/07/06 23:50
関数名まんまの意味だが。ってか日本語コメントもあるし。
どっかにLoadLibraryってのはないか?

305 :デフォルトの名無しさん:03/07/07 00:23
>>304
それがないんですよね。
MSDNのヘルプは見たことは見たんですが。
推測でプログラム起動時に自動でdllを読み込んでいるので、それを開放するという意味だとは思うのですが。
プログラム終了時にdllの開放をプログラマ自身が行わなくてはいけないの?

306 :デフォルトの名無しさん:03/07/07 00:25
なんかの本についてたソースにFreeLibrary使ってたのがあったな。
LoadLibraryなんか使ってないのにw

当時は何のことかサッパリ分らんかったなぁ・・・。

307 :デフォルトの名無しさん:03/07/07 01:45
済みません、どなたか教えてください。

某オンラインゲームのオートパーロットツールをPerl+Win32で
作ってるものです。
現状のテザインでは、某オンラインゲームの画面を、通常のGDI系APIで
キャプチャーして、比較分岐により自動キー入力を行っております。

次回バージョンアップで対象ゲームの描画方法が変わり、Direct3D8 の
SwapChain により、全画面表示でフリッピングが行われるようです。
こうなった場合、通常のGDI系APIでフロントバッファが参照できなく
なると思われますが、何らかの方法でフロントバッファをキャプチャー
することは可能でしょうか?

308 :デフォルトの名無しさん:03/07/07 01:55
BOTですか。

309 :デフォルトの名無しさん:03/07/07 02:04
>>305
よーわからんが、
とりあえずhInstD3D8を参照している別の場所を見つけるべし。
どういう値が入ってるかによってわかるかもしれん。

310 :デフォルトの名無しさん:03/07/07 02:36
>>309
hInstD3D8どこにもないw
グローバル変数にもないし、関数内でも定義されていない・・・
これ雑誌のプログラムなんですよね
そういえば、昔、これ書いてコンパイルした時、この変数がなくてこの関数の行をコメントにした記憶が・・・

311 :デフォルトの名無しさん:03/07/07 02:42
掲載されてるプログラムが全て正しいというわけはないからな。
明示的にロードしてるわけじゃないならFreeする必要もない。

312 :デフォルトの名無しさん:03/07/07 04:28
さっさと氏ね>>307


313 :デフォルトの名無しさん:03/07/07 05:26
ざわ・・・ざわ・・・

死ねとか言ってるよ。あの人。

ざわ・・・ざわ・・・

314 :デフォルトの名無しさん:03/07/07 06:10
誰かが殺神予告を発したもよう

315 :デフォルトの名無しさん:03/07/07 06:37
人に聞かないと分からんような奴が神など片腹痛いわ('A`)ノ
しかもBOTerときたらクソ。ゴミ。今年の横浜。

316 :デフォルトの名無しさん:03/07/07 06:45
横浜はゴミじゃありましぇん(´Д`)

317 :デフォルトの名無しさん:03/07/07 08:58
>>315
激しく同意!!
最後の6文字以外はなヽ(`Д´)ノ

318 :デフォルトの名無しさん:03/07/07 11:21
      / ̄ ̄ ̄ ̄ ̄ ̄\
    /     山 下     \
   /                 ヽ
    l:::::::::               |   うちにはBOTなんかいないよ
    |::::::::::   (●)    (●)   |    
   |:::::::::::::::::   \___/    | 
    ヽ:::::::::::::::::::.  \/     ノ

319 :デフォルトの名無しさん:03/07/07 11:30
1のリンク先の
- 宇治社中改(3D基礎講座)
http://www.cc.rim.or.jp/~devilman/
がなくなっているのだが・・・

320 :デフォルトの名無しさん:03/07/07 12:22
http://www.kohgakusha.co.jp/books/detail/4-87593-419-X

これから3Dを扱う上では、C#、DirectXの両方の知識が必要ということになります。

C++ではだめなのかい?

321 :デフォルトの名無しさん:03/07/07 16:57
C#じゃ無い本にすれば良いだけだろ
アホ?

322 :デフォルトの名無しさん:03/07/07 16:58
C#覚えるとC++に戻る気にならないらしいけどな

323 :デフォルトの名無しさん:03/07/07 17:03
殆どVB感覚で(?)COMオブジェクト使える点は良いと思う

324 :デフォルトの名無しさん:03/07/07 17:11
>>322
C#覚えるとC++のよさが益々引き立ったんだが


325 :デフォルトの名無しさん:03/07/07 17:29
DirectXのAPIが綺麗なんはちょっとうらやましー

326 :デフォルトの名無しさん:03/07/07 19:22
>>321
いや、C#のほうがC++より向いているのかと聞きたかったのだが

327 :デフォルトの名無しさん:03/07/07 22:02
DirectX8以降ですが、天球の実装について解説してるサイトってありませんか?
円柱方式はなんとかなりそうなのですが、真上を向けないので・・・。

半球モデルをモデリング→Xファイルに→読み込んで内側に空のテクスチャ
でキレイにできるのでしょうか?
できればあらかじめXファイルを用意するのではなく、頂点をその場で
生成したいと考えています。

328 :デフォルトの名無しさん:03/07/07 22:19
>>327
星の数だけポイントライトを置くといいと思うよ。

329 :デフォルトの名無しさん:03/07/07 23:53
つまり何兆個も・・・

330 :327:03/07/07 23:58
>>328
(;´Д`)ヒィィ
と言いつつ、実は表現したいのは夜空ではなく青空なのですよ。

天球は一般的な3Dゲームでは当たり前のように使用されているのに、
なぜか後悔されている資料が全然ないですね。

331 :デフォルトの名無しさん:03/07/08 00:09
っていうか、なぜそこでXファイルが出てくるのか分からん。

332 :327:03/07/08 00:24
>>331
Xファイルに関しては憶測で言っています。戯言として解釈して下さい。

とすると、一般的な方法は全く違うのだろうということになりますが、
どのような方法でしょうか?

333 :デフォルトの名無しさん:03/07/08 00:25
問題の要点は、半球状のドーム+空のテクスチャでそれっぽく見えるか
と言う事だよね?
俺が実験した時は、それなりに綺麗に見えた。ただし、テクスチャは
ちゃんとドーム用に補正が入ったものを用意した。
他人がどうやっているかは知らない。

334 :デフォルトの名無しさん:03/07/08 00:43
>>327
正直に言えよ。
半球状に頂点を生成する方法が分らないって。
言えば教えてあげる。

335 :デフォルトの名無しさん:03/07/08 01:36
モデリングツールで半球作成。
でもテクスチャの作り方がわからない。

336 :デフォルトの名無しさん:03/07/08 02:17
マジでこのスレって>>335レベルなのか?
モデリングツール使うなら、そのモデリングツールでテクスチャも作れるだろ。

その程度なら、モデラなんぞ使わず
球の方程式から半球なんて楽に作れるだろ。
で分割した分だけUVも増加させれば良いだけじゃん。
で、そのUVだと天頂部分が歪むからテクスチャの上部をUVに合わせて
縮める感じで描けば、良い感じになる。

337 :デフォルトの名無しさん:03/07/08 02:34
>>336
正24面体をベースにしたほうが綺麗だよ

338 :デフォルトの名無しさん:03/07/08 02:36
24じゃねー20だ

339 :デフォルトの名無しさん:03/07/08 03:20
Photoshopで作ったロゴを表示させたいんですが、
文字だけをくりぬいた時に境界が背景色と混合してしまうという、
Webの透過GIFと同じ問題が出てきてしまいました。
これは避けられない運命なのでしょうか?

特に小さな文字の見栄えが物凄く悪いです。何か上手い対策は無いでしょうか。。

340 :デフォルトの名無しさん:03/07/08 03:51
>>339
境界のところにαブレンディングを使え。

341 :デフォルトの名無しさん:03/07/08 04:18
>>340
いや、そんな単純にはいかないんです。

TGAに焼くときに画像が背景色と混合してしまうことが問題なんです。
文字自体に半透明部分があるわけですから、
文字の境界の不透明度をnと置けば「n*文字+(1-n)*背景色」がTGA画像です。
ソレをDirectXでαブレンドすると「画像=(1-α)*DEST+α*SRC」で、
SRCをさっきの画像で置けば「α*(1-n)*背景色」という項が残ります。
Web上で見る透過GIFの境界がたまに白っぽくなってるのはこれが原因です。

例えばシューティングなんかで丸弾を作るときは、
RGBチャンネルを全て塗りつぶしてαチャンネルを●でくりぬきます。
RGBチャンネルの時点で●を書くと境界部分が変に見えるのと同じことです。

342 :デフォルトの名無しさん:03/07/08 04:51
>>341
文字のアンチエイリアス部分が背景の色と混ぜて作られるから汚くなるってことか?
じゃあその混ざってる部分の透明度を完全に0にして混ざってない部分に手動でアルファを設定していけば?

343 :デフォルトの名無しさん:03/07/08 05:00
>>342
あふー、そうか… 元々の文字の透明度を0にしてしまえばよいんですね。
ちょっと結果がどうなるか分からないんですが風呂入ってからやってみます。
どうもありがとうございました。

344 :327:03/07/08 07:05
>>333
見た目は実用に耐えるものになりそうですね。
ありがとうございます。

>>334
半球状に頂点を生成する方法がわかりませんすいません(;´Д`)
>>336さんの方法でやってみます。ありがとうございます。

345 :デフォルトの名無しさん:03/07/08 21:47
D3DPRESENT_PARAMETERSって最初に設定する以外にも使う時ってありますかね?
グローバルとかで確保しといたほうが良いですか?

346 :デフォルトの名無しさん:03/07/08 21:51
必要になるたびに作っとります。

347 :デフォルトの名無しさん:03/07/08 22:10
D3DPRESENT_PARAMETERSのメンバのSwapEffectは何の値を設定したらいいのでしょうか?
日本語ヘルプを見たのですが、スワップチェーンという単語が出てきて、スワップチェーンを調べたら
アニメーションを滑らかにするためのもの(?)だとは分ったのですが、どの値を設定したらいいのかわからず。

348 :デフォルトの名無しさん:03/07/08 23:00
>>347
まずはヘルプの見方を勉強しろ。
プログラムの話はその後だ、突っ込む気にもなれん。

…いや、あえて言おう。ヘルプにメンバとメンバの型、
及び型の説明&型の列挙まで書いてあるぞ。
初心者ならいざすらず、初心者以前のレベルなのであえて言おう。
馬鹿はプログラムするな。

349 :デフォルトの名無しさん:03/07/09 00:20
英語ヘルプの場所教えてください
全然見つからない・・・

350 :デフォルトの名無しさん:03/07/09 00:21
英語版のヘルプファイルです

351 :デフォルトの名無しさん:03/07/09 00:21
☆頑張ってまーす!!☆女の子が作ったサイトです☆
       ☆見て見て!!
http://yahooo.s2.x-beat.com/linkvp/linkvp.html

352 :デフォルトの名無しさん:03/07/09 01:27
>>336
えー。
わざわざそこだけ別処理にする必要あるのー?
モデリングツールからもってくる流れはそのままでもいいんじゃない?
どうせ実際に使うときは雲やら星やら動かしたいときはモデリングツールで色々できるようにしといた方が楽じゃない?

353 :デフォルトの名無しさん:03/07/09 01:31
ShowWindow( hWnd, nCmdShow );
UpdateWindow( hWnd );

の前にDirectX初期化しといたほうがいいのでしょうか?

354 :デフォルトの名無しさん:03/07/09 01:40
>>352
良く読め。
>その程度なら、モデラなんぞ使わず
ってあるだろ。
別処理も何もそんな基本的なプリミティブは
コードを少し書く程度で生成や効果処理できるだろ。
モデラで作って、Xfileにでも吐き出すのか?
めんどうだろ。

355 :デフォルトの名無しさん:03/07/09 08:09
>>354
モデリングツールで確認できないじゃん。
不便じゃん。
プログラマしか介入できないじゃん。
嫌じゃん。

ビューワ作れよ!

って絶対言われるじゃん。
仕事増えるじゃん。
楽に作りたいじゃん。




みゃーみゃーみゃーみゃー

356 :デフォルトの名無しさん:03/07/09 12:18
題名がいいので寄らせてもらいますた。
最近、仕事ができません。一日中2chしてます。
ほんと、鬱だ氏のう

357 :デフォルトの名無しさん:03/07/09 14:29
>>356
キミにはこのスレがおすすめのようだ。(俺も)

※もう2chで時間を潰さないと誓うスレ※
http://pc.2ch.net/test/read.cgi/prog/1011527176/

358 :デフォルトの名無しさん:03/07/09 16:30
>>357
行ってきますた。
同じ悩みの人は多いんだなぁと1から700番の終わりまで
読んでたんで、また、時間潰しちゃいました。
今度は、「首吊る・・・」て題名のとこ探して行って見末。


359 :デフォルトの名無しさん:03/07/09 16:46
BackSurfaceの真ん中でなく注視点を少し上にずらしたくて
ViewPortを変更したりRenderToSurfaceを使ってみたりしたのですが
うまくいきませんでした
なんか簡単な方法ありますか?

360 :デフォルトの名無しさん:03/07/09 17:12
何かどううまくいかないか書かないで質問する奴って、いったい何を考えているんだろう?

361 :デフォルトの名無しさん:03/07/09 17:33
ツマンネ。
少しは、ゲートを読んで回路でも逆あせして公開しろよ。
んvとからでとかの画像を公開しろ。

362 :359:03/07/09 17:35
すいませんです。
一点透視の消失点を上に引き上げたいのですが、
ViewPortを変更してもゴミ(赤と緑のちらつき)がはみ出してくるだけでした。
RenderToSurfaceも同じでしたがこっちは単に使い方が悪いんでしょう。多分。
平行移動行列では地平線は上がりますが消失点(視点のZ軸方向)は中央なので駄目でした。

363 :デフォルトの名無しさん:03/07/09 17:36
透視変換行列に細工が必要

364 :359:03/07/09 17:43
有難うございました。jumpしてきます。

365 :sage:03/07/09 17:45
フラッシュムービー倉庫 宣伝カキコ
http://wave8.hp.infoseek.co.jp/flash/
↑おもしろいです

366 :デフォルトの名無しさん:03/07/09 18:20
DirectGraphicsで2Dを扱いたいのですが、
パレットによる抜き色(透過処理)はできなくなったのでしょうか?

もしそうなら、たしかAlphaを含む画像なら透過処理ができるみたいなので
ビットマップファイルから、Alphaを含む画像を動的に作成したいのですが、
なにか良い方法はありますか?
#これは、自作の画像圧縮&展開ルーチンが、Alphaに対応してないためです。

間違いがあったら指摘してください。


367 :デフォルトの名無しさん:03/07/09 18:47
αチャンネルつきのPNGファイルをそのまま使う。

368 :デフォルトの名無しさん:03/07/09 18:58
>>366
そのパレットに相当する色の部分にアルファ値を設定すればいいだけ
単純なループで出来るので特に考えるべきところはない

369 :デフォルトの名無しさん:03/07/09 19:49
>366
DirectX Texture Tool

370 :デフォルトの名無しさん:03/07/09 20:18
>>362
http://bbx.hp.infoseek.co.jp/cgi-bin/bbx.cgi?log=32&vew=382
マルチポストかよ

371 :デフォルトの名無しさん:03/07/09 20:59
なんか最近また教えてクンが増えてきたな。

372 :362:03/07/09 21:35
>>370
教えてもらったProj行列で駄目だったんでBBX炒ったのですが、
断り入れて往くのが良かったようですね。
ごみんなさい。

373 :362:03/07/09 21:37
あげてもーたー
hogehoge

374 :直リン:03/07/09 21:39
http://homepage.mac.com/maki170001/

375 :デフォルトの名無しさん:03/07/09 23:42
D3DXVec4Normalizeってどんなときに使うのでしょうか?

376 :デフォルトの名無しさん:03/07/10 01:37
>366
お手軽にいくならD3DXCreateTextureFromFileExでcolorkey指定する。


377 :デフォルトの名無しさん:03/07/10 02:48
>>375
D3DXVECTOR4をNormalizeしたいとき。

378 :デフォルトの名無しさん:03/07/10 08:01
>>377
どんなときに使うのでしょうか?
同次座標で扱うってことがどうも頭にイメージできません。

379 :366:03/07/10 08:21
なるほど、
メモリ上でAlphaを追加するか、
テンポラリファイルを作って〜Exで読み込むんですね?

わかりました。やってみます!
これで光明が見えました。ありがとうございましたっ!!


380 :デフォルトの名無しさん:03/07/10 09:23
>>378
法線とか使わないの?

381 :デフォルトの名無しさん:03/07/10 19:52
DirectX関係の関数が使いづらい
メンバも出てこないし、(を入力しても関数仕様が出てこないし・・・

382 :デフォルトの名無しさん:03/07/10 20:23
>>381
環境は? うちはVS.NET2003+DX9で問題ないけど。

383 :デフォルトの名無しさん:03/07/10 20:24
>>382
VC++6.0+DX9

384 :デフォルトの名無しさん:03/07/10 21:09
>>383
関連するヘッダファイルをプロジェクトに追加すればよろし。
1度追加したら削除しても大丈夫・・・だったような。

385 :デフォルトの名無しさん:03/07/10 21:26
ちがう。DirectXのインクルードディレクトリを追加。

386 :デフォルトの名無しさん:03/07/10 21:42
lpD3DDevice->SetVertexShader(D3DFVF_XYZRHW | D3DFVF_DIFFUSE);

SetVertexShader' : 1 番目の引数を 'const int' から 'struct IDirect3DVertexShader9 *' に変換できません。

どこかおかしいですか?

387 :_:03/07/10 21:43
http://homepage.mac.com/hiroyuki44/jaz09.html

388 :386:03/07/10 21:45
ヘルプ見たんですが、9では8のような使い方はできないんですか・・・。

389 :386:03/07/10 21:47
こういう風に使うのかな?

lpD3DDevice->SetVertexShader( NULL );
lpD3DDEvice->SetFVF( D3DFVF_XYZRHW | D3DFVF_DIFFUSE );

390 :デフォルトの名無しさん:03/07/10 21:52
>>389
そう。

391 :デフォルトの名無しさん:03/07/10 21:53
>>385
それだけじゃ出なく無いかな?

392 :デフォルトの名無しさん:03/07/10 22:16
D3DFVF_XYZRHW指定してシェーダーなんて使えたっけ?
なんでSetVretexShaderが出てくるんだろ??

393 :デフォルトの名無しさん:03/07/10 22:28
ブレテックスシェーダー

という自分も最近rendreとかretrunとかよくやっちまう(゚Д゚)

>>392
XYZRHWでもプログラマブルシェーダは使えるよ

394 :381:03/07/10 22:32
>>391
出なかった

395 :デフォルトの名無しさん:03/07/11 00:20
>>381
VC6 だと少なからず DirectInput については
ヘッダー参加させただけじゃ表示されないと思う。

#ifdef UNICODE
#define IDirectInput8 IDirectInput8W
#else
#define IDirectInput8 IDirectInput8A
#endif

っていう感じになってるから、

IDirectInput8* pInput;

これだと、表示されないはず。
このクラスの置き換えがtypedefでやってくれてると、メンバが表示されたりするんだが……


396 :デフォルトの名無しさん:03/07/11 01:13

シェーダ中で乱数を作るにはどうしたらいいんでしょう?
そういうことをしておられる方のHPないですか?

397 :デフォルトの名無しさん:03/07/11 01:18
頂点シェーダとすると状態を保持しないから無理なんじゃなかろうか。
頂点ストリームに乱数をはめ込むんじゃだめ?
ピクセルシェーダなら、テクスチャに乱数をまぶすとか・・・

398 :デフォルトの名無しさん:03/07/11 02:29
整数の固定レジスタに毎フレ、randの値でもセットしたら?

399 :デフォルトの名無しさん:03/07/11 04:45
>>398
それだと頂点ごとの乱数ではなくてDrawPrimitiveごとの乱数になってしまう。
動的頂点ストリームか動的テクスチャでCPU側から乱数値を入れるのが無難かと。
マルチ頂点ストリームが使えるなら使ったほうがいいかもしれんね。

400 :デフォルトの名無しさん:03/07/11 09:53
>>399
それって、例えば5万頂点あったら
フレーム毎に、5万のループ回して乱数をセットするって事?

プロシージャルテクスチャの方が良いかな
乱数テーブルになり得るかどうかは別として。

401 :デフォルトの名無しさん:03/07/11 12:13
VC++ .NET2003でDirectX 9.0 SDKについていたサンプルプログラムをビルドしようとしているのですが
DirectPlayを使用するプログラムはビルドすることが出来ません。
その際表示されるエラーメッセージが
「ChatPeer fatal error LNK1181: 入力ファイル 'dplay.lib' を開けません。」
というようなものです。

VC++ .NETの方ではインクルードファイル、ライブラリファイルともパスは通してあります。
またプロジェクト→プロパティ→リンカ→入力→追加の依存ファイルに 'dplay.lib' と書き込んであります。
この他にまだやるべき作業があるのでしょうか。

402 :デフォルトの名無しさん:03/07/11 12:29
マルチキターーーーーーーーーーーーーーーーーーーーー

403 :デフォルトの名無しさん:03/07/11 12:33
>>402
マルチではありません
別スレで誘導されたので

404 :デフォルトの名無しさん:03/07/11 14:01
>VC++ .NETの方ではインクルードファイル、ライブラリファイルともパスは通してあります。
>またプロジェクト→プロパティ→リンカ→入力→追加の依存ファイルに 'dplay.lib' と書き込んであります。

あぁ、ここでやるのが普通なんだね。
おれはコンパイラオプションに直接書いてた。
ひとつ降り甲になったありがとう。


405 :404notfound:03/07/11 14:12
余談だけど、
先週6.0から.net 2003にバージョンアップしたんだけど、
なんか.net使いづらくってさ。。
慣れれば.netのほうが使いやすそうに見えるんだけどね。
コードたためるし。ビックリ。


406 :デフォルトの名無しさん:03/07/11 14:38
アウトラインを切れば昔通りに戻るけど?

407 :デフォルトの名無しさん:03/07/11 14:44
.net重杉なのがイヤン
機能は文句ないのに

408 :デフォルトの名無しさん:03/07/11 15:05
>>405
逆(.NET->6)をやると使いづらいなんてもんじゃないよ

409 :デフォルトの名無しさん:03/07/11 15:07
>>407
2002?
なんか2003では軽くなったみたいどよ。俺もってないけど

410 :デフォルトの名無しさん:03/07/11 15:11
VC++6と心中するつもりだったが
そんなにいいのか.NETは

DirectXとC#も相性良いって話だしなぁ…

411 :教えて君(275):03/07/11 16:15
ClearメソッドのあとUpdateSurfaceでバックバッファへ書き込むと何も表示されないと、
ほざいていた>>275ですが、ようやく解決しました。

原因はClearメソッドでレンダリングターゲットしかクリアしてなかったからです。
3つ目の引数にD3DCLEAR_ZBUFFERを追加してやるとすんなり出来ました。

あぁ、、、恥ずかしい。穴があったら入れたいでつ、、、

412 :396:03/07/11 17:09
>>397-400
いろいろなご意見ありがとうございました。
とりあえず、テクスチャに乱数を仕込んでやっていこうと思います。
あと、動的頂点ストリームがよくわからないので少し勉強してきます。

413 :401:03/07/11 18:07
先の問題をVC++6.0でビルドしたところ、全く問題無く出来ました。
しかし.NET2003では相変わらずエラーメッセージが出てきます。
6.0の方は特に設定もしていないのですが・・・何が違うのか全く見当が付かない状態です。

414 :デフォルトの名無しさん:03/07/11 22:24
.net選んだ奴は、この先どうするの?
VC++7が出ますよ。

415 :デフォルトの名無しさん:03/07/11 23:43
でねーよバカ

416 :デフォルトの名無しさん:03/07/12 00:07
>>415
MSのホームページ見れ

417 :デフォルトの名無しさん:03/07/12 00:35
出ねーって。MS見てもどこにもないし。VS2003出たばかりなのにそんなもん出すわけないし。

418 :デフォルトの名無しさん:03/07/12 00:48
>>414
2003に含まれるVCのヴァージョンが7.10.3077
同一の物をどうやって選ぶんだ?

419 :デフォルトの名無しさん:03/07/12 06:44
>401
VC6があるなら、そこからdplay.libコピったらええやん。

420 :デフォルトの名無しさん:03/07/12 19:32
コンポーネント オブジェクト モデル

忘れないように書き込んでおこう

421 :デフォルトの名無しさん:03/07/13 00:23
mview.exeでC:\DXSDK\Samples\Media\skullocc.xを開こうとすると
リブートがかかる

422 :デフォルトの名無しさん:03/07/13 06:38
SetRenderStateでライトオフにすると、読み込んだ一部のxファイルの質感が
表示されない気がするのですが。気のせいですか?

423 :デフォルトの名無しさん:03/07/13 07:00
ライトをオフにしたらマテリアルが適用されないよ。これ常識。

424 :デフォルトの名無しさん:03/07/13 10:06
ライト使うと重くなるからイヤなんですが、
テクスチャーで誤魔化すしかないですかね・・・・

425 :デフォルトの名無しさん:03/07/13 12:57
>>424
自前でライティング計算、これ常識。

426 :デフォルトの名無しさん:03/07/13 13:33
>419
よーわからんが、そーいう問題なのか?


427 :デフォルトの名無しさん:03/07/13 14:00
ライトよりもテクスチャの方が重いと思うのだが

428 :デフォルトの名無しさん:03/07/13 14:13
頂点数によるだろ。

429 :デフォルトの名無しさん:03/07/13 14:22
頂点数が多くても少なくてもテクスチャの方が重い

430 :デフォルトの名無しさん:03/07/13 14:48
>>429
TextureのSizeと、ボードのスペックによるかと。


431 :デフォルトの名無しさん:03/07/13 15:49
AppWizard便利ですか?
もしかしてVC.netかったほうが良いですか?

432 :デフォルトの名無しさん:03/07/13 17:22
私のマンコみたいかな♪

http://akipon.free-city.net/page001.html

433 :デフォルトの名無しさん:03/07/13 18:23
今更DirectX8でPrimitive使った2Dクラスを書いてみたのですが、
拡縮フィルターが思うように設定出来ません。
MAGFILTERにLINEARを設定すると、XYZRHWでの等倍表示でも
滲んでしまいます。

普通に、等倍の時はそのまま、拡縮時はバイリニアと言う様に
適用するにはどうしたら宜しいのでしょうか。

434 :デフォルトの名無しさん:03/07/13 18:31
描画直前に等倍かどうか調べて、フィルタを設定すればいいんじゃない?

435 :デフォルトの名無しさん:03/07/13 18:35
そこ迄しないといけないんでしょうか;

436 :デフォルトの名無しさん:03/07/13 18:40
>>433
LINEARでも歪ませない方法はあります。
>>87-89 あたりを参考に。
ヘルプにもピクセルとテクセルの一対一対応の仕方が書いてあるので調べてみて。

437 :デフォルトの名無しさん:03/07/13 18:58
ドライバがアホだと滲むから>>434の方法を薦めるよ。

438 :デフォルトの名無しさん:03/07/13 19:04
>>436
78〜はフィルタじゃなく、D3DXCreateTextureFrom〜の丸め込みとかの
問題だった様に思えます・・・
ヘルプ探してみます。

>>437
D3DXSpriteはScalingがNULLならPOINT、あればLINEARとかして
るんですかね。
テクスチャとかが変わらない限りインデックスに溜めて込んでから
描画する様にしたんですが、その方法でやるとしたら、等倍・!等倍の
時もフラッシュせなあかん様になるんですよね・・・

439 :436:03/07/13 19:16
>>438
いあ、88はピクセルとテクセルの一対一対応の話。
ピクセルは点ではなく面積をもつ正方形なので、
ピクセルの(0,0)-(640,480)のスクリーン座標は(-0.5,-0.5,639.5,479.5)です。
スクリーン座標の原点はピクセル(0,0)の中央。
これにあわせれば歪まない…と思ってたらドライバがアホだと駄目なんだそうで_| ̄|○

インデックスバッファに溜め込む場合はLINEARを使いたいだろうし、
とりあえずは、この方法でやるしかないんでないかと。

440 :デフォルトの名無しさん:03/07/13 19:26
ぉぉぉぉ ヘルプの「テクセルとピクセル間の直接マッピング」も参考にして
騙されたつもりで座標全てを-0.5したら滲まなくなりました!
有り難うございました。

終点絡みかとか色々悩んだのが馬鹿らしい・・・
しかしこれで良いんだろうか。

441 :デフォルトの名無しさん:03/07/13 19:52
>>440
FAQだYO!

442 :デフォルトの名無しさん:03/07/13 20:00
ドライバによっては0.5ずらすと逆に滲むという罠

443 :デフォルトの名無しさん:03/07/13 20:02
PrimitiveとPrimitiveUPで速度差ってありますか?
うちの環境で試した限りでは大して速度差がでなかったんですが・・・。
(128*128頂点の矩形を画面内に表示)

444 :デフォルトの名無しさん:03/07/13 20:21
>>441
一応かなり必死にぐぐってたんですが、MAGFILTER・LINEARに
原因があると思いこんでたので辿り着けなかった様です。スマソ

445 :デフォルトの名無しさん:03/07/14 05:56
>>443
いろんな環境で試すのは大変だねえ、としか言いようがないなあ。

446 :山崎 渉:03/07/15 09:49

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

447 :デフォルトの名無しさん:03/07/16 10:59
age

448 :デフォルトの名無しさん:03/07/16 18:35
hage

449 :デフォルトの名無しさん:03/07/16 20:38
ハゲではありません。涼しい髪型の人です。

450 :デフォルトの名無しさん:03/07/16 20:44
冬には寒い髪型の人になります。選択権はありません。

451 :デフォルトの名無しさん:03/07/16 20:45
かわいい女の子たちが脱いじゃいました★
http://www3.free-city.net/home/espresso/au/sweety.html

本能がむき出しになっちゃうかもよ!?
http://www3.free-city.net/home/espresso/princess/peach.html

今からはここで夜の時間を過ごしてあそびましょう〜☆
http://www3.free-city.net/home/espresso/au/xxx.html


452 :デフォルトの名無しさん:03/07/16 21:31
DirectDraw は非常に高速に描画できると誰かが言ってたので、
試しにスプライトを10万個表示させてみたらFPSが7前後で
カクカクでした。

1万個なら50〜60だった。100万個で0.8位だった。

453 :デフォルトの名無しさん:03/07/16 21:47
>>452
騙されたな。GDIの方が高速に描画できるよ。ためしてみ(w

454 :デフォルトの名無しさん:03/07/16 21:48
毎フレ10万スプライトで60fpsってどのくらいのボードだと出来るんだろ

455 :デフォルトの名無しさん:03/07/16 21:59
たぶん>>452はDirectDrawがハードウェアの
機能をフルに使うためのAPIで性能はハードウェアに
依存することを知らない素人。

456 :デフォルトの名無しさん:03/07/16 22:23
1600x1200x10万 は当分無理だろうけど、
32x32・16x16程度なら現時点でも出来んじゃない。

457 :デフォルトの名無しさん:03/07/17 06:40
>>452はフィルレートをしらない素人

458 :デフォルトの名無しさん:03/07/17 08:23
>>452はコマンド発行のオーバーヘッドをしらない素人

459 :デフォルトの名無しさん:03/07/17 11:57
>>452は素人

460 :デフォルトの名無しさん:03/07/17 13:08
>>452は仕(4)事(5)人(2)

461 :デフォルトの名無しさん:03/07/17 15:28
厨房度UP

462 :騙された素人:03/07/17 19:26
どんなにがんばっても、60fps以上にならないんですけど、
なんでかな?

463 :デフォルトの名無しさん:03/07/17 19:46
二匹目のドジョウは居ないぞ。釣り師が

464 :デフォルトの名無しさん:03/07/17 21:07
DirectXでマルチビューを行っているサンプルソースってありませんか?
解像度変更等でデバイスをリセットする際の処理が良くわからなくて・・・。

465 :デフォルトの名無しさん:03/07/18 03:28
DirectXでゲームを作っているのですが、このようなゲームを完成させて方は
最終的にどのぐらいのクラス数、ファイル数になりましたか?

一人で作業しているのですが、まだ基本部分ができた段階でファイルが
68個になってしまいました。
この程度ならまで手に負えるのですが、これから先大丈夫なのか
不安になってしまいまして__| ̄|○

466 :デフォルトの名無しさん:03/07/18 03:41
そういうのはゲ製で聞いたほうがいいかと
それにクラス数とかいう問題でもないし。

467 :デフォルトの名無しさん:03/07/18 04:53
>>466
ちょいと疑問なんだけど、DirectXでゲームじゃなくて何つくってんの?
モデリングツールくらいしか思いつかないけども。

468 :デフォルトの名無しさん:03/07/18 05:58
今は物理シミュの表示とかに使ってます。
他には単にVSとかPSでなんかやったりとか。

という俺もゲーム製作の関連でDX覚えようとしたわけだが
今はゲーム作るよりもそういうの作ってるほうが楽しい。

469 :デフォルトの名無しさん:03/07/18 06:36
>>465
安心しろ。
おいらのプロジェクトは200を超えたぞ。(ヘッダは抜き)

470 :デフォルトの名無しさん:03/07/18 07:15
200越えをC言語でやってると思うと震えるね
C++は良かった

471 :デフォルトの名無しさん:03/07/18 10:16
Direct3Dで、MAPってどうやって作ってる?
これもモデリングツール?
俺はテキストでシコシコとやっとるのですが。。。

472 :デフォルトの名無しさん:03/07/18 10:48
>>470
Delphでつ。(だからヘッダはなし)

473 :デフォルトの名無しさん:03/07/18 11:09
Delphプ

474 :デフォルトの名無しさん:03/07/18 12:45
>>471
objとかでエクスポートしてエディタに読み込んでポリゴンごとにエリアとか定義したあと独自形式でエクスポート

475 :デフォルトの名無しさん:03/07/18 21:45
>>473
Delphi だよぉ ・゚・(つД`)・゚・

476 :デフォルトの名無しさん:03/07/19 00:19
32bitRGBAのテクスチャを、ロック等はせずに、
αやブレンドでグレースケール化する事は可能でしょうか?

RGB単色にはブレンド設定で簡単に出来ましたが、ここから何か
もっと色々やると出来そうな気がしないでも無い様な。

477 :デフォルトの名無しさん:03/07/19 00:38
>>476
ピクセルシェーダでグレースケールすることは簡単だけどねぇ。
それ以外の方法でロック無しと言われるとちょっと思いつかない

478 :デフォルトの名無しさん:03/07/19 01:39
>>476
何が目的かによるんじゃない?
その処理に意味が無ければ、
写真屋かなんかで欲しい画像に加工して使えば良いかと。

nVIDIAやATIの最新サンプルを見ても、その手のTextureは予め全て用意してある。
プログラムで処理するのは、その処理が目的の場合のサンプルなどしか無いよ。

479 :476:03/07/19 01:47
エフェクトの一つとしてその場でリアルタイムにやりたいので、
予め用意する事は出来ません・・・
手持ちのカードがGeFo2MX・GeFo2Proなので、ピクセルシャーダも
無理です(つД`)

最小で256x256程のテクスチャを60fpsで処理したいので、ロックでの
処理はほぼ不可能・・・
他にも640x480のDIBを毎フレームテクスチャに書いてて、そこで既に
限界に近かったり

480 :デフォルトの名無しさん:03/07/19 01:56
どういうエフェクトにするつもりなん?
徐々にグレースケール化みたいなのだったら、
グレースケール画像と元画像をブレンドしてみるとか。

481 :デフォルトの名無しさん:03/07/19 02:43
>>476-478
こんな簡単なことも分からないのかッ!!
D3DTOP_DOTPRODUCT3で内積取るだけだよ。
D3DTSS_COLORARG2はD3DTA_TFACTORあたりで。

テクスチャのαが未使用なら予めそこに入れておいてD3DTA_ALPHAREPLICATE
あたりで処理することもできる。

482 :477:03/07/19 02:51
固定機能あんまり使ったことなかったからそんな手は思いもつかなかったPO!
勉強になりますた

483 :厳しい突っ込み:03/07/19 02:55
>>479
申しわけないが、技術の程が…
何で最小で256x256?最大での間違いでしょ?
って突っ込みたくなる。

それに、エフェクトって事は描画結果が欲しい物であり、
全ての前処理まで無理にリアルタイム処理する必要は全く無い。
そんなの、プログラム初心者が勉強用にやる程度の意味しか無いよ。

>予め用意する事は出来ません・・・
この発想じゃ、そのエフェクトとやらの処理や理解なんて無いだろ。
どんなエフェクトよ?

484 :476:03/07/19 03:44
>>481
どもです。
自分もCOLOROPての使った事無かったのですが、ヘルプ眺めてたら
色々出来そうですね・・・
とりあえずグレースケールには成りましたが、REFACTORの値が
いまいち解らない・・・ どうしても暗くなってしまふ

>>483
最小256x256に何か問題ありますか?

RENDER_TARGETでレンダリングしたテクスチャの一部を
グレースケールのテクスチャとして使うってフィードバックの様な
事をしたかったんですが、この手の物も予め用意出来るんでしょうか?


485 :デフォルトの名無しさん:03/07/19 05:33
>最小256x256に何か問題ありますか?
圧縮テクスチャ?

486 :デフォルトの名無しさん:03/07/19 05:54
>>484
DirectX SDK ヘルプより抜粋

>入力は、符号付きデータをシミュレートするため、
>使う前にすべて 0.5 シフトする (y = x - 0.5)。
>結果のスカラーは、正の値に制限され、

というわけで、輝度が 0x80 未満のピクセルは黒にされてしまうため
まともな白黒フィルターには使えないようだ。

まぁ、ピクセルシェーダーを使えない環境なら諦めろってことか。

487 :デフォルトの名無しさん:03/07/19 09:40
一旦0x80〜0xffにしてしまえばいいんじゃない?
0x80の白黒画像に対しα値0.5で加算合成するのかな。

αはALPHAOPをスルーにしておけば残るんだろうか。

488 :476:03/07/19 14:38
白のテクスチャ無しポリゴンを0x80で重ね、REFACTOR192にしたら
見事に欲しかった映像に成りますた。
階調は半分に落ちてるんでしょうけど、とりあえず問題無しです。
有り難うございました。

489 :デフォルトの名無しさん:03/07/19 16:03
そもそもグレースケール化の時点で情報が1/3になってしまうんだから
気にすんな。

490 :デフォルトの名無しさん:03/07/19 17:01
>>489
はあ?何言ってんだお前は?

491 :デフォルトの名無しさん:03/07/19 17:56
>>488
REFACTOR って TEXTUREFACTOR だよね?
192 という数字はなんで出てきたの?
ここは 0xffa4c98d になると思うんだが。

492 :476:03/07/19 18:52
>>491
逆に、その数値は何処から出てくるんでしょか・・・

何処みても
>D3DTA_TFACTOR テクスチャ ブレンディング引数、または
> D3DTOP_BLENDFACTORALPHA テクスチャ ブレンディング処理を
>用いたマルチテクスチャ ブレンディングで使用される色。関連する
>値は D3DCOLOR 変数である。
としか書いて無く、 0x80以下だと黒、0xffだと白なので、単純に、
0x80と0xffの中間の192にしたんですが・・・
実際には微妙に明るかったんで188にしましたが。

493 :476:03/07/19 18:59
あ D3DCOLOR_ARGBでRGB各色192です。

494 :デフォルトの名無しさん:03/07/19 19:05
ようしらねんけど
視覚的に青が暗いとかそういう話のような気がする。
具体的な数値は知らんが

495 :476:03/07/19 19:19
Yはおおよそ 0.3R + 0.59G + 0.11B ですが、この式を元に
RGBに重さ付けたのが 0xffa4c98dなんでしょうか?

そのまま試してみたらもの凄く暗くなり、/2+0x80してみたら
明るくなってしまいました。

496 :491:03/07/19 19:31
>>495
そう。

DotProduct3 の SDK サンプルにある関数に
A : R : G : B = 1.0 : 0.29 : 0.58 : 0.11 (あ、RGB が1.0になってねー)を
渡してできた数、なんだけど・・・。

少数第3位以下を単純に切り捨てたのはこちらのミス。申し訳ない。

497 :476:03/07/19 20:04
>>496
正直、昨日間違ってDotProduct3のディレクトリ消してしまいました。
脊髄反射的でシフト+DEL・・DotProduct3は帰ってこない(つД`)

64が0.33相当で、128が0.66とするとー 58・114・21かな。
64*3より1多いけどとりあえずスルーで+128しての186・242・149 かなー
十六進で ba f2 95・・・ a4c98d とは少し離れてる?
一応この数値で暗すぎもせず、明るすぎもせずそれっぽい
絵になりました。
a4c98dだと極端に暗く、/2+128 -128/2+192 とかしても無理がありました。

DotProduct3の注釈にはなんて書いてあったんだろう・・・

498 :491:03/07/19 20:25
>>497
各要素について 127.0f * vector + 128.0f を計算してるだけの関数です。
だから例えばR要素は 127 * 0.29 + 128 = 164.83 ≒ 0xa4 になる。

こちらも 0xffbaf295 で試したところ、確かにより明るくなるが
よく見ると、白く飛んでいる感じになった。
この場合、各要素の比重が高すぎて、加算で飽和しまくるので、
全体的に白くはなるが、明るい部分の諧調が失われていると思われ。

499 :476:03/07/19 20:54
あ 本当だ・・飛びまくってる。
単体で試して無かったので気付きませんでした。
もう一度計算し直したら今度は 189 207 178 て数字が出たけど、
これも飛ぶなぁ。
かと言って、 127*n+128の数値だと、明らかに暗くなってしまいます・・・

何か根本的に間違ってる様な気が。 原因解る迄おとなしく単純平均の
各色192使う事にします。

500 :476:03/07/19 21:10
つか、単体で見たら平均と思ってた192(188)の時点で既に飛んでますたw
前処理諸々+後処理諸々で見てたら、特に飛んでる様に見えなかった
んだけどなぁ・・・

何だかどつぼにはまった様な。

501 :デフォルトの名無しさん:03/07/19 22:13
>>488
> 白のテクスチャ無しポリゴンを0x80で重ね

ここから間違ってる余寒。
>>487をよく読もう。

502 :デフォルトの名無しさん:03/07/20 01:07
グレー(0x80)で塗りつぶしたテクスチャを使って
0x00〜0xff を 0x80〜0xff に圧縮する処理を、
DotProduct3 を行うテクスチャステージの前のステージでやればどうだろ?

503 :デフォルトの名無しさん:03/07/20 01:35
ARGB = 0x80ffffff で塗りつぶしたテクスチャで
D3DTOP_BLENDTEXTUREALPHA を行った後、
0xa6ca8d で DotProduct3 したらできた。

諧調は半分にはってるはずだが、
暗い部分が黒く潰れることも、明るい部分が白く飛ぶこともない。

504 :デフォルトの名無しさん:03/07/20 08:36
フルカラーの最下位ビットなんて人間には違いが分からないから気にする
必要ないって。
そもそも階調が落ちてなくてもグレースケール化する際のスケーリングで
最下位ビットは落ちてしまうし。

っていうか何も演算しないでテクスチャをそのまま描画するだけでも
GeForceは最下位ビットを落としてしまうし。

505 :デフォルトの名無しさん:03/07/20 10:07
TEXTUREFACTOR が 0xa6ca8d だと、元のピクセルが真っ白でも
演算誤差のせいで出力が 0xff まで到達しないので、
もう少し大きめの数に調整したほうがいいかも。

まぁ、どうせポリゴンに貼るときに変形&補間されてしまうし、
ライトにだって影響されるしね。
あんまり細かく考えてもしかたないか。

506 :476:03/07/20 18:30
どうしても潰れる・・・

>ARGB = 0x80ffffff で塗りつぶしたテクスチャで
>D3DTOP_BLENDTEXTUREALPHA を行った後、
ここは、0x80ffffffのポリゴンを SRCALPHA/INVSRCCALPHAの
ブレンドで、塗りつぶしても同じ事ですよね?

507 :デフォルトの名無しさん:03/07/21 09:48
DotProduct3でグレースケールはできたけど、アルファでテクスチャの
透明度を変えるってのができない。ウワァァァァァン
D3DRS_ALPHABLENDENABLEをTRUEにするだけで全然グレースケールでもなくなるし・・・
なんだこりゃ

508 :デフォルトの名無しさん:03/07/21 10:12
それってもしかして単にALPHAOPの設定とかしてないだけだったりして?

509 :507:03/07/21 13:00
各頂点のdiffuseに0x80ffffff;
テクスチャ0 グレースケールにしたい画像
テクスチャ1 白・不透明
D3DRS_TEXTUREFACTOR 0x00a6ca8d
D3DRS_ALPHABLENDENABLE, FALSE
D3DRS_SRCBLEND, D3DBLEND_SRCALPHA
D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA
0, D3DTSS_COLOROP, D3DTOP_BLENDDIFFUSEALPHA
0, D3DTSS_COLORARG1, D3DTA_TEXTURE
0, D3DTSS_COLORARG2, D3DTA_DIFFUSE
1, D3DTSS_COLOROP, D3DTOP_DOTPRODUCT3
1, D3DTSS_COLORARG1, D3DTA_CURRENT
1, D3DTSS_COLORARG2, D3DTA_TFACTOR
0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1
0, D3DTSS_ALPHAARG1, D3DTA_TFACTOR
0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE
1, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1
1, D3DTSS_ALPHAARG1, D3DTA_CURRENT
1, D3DTSS_ALPHAARG2, D3DTA_CURRENT
2, D3DTSS_COLOROP, D3DTOP_DISABLE
↑の条件でグレースケール。
さらにD3DRS_ALPHABLENDENABLEをTRUEにし、TEXTUREFACTORのアルファ部分に濃度入れれば
濃度変更可能と思ったのだがうまくいかない。
ちなみにGeForce3 ドライバ44.03。


510 :デフォルトの名無しさん:03/07/21 13:09
9は普及したと見ていいのだろうか?

511 :476:03/07/21 14:57
その後色々弄った挙げ句に、LOCKしてのRGB/3と DOTPRODUCT3を
数フレーム毎に切り替えて見比べてたら、170でRGB/3ときっちり
同じになりました。

170て数字は何処からどう計算すると出てくるんだろう(´д`)

512 :476:03/07/21 15:05
あ 170-128 *3は126だから このままa6ca8dにすれば良いのかな。

513 :デフォルトの名無しさん:03/07/21 15:53
日記は他所でやってくれんかのう(´・ω・`)

514 :デフォルトの名無しさん:03/07/21 17:37
たしかにうざったい

515 :デフォルトの名無しさん:03/07/21 20:56
もうちょっと他人の興味を引くことを書けっつーんじゃ。
面白いダジャレとか。

516 :デフォルトの名無しさん:03/07/21 21:29
誰とセックス?

517 :デフォルトの名無しさん:03/07/21 21:30
夏の煽りはキレもコクもないな。

518 :デフォルトの名無しさん:03/07/21 21:42
DajareX

519 :デフォルトの名無しさん:03/07/21 22:02
夏のネタはキレもコクもないな。

520 :デフォルトの名無しさん:03/07/21 23:28
そうか、夏休みに突入したのか。道理で。

521 :デフォルトの名無しさん:03/07/21 23:56
変なのが迷い込んできたな。

522 :デフォルトの名無しさん:03/07/22 20:59
C#でDirectXのインテリセンスが突然出なくなったんですが、
何か解決方法あるんでしょうか?(再起動しても無理でした)


523 :デフォルトの名無しさん:03/07/22 21:45
>>522
状況説明が少なすぎる。

C# は触ったこと無いんでわからないが、
C++ なら .ncb ファイルを削除して再起動すると直ることもある。

それでダメなら単純に構文が間違ってるとか。
コンパイルは通った?

.NET スレで聞いたほうが良いと思う。

524 :デフォルトの名無しさん:03/07/22 22:15
>>522
なんか上のほうの文で構文を間違えると下の方が影響受けて出なくなることがあるよ
とりあえず、コンパイルしてミスを直してもだめだったらお手上げ

525 :デフォルトの名無しさん:03/07/22 22:15
まー523と同じこといってるんだがw

526 :522:03/07/22 23:13
コンパイルは通ります。
というか、つい直前までは普通に出てたんですよ。

DirectX関係のdllの参照を切って、参照しなおしたり、
C++のncbに当たるようなファイルを消して再起動もしましたが、
変化ありませんでした。

現在手元にないので、ファイルの詳細は分からないのですが・・・。
構文が長くなったり、変数が増えると表示できなくなる事があるんでしょうか?

527 :デフォルトの名無しさん:03/07/23 00:16
未だにDirectX7で書いています。
質問なんですが、DirectDrawCreateEx(...)の代わりにCoCreateInstance(...)を使用して
DirectDraw7インターフェイスを取得しているのですがDirectX7のインストールされていないPC
で実行するとCoCreateInstance(...)の所で落ちてしまいます。
エラーが帰ってくればエラーメッセージを表示して終了できるのですが。

開発環境はVC++ 7.0 professional.SDKはDirectX7。ランタイムはDirectX8。
落ちる環境はWindows98をインストールしたたけのPC。ランタイムはDirectX5?

...
 if (GetProcAddress(hModule, "DirectDrawCreateEx") == NULL) {
  // DirectX7が入ってないのでメッセージ出して終了
 }
...
とりあえず今はこんなコードで回避はしてますが根本的な解決には至ってません。
情報ください。


528 :デフォルトの名無しさん:03/07/23 00:19
開発ソフトが割れだと制限かかってたまに落ちるようだがそこは大丈夫?


529 :デフォルトの名無しさん:03/07/23 00:38
割れソフト使用してる当人じゃない所で発動するのか。 嫌な制限だな。藁

530 :デフォルトの名無しさん:03/07/23 00:46
開発してる人に質問なんですが、
テクスチャのサイズに制限とかかけてますか?

メジャーな物ではvoodoo系が256*256ですが、
それを除くとあらかた1024*1024に対応していますよね。
いいかげんvoodoo系捨てても問題なし?

531 :527:03/07/23 01:09
今使ってるVS.NET2003はMSDNから送られてきたCDでインストールしたよ。
これが問題?

532 :デフォルトの名無しさん:03/07/23 02:08
俺は市販ゲーでVoodoo対象外にしたが
そのことで不具合がどうのと言ってきた奴はいなかった。


533 :デフォルトの名無しさん:03/07/23 02:26
>>527
::CoInitialize() してないってオチじゃないよね?

534 :527:03/07/23 03:24
>>533
当然それは無いです。
それにCoInitialize()せずにCoCreateInstance呼んだらエラーリターンしてくると思いますが。

535 :527:03/07/23 05:32
やれやれ誰も答えられないんですね。
プログラマが集まる板とは言っても所詮は2ちゃんねるですか。
少しでも期待した自分が馬鹿でした。

536 :デフォルトの名無しさん:03/07/23 06:52
>>534
気が早すぎ(;´Д`)
漏れも前にやったことがあって、DirectX7以降が入ってない時にDirectDraw7の
インターフェースを得ようとするとダメっぽいね。ドキュメント通りにやると。

これは試してないんだけど、IID_DirectDrawのインターフェースを取得してから
QueryInterfaceするとか、もしかしたらCoCreateInstanceの第一パラメータが
CLSID_DirectDraw7だったら逝けるのかもしれない。

バージョンチェックならSDKにサンプル入ってるからそれで調べると言う手も。

537 :デフォルトの名無しさん:03/07/23 07:01
とりあえず、問題の CoCreateInstance() の呼び出し部分を書くのが筋かと。
あと、なんでそこで落ちることが分かったのか。

単に同様の不具合を経験した人間から
お安く解決策を得たいだけなら、このまま消えたほうがいい。

538 :デフォルトの名無しさん:03/07/23 08:33
GetProcAddress以外にどうしろと?

539 :デフォルトの名無しさん:03/07/23 09:40
DirectX7のインストールされていないPC でDirectX7インターフェース取得しようとするとエラーになるって当然じゃない?バカ?ネタ?

540 :デフォルトの名無しさん:03/07/23 09:56
>>539
お察しください

541 :デフォルトの名無しさん:03/07/23 10:23
>>539
いや、CoCreateInstance がエラーを返さずに落ちるってことだろ。
仕様なら REGDB_E_CLASSNOTREG を返すはず。

VC++6のヘルプによると、このような記述がある。
>Passing into this function any invalid and, under some circumstances,
> NULL pointers will result in unexpected termination of the application.
だから、CoCreateInstance の部分を書いてほしかったのだが……

542 :デフォルトの名無しさん:03/07/23 10:27
ちなみに .NET 2003 MSDN ライブラリには >>541 の記述はないんだよね。
これが後に修正されたことを意味するなら、527 は Windows98 をアップデート
してみるといいかもいれない。

543 :527:03/07/23 12:58
>>535
おいおい誰だお前は・・・。

544 :527:03/07/23 13:24
コードはMSのサンプル、d3denum.cpp内DriverEnumCallbackを参考にしてるのですが
DirectDrawCreateEx()の部分をCoCreateInstance()系に変更しています。

>>534
ご指摘の場所、CLSID_DirectDraw を CLSID_DirectDraw7 にしたら落ちずにエラーが帰ってきました。
hr = CoCreateInstance(CLSID_DirectDraw7, NULL, CLSCTX_ALL, IID_IDirectDraw7, (LPVOID*)&pDD);

サンプルやドキュメントを鵜呑みにしてはダメですね。
みなさんありがと。

545 :527:03/07/23 13:27
失礼。上のレス534でなくて536さんでした。

546 :536:03/07/23 23:41
>>544
上手くいったんですな。ヨカタ。
しかし、何で一般保護エラーでるんだろ…(;´Д`)

547 :デフォルトの名無しさん:03/07/24 00:18
クラスが存在しない場合はエラーで返してくれるが
存在するクラスを使って存在しないインターフェイスを要求したら落ちるってことじゃね?

548 :デフォルトの名無しさん:03/07/24 00:25
535みたいな事をいう厨房なんか無視しろよ

無駄なライブラリつくって一生オナってろ


549 :548:03/07/24 01:47
すいませんでした。言い過ぎました。一生とは長すぎました。一週間ぐらいで
いいです。ほんとにおさがわせしました。

550 :デフォルトの名無しさん:03/07/24 02:40
やっぱID欲しいな・・・。長期休暇期間限定でいいから。

551 :デフォルトの名無しさん:03/07/24 02:41
誰も掛からず、ついには自作自演か。

552 :デフォルトの名無しさん:03/07/24 10:01
以上、
>>522-551まで自作自演ですた。

553 :デフォルトの名無しさん:03/07/24 17:13
http://www.microsoft.com/downloads/details.aspx?FamilyID=a6dee0db-dcce-43ea-87bb-7c7e1fd1eaa2&DisplayLang=en

554 :デフォルトの名無しさん:03/07/24 18:24
9.0bのSDKマダァ?

555 :デフォルトの名無しさん:03/07/24 19:39
>>554
とっくにきてるけど?

556 :デフォルトの名無しさん:03/07/25 07:29
もう9.0bなんて出たの?

557 :デフォルトの名無しさん:03/07/25 07:55
開発キットに影響あるん?

558 :デフォルトの名無しさん:03/07/25 08:34
日付を見る限り、ランタイム等の更新だけのようだ

559 :デフォルトの名無しさん:03/07/25 09:59
誰か質問書けよ。暇でつまんねーから。

560 :デフォルトの名無しさん:03/07/25 10:43
9.0bインストールしたら
vs2003で
.NETアセンブリ'Microsoft.DirectX.dll'が見つかりませんと出て
ビルドエラーになります。



561 :デフォルトの名無しさん:03/07/25 10:57
http://www.39001.com/cgi-bin/cpc/gateway.cgi?id=ookazujp
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000001&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000002&pid=p000000244
http://www.bannerbridge.net/cgi-bin/click.cgi?mid=b000000003&pid=p000000244
http://www.adultshoping.com/index.cgi?id=1057809839
(屮゚∀゚)屮 キチャッタ↑
(;´Д`)ハァハァ(;´Д`)ハァハァ(;´Д`)ハァハァ(;´Д`)ハァハァ……ウッ!!
ガ━━(゚Д゚;)━━ン!

!!!!! ━━━━━━(゚∀゚)b━━━━━━ グッジョブ!!!!!


562 :デフォルトの名無しさん:03/07/25 11:05
>>560
"Microsoft DirectX.dll" をインストールしましょう。

以上

ほれほれ、もっと質問こいや!

563 :_:03/07/25 11:08
http://homepage.mac.com/hiroyuki44/

564 :デフォルトの名無しさん:03/07/25 11:09
ああ、560がつまんねーレス返しそうなんで細かく教えとくか。
ランタイムのダウンロードページのインストール方法の項目をよく読め。

以上

565 :デフォルトの名無しさん:03/07/25 17:49
こんにちは。質問に来ました。うふふ。

LPD3DXFRAMEとか、頭についているLPって何の意味があるんですか?
ただのポインタなんだから、D3DXFrame*とかの書き方でもいいんじゃない
ですか?

うふふ。何分で答えが返ってくるかしら。

566 :デフォルトの名無しさん:03/07/25 18:40
お好きな方をお使いください

567 :デフォルトの名無しさん:03/07/25 19:25
答えになってません。 氏んで下さい。

568 :デフォルトの名無しさん:03/07/25 19:55
そんなの別にDirectXに限った事じゃないじゃん

569 :デフォルトの名無しさん:03/07/25 19:55
>>565
激しくスレ違い

570 :デフォルトの名無しさん:03/07/25 20:35
うふふ。答えがあるかしら、あら、566さん、あなたってはやいのね。

おかしいな。俺が聞いたことなのに、誰か知らん奴が答えになってないとか
言っておこってるぞ。

また来るわ。うふふ。

571 :デフォルトの名無しさん:03/07/25 21:25
文句はハンガリー大使館にどうぞ。

572 :デフォルトの名無しさん:03/07/25 21:29
マイクロソフトに聞きましょう

573 :デフォルトの名無しさん:03/07/25 21:55
'*'を隠したかったのかなぁ。
なんかパッと見、クラスでラップされてるように見えてカコイイ?から。
で、ずるずる規約として続けてるうちに
止めるに止められなくなって今に至ると。
クラスに憧れていたC時代の遺産。

574 :デフォルトの名無しさん:03/07/25 22:03
LPD3DXFRAME

D3DXFrame*
はかっこいいとかそういう問題ではなく、
複数の変数を作成する際に間違いを起こさないためのもの

D3DXFrame* frame1,frame2;
LPD3DXFRAME frame1,frame2;
違いは分かるよね?

575 :デフォルトの名無しさん:03/07/25 22:06
LPはFarポインタとNearポインタの名残だろう

576 :デフォルトの名無しさん:03/07/25 22:23
>>574
そういえば、そんな利点があったか。
普段ポインタ変数の複数宣言なんてしないから気づかんかった。

577 :デフォルトの名無しさん:03/07/25 22:32
C言語ポインタ完全性はにかいてあったような

578 :デフォルトの名無しさん:03/07/25 22:33
いまどき生のポインタを使うなんてナンセンスだね。

579 :デフォルトの名無しさん:03/07/25 22:59
>>574
真のC/C++プログラマはそもそも1行で複数のポインタ変数の宣言などしない。

580 :デフォルトの名無しさん:03/07/25 23:05
その根拠はどこから

581 :デフォルトの名無しさん:03/07/25 23:15
>>580
複数宣言する=初期化しない、だからじゃね?
よくわからんけど。

582 :デフォルトの名無しさん:03/07/25 23:28
  int* p = NULL; // お守り(^o^)v
  p = intarray;

583 :デフォルトの名無しさん:03/07/25 23:32
PじゃなくてLPなのはだなぁ、pだとバランスが悪いからlpを今でも使うんだよ。
俺は。

584 :デフォルトの名無しさん:03/07/25 23:44
真のDirectXプログラマはCComPtrを使う。

585 :デフォルトの名無しさん:03/07/26 01:42
>>583
lpだと lは上に凸、pは下に凸なのでバランス悪くない?とどうでもいいことを言ってみる

586 :デフォルトの名無しさん:03/07/26 02:12
エルピーダメモリの名前の由来考えればわかるだろ

587 :デフォルトの名無しさん:03/07/26 02:48
俺もこれに一票だな>>575
結局、オレが使い分ける前に、時代が変わってしまった…

588 :デフォルトの名無しさん:03/07/26 04:45
LPD3DXFRAMEとD3DXFrame*に関しては>>574が正解だろう。
「LP」については>>575が正解と。

今となっちゃロングポインタなんて・・・な。

589 :デフォルトの名無しさん:03/07/26 05:18
>>585
分かってねぇなぁ。
上に凸と下に凸で打ち消しあってバランスを取るんじゃねぇか。

590 :デフォルトの名無しさん:03/07/26 06:14
>>586
そうだったのか。一つ賢くなった。

591 :デフォルトの名無しさん:03/07/26 11:41
> D3DXFrame* frame1,frame2;

うそやー。C/C++でこんなことするヤツがいたら
一度に複数宣言するなと強制的に修正してやるぞ、俺は。
Doxygenとか使うときもアレだし。

/** frame1の説明 */
D3DXFrame* frame1;
/** frame2の説明 */
D3DXFrame* frame2;

592 :デフォルトの名無しさん:03/07/26 14:37
DirectX9を入れたら
DirectX7が見つかりません
というエラーが出て起動出来ないものが出てきたのですが
7をDLしてもインスコ出来ません(すでに新しいものがありますってエラーがでる)
どうやったら7に戻せますか?


593 :デフォルトの名無しさん:03/07/26 14:59
7に戻さないで、そのソフトの作者に連絡する。

594 :デフォルトの名無しさん:03/07/26 16:35
>>592
OSから再インストールしないと古いバージョンのDirectXは入らないよ。

595 :デフォルトの名無しさん:03/07/26 18:12
ランタイム、SDKともに古いバージョンなど使わせんという
ゲイツ様の強固な意志のあらわれです。

596 :デフォルトの名無しさん:03/07/26 18:29
bは今のところ不具合はない模様で…?
久々にOS再インスコするかな

597 :デフォルトの名無しさん:03/07/26 19:07
ID3DXAnimationControllerに新たなアニメーションを加えるためには、
どうしたらいいんですか?tiny.xで試しています。

ID3DXAnimationSetの新たなインスタンスを作り、
SetTrackAnimationSetで登録、
SetTrackEnableでトラックを有効にしてみたんですが、なんともならないです。

ID3DXAnimationSetのインスタンスは、
ID3DXKeyFrameInterpolatorの47個(tiny.xのフレームの数)の要素を持つ配列で
作りました。

ID3DXKeyFrameInterpolatorの配列の要素一つ一つは
名前は歩きのアニメーションのインターポレータからGetNameで得られるもの、
スケールはTime=0, Value=(1, 1, 1)のキー1個、
回転はTime=0, Value=(0, 0, 0, 1)とTime=1, Value=(1, 0, 0, 0)のキー2個、
移動はTime=0, Value=(0, 0, 0)のキー1個
で作りました。

うふふ。ヘルプだけの情報では分からないわ。

598 :デフォルトの名無しさん:03/07/26 21:10
>>596
b入れたら動画再生時のエラーが解消されて嬉しい。
何が原因だったのか分からないが・・・・。


599 :デフォルトの名無しさん:03/07/27 08:36
>>597
そのクォータニョンの値はどうやって出したのサ。

600 :デフォルトの名無しさん:03/07/27 09:48
>>599
回転しない状態からX軸まわりに180度の回転です。

ちょっと怪しいとこがあるけど、解決したわ。うふふ。一応、解決法書いておくわね。

601 :デフォルトの名無しさん:03/07/27 10:31
【問題】
ID3DXAnimationControllerに新たなアニメーションを加えるには。

【解決】
CloneAnimationControllerメソッドで登録できるアニメーションセットとトラックの
数を適宜増やす。
ID3DXAnimationSetの新たなインスタンスを作り、RegisterAnimationSetで登録。
SetTrackAnimationSetでトラックにも登録。
SetTrackDescで適宜、設定。

ID3DXAnimationSetは動かしたいフレームに対応するアニメーションを表す
ID3DXInterpolatorの配列から作られる。

ID3DXInterpolatorはスケールと回転と移動の変化を表すキーの配列から作られる。
<例>
LPD3DXKEYFRAMEINTERPOLATOR pInterpolator[1];
D3DXKEY_QUATERNION keyRotation[2];
keyRotation[0].Time=0.0f;
keyRotation[0].Value=D3DXQUATERNION(0.0f, 0.0f, 0.0f, 1.0f);
keyRotation[1].Time=1.0f;
keyRotation[1].Value=D3DXQUATERNION(1.0f, 0.0f, 0.0f, 0.0f);
D3DXCreateKeyFrameInterpolator("Bip01_Neck",NULL, 0, keyRotations, 2, NULL, 0, 1.0, &pInterpolator[0])
D3DXCreateAnimationSet("a", (LPD3DXINTERPOLATOR*)pInterpolator, 1, &pAnimSet);
以上のコードは首(tiny.xでは"Bip01_Neck")がY軸周りに180度回転する
アニメーションを作る。

602 :デフォルトの名無しさん:03/07/27 10:39
あら、クオータニオンが表す意図してた回転と実際の動作が違うわね。

クオータニオンが表す回転はX軸周りに180度回転のつもりだったのに、
実際の動作はY軸周りに180度回転してる。

まあいいわね。うふふ。また来るわ。

603 :デフォルトの名無しさん:03/07/27 12:05
vs2003いれて、雑誌についてたDirectX9SDKをインスコしたけど、
「新しいプロジェクト」のテンプレートのペインにDirectX9Wizardのアイコンが
出ません。

漏れのはハズレだったんでしょうか?

604 :デフォルトの名無しさん:03/07/27 14:40
ハズレだね。

そういえば10円ガムってハズレ自体がむかつくんじゃなくて
ガキがあっかんべーしてる絵がむかつくんだよね
そう思わない?>>603

605 :デフォルトの名無しさん:03/07/27 14:50
そもそもウイザードが吐くテンプレートを必要とする理由が分からん

606 :デフォルトの名無しさん:03/07/27 14:51
>>604
当たりの紙って店がメーカーに送ると換金してくれるの?


607 :デフォルトの名無しさん:03/07/27 17:17
>>603
過去ログを読むべし

608 :デフォルトの名無しさん:03/07/27 21:21
ひじょーに低レベルかつアホな質問で申し訳ないのですが...

ImageやらTextやらがイッパイ載ってるFormの一部領域だけを
別スレッドからDirectDrawで描画させたいんですが、不可能ですか?
(えぇ、Surfaceをputした瞬間に対象領域以外がブッ壊れました´・ω・`)

609 :デフォルトの名無しさん:03/07/27 21:51
Form上にPanelを置いて、そこを描画先にする

610 :デフォルトの名無しさん:03/07/27 22:04
回転行列からヨーピッチロール吐くにはどうしたらいいん?

611 :デフォルトの名無しさん:03/07/27 22:08
Form?VBか?


612 :デフォルトの名無しさん:03/07/27 22:10
YawPitchRollつっても
一度に回転しているわけではなく各軸について段階的に回転してるんで、
各軸について一つずつ解いていけば何とかなる気がする

613 :デフォルトの名無しさん:03/07/27 22:15
>>612
一つぽんと回転行列が来てそれについての各軸の角度なんだけど、
回転行列自体いろいろ癒着してるから良く分からないんですよ。
内積でいけるのかな?

614 :デフォルトの名無しさん:03/07/27 22:57
数学板いってきます

615 :デフォルトの名無しさん:03/07/27 23:06
>>609
Tnx! (ノД`)

616 :デフォルトの名無しさん:03/07/28 08:47
>>591
> D3DXFrame* frame1,frame2;

これの何がいかんのか分からん・・・ 教えて、エロイ人 ('A`)

617 :デフォルトの名無しさん:03/07/28 08:52
試してみりゃわかる。

618 :デフォルトの名無しさん:03/07/28 09:28
>>616
C言語からやり直し。

619 :デフォルトの名無しさん:03/07/28 09:31
D3DXFrame *frame1,frame2;
ってことだろ

620 :デフォルトの名無しさん:03/07/28 09:37
D3DXFrame* frame1;
D3DXFrame frame2;
こうすれば分かりやすい

621 :デフォルトの名無しさん:03/07/28 12:56
なるほど

(D3DXFrame*) frame1,frame2;

にしたらOK?

622 :デフォルトの名無しさん:03/07/28 13:02
>>621
全然理解していないのに何がなるほどなんだ?
OKなわけないだろ、基礎からやり直せ

623 :デフォルトの名無しさん:03/07/28 13:04
>>622
だまれキチガイ

624 :デフォルトの名無しさん:03/07/28 13:09
>>616
VisualC++.NETだと両方ポインタになるね。
挙動が変わってら。

625 :デフォルトの名無しさん:03/07/28 13:25
DirectX9.0aを入れたらフルスクリーン時のフレームレートが
60固定じゃなくなった・・・



626 :デフォルトの名無しさん:03/07/28 13:26
>>624
なるわけないだろ、基礎からやり直せ

627 :デフォルトの名無しさん:03/07/28 13:27
>>626
なるよ。試してから言え、ヴォケ。それとも金なくて環境ないのか?w

628 :デフォルトの名無しさん:03/07/28 13:34
>>627
C#では、の間違いだな。

629 :デフォルトの名無しさん:03/07/28 13:34
>>627
お前が試してないだろ
そもそもD3DXFRAMEは存在しているが、D3DXFrameは存在しない
それから
D3DXFRAME* frame1,frame2;
frame1 = new D3DXFRAME;
frame2 = new D3DXFRAME;

error C2679: 二項演算子 '=' : 型 'D3DXFRAME *' の右オペランドを扱う演算子が見つかりません
が、frame2で出るぞ
文法的にも、そういう仕様変更はありえない

630 :デフォルトの名無しさん:03/07/28 13:37
>>627 (・∀・)イイヨーイイヨー

631 :デフォルトの名無しさん:03/07/28 13:43
>>629
そっか〜ありがとう!

632 :デフォルトの名無しさん:03/07/28 14:40
type *a,b;とするとaのみポインタとなり、type* a,b;とするとaもbもポインタになる。
・・・・というのはちょっと前にCスレで出たネタでは。

633 :デフォルトの名無しさん:03/07/28 14:59
少なくともCはそうはならないけど…
C#はそうなるのか?やったこと無いから分からん

634 :デフォルトの名無しさん:03/07/28 15:08
まぁまぁ、変数側に '*' を付けないといけないというCの仕様が悪いということで。

635 :632:03/07/28 15:15
>>633
だからネタだって。

636 :デフォルトの名無しさん:03/07/28 15:15
>>632
だからならないって

637 :633:03/07/28 15:19
釣られたヽ(`Д´)ノ

638 :デフォルトの名無しさん:03/07/28 15:26
もまいら、なんでグダグダ言うだけで実際に試してみないの?
C#だと挙動が違うよ。マジで。

639 :デフォルトの名無しさん:03/07/28 15:27
C#インストしてねーもん。

640 :デフォルトの名無しさん:03/07/28 15:32
C#の話は別問題で関係ない

641 :デフォルトの名無しさん:03/07/28 15:47
マジみたいだね。

>C および C++ とは異なり、複数のポインタが同じ宣言内で宣言された場合、
>C# での * は、各ポインタ名のプリフィックス区切り記号としてではなく、
>基になる型と共にだけ記述されます。次に例を示します。

もちろん、C# は別問題なんだが。

642 :デフォルトの名無しさん:03/07/28 18:43
なんて不毛な争いだ…

643 :デフォルトの名無しさん:03/07/28 20:34
>>641
いらん変更だな…

644 :デフォルトの名無しさん:03/07/28 20:39
>>643
いちどに2種類の型の変数が宣言できてしまうより、いいと思うけどな。

645 :デフォルトの名無しさん:03/07/28 21:15
ポインタを理解したり説明したりする妨げになってたのは確かだしね

646 :デフォルトの名無しさん:03/07/28 21:36
今日出た
ゲーム開発のための物理シミュレーション入門
とかいう本どうだった?

647 :直リン:03/07/28 21:38
http://homepage.mac.com/maki170001/

648 :デフォルトの名無しさん:03/07/28 21:44
ダイレクトxって、
c++から使う場合と、
vbやc#から使う場合では、
速度とか変わったりするの?
それとも全然変わらないのですか?

649 :デフォルトの名無しさん:03/07/28 21:57
>>648
うふふ。自分で測ってみたらどうかしらね。

650 :デフォルトの名無しさん:03/07/28 22:19
>>646
アマゾンにリンクぐらい貼ってよ

651 :デフォルトの名無しさん:03/07/28 22:25
俺、c#しか持ってない、、、。
みんなの見解はどうなのかと思ってさ、、、。

652 :デフォルトの名無しさん:03/07/28 22:33
>>637
釣ったつもりはないんだが(笑)
そういえば632のような文脈でのネタってのは嘘とか冗談という意味合いにはならないな。スマソ

653 :デフォルトの名無しさん:03/07/28 22:34
>>651
そりゃ、VB や C# より C++ の方がより速いプログラムを組める可能性がある。
また、ランタイム内のコードに依存する割合が大きいアプリほど
言語間の速度差の開きは小さくなる。

実に当たり前なんでマジレスするのも気が引ける。

654 :デフォルトの名無しさん:03/07/28 22:38
C++が遅いと言われてたのが懐かしいな

655 :デフォルトの名無しさん:03/07/28 22:41
>>653
なるほど。
自分はそう言う当たり前のことも
今一分かってない段階なので、
結構参考になりますです。
感謝。
つまりダイレクトxのルーチンの部分は当然何から呼び出しても
同じだと言う訳ですよね。

656 :デフォルトの名無しさん:03/07/28 22:41
新言語が作られるたびに実行速度が遅くなっていくのか

657 :デフォルトの名無しさん:03/07/28 22:43
>>656
新旧というか、どれだけ最適化されたネイティブコードを吐けるかじゃね?

658 :デフォルトの名無しさん:03/07/28 22:45
それ以上にハードウェアが進化しているから大丈夫 v(^-^=)

659 :デフォルトの名無しさん:03/07/28 22:56
Delphi(というかPascal)やったことあると、C#の方が当たり前に思える。
Cみたいに、*を変数側に付けるってのは、直感的じゃなくていやん。


660 :デフォルトの名無しさん:03/07/28 22:58
今更C++の汚さを語ってもしゃーないさ。みんな承知の上で使ってるんだから。

661 :デフォルトの名無しさん:03/07/28 23:10
時々JAVAが異様な速度たたき出す事あるんだが。

662 :デフォルトの名無しさん:03/07/28 23:40
>>661
具体的にどういう時?

663 :デフォルトの名無しさん:03/07/29 00:02
>>661
異常なんだろ

664 :デフォルトの名無しさん:03/07/29 00:50
DirectShowでmp3演奏しているのですが、
曲を変えるたびにIGraphBuilderをReleaseして
CoCreateInstanceし直さないと駄目なんでしょうか?
単純に曲を止めるだけだと、前にRenderFileした曲が残ってます。

また、解放する場合、CoCreateInstanceの直前に
CoInitialize(NULL)を毎回行わないと失敗してしまいます。
これを毎回呼んでも問題ないのでしょうか?

665 :デフォルトの名無しさん:03/07/29 04:14
>>664
>曲を変えるたびにIGraphBuilderをReleaseして
>CoCreateInstanceし直さないと駄目なんでしょうか?

そのようです。もしくはフィルタを全て削除する。
CoCreateInstance したくなくて、常に同じフォーマットのメディアを再生するなら、
ソースフィルタだけを繋ぎかえることでいけると思います。
詳しくはドキュメントを読んでください。

>CoInitialize(NULL)を毎回行わないと失敗してしまいます。

そんなことは無いはず。どこか他にミスがあるのでは?
例えば、解放処理部分で CoUnInitialize を呼んでいるとか。

>これを毎回呼んでも問題ないのでしょうか?

問題ありませんが、CoUnInitialize を同じだけ呼ばなくてはいけません。

通常、アプリケーション(スレッド)の初期化部分で CoInitialize を、
終了部分で CoUnInitialize を呼びます。

666 :デフォルトの名無しさん:03/07/29 08:18
>>665
レスありがとうございます。

>通常、アプリケーション(スレッド)の初期化部分で CoInitialize を、
>終了部分で CoUnInitialize を呼びます。

BGM管理を別スレッドで行っていた事が問題だったようです。
スレッド内でCoInitialize を呼んだら正常に動きました。
(スレッドが別の場合はそれぞれで初期化しなければならないのですよね?)


ただ、以前はスレッド外でも動いていたんですよ。
直前に行っていたDirectPlayの初期化処理で、通信を受け取る為の
スレッド作成処理をコメントアウトした為発生したようです。
何故、前は正常に動いていたのか謎なのですが・・・。

667 :デフォルトの名無しさん:03/07/29 11:03
低レベル質問ですみませんが、
DirectX9ではDirectDrawのように1ドットの狂いも無く
画面に描画する機能はあるのでしょうか?

668 :デフォルトの名無しさん:03/07/29 11:10
ある

669 :デフォルトの名無しさん:03/07/29 11:18
ロックして書き込むだけ
意味があるかは知らんが

670 :デフォルトの名無しさん:03/07/29 11:51
>>668-669
サンクス。試してみます。


671 :デフォルトの名無しさん:03/07/29 11:58
>>667
ヘルプをちゃんと読む。

672 :デフォルトの名無しさん:03/07/29 12:08
それからサーフェスロックしなくてもテクスチャtoピクセルができる。
ドライバ次第ということらしいが普通のドライバなら歪むことはない

673 :デフォルトの名無しさん:03/07/29 14:00
DirectX9の話なのですが、質問をさせて下さい。
BeginSceneとEndSceneの組は、Presentを行うまでに2回以上呼んでも良いらしいのですが、
グラフィックドライバによっては1回のみ可能なものがあるとのこと。
その制限を調べたいのですが、何か方法はありますか?
capsには含まれていない情報のようなので…。

674 :デフォルトの名無しさん:03/07/29 14:05
>BeginSceneとEndSceneの組は、Presentを行うまでに2回以上呼んでも良いらしいのですが、
そんなことをする必要性が分からない

675 :デフォルトの名無しさん:03/07/29 14:09
>BeginScene〜EndScene
色んな都合で一度区切らないといけないことがあるっぽ
テクスチャにレンダリングして、それをすぐに使う場合とか
某所サンプルにそういうのがありました。

676 :デフォルトの名無しさん:03/07/29 14:11
>そんなことをする必要性が分からない
VMR-9のアロケータのPresentImageから、非同期で
テクスチャに書き込みをする必要があるからです。

677 :デフォルトの名無しさん:03/07/29 14:19
>色んな都合で一度区切らないといけないことがあるっぽ
ありがとうございます。
そうなのですかー。

SDKのアロケータのサンプルでは、アロケータ自身がIDirect3DDevice9を
持っていて、レンダリングもアロケータが保持しているクラスで非同期に行っているので、
どうしようか考えていたところなのです。
メインの描画自体は描画専用のクラスから行いたいところです。

678 :673:03/07/29 14:37
度々すみません。自分が気にしているのは以下のことです。

BeginScene()  ←スレッドB
..レンダリング諸々 ←スレッドB
EndScene()  ←スレッドB
BeginScene() ←スレッドA
..レンダリング諸々 ←スレッドA
EndScene()  ←スレッドA
Present()  ←スレッドA

それぞれのスレッドのBeginScene〜EndScene間を
クリティカルセクションで保護すれば大丈夫でしょうか?

679 :デフォルトの名無しさん:03/07/29 14:52
クリティカルセクションを使うということは、結局その場は止まることになるから、
それならそのタイミングで、一つのスレッドにまとめられる構造を作った方が安全な気がする

680 :デフォルトの名無しさん:03/07/29 15:42
ウィンドウを作成したスレッドだか、デバイスを作成したスレッドからしか
呼べないメソッドがあったような>Direct3D

681 :デフォルトの名無しさん:03/07/29 16:10
そのままやるとコワイから、レンダリングは安全のためSendMessageでスレッドを合流させてる

682 :デフォルトの名無しさん:03/07/29 20:39
まぁレンダリングはメインスレッドにしとくのが簡単でいいわな
VRAMにアクセスするってことは最悪処理中はOSまで止まってる事があるわけだから
あまり無茶な作りにしない方が良い

683 :デフォルトの名無しさん:03/07/29 23:34
そもそもBeginSceneとEndSceneって、なにやってんだろう・・・。

684 :デフォルトの名無しさん:03/07/30 05:15
DirectX9.0b SDKで、背景用に巨大なオブジェクトを使ってると、
2DのTEXTや三角プリミティブが、おかしくなるんですが、
何が悪いんだか。
どうなるかと言うと、プリミティブの色が黒になる。アルファが抜けない。
背景以外のオブジェクトが無いところでは、文字が消える。
背景に使っているキューブを描画しないと、問題は起きない。
3Dオブジェクトには、問題が起きていない。

心当たりある人いる?


685 :デフォルトの名無しさん:03/07/30 08:56
Zバッファの問題では?

686 :デフォルトの名無しさん:03/07/30 08:56
ライトかマテリアルの設定のせいじゃないの?

687 :684:03/07/30 13:51
症状は確かにzバッファが原因のようなんですが、2Dのポリゴンのz値変えたけど、
変化ないんですよね。
レンダリングの順番を変えて、背景用のBOXを最初にすると、問題が無くなる。
ライトに付いては、描画毎に使わない物を消してます。
2Dポリゴンの頂点はこれ。
float x, y, z, rhw;
DWORD color;


大きなBOXの中にカメラがあるシーンなんですが、なんとなく 写らないはずの
カメラの後方のBOXの面が影響してるのかな。


688 :デフォルトの名無しさん:03/07/30 14:15
宇治社中改どこにいった?

689 :デフォルトの名無しさん:03/07/30 19:21
みんなの心の中。

690 :デフォルトの名無しさん:03/07/30 19:29
ものすごく幼稚な質問で申し訳ありません。
現在DirectX8.1aでDirect3Dゲーム作ってるんですが、解像度を変えると、
2Dの文字の描画位置などが変わってきますよね。これってどのように対処
すればいいんでしょうか?視点を動かしたら、動かないし。当たり前といえば
当たり前なんですけど。メッシュのように扱えたら簡単なんですが。
あとLuna3rdというライブラリを使わせてもらってます。
お願いします_(._.)_

691 :690:03/07/30 19:32
始める前に文字用のテクスチャを用意するのは勘弁したいです。
プレイする人の名前を入れるときに漢字などが入っていると
対処が難しくなるからです・・。

692 :デフォルトの名無しさん:03/07/30 19:47
解像度変えると2Dの文字の描画位置が変わるってことは、
恐らくスクリーン座標で指定していると思うんだが。違う?

693 :690:03/07/30 19:49
>692
えーと、そうですが^^;

694 :デフォルトの名無しさん:03/07/30 19:51
まずお前は自分がうんこだと言う事を自覚しろ。

695 :デフォルトの名無しさん:03/07/30 19:54
それならサイズに比例して位置を調節すりゃいいだけでは…

640*480で(630,470)から表示すると文字が右下に表示されるけど、
800*600で(630,470)から表示すると中央から少し右下のあたりに表示されるとか、
そういう問題を言ってるんだよね?

696 :690:03/07/30 19:58
>695
そうです。
でも実際のゲーム開発では、そんな面倒なことはしないですよね?
しかも視点を動かすと動かないですよ。
スクリーン座標をワールド座標に変換するんだと思うんですが、Lunaのライブラリで
そんなことができるのかわからな・・

697 :690:03/07/30 20:04
あ・・ライブラリのソース見てみたら余裕で載ってました・・。
ほんとにすみません。
視点の行列や透視変換の行列を取得できなかったんで、諦めてました。

698 :デフォルトの名無しさん:03/07/30 20:05
ゲーム空間に配置するものと、スクリーン空間に配置するものを明確化せい。

ゲーム空間に配置するものは解像度が変わってもそう大して変わるもんではない。
スクリーン空間に配置するものは解像度が変われば当然表示位置も変わる。当たり前。
違う解像度でも同じ位置に表示したいと思ったら、それなりのことをしなきゃならん。

対策としては、スクリーンのサイズを仮想的に0〜1と考えて、
描画メソッドの前段階で0〜640等に写像して描画メソッドへ渡す関数を作るとか。

699 :690:03/07/30 20:12
>698
>ゲーム空間に配置するものと、スクリーン空間に配置するものを明確化せい。
なるほど...

>対策としては、スクリーンのサイズを仮想的に0〜1と考えて、
>描画メソッドの前段階で0〜640等に写像して描画メソッドへ渡す関数を作るとか。
考えは分かるんですが、2Dと3Dがごちゃごちゃになって意味がわからなくなってます^^;
視点が変わっても同じところに描画する関数を作るのはかなり難しそうですね(汗




700 :デフォルトの名無しさん:03/07/30 20:14
Lunaのフォント関数って空間にしか書けないの?
スクリーン座標にそのまま掛けないんだったら不便だねぇ。

701 :デフォルトの名無しさん:03/07/30 20:49
文字を描くときだけ視点を正面に持ってくればいいだけ

702 :デフォルトの名無しさん:03/07/31 10:49
Direct3Dで、VGA(Mobility Radeon)ドライバが「2の累乗サイズ以外のテクスチャの作成」に対応しているかどうかを
D3DCAPS9.TextureCapsのD3DPTEXTURECAPS_NONPOW2CONDITIONALフラグを調べて判断しています。
しかし、D3DPTEXTURECAPS_NONPOW2CONDITIONALフラグがオフ(2の累乗サイズ以外のテクスチャの作成可能)にも関わらず、
2の累乗サイズ以外のテクスチャの作成に失敗していました。
そこで、VGAドライバを最新のものにアップデートして実行すると、D3DPTEXTURECAPS_NONPOW2CONDITIONALフラグがオン
(2の累乗サイズ以外のテクスチャ作成不可能)を正常に検知するようになりました。
質問ですが、「2の累乗サイズ以外のテクスチャの作成」に対応しているかどうかのチェックは、
D3DCAPS9.TextureCapsのD3DPTEXTURECAPS_NONPOW2CONDITIONALフラグを調べるのであっているのでしょうか?
ご存知の方がいれば、教えていただけないでしょうか?
よろしくお願いします。

703 :デフォルトの名無しさん:03/07/31 10:51
不可能だろうが可能だろうがどっちにしろ2^nで作ってるんで気にもとめなかったが、
ドライバ最新にしたらそうなったってことは、
単純に古いドライバが悪かったってこととちゃうんかな?

704 :702:03/07/31 12:07
>>703
>不可能だろうが可能だろうがどっちにしろ2^nで作ってるんで気にもとめなかったが、
Direct3Dで、2D表示でキャラクタのアニメーションを実現する場合、
1.大きな2^nテクスチャーを作成。2.テクスチャにアニメーション用のパターンを描画。3.D3DXSPRITEで転送元範囲指定で最終描画。
の方法が一番安定してそうな気がします。
漏れの場合、最終描画時にパターンの鏡像反転描画をしたかったのでD3DXSPRITEを使わない、
1.複数のテクスチャを作成。2.テクスチャ1枚ごとにアニメーション1パターンを描画。3.DrawPrimitiveUPで最終描画。
の方法を使っています。DrawPrimitiveUPを使用する場合は、転送元範囲指定が出来ない
(テクスチャの回転をしない場合、SetViewportを併用すれば出来るが・・・)ので、1テクスチャ1パターンが基本です。
1テクスチャ1パターンを基本にしている現状で2^nのテクスチャサイズを使用すると、とんでもなく描画が遅くなりそうな気がします。
703さんは、おそらく前者の1,2の方法でやっておられるものかと思われます。
>単純に古いドライバが悪かったってこととちゃうんかな?
漏れも、そう思っているのですが、結構多くの種類のVGAでD3DPTEXTURECAPS_NONPOW2CONDITIONALフラグのオンを
正常に検知してくれない現象があるようです。(っていうことからチェックの方法を疑っています。)
2^nのテクスチャサイズがサポートされてないと動かない問題のプログラム(自作)が、
ここ ttp://www.bekkoame.ne.jp/ro/tn_ws1100/2ch/ にあります。DirectX9完全対応VGA必須で作ってしまったのが鬱です。
早く2の累乗サイズ以外のテクスチャの対応が当たり前の時代が来て欲しいです。

705 :デフォルトの名無しさん:03/07/31 12:13
>>704
>DrawPrimitiveUPを使用する場合は、転送元範囲指定が出来ない

転送元範囲って uv 座標でしょ?できるじゃん。


706 :デフォルトの名無しさん:03/07/31 12:20
D3DPTEXTURECAPS_NONPOW2CONDITIONAL は
「指定されている」と 2^n 以外のサイズのテクスチャを「ある条件下でのみ」作成できる
ことを示す。ちゃんとドキュメント読んでる?

707 :703:03/07/31 12:32
・確かに俺は前者の方法でやっている。D3DXSPRITEは使っていないが。
・後者の方法はテクスチャの差し替えが処理速度へのペナルティとなっていて遅い。
・DrawPrimitiveUPでもUV座標の指定なんか当たり前にできる。
・2^n以外のテクスチャの対応は将来も実装されないと思われます。対応する必要がない。

708 :デフォルトの名無しさん:03/07/31 13:35
>>704
ワラタ 変なもん作ってるなぁ。

709 :704:03/07/31 14:48
>>705
>転送元範囲って uv 座標でしょ?できるじゃん。
uvを使用するとテクスチャ内で球面スクロールした状態になってしまいます。
球面スクロールしてきた余計な部分を、描画しないようにSetViewportでクリッピングすれば、完全な転送元範囲指定が出来るけど、
回転を掛けたテクスチャの場合、SetViewportは矩形領域指定なので、D3DXSPRITEと同等の転送元範囲指定はダメぽ。
正直、漏れはuv座標の使い道をよく知りません。
D3DXSPRITEと同等の転送元範囲指定をuv座標で実現できる方法を知っていたら教えて欲しいです。
>>706
>「指定されている」と 2^n 以外のサイズのテクスチャを「ある条件下でのみ」作成できることを示す。
D3DPTEXTURECAPS_NONPOW2CONDITIONALは、関係なかったみたいです。うわーん (´Д⊂ヽ
「2の累乗サイズ以外のテクスチャの作成」が可能かどうか調べる方法を知っていら教えて欲しいです。
「IDirect3DDevice9::CreateTextureの戻り値をチェックする」以外の方法でお願いします。
>>707
>テクスチャの差し替えが処理速度へのペナルティとなっていて遅い。
IDirect3DDevice9::SetTextureを使いまくっています。おそらく、VGAに余計な負荷が思いっきり掛かってそうです。
>DrawPrimitiveUPでもUV座標の指定なんか当たり前にできる。
705さんへのレスのようなことは出来るのでしょうか?よろしくお願いします。
>2^n以外のテクスチャの対応は将来も実装されないと思われます。対応する必要がない。
テクスチャの差し替えのオーバーヘッドを考えると、実装は無駄っぽいです。

教えてくれくれ君状態ですが、よろしくお願いいたします。

710 :704:03/07/31 14:57
>>708
>変なもん
モナー板で旬のネタを題材にしました。
http://aa.2ch.net/mona/
モナー板面白杉。

711 :デフォルトの名無しさん:03/07/31 15:21
>>709
>転送範囲と uv 座標
球面スクロールってのがよくわからんが。たぶん絵が潰れてリピートしてるんだろうな。

まず uv 座標が 0〜1 ということは理解してる?
テクスチャの幅が 16 だろうが 256 だろうが、テクスチャ座標は常に 0〜1 になる。

加えて、DirectDraw のようなビットマップ的座標表現とは違う。
ピクセルと整数座標が1対1では対応していない。
座標 0 は最初のピクセルの左端に、座標 1 は最後のピクセルの右端を指す。
詳しくはドキュメントのどっかにある、「テクセルとピクセル間の直接マッピング」を参照のこと。

712 :デフォルトの名無しさん:03/07/31 15:23
>>711
ちょっとまぎらわしいな。
文中の「ピクセル」は「テクセル」に読み替えてください。

713 :デフォルトの名無しさん:03/07/31 15:24
>>709
>2の累乗サイズ以外のテクスチャ
そのまんま D3DPTEXTURECAPS_POW2 だと思われ。

714 :703:03/07/31 17:27
>>709
テクスチャ側のuv座標は0〜1なので、
例えば、256*256のビットマップで左上128*128の領域は(0.0,0.0)-(0.5,0.5)だ。
その領域をスクリーンの(100,200)-(228,328)に貼り付けたいのなら、

struct TLVertex {
  float x, y, z, w;
  float u, v;
};

TLVertex vl[4] = {
  { 100-0.5f, 200-0.5f, 0.0f, 1.0f, 0.0f, 0.0f },  // 左上
  { 100-0.5f, 328-0.5f, 0.0f, 1.0f, 0.0f, 0.5f }, // 左下
  { 228-0.5f, 328-0.5f, 0.0f, 1.0f, 0.5f, 0.5f }, // 右下
  { 228-0.5f, 200-0.5f, 0.0f, 1.0f, 0.5f, 0.0f }, // 右上
};

device->SetTexture( 0, hage );
device->SetFVF( D3DFVF_XYZRHW | D3DFVF_TEX0 );
device->DrawPrimitiveUP( D3DPT_TRIANGLEFAN, 2, vl, sizeof(TLVertex) );


あーもうここまで親切に書いたんだから理解して頂戴。

何故0.5fを引くかは深くは考えるな。
正確にはピクセルサイズが(1.0f,1.0f)なので、
ピクセルの角を合わせるために0.5fずらしてある。

715 :デフォルトの名無しさん:03/07/31 17:35
>>709
単にテクスチャステートの設定をしていないだけでは?

716 :デフォルトの名無しさん:03/07/31 17:56
>>714
D3DFVF_TEX0 → D3DFVF_TEX1 でそ。

717 :703:03/07/31 18:03
>>716
その辺どうでもよい部分だったので適当に書いてたので…
ちなみに修正する前は( D3DFVFほにゃらら )って書いてた(゚∀゚)

718 :デフォルトの名無しさん:03/08/01 08:53
SetRenderTargetでテクスチャをターゲットにした状態で、
そのテクスチャをターゲットに書き込んだらどうなるんでしょうか?

719 :デフォルトの名無しさん:03/08/01 14:50


720 : :03/08/01 21:44
WAVファイルの多重再生ってどうやるんですか?
開発言語はVBです。

「へぇ」を多重で鳴らしたいだけなのよ〜

721 :デフォルトの名無しさん:03/08/01 23:02
>>720
DupicateSoundBuffer

722 :山崎 渉:03/08/02 02:04
(^^)

723 :デフォルトの名無しさん:03/08/02 05:39
VBの癖にDirectXなんぞ使わないでください。

724 :デフォルトの名無しさん:03/08/02 05:46
ここは釣堀なインターネットですね

725 :デフォルトの名無しさん:03/08/02 06:02
( ・∀・)つ〃∩ ヘェーヘェーヘェー

726 :デフォルトの名無しさん:03/08/02 20:48
DirectX8以降で画面全体のラスタースクロール方法は
どんな物があるんでしょうか?

ちょっと考えた物では、テクスチャに画面全体を描画して、
そのテクスチャをバンプマッピングで表示させればできそうですが、
必須環境の敷居が高くなりますよね・・・。


727 :デフォルトの名無しさん:03/08/02 23:45
何故バンプマッピング?
テクスチャにしているのなら頂点座標をいじるだけで済む

728 :デフォルトの名無しさん:03/08/03 09:43
726 がラスタースクロールとは何かを誤解してるとして。

バンプマッピングで実現できそう、且つラスタースクロールという言葉が似合いそうな効果か・・・。
どんなものか非常に気になるな。

729 :デフォルトの名無しさん:03/08/03 09:47
SDKのサンプルでBumpUnderWaterというのがあるじゃないですか。
あれで似たような効果が出せると思ったんですが、
確かに本当の意味でのラスター毎の変化は無理かな。

730 :デフォルトの名無しさん:03/08/03 10:13
>>729
やりたいことは、BumpUnderWater 相当のことではなくて、
単純なラスター毎のスクロールなんでしょ?
なら、スクリーンの縦ピクセル数だけ1ライン高さのポリゴンで分割して、
頂点座標やテクスチャ座標をいじるだけで済む。

731 :デフォルトの名無しさん:03/08/03 10:14
ああなるほど。良いところに目を付けてますな。
ただ、あれのバンプは水面を表現するために使ってるんで、
UVを動かすこと自体(=726のやりたいこと)とは別の処理なのです。

732 :デフォルトの名無しさん:03/08/03 11:37
プププお前ら本当に低レベルだなw

>>726タンは>>727>>730が偉そうに書き込んでるようなことは当然理解してんの!
初歩の初歩を恥ずかしげも無く、しかも教えてやってる風に書き込むなんてカコワルーwww

よく>>726を読めよ。「DirectX8以降で」て書いてあるだろ。
より高レベルな手法でのラスタースクロールを726タンは探求してるんだって分かるだろ?

>>731もわけ分からんこと書いてるしな。
BumpUnderWaterはまさしくUVを動かすサンプルだろうが。

733 :デフォルトの名無しさん:03/08/03 11:51
724 名前:デフォルトの名無しさん[sage] 投稿日:03/08/02 05:46
ここは釣堀なインターネットですね
724 名前:デフォルトの名無しさん[sage] 投稿日:03/08/02 05:46
ここは釣堀なインターネットですね
724 名前:デフォルトの名無しさん[sage] 投稿日:03/08/02 05:46
ここは釣堀なインターネットですね

734 :デフォルトの名無しさん:03/08/03 12:01
俺は >>732 にやんわりと同意しておくよ。

735 :731:03/08/03 12:22
バンプマッピングって凹凸を表現することを表した言葉でしょ?
BumpUnderWaterは水面の凹凸により起こる屈折を表現するためにUV座標をずらしてるけど、
UV座標を動かすこと自体はなんでもない手法じゃん。
ラスタスクロールは何かの凹凸を表現したもんではないから
バンプマッピングではないと言いたかった訳ですが。

736 :731:03/08/03 12:25
とはいえまあ、732の言うとおり、結果的には、
まさにUV座標を動かすサンプルであることには間違いないんだけど。
回りくどくてすまんな。

737 :デフォルトの名無しさん:03/08/03 13:45
726はUVすら理解してません。

738 :デフォルトの名無しさん:03/08/03 14:05
>>737
UVくらい誰でも知ってるだろ!
夏は特に強いから気をつけなくっちゃ!

739 :デフォルトの名無しさん:03/08/03 14:08
うるとらう゛ぁいおれっと

740 :デフォルトの名無しさん:03/08/03 20:37
正直、UVは解るがWがいまいち解らん。

741 :デフォルトの名無しさん:03/08/03 23:08
俺の名前はガンダムー
ガンダム星からやってきた最強ロボットだー
マッハパンチ!マッハチョップ!最強だぜー


742 :709:03/08/04 01:12
>>711-717
ありがd。転送元範囲指定できますた。
球面スクロール -- FM-TOWNSの開発マニュアルに出てきたりします。

ラスタースクロールってこれですか?
ttp://www.bekkoame.ne.jp/ro/tn_ws1100/data/saitama.zip
D3DXSPRITEで1ラインずつ描いています。

743 :デフォルトの名無しさん:03/08/04 01:16
>>742
クリアしてない様だが

744 :デフォルトの名無しさん:03/08/04 01:30
球面スクロールってPC-9801GSにあったな・・・

745 :742:03/08/04 01:31
>>743
uv座標を使っての転送元範囲指定は、漏れのマシン上のプログラムでうまくいきました。
D3DXSPRITEの機能をDrawPrimitiveUPで再現できそうです。

saitama.zipは、何ヶ月か前に作ったものです。(uvは使っていません。)
ちなみに、動作条件はDirectX9以上となっております。

746 :742:03/08/04 01:43
>>744 PC9801ユーザー様
【FM-TOWNSの開発マニュアルの一部】
●仮想画面中の移動
    画面枠                               
┌─────────┬──┐                        
│┌────────┼┐  │ ・仮想画面が画面枠より大きい場合に設定可能です。
││           .││  │ ・円筒スクロール可能の場合、縦方向に仮想画面を越
││           .│→  │  えた設定が可能です。            
││           .││  │ ・球面スクロール可能の場合、縦横方向に仮想画面を
││           .││  │  越えた設定が可能です。           
├┼────────┘│  │                        
│└───↓─────┘  │                        
└────────────┘                        
   仮想画面

って書いています。

747 :デフォルトの名無しさん:03/08/04 02:02
>>745
αで白抜きしてるにも関わらず、毎フレームクリアせずにそのまま
重ねて描いてる様に見える。

起動して数秒で黒の固まりになる。


748 :デフォルトの名無しさん:03/08/04 02:05
白でクリアするかα切らなあかんと思うんだが、うちだけ?

749 :745:03/08/04 02:35
saitama.zipには像がにじむ等のバグが残っています。
グラフィックボードの依存等で見れない場合もあると思いますので、
実行した時の画面をうpしますた。
ttp://www.bekkoame.ne.jp/ro/tn_ws1100/data/saitama.JPG

>>747
色々なVGAで動かしてみたのだけど、その現象には遭遇しませんでした。
>>748
VGA依存の問題かも・・・

750 :デフォルトの名無しさん:03/08/04 02:38
依存て何か特殊な事してんの?

>αで白抜きしてるにも関わらず、毎フレームクリアせずにそのまま
>重ねて描いてる様に見える。
とりあえず↑に思い当たる所は無いのね。

751 :749:03/08/04 02:47
>>750
してないです。
テクスチャ1 →(ライン転送)→ テクスチャ2(一時的にターゲット) →(丸ごと転送)→ レンダリングターゲット
をD3DXSPRITEで行っています。
DirectX9で作っていること自体が特殊だと思われw

752 :デフォルトの名無しさん:03/08/04 03:05
>>751
うちの場合、テクスチャをターゲットにすると、ソースのα(αビット・DIFF)
がターゲットテクスチャのαビットに描画される。

やっぱり、白でクリアするか、 →(丸ごと転送) の手前でα切らないと、
うちでは駄目ぽ。 これが通常の動作だと思ってたよ。

753 :デフォルトの名無しさん:03/08/04 08:31
>>742
うちの GeForce4MX では普通に表示されたよ。

754 :デフォルトの名無しさん:03/08/04 22:12
ところで、GetAvailableTextureMemを使用するとテクスチャメモリ使用可能容量を知ることができるわけだけど。
AGP Aperture Memoryがあるから、物理VRAM16MBしか積んでなくても32MB等と示されるわけで。
つまりその場合、我々は32MBのテクスチャを確保しても問題ないということなのかな。
パフォーマンス的にやはり問題あり?

755 :デフォルトの名無しさん:03/08/04 22:38
>>754
パフォーマンスはやっぱり実測で有効かどうかを試さんと分からんかと。

756 :754:03/08/04 22:54
>>755
あー、やはりそうですか。マイクロソフトのfaqにも「パフォーマンスを絶えずテストしろ」とか
書いてありますしね。

ちなみにテストとして、現在の空きテクスチャをログに定期的に書き込み続ける
アプリを作ってみました。
で、G450 VRAM16MBの環境(GetAvailableTextureMemだと32MBになるので、
AGP Aperture Memoryは16MB?)の環境で、某メルティブラッドのメモリ使用量を
大雑把にテストしてみた。
どうやらこのソフト、明らかにテクスチャ20MB以上は使用しているようだが、
比較的快適に動いている。物理VRAMは足りないのだが。
Direct3Dとドライバがマネージしてるってことかな?

757 :デフォルトの名無しさん:03/08/04 23:22
テクスチャ切り替えるとDirect3Dが勝手にスワップの様な事する様で、
毎フレーム常に全テクスチャを駆使しない限り、使用頻度の低い
テクスチャはVRAMから弾き出されるみたい。

758 :デフォルトの名無しさん:03/08/04 23:35
MANAGEDクラスだと、んなことまでやってくれるのか…
(・∀・)イイッ

759 :デフォルトの名無しさん:03/08/04 23:42
つかね、DEFAULTがそんな感じだった。

760 :デフォルトの名無しさん:03/08/05 04:54
質問。
みなさんはDirectXプログラミングは生C || better Cでゴリゴリ書いてるのですか?
C++でクラス化してみようと思ったりするもよーわからん。ラッピング?
ていうか何をクラスにすればいいんだ。要求分析、設計できないんですが。
良質のDirectX C++ サンプルコードが見たいです。

761 :デフォルトの名無しさん:03/08/05 07:54
>>760
ウィザードが吐き出すコードをとりあえず見てみよう。

いやしかし、よくできたスレタイだね。

762 :デフォルトの名無しさん:03/08/05 17:03
>>761
BCCなので無理です。鬱だ氏のう。

763 :デフォルトの名無しさん:03/08/05 17:14
ってゆうか、普通にSDKのサンプルコード見ればいーじゃん。

そもそもDirectXはCOMで実装されてるんだから、
薄いラッパークラスなんて要らない。

764 :754:03/08/05 19:29
皆様!質問でつ!
使用していないテクスチャは、物理VRAMから自動的に追い出されることはわかりました。
しかし気になることが。
D3DPOOLはD3DPOOL_DEFAULTじゃないとダメ?D3DPOOL_MANAGEDはどうですか?


765 :デフォルトの名無しさん:03/08/05 19:41
>>764
D3DPOOL_DEFAULTはビデオカードにとって最適の場所
(おそらくほとんどの場合ビデオメモリ)に優先的にリソースを置く。
D3DPOOL_MANAGEDはシステムメモリにDirect3Dがコピーを持ち、
必要に応じてビデオメモリに転送する。

ということで、むしろD3DPOOL_MANAGEDじゃないとダメなんだと思う。

766 :デフォルトの名無しさん:03/08/05 19:48
DEFAULTはAGPアパーチャとVRAM、
MANAGEDはシステムメモリとVRAM間じゃないのかね。

767 :デフォルトの名無しさん:03/08/05 20:04
>>766
なるほど。>>764の言う「追い出し」っていうのはVRAMからAGPメモリへの退避なのか。

しかし、ドキュメントに特別な記載が無いし、
Direct3DはVRAMとAGPメモリとの違いを見てないような気がするけど・・・。

768 : :03/08/05 20:40
D3DPOOL_MANAGED にしとくと明示的に Restore しなくて良い、
って話じゃなくて?

769 :デフォルトの名無しさん:03/08/05 20:41
>>768
全然違う・・・

770 :デフォルトの名無しさん:03/08/05 21:27
C#でDirectX9やってる人いますか?

C#のペイントイベントの中でDirectXの描画を呼び出すと、
一瞬だけ映像が見えてすぐに基本色で上書きされて
しまうのですが、何か方法ないのでしょうか?

C++では、WM_PAINT呼ばれた時に、
Present→ValidateRect(hWnd,NULL);
で、再描画を解除できたのですが・・・。

771 :デフォルトの名無しさん:03/08/05 21:29
>>770
DirectX、C#のスレが既にありますね。
こちらの質問は撤回させていただきます。失礼しました。

772 :754:03/08/05 21:54
どうもありがとうございまつ。
自分が言いたいことですがつまり、
物理VRAM16MBの環境で4MB×5枚計20MBのテクスチャを最初に確保した場合、
4MB分現在使っていない(BeginScene-EndScene間で使われていない)
テクスチャがあればそれは自動的にVRAMから破棄される。
必要になったら呼び戻される。
つまり現在使用しているテクスチャが16MB以下であれば、最初に確保したテクスチャの量に関係なく、
レンダリングの結果も問題なし、レンダリングの速度も大幅低下しないのではないか。
ということです。

ドキュメントに明示的に記載されていないので確証は無いのですが。
仮に物理VRAM16MB、AGPメモリ16MB確保されている場合。
D3DPOOL_MANAGED:
物理VRAMで必要なくなったデータは(空きが無くなった場合)破棄される。
必要になったらまたシステムメモリからコピーされてくる。
D3DPOOL_DEFAULT:
物理VRAMで必要なくなったデータは(空きが無くなった場合)AGPメモリに
転送される。必要になったらまた物理VRAMに戻される。
以上でいいのかな?
D3DPOOL_DEFAULTの解釈が怪しいような。指摘プリーズ。

AGPメモリ→VRAMと、システムメモリ→VRAM の速度がほぼ同じなら
D3DPOOL_MANAGEDがいいのかなと思っていますが。

773 :デフォルトの名無しさん:03/08/05 22:04
同じなわけない

774 :デフォルトの名無しさん:03/08/05 22:12
そもそもAGPメモリのマネージメントは行われているのだろうか?

775 :デフォルトの名無しさん:03/08/05 22:18
>>772の解釈が正しいとしよう。

不要なテクスチャを破棄するコストと
再度必要になった場合にテクスチャを復帰するコストを合わせて考えると、
AGPアパーチャメモリ→VRAMの転送コストが
システムメモリ→VRAMの転送コストの半分以下でなければ
パフォーマンスは向上しない、ということになる。

で、問題の転送コストだが・・・誰か知ってますか?

776 :デフォルトの名無しさん:03/08/05 22:19
>>775
× AGPアパーチャメモリ→VRAM
○ AGPアパーチャメモリ←→VRAM

777 :デフォルトの名無しさん:03/08/05 22:24
つか、パフォーマンスの前に根本的に用途が違うだろ。
DEFAULTはレンダーターゲット、MANAGEDは要ロックじゃないの。

778 :デフォルトの名無しさん:03/08/05 22:42
>>777
用途で考えずに、性質で考えなよ。

779 :デフォルトの名無しさん:03/08/06 08:12
DrawIndexdPrimitive()を使用するとレンダリング(描画)と内部処理が平行して行えると聞きました。
そこで知りたいのが以下のどの処理の段階で描画が行われるのでしょうか?

・DrawIndexdPrimitive()が呼ばれた直後
・EndScene()の直後
・Present()の直後

個人的にはEndScene()の直後だと重いますが・・・。
この直後にトランスフォームなどをしてやれば高速化できるのだと思います。
ご伝授よろしくお願いします。


780 :デフォルトの名無しさん:03/08/06 08:58
↑ハズレ

781 :デフォルトの名無しさん:03/08/06 12:35
DirectX7 のユーティリティの使用につい聞きたいのです
D3DXCreateTextureFromFile 関数を使用し画像を読み込み、
読み込んだ画像にたいして SetColorKey を使用し透明色を設定しました
そして、D3DXDrawSpriteTransform 関数を使用し描画したんですが
何故か透明色が働きません。
考えられる原因としては何がありますか?
もし、良ければ教えてください。お願いします。
ちなみに DirectDraw の方の機能の BltFast では透明色が働きました。
追伸
D3dDevice->SetRenderState( D3DRENDERSTATE_COLORKEYENABLE, TRUE ) ;
はすでにおこなってあります

782 :デフォルトの名無しさん:03/08/06 13:46
DirectX9.0bの差分インストールには
再領布パッケ−ジ、開発者ランタイム、シンボルファイルの3つがありますが
最後のシンボルファイルだけインストーラがついておらず、どのフォルダにいれればよいのか
分かりません・・・。英語の公式サイトページを見ても分かりませんでした。

783 :デフォルトの名無しさん:03/08/06 14:18
>>782
対応するファイルと同じところじゃネーノ

784 :デフォルトの名無しさん:03/08/07 21:17
VS.net2003環境にDXSDK9.0bぬっ込んだら、
DXアプリウィザードインスコされてないんですけど・・・
もしかして、仕様?

785 :デフォルトの名無しさん:03/08/07 21:26
>>784
SDK9.0bっても、ランタイムとか以外は以前のSDKのまま。
だから付属のインストールファイルは.NET2002用。
何度か既出の質問なんで、このスレか1つ前のスレを検索してみれ。

786 :デフォルトの名無しさん:03/08/07 22:24
2003用のを誰かツクってよ

787 :デフォルトの名無しさん:03/08/08 00:30
つーか、ウィザードなんか使わないだろ

788 :デフォルトの名無しさん:03/08/08 01:18
せっかくあるなら使ってみたいのが人情ってもんよ。

789 :デフォルトの名無しさん:03/08/09 03:21
お前らいつまでC++使ってるの?
時代はC#なんだよ?わからないかな・・・?

790 :デフォルトの名無しさん:03/08/09 08:18
>>789
人柱がんがれ

791 :デフォルトの名無しさん:03/08/09 10:56
ないんだよ。
金が。

792 :デフォルトの名無しさん:03/08/09 11:50
働けよ

793 :デフォルトの名無しさん:03/08/09 11:58
せっかく2003なのにDXやるなら2002のほうがいいのか_| ̄|○

794 :デフォルトの名無しさん:03/08/09 14:20
>>793
なんでそーなるのか知らんが、ウィザードの事だったら最近の過去ログ探れ。
たしか二箇所の書き換えで.NET2003に入れられる。

795 :デフォルトの名無しさん:03/08/09 15:53
>>794
DirectX C#スレは過去ログとは言わないと思うYO!


796 :デフォルトの名無しさん:03/08/09 17:30
>>795
C++での話じゃないの?

797 :デフォルトの名無しさん:03/08/09 17:35
ウィザード用のファイルをコピーするだけという簡単な作業すら出来ない人が、
プログラムを組むのもどうかと思いますが
PC初心者ですか?

798 :デフォルトの名無しさん:03/08/09 19:04
>>796
このスレは色々な所から多重継承されてるされてるから見落としがあるかもしれんが
C++系の鬱氏で該当レスは見あたらんよ
>>2の過去ログにはなかった
過去ログをみろというレスは見かけたんだが・・・
GREPかけてもサパーリヒットしない(DAT落ちスレ除く)

799 :デフォルトの名無しさん:03/08/09 19:30
2003へのWizardのインストールは、C++でもディレクトリ・ファイルが
違うだけで、C#と同じ方法で出来るのでは?

800 :キリ番ゲッター見習い ◆cEL6a7QKc2 :03/08/10 01:31



    今だ!800番ゲットォォォォ! 
       ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄    
                      
             ∧_∧                 
``)          ( ´∀`)                     
  `)⌒`)      ⊂  ⊂ )       
≡≡≡;;;⌒`)≡≡≡〈 〈\ \  
     ;;⌒`)⌒`)  (__)(__) 
          ズザーーーッ   




801 :デフォルトの名無しさん:03/08/10 01:37
>>320おめ

802 :デフォルトの名無しさん:03/08/10 19:22
今でもサンプル通りとかで、なんとなく使えちゃってるのですが、
やっぱりDirectXやるなら、COMの事を理解しておいた方が良いでしょうか?

というか、意気込んでCOMスレいったら、通夜ムードで…。
今現在のCOM知識は、ヘルプの該当個所を斜め読みした程度です。

803 :デフォルトの名無しさん:03/08/10 20:07
スネ毛の生えた自分の足を見て思った。
これがトゥーンシェーディングか、と……。


804 :デフォルトの名無しさん:03/08/10 20:15
AddRef, Releaseの作法ぐらいは覚えておいたほうがいいと思うズラ

805 :802:03/08/10 20:19
>>804
レスサンクスです。逆に言えばそれだけで良いのかな。
QueryInterfaceなんか使ったこと無いなぁ…。

806 :デフォルトの名無しさん:03/08/10 20:56
>>803
ファーシェーディングでどうやるの?

807 :デフォルトの名無しさん:03/08/10 22:16
>>805
DirectShowだとQueryInterfaceを使うね。
COMは使い方だけ知ってればいいと思う。自分でDLLでも作ろうと思わん限りは。

808 :デフォルトの名無しさん:03/08/10 22:31
うん、COMは使い方だけ知っていればいいね。内部に深入りする必要は無い。
DirectX的には、シェーダープログラミングの理解に時間を振り当てた方が良い。

809 :デフォルトの名無しさん:03/08/10 23:12
sdkサンプルみたいなスキンメッシュを再生できるようになりたいんだけど
どっかいいサイトor本知りませんか?

810 :デフォルトの名無しさん:03/08/10 23:41
>>809
腰を据えて、ドキュメントを見ながら
自力でサンプルを読み解いていくのをお勧めしたい。

811 :デフォルトの名無しさん:03/08/11 00:38
>>809
もう知ってるのかもしれないけど、そのサンプルを読むのに知っておいたほうが
よい情報を教えておきますよ。

ID3DXAnimationControllerのSetTimeメソッドを呼ぶと、D3DXFRAMEの
TransformationMatrixが適切な値に設定される。

俺、これに気づかなくて理解するのにだいぶ時間がかかった。

812 :デフォルトの名無しさん:03/08/11 02:35
ま、ドキュメントには「フレーム階層のトランスフォーム行列を更新する」ってちゃんと書いてあるんだがな。

813 :デフォルトの名無しさん:03/08/11 03:27
あのサンプルを読まなきゃなんないのか
鬱、、、

814 :デフォルトの名無しさん:03/08/11 03:38
とりあえず、「スキンメッシュ」でググってみたら、幸せになれる かも しれない。

815 :デフォルトの名無しさん:03/08/11 05:46
スキンメッシュとかアニメーションとかで適当に
探してはいたんだが、、、

3日くらいがんばればサンプルでも問題ない(と思う)んだが
漏れは一応受験生なんで時間が取れんのよね、、、

とりあえずサンプルをすこしずつ解読していきます。

816 :デフォルトの名無しさん:03/08/11 05:52
素直にGame Programming Gemsでも買っと毛。
実装の手本はSDKサンプルで。

817 :デフォルトの名無しさん:03/08/11 06:04
ここは見た?
個人サイトなので、Google経由
ttp://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=DirectX8%E3%81%AE%E3%83%AF%E3%83%B3%E3%82%B9%E3%82%AD%E3%83%B3%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AA%E8%A9%B1

818 :デフォルトの名無しさん:03/08/11 07:20
>>816
ベクトルとか行列とかの数学は結構勉強してるから必要な知識はあると思います。
C#ならわかりやすいコーディングがあったんで今それをCに直しているところです。

>>817
説明をざらっと読んでプロジェクトを落としてソースを眺めたりは
してました。こちらも参考にしてやはりSDKのサンプルをメインに
がんばっていこうと思います。

てか皆さん本当にいろいろとありがとうございます。
アニメーションを出来るか出来ないかは3Dの分かれ目だと思うので
がんばって早めに取得しようと思います。

819 :デフォルトの名無しさん:03/08/11 10:39
スキンメッシュの前に、その基礎になるフレームツリーのアニメーションは出来てるの?

820 :デフォルトの名無しさん:03/08/11 11:23
>>813
それでもDirectX8時代のSkinnedMeshに比べたら
ものすごく簡単になってるんだよ・・・
DirectX9のアニメーションは楽でいいね、
モーションブレンドとかも実装されててやらなくていいし

821 :デフォルトの名無しさん:03/08/11 14:50
ただ、ID3DXAnimationController、あまりにブラックボックスしすぎじゃないか?
後、C#的プログラム手法が嫌だ。

822 :デフォルトの名無しさん:03/08/11 16:07
C#で組めよアフォたれ

823 :デフォルトの名無しさん:03/08/11 16:24
C#イラネ( ゚д゚)、ペッ

824 :デフォルトの名無しさん:03/08/11 16:24
というか、C#的プログラミング手法ってなにサ。

825 :デフォルトの名無しさん:03/08/11 20:04
自力で実装、これ最強

826 :デフォルトの名無しさん:03/08/11 23:37
フルスクリーンモードでIMEなどのFEPを使用した
文字入力をしたいのですが、(チャットウインドウのような)
誰かご存知のかたいませんか?


827 :デフォルトの名無しさん:03/08/12 01:39
液晶ユーザーの為に

640*480===>>1280*1024(上下に黒帯、スムージング無し)
の拡大ドライバって作れないでしょうか?

828 :デフォルトの名無しさん:03/08/12 05:58
>>827
なぜこのスレに・・・?

829 :デフォルトの名無しさん:03/08/12 08:35
液晶で512×384のフルスクリーン表示したらどうなりますか?


830 :デフォルトの名無しさん:03/08/12 13:41
>>828
スレ違いだったのですか
すみません

>>829
液晶側では受けられない信号なので
GPU側が液晶パネル側の解像度に
スケーリングして出力します。

831 :デフォルトの名無しさん:03/08/12 15:10
LongHornがでればWin32APIは全滅だ!!

832 :デフォルトの名無しさん:03/08/12 17:28
ID3DXAnimationControllerはDX8のSkinnedMeshを理解してれば、お得感あるんだがねぇ。
今でこそ色んなところで日本語サンプルや解説が転がっていて楽だが
DX8が出た初期のころはアレを理解するのに相当の時間を食った…

833 :デフォルトの名無しさん:03/08/12 18:56
>>826
ネット上に転がってますぞよー。

834 :デフォルトの名無しさん:03/08/13 06:37
>>830
DirectXの互換ドライバを作るってことなの?
スレタイトルみた?

ま、ドライバスレッドって無いみたいだけど。

835 :デフォルトの名無しさん:03/08/13 08:29
単にバイリニアを切るってだけなら、ドライバで強制設定出来なくても
ラッパ一つで簡単に出来そうだけど、拡大もするのか。

836 :デフォルトの名無しさん:03/08/13 09:42
じゃあ、こっそり質問でもしちゃおうかな・・

DDRAW(DX7)が扱える最大画像サイズと、どの環境でも動くであろうと
思われる推奨の画像サイズはどんだけでしょうか。

経験上でも結構なので、よろしこ (゚∀゚)

837 :デフォルトの名無しさん:03/08/13 10:49
>どの環境でも動くであろうと思われる
最低動作環境に設定されている640*480
それ以外は保証されない

838 :デフォルトの名無しさん:03/08/13 14:47
そか、サンクスコ(゚∀゚)


839 :デフォルトの名無しさん:03/08/13 15:59
すんまそん

VB DirectXの超素人質問したいのですが、どこですればいいんでしょうか・・・
初心者スレが見つけられません

840 :839:03/08/13 16:07
見つかりました
放置

841 :デフォルトの名無しさん:03/08/13 21:59
VMR Allocator9のサンプル動かしたんだけど、TNT2だとテクスチャが
グシャグシャになってしまう〜。
なんでやねん。ドライバも最新(と言ってもカードが古いが…)入れとるし。
誰か他に動かなかった人いる?

842 :デフォルトの名無しさん:03/08/13 22:54
投影テクスチャについて質問です。

ライト視点でレンダーターゲットのテクスチャに
オブジェクトを描画して投影テクスチャを作り、
それをライトからの影として貼り付けたいのですが、
その際のテクスチャトランスフォームの値と
UV値の設定方法が今ひとつ理解できません。

この辺り詳しい方がおられたら御教授お願いします。

843 :デフォルトの名無しさん:03/08/13 23:12
シャドウバッファでgoogleってみれ

844 :デフォルトの名無しさん:03/08/14 12:15
それは投影テクスチャの問題というよりは、
2つの射影平面をどうやって合わせるか、っていうほうが問題になってそう。

まず最初にライト視点のz深度画像を書くわけだけど、
この画像は通常視点の射影平面とは別の位置にある。
ライト視点の射影平面にあるわけです。

本描画時の頂点シェーダでは、
通常視点で座標変換した頂点座標をピクセルシェーダに送り、
更にz深度画像を書いたときと同じ座標変換をした頂点座標も送ります。
同じ変換をしているのだから、当然、この変換で得られた同次座標の値は、
ライト視点の射影平面における位置を表しています。
(その同次座標をfloat4 tとすれば、t.xy/t.wが射影平面の座標値になる)
このとき、同次座標のz値と、z深度画像のz値を比較すれば、
光が当たっているか、影の領域なのかが判定できるっちゅうわけです。

それから、z深度画像を参照するときはテクスチャ空間に変換しなきゃならんので、
本描画時の頂点シェーダで、z深度画像を書いたときと同じ座標変換の行列に、
テクスチャ空間に写像する行列もついでに掛けておきます。
もちろんテクセルの中央をサンプリングさせるようにすることも忘れずに。

845 :デフォルトの名無しさん:03/08/14 18:36
>>842
シェーダ使わないで実装しようとしているなら、やめた方がいいかも。
テクスチャトランスフォームの仕様が明確でないせいで、HALとTnLHALで
(ドライバによって)別の行列を使わないといけなかったり。

846 :デフォルトの名無しさん:03/08/14 19:21
レスありがとうございます。

どうも勘違いしていたようで、
テクスチャの投影自体は、以下の方法でできました。

D3DMATRIX lightView; //ライトビュー
D3DMATRIX lightProj; //ライトプロジェクション

D3DMATRIX texScale; //x *= 0.5f; y *= -0.5f;
D3DMATRIX texMove; //x += 0.5f; y += 0.5f;
D3DMATRIX InvView; //メインビューの逆行列


D3DMATRIX matrix = InvView * lightView * lightProj * texScale * texMove;

SetTextureStageState(0, D3DTSS_TEXTURETRANSFORMFLAGS,
D3DTTFF_COUNT3 | D3DTTFF_PROJECTED );

SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, D3DTSS_TCI_CAMERASPACEPOSITION);

SetTransform(D3DTS_TEXTURE0, &matrix);

>>845
トランスフォームに違いがあるんでしょうか?
Geforce2では可能でしたが・・・。

847 :デフォルトの名無しさん:03/08/15 02:00
>>846
全ての環境で動くように作るのが無理ってだけで、特定のチップで動くよう
に作るのは可能。

848 :デフォルトの名無しさん:03/08/15 03:05
んなこといったら昔のVGAなんか3Dすらいけないわけだし。
どっかで見切りをつけるしかないよ。

849 :デフォルトの名無しさん:03/08/15 04:41
とりあえずVooDooはもう切ってええよ。

850 :デフォルトの名無しさん:03/08/15 10:02
今、無理をしてでも動作環境に入れるかどうかというと
チップセット内蔵グラフィックかなぁ

851 :デフォルトの名無しさん:03/08/15 12:11
age

852 :デフォルトの名無しさん:03/08/15 13:04
WinXP、VisualC++を使っています。

工学社のDirectX9実践プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4875934610/qid=1060918749/sr=1-1/ref=sr_1_2_1/250-0559328-1750651
に添付のCD-ROMからDX9をインストールし、DirectXGraphicsのサンプルをビルドして
実行したところ、フルスクリーンでは画面が一瞬だけ表示されて落ちる。ウィンドウモードで
はフリーズします。
デバッグしてみたところ、ID3DXSprite::Beginを実行しているところで、
「ハンドルされていない例外はDXGSample01.exeにあります:0xC0000005: Access Violation。」
とメッセージボックスが表示されました。

サンプルには何も手を加えていません。どうか解決策をご指南下さい。

853 :デフォルトの名無しさん:03/08/15 14:23
>>852
自分のとこでは大丈夫なんだけど。
とりあえずWindowsUpdateしてみるとか・・・。

854 :山崎 渉:03/08/15 15:13
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

855 :デフォルトの名無しさん:03/08/15 16:23
>>852
nullポインタにアクセスしているんだろうから、
デバッガのヲチウィンドウでチェックしてみれ。

856 :デフォルトの名無しさん:03/08/15 16:26
ぬるぽちぇけら

857 :852:03/08/15 17:20
VisualC++6.0上の「実行」でプログラムを走らせるとスプライトが確保できているんですが、
普通に走らせると確かにスプライトのインターフェースがnullポインタになっていました。
どうしてVisualC++上でだけ正常に動作して、普通に動作しないんでしょう?

ビルド後のプログラムをアップしてみました。
http://lignel-hp.hp.infoseek.co.jp/DXGSample01.exe

858 :デフォルトの名無しさん:03/08/15 17:52
>>857
俺の環境でもnullポインタ参照を確認した。
ただexeファイルをアップされても、これくらいしか言えん。

つーか、ウイルスチェックの手間を考えると
俺みたいな暇人じゃないと、実行すらしてもらえんぞ。

859 :852:03/08/15 18:01
ごめんなさい。
http://lignel-hp.hp.infoseek.co.jp/Sample1.lzh
がプロジェクト本体です。

860 :デフォルトの名無しさん:03/08/15 18:05
>>859
ああ、すまん言い過ぎた。
ソースのアップは著作権関連でヤバそうだから消すべし。

どうやらテクスチャの読み込みに激しく失敗してるようだ。
>DXGSample01.cpp(165): InitDXGraphics D3DXCreateTextureFromFile (hr=D3DXERR_INVALIDDATA (0x88760b59))

861 :852:03/08/15 18:09
>>852
ありがとうございます。

ですが、VisualC++上に限り正常に動作するのはどうしてなんでしょう?

862 :デフォルトの名無しさん:03/08/15 18:11
>>861
テクスチャファイルはどこに置いてる?

863 :852:03/08/15 18:12
>>855
すみません。自己解決しました。
ビルド後のフォルダにテクスチャ用のファイルを入れていないのが原因でした。

ありがとうございました。


864 :デフォルトの名無しさん:03/08/15 18:20
教訓:エラーのハンドリングはしっかりしましょう。

しかし、デバッグビルドだと結構詳細なシンボル情報が残ってるもんだね。

865 :デフォルトの名無しさん:03/08/15 19:14
>>850
現在メインのチップセット内蔵グラフィックボードは何でしょうか?


866 :デフォルトの名無しさん:03/08/15 21:05
>>865
チップセット内蔵グラフィックボード????????????????????????????????????????????????

867 :デフォルトの名無しさん:03/08/15 21:33
>>866
きっとマザーボードのことだよ

868 :デフォルトの名無しさん:03/08/15 21:58
何故に消えそうなの?あげ

869 :デフォルトの名無しさん:03/08/15 21:59
危なかった・・・。

870 :デフォルトの名無しさん:03/08/15 23:20
アニメーションとスキニングってあんまり関係ないのに
どうして同列扱いで解説しやがるんだろうな。チンコ!ヽ(・∀・)、
おかげでソースが汚くなったじゃないか・・・。
スキニングあるなしでシェーダ分けるのって馬鹿らしいな(DirectX8)
てか、最近、この辺どうなってんのよ。
DirectX9になってからましになった?

871 :デフォルトの名無しさん:03/08/15 23:33
みんなどこいっちゃったの?
だれもいないし・・・。

872 :デフォルトの名無しさん:03/08/15 23:37
>>871
ヲタの祭典、コミケだと思われ(w

873 :デフォルトの名無しさん:03/08/15 23:48
燃料が投下されたようで。

つーか質問ないと成り立たないスレだからなあここ

874 :デフォルトの名無しさん:03/08/16 00:09
>>872
え?そうなの?
3Dな人たちもあそこにいってるのかなぁ?

>>873
暇ならなんか質問してみてよ。
難しいのは答えられないけど。(なんじゃそりゃ)

875 :デフォルトの名無しさん:03/08/16 03:14
くそー・・・
みんないないよー・・・
おかーーーーーちゃーーーーーん!

876 :デフォルトの名無しさん:03/08/16 04:29
質問キボンヌ

877 :デフォルトの名無しさん:03/08/16 07:11
アニメーションやスキニングに関する情報が欲しくなるときは、
たいていどちらにも興味があるからだろう。

まず実装方法が来る>>870はライブラリオタ。アプリ作ってますか?

だいたいシェーダなんて、ライトの数その他の条件で分けていったら
数百個行くのなんてあたりまえだろ。管理がうざいってのはみんな思ってる。


878 :デフォルトの名無しさん:03/08/16 07:20
>>877
じゃあ、やっぱり組むしかないんだ?

おかーーーーちゃーーーーーーん!

879 :>>2ちゃんねらーの皆さん :03/08/16 07:29
2ちゃんねらーなどの間で、人気のある御尊像が有ります。
これらの御尊像を手に入れて、金運向上等を祈願しましょう。(爆)
http://www.butsuzou.com/jiten/sanmen.html
http://www.butsuzou.com/list1/sanmen2.html
http://www.butsuzou.com/list1/sanmen3.html
http://www.butsuzou.com/keitai/sanmen-kz.html

880 :デフォルトの名無しさん:03/08/16 09:00
盆だからだろ、オタといっしょにすんな

881 :デフォルトの名無しさん:03/08/16 12:24
>>880
同意
どこいってもコミケのせいにしてる「自分はヲタじゃない!」って感じのがいる

そこまで影響ねぇだろ!  …ないよね?

882 :デフォルトの名無しさん:03/08/16 14:18
>>881
ないかな?

883 :デフォルトの名無しさん:03/08/16 15:18
質問キボンニュ

884 :デフォルトの名無しさん:03/08/16 16:25
そんなにほしけりゃくれてやる。

689 名前:デフォルトの名無しさん 投稿日:03/08/14 06:41
   C++って、Cより++(チョメチョメ)な分エロいんですか?
   どんなプレイのことをC++(シーチョメチョメ)って呼ぶんですか?
   それと昔、棒ランド(某ランド?)っていうヤバい会社もC++してたんですか?
   MSのはVisual的にスゴいのか・・・(;´Д`)ハァハァ

885 :デフォルトの名無しさん:03/08/16 17:59
0点

886 :デフォルトの名無しさん:03/08/16 18:33
質問お願いします。DX9でアニメーションも簡単になって
ムヒョヒョヒョとしてたのですが、いざ使おうと思ったら色々悩みが・・・・。

例えば素手の人に、銃を持たせるにはどうしたらいいかさっぱりでして。
手の子フレームとして、銃付ければいいや、なんて簡単に考えていたのですが、
モーション付けツールとかとの兼ね合いで面倒になってしまいまする。

上手い方はどうやっているのでしょうか。
いっそ銃持つ人と、素手の人を、別モデルとして扱おうかなどと
考えているのですが、やはりメモリの無駄かな・・・・。

887 :デフォルトの名無しさん:03/08/16 19:07
>>886
どう面倒になってしまうのでしょうか?
めり込むのがどうとかなら多少のポリ割れには目をつぶってみてはどうでしょうか?
指の動きがどうとかなら手首ごと切り取ってみてはどうでしょうか?
銃に限らず道具をもっているときと素手のときとを同じアニメーションで
すまそうとか考えてるデザイナがうザイなら
「あまえんじゃねー!それでプロのつもりかゴラァ!」
とかしばいてみてはどうでしょうか?

・・・なんか私では解決できそうにないですね。
だれか助けてage

888 :886:03/08/16 19:40
おつき合いありがとうございます。すいません、ちゃちな質問を・・・・。

ええっと、今現在、私に出来るのが、一番簡単なモーションデータ付き
Xファイルを出力したり、それを再生する事だけなんです。フレーム階層があって、
それと一対一のアニメーションフレーム階層が、工夫も無くくっついてる様な。

例えるなら・・・
・人のモデルと、そのアニメーションデータ
・銃を持った人のモデルと、そのアニメーションデータ
(人は共通)

このままなら、モーション作る人も私も分かりやすくて幸せなのですが、
実際にはたぶん、下記のデータはバラバラに扱った方が良さそうでして。
・銃のモデル
・人のモデル
・銃を持った人のアニメーションデータ
・素手の人のアニメーションデータ

しかしバラバラに扱い、プログラム側でケース別に対応するのも面d・・・・骨ですし、
モーション作る人も介入しづらいですしで・・・悩んでます。
なんかこう、明快なやり方でもあれば是非。

889 :886:03/08/16 19:43
ぐぁっ、なんか>>887さんへのレスになってない。
すいません、887さんの内容くらい、高度な悩みなら良かったのですが

・・・・恥ずかしい

890 :887:03/08/16 20:09
>>888
人に銃を持たせるだけのような気がするのですけど。
そうでもないのでしょうか?

うーんと、つまりアレですか?
手の階層がどれかわからない、もしくは、
手の階層がどうにもとりにくい構造になっちゃったということですか?
Xファイルを読み込んだときに各階層の名前も保存しておいて
モデルの階層構造に対して名前で検索をかけて
「手の階層をとってくる」とか出来るようにしておけばいいのではないでしょうか?

それともそういう話ではなにのでしょうか?

891 :887:03/08/16 20:24
>>888
質問の意味がなんとなくわかったっぽいです。

1つのモデルに対して複数のアニメーションをつけるには
どうしましょうか?

ってことですね。
てっとりばやくやるには
00-10フレームまでは  歩き、
10-20フレームまでは  走り、
20-40フレームまでは  殴り、
40-53フレームまでは  立ち。
とかやると現在の構造を変えずにアニメーションができます。
でも、このやり方って最悪ですね。
上の例で開発中に途中で
走りアニメーションのフレーム数を変えたい。とかなったら
どうするんでしょうね。

Xファイルで複数のアニメーションを
扱うにはどうすればいいかって結構悩みますね。
モデリングツールでAnimationSetを複数吐き出してくれる
ならそれで解決する感じがするようなしないような気がしますね。

それともそういう話でもないですか?

892 :887:03/08/16 20:32
>>でも、このやり方って最悪ですね。
あ、訂正。
フレームの長さとアニメーションの並び順で管理すれば結構使えますね。

893 :デフォルトの名無しさん:03/08/16 20:35
モーションを作る手間の問題なら、CharactorStudio辺りを使えば簡単に出来るけど

894 :デフォルトの名無しさん:03/08/16 21:03
>>893
http://www.oakcorp.net/max/cs.shtml
↑こんなの3dsmaxとセットで買えないよー。
Maya考えちゃうな。

895 :886:03/08/16 21:24
>>890-892
ぐぁぁぁ、大した質問用意できなかったのに、教授の時間取らせてしまった
時の状況みたいだ・・・・に、逃げ出したい!すいません、本当に。

一つのモデルに複数のアニメーションは、なんとかできていて・・・説明不足で申し訳ないです。
>>891での通りAnimationSetを複数、Xファイルに加えています(でも時間フレームで管理の方が便利そうですね)。

ただそのモデルに、もう一つ二つモデルを、くっつけたい時の扱いが・・・・。
デザイナー(そんな大それたものじゃないですが)側は、どこのモデルが
共通とか考えず、別Xファイルとして、ひょいひょいデータを送ってくる状況なんです。

でもそうか・・・こっちで差分取って、まとめるしかないのかな・・・・できるかな・・・・。
D3DXLoad〜系でお手軽にやってるものですから、>>890で指摘頂いた
辺りが面倒で、つい他の方法や、データ側でどうにか出来ないかと甘えてしまいました。

対話型デバッグじゃないですが、なんだかスッキリしてきました。
親身なレス、本当にありがとうございました。

>>893
どうもです!今は無理ですが、いつかの励みにしたいと思います。

896 :デフォルトの名無しさん:03/08/16 21:34
∩゚∀゚∩<それでは次の質問キボンヌ。

897 :デフォルトの名無しさん:03/08/16 21:51
>>895
市販品でもその辺できてないのあるし、最初は気にせんでもええと思うよ
何やるにしろ、いつでも剣持ったままのゲームとかあったやろ、あれだ

898 :デフォルトの名無しさん:03/08/16 22:56
複数のアニメーションセットを持たせていたほうが実は好都合みたいなことない?
DX9だとモーションブレンドが出来るし

899 :デフォルトの名無しさん:03/08/16 23:06
>>898
そりゃもちろんそうでしょう。
それが本当の使い方でしょうし。

900 :デフォルトの名無しさん:03/08/16 23:29
色々考えると確かに管理が面倒だな
クラス固定のRPGって実はごまかしなんだろうか
使用武器固定みたいな

901 :デフォルトの名無しさん:03/08/16 23:48
最初から手に子フレームを持たせて、武器を持たせておけば?
武器を構えていないときは、そのフレームを表示しない。


後から持たせるより、最初から持っているものを表示しない方が
ラクだと思う。

902 :デフォルトの名無しさん:03/08/17 00:00
素手で殴るのと剣で切る付けるモーションは全く別な動きをするわけですが、
つまり特定のフレームを消すだけでは意味がありません。

903 :デフォルトの名無しさん:03/08/17 00:01
DirectX9について質問なんですが
今まで見てきたwebサイトでは書いていなかったんですが、先ほど見たwebサイトに

CoInitialize(NULL);
を関数のはじめのほうに呼び出してCOMインターフェースを初期化し、

CoUninitialize();
を関数の終わりに呼び出してインターフェースを閉じる作業をさせていました。

DirectX9を使っていく上で、これらの作業は必要なんでしょうか?

904 :>>2ちゃんねらーの皆さん:03/08/17 00:02
2ちゃんねらーなどの間で、人気のある寺院が有ります。
これらの寺院にて諸願成就を祈願しましょう。(爆)

(1-4件目)  http://www.z-shoten.or.jp/
http://www.tctv.ne.jp/matuti/
http://www5b.biglobe.ne.jp/~ryumyoin/
http://www1.ocn.ne.jp/~tatsueji/
(5件目)
寺院名    吉祥山唐泉寺
通称     江戸川不動尊
所属宗派  真言宗泉涌寺派
住所     〒133−0051
        東京都江戸川区北小岩七丁目10−10
        京成電鉄の小岩駅から徒歩約15分
        (JR線の小岩駅は、
        京成電鉄の小岩駅とはもの凄く離れているので不可。)
電話番号  03−3658−4192
住職     高田正圓
        (女住職で、先代住職(高田真快)の奥さんであった模様。) 
本尊     不動明王
祈祷日及び祈祷時刻
        通常は毎日午前6時より(150分前後かかる模様)
        行われるが、毎月28日には(不動明王縁日として)
        午前11時にも(2時間ほどかかる模様)行われる。
祈祷料
(普通護摩)   3000円 5000円 10000円
(特別護摩)   30000円(21日間) 100000円(108日間)
          300000円(365日間)


905 :デフォルトの名無しさん:03/08/17 00:03
>902
モーションは当然、武器の有る無し別に用意する。
当たり前の話だと思うけど?

906 :デフォルトの名無しさん:03/08/17 00:04
>>902
それは殴るアニメーションを件所持のときに適用したりしなければすむことでは?
>>901のはフレーム階層構造を一定に維持しようってことでしょ。

907 :デフォルトの名無しさん:03/08/17 00:05
>>903
ここで必要かどうかを答えることは出来ますが、
まずCOMについて勉強されることをお勧めします。
その上でCoInitializeがどうして必要なのか、
誰が呼び出すべきなのかを考えてください。

908 :デフォルトの名無しさん:03/08/17 00:06
>>903
DirectMusicなどでは必要

909 :デフォルトの名無しさん:03/08/17 00:06
>>902
同じモーション使うって前提の方がおかしいぞ。
モーションはもちろん別でしょ。

それより他の武器を持たせたい時困りそうだ>フレーム消しで対応

910 :デフォルトの名無しさん:03/08/17 00:09
>>903
その質問が実行スパンのことであるなら、
関数単位で呼び出すことは無い。
アプリケーション単位でよい。

その質問が呼び出しの必要性であるなら、
CoCreateInstanceを使うDirectShowでは必須。
Direct3DCreate9でDirect3Dを作成する場合は不要。
ドキュメント冒頭の「COMの使い方」を読め。


911 :デフォルトの名無しさん:03/08/17 00:09
リロードしよ…

912 :デフォルトの名無しさん:03/08/17 00:16
>>909
複数の武器を兄弟フレームで持たせて、必要なものだけ表示するようにすればいい。
キャラクターが使う可能性がある武器を、全てモデリング段階で決定して置く
必要があるけど、普通は決まってるよね。

913 :909=911:03/08/17 00:34
>>912
なるほどねー
後は使う武器と、それ用のモーション名とを、関連づければ一丁あがりか

914 :デフォルトの名無しさん:03/08/17 01:02
>>907
>>908
>>912
勉強になりました。
ありがとうです

915 :デフォルトの名無しさん:03/08/17 03:38
まあ要は
Direct3DCreateみたいなヘルパー関数に頼っていると
CoInitializeを使わなくて良いわけです。やってくれるから。
普通にCoCreateInstance使うとD3DでもCoInitializeやらなきゃならん

916 :デフォルトの名無しさん:03/08/17 10:07
>>912
でもそれって使わない頂点とかモーションとかテクスチャとかも
全部読んどく必要があるんじゃね?
(データが気にならないほど小さいときは別にいいけど)
やっぱりちょっとした部品のカスタム機能ぐらいはつけても
バチはあたらないようなそのほうがいいような。どうよ?


917 :デフォルトの名無しさん:03/08/17 23:11
DirectX8で、テクスチャーのカラーキー以外の部分を白く塗りつぶす
簡単な方法とかって何かありますか?

918 :デフォルトの名無しさん:03/08/17 23:42
>>917
カラーキー消えたじゃん。
時代は変わったんだよ。
消えたものわざわざ使うと面倒だよ。
ちょっと情報を集めるにもなかなか知っている人がいない。
これからつまづくたびにたくさん走り回って調べなきゃいけない。

919 :デフォルトの名無しさん:03/08/17 23:58
>>917
カラーキーなんて画像に固有のものなんだから、
テクスチャ読み込んだ後にLockしてアルファチャネルを設定すればいいじゃん。

920 :917:03/08/18 00:33
>>919
すいません、アルファチャネルをどのように設定すれば白に出来るのでしょうか?

921 :デフォルトの名無しさん:03/08/18 00:38
>>920
いや、アルファはカラーキーの代わりに設定するだけ。

あなたがやりたいことは2Dアクションとかで
キャラが白く光るような効果でしょ?
それなら、テクスチャステージで、テクスチャ色ではなく
白に設定したディフューズ色とかを選択すればいい。

922 :917:03/08/18 00:57
>>921

> あなたがやりたいことは2Dアクションとかで
> キャラが白く光るような効果でしょ?

その通りです。

> それなら、テクスチャステージで、テクスチャ色ではなく
> 白に設定したディフューズ色とかを選択すればいい。

僕はSpriteというやつを使って描画をやってるので
テクスチャステージとかディフューズ色というのが
よく解らないんですけど、もしかするとSpriteだと出来ないんでしょうか?

923 :デフォルトの名無しさん:03/08/18 02:10
スペキュラに0xffffffffをいれればいいだけ。


924 :デフォルトの名無しさん:03/08/18 02:18
と思ったらID3DXSpriteにはスペキュラないのか。使ったことないので知らんかった。
まあスプライト程度、自分で作ればいいってこった。



925 :デフォルトの名無しさん:03/08/18 05:43
テクスチャステージ適当に設定すればできるんでねーの?
MODULATE2X使って光度2倍にしてやるとかかな。
D3DXSPRITEは使ったことがないからどういう結果になるかは知らん。
スペキュラなんかスプライトに使う必要なし。

926 :デフォルトの名無しさん:03/08/18 08:48
3Dゲームで地上と海を作っているのですが、
海の良い表現方法無いでしょうか?
ちなみに、現在は一枚の板を半透明で出してるだけ。
海岸にうち寄せる波辺りを表現したい・・・。

927 :デフォルトの名無しさん:03/08/18 09:07
FF11では(もう1年前の出来事なのですっかり忘れたので記憶が曖昧だが)
海そのものと、打ち寄せる波の2種類に分けてたように見えました。
波はテクスチャを張った板を動かすという感じだったような。
ただ、あまりにもソレが分かってしまう感じで、なかなか萎えれました。

928 :デフォルトの名無しさん:03/08/18 12:45
EQは1枚の板が上下してるだけだった

929 :デフォルトの名無しさん:03/08/18 13:24
水面近似は楽なんだけどねぇ。
波打ち際の波しぶきはやっぱテクスチャ貼るしかないんだろうか。

930 :デフォルトの名無しさん:03/08/18 14:39
DX9のID3DXAnimationControllerについてです。
こいつにはイベントというのがあるようなのですが
どういう機能なんでしょうか?

具体的に言うと、アニメーションコントローラーに割り当てた
アニメーションセットの再生が終了したときに通知を受けたいわけです。
自前でやっても全然構わないのですが、トラック毎の再生速度も
変更できるようなので、ちょっと面倒ですよね。
そこで、イベントを使えばいけるんじゃないかと。

でもヘルプのID3DXAnimationControllerに関する部分では
「GetMaxNumEvents コントローラでサポート可能なイベントの最大数を取得する。 」
としか書いてなくて、イベントとは何なのか、イベントを割り当てるにはどうすれば
いいのか、などの情報を見つけることが出来ませんでした。

931 :デフォルトの名無しさん:03/08/18 21:57
>>930
ID3DXAnimationControllerは別スレッドで動いてるわけじゃないので
イベントは同期オブジェクトではないと思われます。

932 :デフォルトの名無しさん:03/08/19 05:09
>>929
波しぶきをテクスチャで貼るとして、
海岸線の抽出や波の向きはどういう処理で可能でしょうか?

単純に上下するだけでも、
変化のあった岸の部分だけ透明度をあげて描画できない物かな・・・。




933 :デフォルトの名無しさん:03/08/19 05:30
>>932
海岸線は、普通に高さと水面の交線を求めればいいかな…

透明度を上げて描画、ってのは、深さによる濁りみたいなもん?
それならそのまんま深さからα値へ変換すればよさげ。

しかしリアルな波しぶきの表現の画像とかあったら見てみたいもんだなあ

934 :デフォルトの名無しさん:03/08/19 06:41
まぁ波の表現は2Dでもまだまだな分野だから
素人があんまり頑張りすぎない方が良いと思うよ
自分なりのアイデアがあるならまだしも
ここで聞いて回ってるようなレベルでは、ね

単なる嫌味にしか聞こえないかもしれんが妥協は大事だ

935 :デフォルトの名無しさん:03/08/19 06:49
同感。FF11ですらあんな感じだし…

936 :デフォルトの名無しさん:03/08/19 10:51
3ds max + CharacterStudio 使ってます。
MSが配布しているXファイルエクスポーターは
行列キー以外のタイプで出力できないのでしょうか?

また、複数のアニメーションセットを出力することは
できないのでしょうか??

937 :デフォルトの名無しさん:03/08/19 12:19
DrawIndexedPrimitive(D3DPT_TRIANGLESTRIP, ...) を使って隣接してない複数の平面(4頂点)を描画できるの?
どうも全部繋がっちゃうんだけど。
それともD3DPT_TRIANGLELISTでやらないとだめなのかな。

やりたい事は敵キャラの弾を1回で描画なんだが・・・。
ちなみにDX7使ってます。

938 :デフォルトの名無しさん:03/08/19 13:24
Bit()で拡大コピーをすると、純粋に拡大ではなく、
角の取れた滲んだ拡大が行われてしまいます。

純粋に拡大コピーをするにはどうすればいいのでしょうか?

939 :デフォルトの名無しさん:03/08/19 14:08
>>938
角の取れたってのがよくわからないが純粋に拡大してくれるよ。
RECTの指定が間違ってるんでないの?それかドライバの(ry
綺麗に拡大させたいのならLockして自前で拡大処理すればよろしい。

940 :デフォルトの名無しさん:03/08/19 15:23
>>930
謎が多い・・・。
では、ID3DXAnimationControllerに関して、もうひとつ質問いってみようか!!!

これから、ID3DXAnimationSetを取り出して、どこかのID3DXInterpolatorを
取り出します。
LPD3DXKEYFRAMEINTERPOLATOR pd3dInterpolator=NULL;
pd3dAnimationSet->GetInterpolatorByIndex(i, (LPD3DXINTERPOLATOR*)&pd3dInterpolator);

インターポレータから回転のキーをとりだします。
UINT numRotations=m_pd3dInterpolator->GetNumRotationKeys();
D3DXKEY_QUATERNION* pRotationKeys=new D3DXKEY_QUATERNION[numRotations];
pd3dInterpolator->GetRotationKeys(pRotationKeys);

このとき、キーが存在する時間の回転を補間によって取り出してみたときに、
DOUBLE time=pRotationKeys[0].Time / pd3dInterpolator->GetSourceTickPerSecond();
pd3dInterpolator->GetSRT(time, pScale, pRotation, pTranslation);

キーで表されている回転 pRotationKeys[0].Value と
補間で得られる回転 *pRotation が違うのです。
どう違うのかというと、pRotationKeys[0].Value は *pRotation の逆元なのです。
このふたつは等しいはずだと思うんですが・・・。これはなぜなんでしょうか?

941 :デフォルトの名無しさん:03/08/19 20:56
>>937
012, 345
が頂点の三角形なら

012, 23, 345
の順にindex化すると
見えない三角形ができてストリップを繋げられる。

四角形なら
0123, 334, 4567

でも、Listで描くよりかえって遅くなるけど・・・。

942 :デフォルトの名無しさん:03/08/19 21:43
>>941
あーほんと出来るけど遅くなる。
スプライトの高速化ってみんなどーやってんだろ。

943 :デフォルトの名無しさん:03/08/19 22:07
>>942
上の連結も頂点が5つ以上なら多少意味があるのかも・・・。

結局、Listをindexで描画して、
後はできるだけDrawPrimitive回数を減らすくらいしか無いのでは。
(Stateやテクスチャが同じ物をまとめて描画する)

VertexBufferに積んでも
座標がスプライト毎に変わるから余り意味無いし。

944 :デフォルトの名無しさん:03/08/19 22:38
これからDirectXをつかって2Dアプリを作りたんですけど、
バージョンはいくつを使ってはじめるのがお勧め?
OSはXPです。

945 :デフォルトの名無しさん:03/08/19 23:04
たのむからDX9を使ってくれ

946 :デフォルトの名無しさん:03/08/19 23:11
>>944
DX9 の Managed DirectXでDirectDrawを使う

947 :デフォルトの名無しさん:03/08/19 23:59
今でもDirectX7使ってる奇人って、なんでいるの?

948 :デフォルトの名無しさん:03/08/20 00:40
ユーザ環境に合わせるならDX7になるだろうねえ。

949 :デフォルトの名無しさん:03/08/20 01:24
DirectXのREFって何の為に存在するの?
どうせREFで動かしてもまともな速度にならないのに。
設計当時はCPUで何とかなるレベルだと思ってたの?

950 :デフォルトの名無しさん:03/08/20 01:44
9.0bと9.0aってセキュリティ以外では何が変わったんだ?

951 :デフォルトの名無しさん:03/08/20 02:15
>>949
ハードウェアが怪しい動作をしているかどうかのチェックが出来るんじゃない?
ソフトウェアレンダラは必ず正しい結果でレンダリングできるから

952 :デフォルトの名無しさん:03/08/20 02:22
>>942
敵弾くらい小さいものなら
三角形の内接円みたいに敵弾テクスチャを描いて
ポリゴン1枚で済ませるとか。

>>944
個人でやるならDX9にシフトしといたほうが良いと思う。

>>949
その名の通りreference用かと。
比較検証用。

953 :デフォルトの名無しさん:03/08/20 02:35
>三角形の内接円
ポリゴン数は半減するけど、フィルレートはどんなもんだろ?

954 :デフォルトの名無しさん:03/08/20 07:35
ポリ数ってあんまり常識はずれな数を使わなければ、
あんまり関係無くない?(PCだと)
どっちかっていうとフィルレートの方が問題になる場合多くない?
そんなことない?


955 :952:03/08/20 07:50
あー、確かにフィルレートの影響をより大きく受けるかも。
あんまり深く考えてなかった。

956 :_:03/08/20 08:04
http://homepage.mac.com/yamazaki8

957 :_:03/08/20 08:10
http://homepage.mac.com/yamazaki8/hankaku10.html

958 :デフォルトの名無しさん:03/08/20 08:56
フィルレート稼ぐ方法はあるんですか?
画面全体を塗りつぶすだけで結構処理くってるのですが・・・。

959 :デフォルトの名無しさん:03/08/20 09:11
>>958
できるだけ前から描画するくらいがプログラマにできることでしょう。


960 :デフォルトの名無しさん:03/08/20 10:09
>>959
…他の処理は済んでる前提だよな?
…フィルレート稼ぐなんてプログラマ以外は出来ないと思うけど…

961 :デフォルトの名無しさん:03/08/20 10:39
で、どうやってフィルレートを稼ぐんだ?
良いビデオカードに買い換えるってのは無しの方向で。

962 :デフォルトの名無しさん:03/08/20 12:44
敵弾みたいのだと、
αテストで完全透明部分を回避、
くらいしかできんからなあ。

963 :デフォルトの名無しさん:03/08/20 13:48
>>960がフィルレートを稼ぐプログラマならではの方法を知ってそうなので教えろ。

964 :938:03/08/20 15:41
すいません、言葉足らずでした。
Bltで拡大コピーと行うと、アンチエイリアシングが行われるのですね、
StretchBltではアンチエイリアシングは行われないんです。
BltでStretchBltのようにアンチエイリアシングされないBitのやりかたを
知りたいんです。
Lockしたり、StretchBltすれば同じ結果を得られるとは思うのですが、
出来ればDirectXの機能で行いたいのですよ。

よろしくおねがいします。

965 :デフォルトの名無しさん:03/08/20 15:50
>>964
アンチエイリアシングじゃなくてバイリニアフィルタリング。
ドライバ側の設定を変えなくちゃいけないんだろうが
DirectDrawはもはや失われたに等しいので詳しくは分からない。
Direct3Dに乗り換えてください。

966 :デフォルトの名無しさん:03/08/20 18:53
DX9のキモ!
ID3DXAnimationControllerの人柱報告、激しくキボンヌ(切実)

967 :デフォルトの名無しさん:03/08/20 18:58
DX9のキモはHLSL、PS2だろという突っ込みは無しですか?

968 :デフォルトの名無しさん:03/08/20 20:02
PS2ってなに?

969 :968:03/08/20 20:03
あ、PSはピクセルシェーダーか。プレステかと思った。
死んできます。

970 :デフォルトの名無しさん:03/08/20 20:38
PS/2
とかいってみる

971 :デフォルトの名無しさん:03/08/20 20:39
>>970
>>970

972 :デフォルトの名無しさん:03/08/20 21:01
HLSLって何?

973 :デフォルトの名無しさん:03/08/20 21:12
>>972
はいな!直リン!
http://monsho.hp.infoseek.co.jp/dx/dx54.html
http://if.dynsite.net/t-pot/program/72_HLSL/index.html

974 :デフォルトの名無しさん:03/08/20 21:24
もうそろそろ、次スレへの移行を時期ですかね?

975 :デフォルトの名無しさん:03/08/20 21:49
>>974
( ・∀・)もうそんな時期ですか・・・

976 : ◆Manna2uCLg :03/08/21 07:49
んじゃ、そっくら立ててきますわ。

977 : ◆Manna2uCLg :03/08/21 08:08
次!

鬱だ氏のう DirectX (Part 10)
http://pc2.2ch.net/test/read.cgi/tech/1061420660/


978 :デフォルトの名無しさん:03/08/21 08:09
>- 宇治社中改(3D基礎講座)
>http://www.cc.rim.or.jp/~devilman/
どうにかして見られないものか

979 :デフォルトの名無しさん:03/08/21 08:20
>>978
そーいうときはコレを使うとやっぱり見つかったりするらしい。
http://web.archive.org/web/20020607052151/http://www.cc.rim.or.jp/~devilman/

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

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

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)