■過去ログ置き場に戻る■ 1- 次250 最新50


[memo] "9999999999_00.html#R20" という感じで、URLの最後に "#RレスNo" を追加すると幸せになれます。

DirectX総合スレ (Part2)
1 名前:名前は開発中のものです。 :04/09/22 23:30:32 ID:anobjZYP
DirectXについては基本このスレで話していこうとものです。
基礎的な質問+高度な質問も簡潔かつ簡単に答えることをモットーにして頂き
このスレの回転を早めて常にアクティブなスレにしたいと思っております。
このスレに質問等を書かれる方はまず最初に自分でしっかりと調べたのちに聞かれることをお願いします。
質問に対する答えも簡潔に出来る限りわかりやすくお願い致します。

テンプレは >>2以降で


2 名前:名前は開発中のものです。 :04/09/22 23:31:13 ID:anobjZYP
■過去スレ
DirectX総合スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/

■関連スレ
Direct 3D
http://pc5.2ch.net/test/read.cgi/gamedev/1005293179/

■関連サイト
- MSDN > DirectX
http://www.microsoft.com/japan/msdn/directx/default.asp
- DirectX Home Page
http://www.microsoft.com/japan/windows/directx/default.mspx

- DirectX Info Lib (デバイス情報のデータベース。すばらしい!)
ttp://www.netsphere.jp/dxinfo/
- BBX(掲示板)
ttp://isweb8.infoseek.co.jp/computer/bbx/


3 名前:名前は開発中のものです。 :04/09/22 23:33:28 ID:bWOthTlc
>>1オツ

4 名前:名前は開発中のものです。 :04/09/23 07:45:54 ID:wWyt1iAb
皆さん名前付けはどうやってます?
API に合わせて CreateWindow にしてます?
それとも STL 等に合わせて create_window にしてます?

5 名前:名前は開発中のものです。 :04/09/23 08:45:52 ID:0sULLXRp
>>4
createWindow

6 名前:名前は開発中のものです。 :04/09/23 08:47:29 ID:EN30IcEu
>>5
俺もれも

7 名前:名前は開発中のものです。 :04/09/23 08:55:16 ID:u6euf6A9
>>5
吐き気がする

8 名前:名前は開発中のものです。 :04/09/23 09:39:18 ID:0sULLXRp
>>7
これならWin32APIともSTLともバッティングしないし結構気に入ってたりする。
createWindow
getWindow
setWindow
とか。

9 名前:名前は開発中のものです。 :04/09/23 18:08:42 ID:bMGyN+I3
>>8
やっぱ、java風のコーディング標準が一番しっくりくるよね

MS方式
クラス名 CClassName
構造体名 SStructName
メンバ関数名 MethodName()
メンバ変数名 m_menber_variable

多分、クラスの頭にCを付ける、って習慣は、メソッド名がキャピタルだから
そうしたんだろうな。createWindow方式ならCWindowじゃなくてWindowでOK

10 名前:名前は開発中のものです。 :04/09/23 20:29:15 ID:h/BbTmk8
createWindowは俺も違和感感じるな。
名前重複を避けるならSetupWindowとかInitWindowとかがあるべ

11 名前:名前は開発中のものです。 :04/09/23 20:43:37 ID:0sULLXRp
>>10
名前重複って意味じゃなくてスタイルの重複を防いでるわけ。
どうしても意味的にGetWindowってつけたいのにWin32APIとバッティングすると面倒じゃん。

12 名前:名前は開発中のものです。 :04/09/23 22:12:45 ID:KRP9ebNx
Cの頃からcreateWindowみたいな命名規則使ってたから特に違和感ないなぁ。

ところで>9 のm_member_variableの誤字を見て思い出したんだが、
英語を日本語表記する際mとnがどっちも「ン」になるのはどうにかならんのか。

13 名前:名前は開発中のものです。 :04/09/23 22:45:54 ID:wJgJDSNo
じゃあ、このスレでの標準はメムバとかコムピュータとかオリムピックとかに。

14 名前:名前は開発中のものです。 :04/09/23 22:59:35 ID:jw2Q66N0
ティムポっていってほしいんだろ

15 名前:関連スレ :04/09/23 23:35:20 ID:aZqAfyms
Direct 3D
http://pc5.2ch.net/test/read.cgi/gamedev/1005293179/
出し惜しみせずに3Dの技術を誰かが答えます Part4
http://pc5.2ch.net/test/read.cgi/gamedev/1021171809/
【フリー】モーション付きXファイル出力【ツール】
http://pc5.2ch.net/test/read.cgi/gamedev/1068375798/
Xファイルを再生するスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1006624202/
鬱だ氏のう WinG
http://pc5.2ch.net/test/read.cgi/gamedev/1020152759/
ピクミンの水の表現はどうやってるの?
http://pc5.2ch.net/test/read.cgi/gamedev/1005459713/
衝突力
http://pc5.2ch.net/test/read.cgi/gamedev/1012852070/
【Collision Detection】
http://pc5.2ch.net/test/read.cgi/gamedev/1015484028/
■3Dツール総合@ゲーム製作■
http://pc5.2ch.net/test/read.cgi/gamedev/1094144808/
3Dエンジンの技術について語ろう
http://pc5.2ch.net/test/read.cgi/gamedev/1023414393/
各種ライブラリ紹介スレ
http://pc5.2ch.net/test/read.cgi/gamedev/1008220559/
3Dアクションゲームの設計
http://pc5.2ch.net/test/read.cgi/gamedev/1092865676/
★Quake2のソースで勉強するぞ!!★
http://pc5.2ch.net/test/read.cgi/gamedev/1010658288/
HalfLife2のソースコードをみんなで解析するスレ
http://pc5.2ch.net/test/read.cgi/gamedev/1065328371/
お勉強ページ 勝手にリンク
http://pc5.2ch.net/test/read.cgi/gamedev/1005060553/

16 名前:名前は開発中のものです。 :04/09/24 05:35:16 ID:fM7f7vLJ
ム板の鬱死DXは次スレ立ってないけど、ほんとにゲ製板のDXスレに
統合する、ということなのかな?

http://pc5.2ch.net/test/read.cgi/tech/1088594869/520
でD3DXLoadMeshFromX()がE_FAIL返すっての報告されてたんだけど、
漏れはD3DXLoadSkinMeshFromXofとD3DXCreateTextureFromFileが
E_OUTOFMEMORYを時々返す、ってのに遭遇したよ。(再現性は低い)
データの読み込みを(Now Loadingの演出をするべく)ワーカースレッドに投げてて
どっかで同期取らなきゃいけないところで同期とってないのかなぁ、と思ったんだけど
結局わからないんでSleep(1)しながら3回試すって対処しちゃった。
それ以降このエラーには遭遇してないんだけど、だれか似たような状況になった人いない?

17 名前:名前は開発中のものです。 :04/09/24 10:20:28 ID:PQB9YdCA
前スレ>>985
HLSLでコンパイルされたコードに疑問があるなら
D3DXDisassembleEffectもしくはその他類似関数で
解析してみるといい。

18 名前:名前は開発中のものです。 :04/09/27 14:04:39 ID:JqLcmvN4
d3dx9dt.lib(fastftoa.obj) : error LNK2001: 外部シンボル "__aulldvrm" は未解決です

このエラーの解決方法わかりますか?
Summer入れてUnicodeが解決して後はこれだけ・・・
ネットで調べても 英語とItalien?と中国等8件しか
引っかからなかった
英語では your old proje・・・
中国、Italien?は d3dx9dt.libとかしきりに書いてあった
一応いれては入るのですが
#pragma comment ( lib, "d3dx9dt.lib" )

Italienってイタリアですかい??


19 名前:名前は開発中のものです。 :04/09/27 14:06:59 ID:JqLcmvN4
忘れてた

環境はVC6
Geforce256
Summer(2004)です

よろしくお願いします。
とりあえず小規模プロジェクトでやり直すかなぁ


20 名前:名前は開発中のものです。 :04/09/27 15:16:17 ID:6rLXZ17y
>>18
海外のフォーラムを検索したところ、
プロジェクトタイプがコンソールアプリケーションになってるとそのエラーが出るらしい。
プロジェクトの設定→リンカ
で/subsystem:consoleになっていたら/subsystem:windowsに直すことで解決する

とのこと。
これはライブラリのパスが正しいのにそのエラーが出る場合らしいけれど・・・

21 名前:名前は開発中のものです。 :04/09/27 15:34:49 ID:JqLcmvN4
>>20さん
レス有難う御座います。
調べてみた所 /subsystem:windowsになってましたorz
ついでに項目を削除しても効果なす

とはいえ勉強になります。ありがと〜
間違ってコンソールで作った時は
泣く泣く丸ごと作り変えてました。

只今プログラム分解してテスト中

22 名前:名前は開発中のものです。 :04/09/27 15:43:01 ID:yk1CY732
>>21
自分は面倒だから d3dx9dt.lib を d3dx9d.libにしたよ

23 名前:名前は開発中のものです。 :04/09/27 15:59:59 ID:JqLcmvN4
うっほ 動いた!
何故だ(´Д`;)

>>22さん有難う御座います

謎調べに移行

24 名前:名前は開発中のものです。 :04/09/27 17:22:20 ID:l/uQFpD4
Extrasを入れればよい

25 名前:名前は開発中のものです。 :04/09/27 17:43:29 ID:loiW5PPz
ゲーム作る前にいつも絵の事で悩んでます。
皆さん絵上手なんですか?ネットにあるどのゲームも綺麗な
グラフィックで羨ましいな。文章もダメだけど。。
シナリオは無くてもゲーム作れるけど、グラフィックなしのゲームは
ありえない罠。

26 名前:名前は開発中のものです。 :04/09/27 19:41:48 ID:QQtsTHnK
>25
それがDirectXと何の関係が?

27 名前:名前は開発中のものです。 :04/09/27 19:44:32 ID:JqLcmvN4
絵は上手くないなぁ
一応やさしい人物画とかで
勉強はしているけど

3Dものなら
キャプった画像や、
3Dで作った物をレンダリングして
貼り付けている・・・

28 名前:名前は開発中のものです。 :04/09/27 19:46:33 ID:CNZfdaSx
>25
どんなゲーム作るかにもよるけど、
シューティング作るときはとりあえず、3Dソフトでプリミティブを加工した程度のものをレンダリングして使ってた
あとはフリー素材でテクスチャなんかあるのでそれを利用

きちんとした形で公開するつもりなら絵の作れる人と組めばいいと思う
グラフィックはヘタレ版でシステムがきちんと完成した状態なら、
ネットで呼びかければ手伝ってくれる人は見つかると思う

何もできてない状態で人集めても集まらない
たまに集まってるけど、ほとんどがお流れじゃないかな

29 名前:名前は開発中のものです。 :04/09/28 10:49:38 ID:wIJ4GsK1
>>25
こういうとき、俺が決まって紹介するのがまずこのゲーム。
http://www.norify.jp/~ns700x/kukeidan.htm
さらに、皆がハマッてるこの系統とか。
http://www.geocities.co.jp/SiliconValley-SanJose/9606/zg/inst-w.html
ABAさんとこのとか。
http://www.asahi-net.or.jp/~cs8k-cyu/windows/tf.html
最近一部で大人気らしいこれとか。
http://www.harveycartel.org/metanet/n_screenshots.html

というか、遊んでるときはグラフィックなんてゲームの面白さと関係ないじゃんとか言うくせに、
いざ自分で作るとなると、見た目を過剰に気にするヤツ多すぎ。
そういうヤツって、結局「ゲーム」を作りたいんじゃないんだよな。

とか言ってみるテスト

30 名前:22 :04/09/28 15:47:25 ID:+etBdtyw
>>23
一応補足だけど、
d3dx9dt.lib は スタティックライブラリで
d3dx9d.lib は d3dx9d.dll へのインポートライブラリだけど、
ランタイムの方には d3dx9d.dll は入ってないぽいので、
配布するときはリリース版の(Extrasで修正した)d3dx9.libを
リンクするように注意しる。
(常にd3dx9.libを使うのも楽かも)

31 名前:名前は開発中のものです。 :04/09/28 18:21:26 ID:RIga5vzj
>>26
だと思いましたが、ここの人たちはレベルが高そうなので聞いてみました。すみません。

皆さんレスありがとうございます。
やっぱり同じように思ってる人いたんですね。
>>29
見た目も立派なゲームの重要要素だと思います。
動かないより動いたほうが面白いし。
でも、動かすのはよりムズイ。

32 名前:25 :04/09/28 18:35:30 ID:RIga5vzj
名前欄書くの忘れてた。
あと思うのは素材探すより作った方が早い気がする。。。
これが欲しいと思ったモノってなかなか見つからない。

33 名前:名前は開発中のものです。 :04/09/28 21:11:45 ID:KrLK6Y+v
>25>31-32
質問は適切な場所でするべきだと思います

34 名前:23 :04/09/28 23:39:20 ID:a4AdCX6Z
情報どうもです
気をつけます。

そのままの状態で出しそうだった・・・。


35 名前:25 :04/09/29 18:31:47 ID:p5zY/IKa
御迷惑お掛けしました。すみません。

36 名前:名前は開発中のものです。 :04/09/30 17:50:01 ID:g9d6H2VP
ゲーム製作でグラフィッカーを担当している者です。
もしかしたらスレの趣旨と違うかもしれませんが、質問させていただきます。
DirectXで画面に表示される総ポリゴン数の目安というのはどの程度でしょうか?
プログラム担当に聞いたところ、△2万程度と言っていましたが、いくらローポリとはいえ、
3D畑の人間からすると、背景等も含め2万というのはかなり少ない印象です。
プログラム担当者もゲーム製作の経験はなく、お互いに手探り状態なので、
参考のために答えてくださるとありがたいです。

ジャンル→主人公が敵をバッタバッタ切り倒していくアクション
動作スペック目安→CPU:1G以上、メモリ512M以上、GRAM64M以上

37 名前:名前は開発中のものです。 :04/09/30 18:18:16 ID:kQOU1s0T
>>36
どんな処理をするかにもよる。
実際に動かしてクオリティと動作を天秤にかけるよろし。

38 名前:名前は開発中のものです。 :04/09/30 19:35:58 ID:DsjOQEZr
PC>CG>ローポリスレ2
ttp://pc5.2ch.net/test/read.cgi/cg/1084384141/l50
参考になるかはわからんけど

2万ポリゴン表示してみてはどう?

CPU1.8GHz Geforce256
4000ポリゴン(背景+キャラクタ)ぐらいだったかの
アクション作ったらカクカクしやがった(w
処理に問題あったかも知れないけど@@;


39 名前:名前は開発中のものです。 :04/09/30 19:45:24 ID:gLH8nbzF
>36
情報が少ないのでなんともいえません
あと動作スペック目安はCPUよりも、どれくらいのレベルのグラボを使うかのほうが重要な情報です

ほかにも以下の状況でかなり変わってきます
最低動作のグラボはどれくらいのものを想定しているのか?
LODとか視界にはいらないものは表示しないとかやってるのか?
TriangleStripは使ってるのか?
スキニングは行うのか?
シェーダは使うのか?

40 名前:名前は開発中のものです。 :04/09/30 19:58:18 ID:48lVqtGy
僕らのアイドルガンダムー
今日も得意のガンダムチョップが炸裂だー(うわ、したり顔だよ!)

41 名前:36 :04/09/30 20:42:48 ID:g9d6H2VP
>37-40
返答ありがとうございます。
>37
そうですね。
試行錯誤を繰り返すのは大事なので、しっかりと検証しようと思います。
>38
実はまだプログラマの方からデータを受け取っていないので、
実際の処理を行った状態でどうなるかは分かんないのです。
なので、その結果を見てからさらに考えてみることにします。
>39
情報不足すみません。
まだまだ細かい仕様までは決まっていない状態なので、
自分たちの技量を見て決めていこうと思います。

42 名前:名前は開発中のものです。 :04/09/30 21:49:44 ID:SRafgx9v
>>36
ワンフレーム2万ポリとして
リフレッシュレート60ぐらいだとしても秒間120万ポリじゃん。
αなんかも足をひっぱるし、塗りも考えると
ま、こんなもんじゃねーの?w

43 名前:名前は開発中のものです。 :04/09/30 22:51:21 ID:DhxqeiD/
>>36 ポリゴン数より
塗りつぶし面積とテクスチャ複数重ねの方が速度の影響でかいぞ。

44 名前:名前は開発中のものです。 :04/09/30 23:16:40 ID:gLH8nbzF
参考にならないとは思うけど26112ポリゴンのXメッシュ
ttp://www.fileup.org/file/fup0571.lzh
げふぉ5200の人とかは重いのかな
げふぉ5900では軽いです

実際はこんな単一のメッシュじゃなく複数のメッシュにわかれるだろうから、
こんなには軽くはないと思いますが…

45 名前:名前は開発中のものです。 :04/09/30 23:34:19 ID:DsjOQEZr
>>44
面白そうだから 表示してみた。
キモイ(w
だがそれがいい

CPU1.8GHz Geforce256で45fps
ViewerはNewTekの奴

46 名前:名前は開発中のものです。 :04/10/01 00:31:43 ID:LNShLX8+
>>44
一瞬何かとオモタw
CPU1.8G RADEON9600で180fps
DXSDKのMeshView

47 名前:名前は開発中のものです。 :04/10/01 00:39:50 ID:9Rt1YzYd
また>>43みたいな馬鹿が出現しているが、
ハードウェアの転送能力を使い切るようなサイズの描画を行わない限り、
フィルレートよりも頂点計算による負荷の方が大きい。

48 名前:名前は開発中のものです。 :04/10/01 00:43:02 ID:OVQNPrmK
FPSの最大値を60って決めてないのに、
なぜか勝手に60FPSが最大値になってしまう・・・。
どんなに処理を軽くしてもこうなる。
これの原因って何が考えられますか・・・?

49 名前:名前は開発中のものです。 :04/10/01 01:01:47 ID:cJTZrCvc
>>44
とりあえずちかごろの最低ラインっぽいスペックで。
penIII1.0G RADEON9000
MeshViewで40〜50をうろうろ。
1024*768で最大化すると36周辺に落ちたりする。

50 名前:名前は開発中のものです。 :04/10/01 01:02:29 ID:T16W/RQD
>>48
D3DPRESENT_PARAMETERSのPresentationIntervalメンバの値を
D3DPRESENT_INTERVAL_IMMEDIATEにしてみれ

51 名前:36 :04/10/01 01:13:21 ID:Ule3aCru
>44
3D開発環境のPen4 2.8G Quadro4 980XGLで400fps前後でした。

上の方々のfps報告を見ていると、2万ポリゴンでもちょっと危険なくらいなんでしょうか・・。
ひとまず、まだ製作に入ったばかりなので、システムなどができてきてから
一度検証してみることにしてみます。

52 名前:名前は開発中のものです。 :04/10/01 02:39:33 ID:zgqgswOv
2Dで作る時とかもClearメソッドで毎回、画面をクリアしなければ
いけないのでしょうか?しなかったら、画面荒れるし。
更新すべき領域だけ更新しなくても対して変わりませんか?
WindowsのGDI使う時はかなり重くなりますが...

53 名前:名前は開発中のものです。 :04/10/01 03:00:26 ID:AF2jiSUQ
>52
更新領域が小さい場合はそれでもいいと思うけど、
画面がめまぐるしく変化する場合、
更新領域が画面全体より大きくなる場合もあるから状況によるんじゃないでしょうか

動きの少ないパズルゲームみたいなのであれば更新された部分を出すのは難しくないし、
更新すべき領域の面積も小さいので効果的だと思います

54 名前:名前は開発中のものです。 :04/10/01 13:55:40 ID:s0Nc5b8q
>>47
いつの時代のPCだよw
もちろん頂点座標の変換やライティングの負荷を減らすため
画面上での視野角が小さい物体には、簡略化したモデルを使う
LOD処理は重要だが。

55 名前:名前は開発中のものです。 :04/10/01 14:27:28 ID:9Rt1YzYd
>いつの時代のPCだよw
無論、今の時代。
>>44のサンプルでも確認できるが、サイズをかなり大きくして、
一定の限界量を超えるような状態を作らない限り、FPSにはほとんど差が出ないし、
限界まで小さくして、ほとんど塗りが無い状態にしても、
FPSはほとんど上がらないのが分かるだろう。

56 名前:名前は開発中のものです。 :04/10/01 15:11:28 ID:s0Nc5b8q
>>55
CPUで頂点演算してた時代かと。 
そうだとすると多くのPCゲームにある、画面解像度の変更オプションなんて
意味ないじゃんw
キャラを単体で表示するだけなら、速度に影響ないように思えるだろうけど、
3Dゲームだとキャラは複数、背景オブジェクト、炎や炎とかのα付きポリゴンも
表示しないとならんでしょ。
森の中や街中のように、沢山のポリゴンが重なっている場合は影響でかい。
あと画面をズームさせるのもつらかったりする。
それから>>36の作りたいゲームにはあるかわかんないけど、
水面の映り込みやら、壁にバンプマップ使うとか、ピクセルシェーダ使った
エフェクトも、描画面積によっては激重になったりするんで注意。

57 名前:48 :04/10/01 15:18:54 ID:YdevfgFc
>>50
ありがd!解決しました。

58 名前:44 :04/10/01 16:17:44 ID:AF2jiSUQ
書き忘れ
>44のモデルをMeshViewerなんかでそのまま見ると全部トライアングルリストになってるので、
トライアングルストリップを使うと、処理落ちしている環境でも劇的に改善されると思います

59 名前:名前は開発中のものです。 :04/10/01 16:38:08 ID:9Rt1YzYd
>>56
>キャラを単体で表示するだけなら、速度に影響ないように思えるだろうけど、
MultiAnimation.exeで、キャラを10体程度出して、
全員が表示されている状態と、範囲外へ移動して全く塗りが発生していない状態と、
負荷を比べてみるといい。
キャラを増やしたときに生じる演算負荷よりも、塗りが減ったことによる負荷の方が遙かに小さいことが分かる。

>あと画面をズームさせるのもつらかったりする。
特定の対象物をズームすれば、表示しなければならない描画オブジェクトが減って、
逆に軽く作ることが出来るので、つらくはならないはず。
表示しないものまで計算していれば、MultiAnimation.exeのように重くなるのは当然だけど、
それは組み方が悪いだけでは?

60 名前:名前は開発中のものです。 :04/10/01 18:23:45 ID:s0Nc5b8q
>>59
そりゃtinyレベルのメッシュを沢山出せば重いだろw
MultiAnimation.exeが視錐台カリングやっているのかは知らんが。
そうじゃなくて、同じポリゴン数でも、キャラがアップになると
(描画面積が増えたら)速度低下があるってことを考慮しないと
いかんと言いたいわけだ。

ズームの例えは説明不足だったかな?
普通の状態で描画が間に合っている画像でも、何の手段も講じず
ズームすると(視錐台カリングはしていても)描画すると、時間が
間に合わなくなることは多い。
ちと極端な例だが、爆発の煙とかの4頂点の板ポリ、こんなの
数十枚でも画面いっぱいに描画すると悲しいことになるぞ。

61 名前:名前は開発中のものです。 :04/10/01 19:18:04 ID:AF2jiSUQ
ttp://www.fileup.org/file/fup0595.lzh
このモデルを正面から見たときと横から見たときではFPSが変わってきます
描画面積の影響を受けてるということですね

高速化を考えるなら描画面積、頂点計算両方考慮しないといけませんね

62 名前:名前は開発中のものです。 :04/10/01 19:28:49 ID:PNv2ihpg
>61
まとめ乙。

63 名前:名前は開発中のものです。 :04/10/02 00:12:26 ID:kghZkJk+
>>60
同意。
俺のゲームもそうなる。

実験的なプログラムで頂点計算と塗りを比べて見ても大した差は出ないけど
実際にゲームを作ってみると、αや2度塗りにすげー足を引っ張られることになる。
どっちかっていうと頂点数より塗りの方が処理が重いように感じる。

つーか、扱うことができる頂点数の割には塗りの処理速度が遅すぎるってのが正しいのかもしんない。

64 名前:名前は開発中のものです。 :04/10/02 08:14:37 ID:W9zE2lsg
フィルレートを稼ぐため、大量に煙が発生するシーンでは
煙を画面解像度より、かなり小さいテクスチャに描画して
最後にその小さいテクスチャを、通常のサーフェスに
コピーしたっていう市販ゲームの文書があったな。

65 名前:名前は開発中のものです。 :04/10/02 10:43:14 ID:GmFT9ijk
ためしに今作っているプログラムでカメラを離して、
描画される物を小さくしてみたけど、全然速度が変わらなかった。
でもデバイスサイズを小さくすると速度向上。

66 名前:名前は開発中のものです。 :04/10/02 12:21:20 ID:6KqlFYO1
最近の3Dは1ピクセルにつき1つのピクセルシェーダーシーケンスが実行されるとすると
1024x768で約78万回。
今後は頂点シェーダーもピクセルシェーダーも差がなくなってくるだろうし
1フレームにつきこれ以上の頂点を使うプログラムなら、頂点演算の方が思いと言えるかな。
60FPSでいうと約秒間4719万ポリゴン。

67 名前:名前は開発中のものです。 :04/10/02 13:51:47 ID:kghZkJk+
>>65
実験的なプログラムじゃだめだろ?
まず3D空間を全部描画してそこからさらに物を置くと変わってくる。

>>66
その計算じゃ2度塗りやαのコストが計算されてないな。
話にならない。

68 名前:名前は開発中のものです。 :04/10/02 14:09:52 ID:GmFT9ijk
何を前提にしているのか知らないが、自分のプログラムではといっている。
他人に文句を付けている暇があったら、自分が利用する条件で、
好きなだけベンチマークをとればいい。
自分のプログラムでは塗り面積による影響は、
ほとんど皆無だったというだけの話。

69 名前:名前は開発中のものです。 :04/10/02 14:21:35 ID:kghZkJk+
>>68
いや、塗りの計測はそれじゃ駄目なんだよ。(俺経験)
俺のプログラムでも単に描画される物体を小さくしただけでは速度に違いはでない。
でもちゃんとしたゲーム画面になると圧倒的に塗りの方が重くなる。
だから、重くなるところが違うと思うんだよね。
単に一度の塗りでZバッファに素直に描画される物体じゃ重くならないと思うんだよね。(予想だけど)
二回目の塗りが存在するかどうかで速度が違うと思うんだよね。
で、実際のゲームだと3回目4回目なんてのが余裕であるからどんどん重くなってくと思うんだよね。

そういうはかり方をしないと駄目だと思うんだけど。
塗りだし。

70 名前:名前は開発中のものです。 :04/10/02 14:32:19 ID:W9zE2lsg
>>68
まあ描画以外の処理や、画面クリアの処理に比べて、まだ、
塗りつぶしの影響が、少ない範囲に収まってたんじゃないかな?
どんなゲーム作るかや、どんなコード書くかは人によって違うけど、
ゲームが完成に近づくにつれ、影響が見えてくると思われ。

71 名前:名前は開発中のものです。 :04/10/02 14:41:06 ID:GmFT9ijk
>>69
だからそういう測り方云々じゃなくて、自分で作っているプログラムの話をしているのに、
何故全然別の方法を持ち出して文句を言ってくるのか。
しかもちゃんとしたゲームなんて曖昧な定義ので、思う思うって、
思うじゃなくて、自分で自分なりの条件で測ればいいだろう。
何度も言うが自分の使用している範囲内では、全く影響が出なかっただけ。

なぜ自分で作ったものでは、実際にこういう影響が出たという言い方が出来ず、
思うとかいう想像だけの言い方になるんだろう?

72 名前:名前は開発中のものです。 :04/10/02 14:42:44 ID:kghZkJk+
>>71
問題はαと2度塗りを考慮してるかどうかだけなんだが。

73 名前:66 :04/10/02 15:07:25 ID:6KqlFYO1
  ワケ     ワカ      ラン♪
  ∧_∧   ∧_∧     ∧_∧
 (-@∀@)  (-@∀@)   (-@∀@)
⊂朝⊂  )  ( つ朝つ  ⊂_へ朝 つ
 く く く    ) ) )     (_)/
 (_(_)  (__)_)    彡(_)

74 名前:名前は開発中のものです。 :04/10/02 15:46:56 ID:mntHwQIk
なぜこんなところにアサピーが

75 名前:名前は開発中のものです。 :04/10/02 16:02:38 ID:UyWl8e7h
想定している条件(環境含む)がみんなバラバラなのに単一の結論を導こうと必死なスレはここですか?

76 名前:名前は開発中のものです。 :04/10/02 16:14:16 ID:qcfwtjoA
俺の経験から言えば細かいこと気にする奴に限って禿げてる

77 名前:名前は開発中のものです。 :04/10/02 16:28:36 ID:K6Fxfyjf
>>64
見たい、何てゲームよ

78 名前:名前は開発中のものです。 :04/10/02 17:40:13 ID:bhmkR8G8
sage

79 名前:名前は開発中のものです。 :04/10/02 18:47:28 ID:PPEbOAU3
>>76
あとオナニーが多い奴

80 名前:名前は開発中のものです。 :04/10/02 22:14:04 ID:W9zE2lsg
>>77
DOUBLE-S.T.E.A.LってXBOXのゲームだった
ttp://www.daionet.gr.jp/~masa/column/2002-09-22.html

81 名前:名前は開発中のものです。 :04/10/03 09:36:24 ID:n12YQbLv
ゲームの作り始めは、スゴイFPS出てて快適だけど
プログラム追加したり、演出を派手にしていくうちに
どんどんFPSが落ちてきて、終いにゃコマ送りみたく
なっちまって悲しくなるな。

82 名前:名前は開発中のものです。 :04/10/03 09:42:15 ID:E0OI59Rz
つまり・・・

悲しい時〜 (悲しい時〜)
最初は快適だったのに 作っていく内に
重くなって コマ送りになった時〜

悲しい時〜 (悲しい時〜)
最初は快適だったのに 作っていく内に
重くなって 動かなくなった時〜

83 名前:名前は開発中のものです。 :04/10/03 12:19:28 ID:p8+59llk
すまんが教えてほしい。

DirectX9を使用して2Dゲームを作っているんだが、DirectDrawの
サーフェス周りが7と9で変更されたんか?

Bltのなかにアルファブレンド関係が増えてるし、IDirectDrawSurface7じゃなく
IDirectDrawSurfaceになってる。
これってアルファブレンドが2Dで出来るようになったって事?
それだったらとてもありがたいんだが・・・・

この辺の情報を知ってる人、マジで教えてください。

84 名前:名前は開発中のものです。 :04/10/03 12:31:28 ID:ENu5Wheg
素直にdirect3Dに移れ

85 名前:名前は開発中のものです。 :04/10/03 13:05:03 ID:E0OI59Rz
2D機能は無くなったので

Sprite使うか
ポリゴンに貼り付けるか
しないといけないらしい。

86 名前:83 :04/10/03 13:14:16 ID:p8+59llk
84,85

レスありがトン。
いや、クライアントの意向でノーパソでも動かんといけんのよ。
で、3Dは全部捨ててくれと・・・
アルファブレンドをアセンブラで作って直接メモリ書き直ししてるけど、
やっぱり遅いし。DirectX9のヘルプみてるとBltにアルファ関係が追加
されてたから誰か使ってみたとか、情報を知ってるかと思ってカキコした
しだい。

D3DXCreateTextureFromFileEx使いたいんだが、こいつは256ピクセルの
倍数の正方形でメモリ使ってくれるから馬鹿ほどメモリ使ってくれるし・・・

ということで引き続き情報をください

87 名前:85 :04/10/03 13:21:43 ID:E0OI59Rz
そうだったのか〜

スマンわからん・・・orz

88 名前:名前は開発中のものです。 :04/10/03 13:39:31 ID:goUHWgnF
>>86
Bltでアルファブレンド可能かどうかはDDCAPS調べればわかる

89 名前:83 :04/10/03 14:10:55 ID:V9xbK4hh
>>88
イヤ、可能になってる。
でもLPDIRECTDRAWSURFACE7からLPDIRECTDRAWSURFACEになってる
だからかわったのかなぁと・・・



90 名前:83 :04/10/03 14:13:43 ID:V9xbK4hh
追記
いますべてを見直してLPDIRECTDRAWSURFACEでCreateSurfaceをすると
エラーになってしまう orz
もちろん、DirectDrawCreateExもIdirectDraw7ではなくIdirectDrawで
作成してます。

91 名前:名前は開発中のものです。 :04/10/03 14:23:53 ID:MAk8fWp6
>>83
別に7で作っても9上で動くと思うが?
9にしか無い機能が必要なのか?

92 名前:名前は開発中のものです。 :04/10/03 14:55:07 ID:LV1LyR63
結論:3DはD3D、2DはGDI

93 名前:83 :04/10/03 15:14:20 ID:V9xbK4hh
>>91

アルファブレンド。
7では3Dだった。それが9には入っていたから是非使いたい

94 名前:名前は開発中のものです。 :04/10/03 15:22:20 ID:Bvb6Q7++
2Dでアルファブレンドが使えたとしても、それは3Dハードウェアを使って
実装されている可能性がとても高いと言うか、殆ど間違いないので、
ノートパソコンでは動かないのでは?

95 名前:名前は開発中のものです。 :04/10/03 15:32:52 ID:1NQr4HuE
>>94
同感。>>92みたいに、割り切るならとことん割り切るべき。GDI+でもいいし

96 名前:83 :04/10/03 15:54:30 ID:V9xbK4hh
>>92>>94 >>95

やっぱそうかなぁ。クライアントがキャラをクロスフェードで!って・・・
そのくせ3D使うな!だから。。
メモリ直接アクセスのアセンブラを高速化するしかないか。。

ありがとうございました。

でも引き続きいい情報があれば教えてください

97 名前:名前は開発中のものです。 :04/10/03 15:57:44 ID:1NQr4HuE
よく分からないけどエロゲーのシステム作ってるの?
エロゲーやる人がクロスフェードなんて求めそうには思えないが
今更アルファブレンドの高速化なんて実のない努力やめようぜ

98 名前:名前は開発中のものです。 :04/10/03 18:33:10 ID:J+ulw617
顧客にそんなことが言えると?

99 名前:名前は開発中のものです。 :04/10/03 19:31:38 ID:gn7+412+
それ以前にこんなレベルの質問している人間が、
客に出すプログラムを組むという時点で終わっている気がするが。

100 名前:名前は開発中のものです。 :04/10/03 19:32:14 ID:kGHyfdaE
http://pya.cc/pyaimg/img2/2004040402.wmv
これ見て

101 名前:名前は開発中のものです。 :04/10/03 19:46:28 ID:goUHWgnF
>>99
悲しいかなエログラマは大半がこの程度のレベル。

102 名前:83 :04/10/03 19:52:43 ID:V9xbK4hh
>>99 >>101

そういわれると身もフタもないが・・・
コンシューマの人間なんでPCあんまりわかんないのよ
何とか自作アルファブレンドロジックが32msec処理で
ストレスなしに使えるところまでもってこれたんでこれで
行くことにしますわ

103 名前:名前は開発中のものです。 :04/10/03 20:33:15 ID:YuWeV3dx
>>102
俺も消費者だよ

104 名前:名前は開発中のものです。 :04/10/03 20:56:06 ID:/YDqJMMg
エログラマの最高峰ってやっぱやねうら某?

105 名前:名前は開発中のものです。 :04/10/03 21:06:53 ID:Dyx3/WTx
NOGタソを俺は推す。

106 名前:名前は開発中のものです。 :04/10/03 21:32:23 ID:4V97zk6L
ダイレクトXをやりたいと思うのですが、やり方が分かりません。
何か、特別なソフトとかいるんでしょうか。
マイクロソフトの、C++?というソフトでしょうか?
あと、やるとしたらどんな専門知識が、いるんでしょうか。

初心者ですが、よろしくお願いします。

107 名前:名前は開発中のものです。 :04/10/03 21:37:33 ID:kGHyfdaE
初心者むけのdirectXの本を買う

108 名前:名前は開発中のものです。 :04/10/03 21:40:44 ID:/YDqJMMg
DirectXはCOMとして実装されている。
つまり、COMを扱える言語またはそれに類するi/fが用意されている環境であれば
使用できる。

109 名前:名前は開発中のものです。 :04/10/03 21:43:46 ID:YaD7v2a+
>>106
やっぱ>>107と同じく、本を買うのが確実だと思う。
SDKとサンプルプログラムの入った、付録CDとかついてるし。
あとは、コンパイラに何を用意できるかの金銭問題だな。

110 名前:名前は開発中のものです。 :04/10/03 22:05:42 ID:AiFGmZy+
吉里吉里の作者だろう

111 名前:名前は開発中のものです。 :04/10/03 22:18:52 ID:gn7+412+
>>110
使われている数は圧倒的なので、本人の意志無関係でエログラマーの称号授与。

112 名前:名前は開発中のものです。 :04/10/03 23:17:39 ID:IMKALZnB
>102
>コンシューマの人間なんでPCあんまりわかんないのよ
いつのコンシューマですか?
最近のコンシューマは3Dと切っても切れない関係で、
3D関係の情報をチェックしてると最新のDirectXやグラボのことなんかもよく見かけるから、
その言い訳は結構見苦しいので、本当だとしてもヤメレ

113 名前:83 :04/10/04 00:18:41 ID:mmTPot1L
>>112

えと、私が教えてほしいと言ったことはDirectX9に含まれている
DirextDrawとDirextX7のDirectDrawでDirectX9ではアルファ
ブレンドが制御できるようになったみたいだが、このあたりを経験
された人がいればアドバイスをいただきたいということなんですが。


言い訳に聞こえたらしょうがないけどさ。

114 名前:名前は開発中のものです。 :04/10/04 00:42:52 ID:s77QHxA6
>>83
>>113
DirectX8以降より
DirectDrawとDirect3Dは統合されDirectGraphicsになってます。
DirectX9のDirectDrawっては
どんな物だと思っているのか詳しく説明して欲しい。

115 名前:名前は開発中のものです。 :04/10/04 00:46:02 ID:rxXTG6av
>DirectDrawとDirect3Dは統合されDirectGraphicsになってます。

なってない。大嘘書くな。

116 名前:名前は開発中のものです。 :04/10/04 00:47:45 ID:annB/eyH
DirectX Graphics ってこと??
だとしたら細かすぎか…

117 名前:名前は開発中のものです。 :04/10/04 01:00:56 ID:ky53/sSK
>>113
今、DirectX9のヘルプ見てみたが、そのIDirectDraw関係はDirectShowカテゴリの
マルチメディアストリーミングインターフェイスに記述されてる。
見てみれ。

ちなみにDirectDrawExはないよ。
(このIDirectDraw、バージョン的になんにあたるんだ?)

118 名前:名前は開発中のものです。 :04/10/04 01:42:18 ID:OM8sW/UX
>>113
ノートでもここ1〜2年のなら3Dがまともに動くグラフィックチップが載ってるぞ?
その顧客がいう「ノートのスペック」の下限がわからない限りなんともいえんなあ。



119 名前:名前は開発中のものです。 :04/10/04 13:05:11 ID:5C7eEtLc
ManagedにはDirectDrawあるんじゃなかったっけ

120 名前:名前は開発中のものです。 :04/10/04 14:00:51 ID:nbPvQsS1
それにしてもFFDにしろ吉里吉里にしろAGESにしろ、エフェクトに強くて技術的によくできてるといわれる
有名なエロゲエンジンはことごとく画像演算にDirectX使ってないらしいね……。

121 名前:名前は開発中のものです。 :04/10/04 14:11:06 ID:r/uVIviH
>120
グラボに依存しない方向なんだろうな
高度な機能を使うと見た目が飛躍的によくなるがユーザを選んでしまうからなぁ

あと、最近のイパーン人はデスクトップよりノートを選ぶ人も少なくないんだけど
ノートで3D対応機種ってなっていても実際はDirectX7程度のものもあるからなぁ
もちろんまともなグラフィックチップ載っているものもあるんだが

122 名前:名前は開発中のものです。 :04/10/04 16:16:26 ID:C1CICipj
「最近の」ノーパソ内蔵のチップだったら
トランスフォーム済頂点で2Dやるくらいなら普通にこなすんじゃね?
チップセット内蔵のグラフィックとかも意外と性能高いっすよ。
一昔以上前のノーパソチップだとリファレンスラスタライザでしか
動かなかったりするチップも多いですが...


123 名前:名前は開発中のものです。 :04/10/04 17:41:08 ID:r/uVIviH
>122
いや初心者質問スレでもあったけどRADEON IGP345Mとか機能不十分のようだから、
「最近の」でも全てがとは言えないと思う

124 名前:名前は開発中のものです。 :04/10/04 17:44:34 ID:0nRK6gjd
>>120

エフェクト系の画像処理なら、何が入っているかわからないGPU依存
のハード機能使うより、自力でほぼ問題ない性能を発揮するCPU用の
コード書いた方が確実だからね。高速なメインメモリにDIB用フレー
ムバッファを取ってそこで演算した方が、処理速度の「最低線(最悪
の環境での処理速度)」を引き上げられる。


125 名前:名前は開発中のものです。 :04/10/04 17:48:14 ID:YRi3PMHC
いやRADEON IGP345Mは十分な部類に入ると思うぞ。
DX7世代の3Dゲームなら問題なく動くだろう。

126 名前:名前は開発中のものです。 :04/10/04 17:52:16 ID:YRi3PMHC
Direct3Dの一般的な透視変換行列を用いた場合
無限遠のZ値を求める計算はどうなるの?
z_far / ( z_far - z_near )であってます?

127 名前:名前は開発中のものです。 :04/10/04 21:29:21 ID:bl0Of2m3
無限遠ってどれくらい遠くのZ値なの?
無限って言うくらいだからどこまでもあるんだろ

128 名前:名前は開発中のものです。 :04/10/04 21:49:25 ID:a4FuiOHF
>>123
http://pc5.2ch.net/test/read.cgi/gamedev/1094627404/13n
 
↑の参照先BBSの内容だが、どういうゲームで「どう快適でない」のか
全く触れていないので、要するに主観情報のみであり評価不能。

RadeonIGP345Mとほぼ同程度の3D性能を持つビデオチップは
MobilityRadeonやRADEON無印とかVE。DirectX7世代。
(IGP345MはUMAなのでその点がどう影響するかは知らない)
 
これでだいたいの性能は想像できるでしょう。
 
俺はMobilityRadeon+Pentium-M(1.1GHz)使ってるので参考までに書くと
3DMark2001は大体1800前後。
Quake3やUnreal Tournament世代のゲームは標準設定で快適に遊べる。
FFはカクカク。おそらく例のyahoo掲示板の感想書いた人はこの手のMMORPGを
プレイしたのではないかと想像する。

129 名前:名前は開発中のものです。 :04/10/04 21:49:27 ID:5WdV+IRE
君が今いる場所で一番遠くにみえる場所はどこ?
そこが無限遠だよ

130 名前:名前は開発中のものです。 :04/10/04 21:54:20 ID:kL12U+pa
>>127
View空間上の視錘台を透視変換行列で変換すると
台形が直方体になるじゃない?
これのZ値の計算式は以下のようになる。
z' = z_view * z_far / ( z_far - z_near ) - z_near * z_far / ( z_far - z_near )
w' = z_view
z_viewproj = z' / w'

このz_viewを∞として、上の式に代入して因数分解すると以下のようになる。
z_viewproj = z_far / ( z_far - z_near )

これで正しいと思ったんだけど、ある資料では以下のようになっていて?みたいな。
うろ覚えではOpenGLとDirect3Dでは透視変換行列が違っていたような・・そのせい?
z_viewproj = ( z_far + z_near ) / ( z_far - z_near )

131 名前:名前は開発中のものです。 :04/10/04 22:23:53 ID:7FGX5rbU
http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=0a9b6820-bfbb-4799-9908-d418cdeac197

132 名前:名前は開発中のものです。 :04/10/05 11:12:25 ID:0jVYnly+
DX9のマルチレンダリングターゲット機能って
いま一つ、利用目的がわからないんだけど、
これつかうと、何かのエフェクトが軽く作れるとか
面白い表現ができるとかすんの?

133 名前:名前は開発中のものです。 :04/10/05 11:29:14 ID:C0CUDKhb
>>132
今までのシェーダープログラムは、
float4 shaderMain( vertexIn vertex );

マルチエレメントテクスチャを使うと
struct fragmentOut
{
float4 data0;
float4 data1
float data2;
};

fragmentOut shaderMain( vertexIn vertex );



134 名前:名前は開発中のものです。 :04/10/07 23:11:19 ID:hAPlnSnz
お前ら、ぬるぽは好きガッ?

135 名前:名前は開発中のものです。 :04/10/08 00:59:53 ID:XSYDeohy
>117
これ単に初代DirectDrawのインターフェイスそのままな気がするんだが。

83がこれのことを言っているのなら、そのアルファ機能は机上の空論でしかない。
しこしこアセンブラなりMMXなりで高速化してください。

136 名前:名前は開発中のものです。 :04/10/08 01:49:53 ID:16IKlQpt
>>117
アルファ機能使うのに、アルファサーフェス作るかアルファ込みサーフェス作って転送毎に
アルファ値書き込む必要あるから、自前でつくったほうがいいんでないかと思った。

137 名前:名前は開発中のものです。 :04/10/09 03:08:46 ID:/YCQZy36
>>113
増えてないしDirectX9にDirectDrawなんてものはない。
一度公開されたインターフェースが同じ名前のまま機能が変わることもない。
DirectX9をインストールしていても、GameSDK〜DirectX8は使える。
君が新しいと思っているDirectDrawは太古の物だ。

138 名前:名前は開発中のものです。 :04/10/09 10:03:14 ID:5XbefvOQ
DirectX 9.0 SDK Update - (October 2004)
English


139 名前:名前は開発中のものです。 :04/10/11 00:21:39 ID:yBosNnnp
すいません、ちょっとDirectXの質問ではないのですが、
DirectXに使うテクスチャでアルファ値が入ってる画像を
フォトショップで開いて、直接各ピクセルのアルファ値って見れるのでしょうか?見れる場合、教えてもらえないでしょうか?
すいません。


140 名前:名前は開発中のものです。 :04/10/11 02:05:24 ID:0GOi0Ldx
誤れば何でも通ると思うから
割れ厨になっちゃうんだろうね。

141 名前:名前は開発中のものです。 :04/10/11 10:13:54 ID:aLIRFHaP
>>139
Adobeに電話して聞きなよ

142 名前:名前は開発中のものです。 :04/10/11 10:30:59 ID:e+nbPJpi
ンvidiaのHPから、フォトショップ用プラグ印ダウンロードして入れれ

143 名前:名前は開発中のものです。 :04/10/11 16:44:56 ID:fodZGKKI
2003Summerを使ってます。
Xfileを読み込み、ライティングを施してみたんですが、
テクスチャを貼っていないオブジェクトにはきちんとライトが反映されてるようなんですが、
テクスチャが貼られたオブジェクトにはライトが適用されなくて困ってます。
考えられる原因としてはどんな事があるでしょうか。
教えてください。お願いします。

144 名前:143 :04/10/11 16:49:16 ID:fodZGKKI
ちなみにライトは自前でなにか難しい事をやってるとかではなくて
普通にDXで用意されてる
D3DLIGHT9のポイントライトとかスポットライト等です。

145 名前:名前は開発中のものです。 :04/10/11 16:55:31 ID:J7gvAGdn
>>143
法線は設定してあるか?

146 名前:名前は開発中のものです。 :04/10/11 17:18:51 ID:1ZelzsvN
>>145
>テクスチャを貼っていないオブジェクトにはきちんとライトが反映されてるようなんですが、

って書いてるんだが。


147 名前:名前は開発中のものです。 :04/10/11 17:24:14 ID:1ZelzsvN
>>143
とりあえずこれは確認しろ。

device.TextureState[0].ColorArgument1 = TextureArgument.TextureColor;
device.TextureState[0].ColorArgument2 = TextureArgument.Diffuse;
device.TextureState[0].ColorOperation = TextureOperation.Modulate;


148 名前:名前は開発中のものです。 :04/10/11 17:25:22 ID:dsSryuB7
そもそも固定なのかシェーダなのかすら書いてないし、ステートの設定の情報も無し。
その状態で何を答えろと?

149 名前:名前は開発中のものです。 :04/10/11 17:25:54 ID:J7gvAGdn
>>146
テクスチャを張ってあるオブジェクトと、張ってないオブジェクトは別物だろ?

テクスチャを張ってあるオブジェクトに、法線が設定されているかと聞いているのだが。

150 名前:143 :04/10/11 17:37:38 ID:fodZGKKI
すいません。
LightWaveのXfileエクスポーターを使ってるんですが、
その設定の問題だったようです。
「Replace surface color with texture」
のチェックをはずしたら上手くいった模様です。

151 名前:名前は開発中のものです。 :04/10/11 17:38:06 ID:kosdyhsw
チクショー

152 名前:名前は開発中のものです。 :04/10/11 19:31:18 ID:InZx0EkU
うんこがでちまったよ

153 名前:名前は開発中のものです。 :04/10/11 19:33:47 ID:bx7zsKhl
クソー

154 名前:名前は開発中のものです。 :04/10/11 19:39:30 ID:Ad7T3sc5
ちんこがでちまったよ

155 名前:名前は開発中のものです。 :04/10/11 19:53:42 ID:jqTCTr00
今日は、風呂でもぐろう。

156 名前:名前は開発中のものです。 :04/10/11 21:04:30 ID:pWZ8/i0y
LightWaveネタが出たので、ちと質問ですが
モーション付Xファイルは読み込めば、そのまま上手く動作しますか?
他に3dsMax以外でモーション付Xファイルを出力するツールてありますかね?

157 名前:名前は開発中のものです。 :04/10/11 22:05:42 ID:gNEg0f9y
D-StormのLightWave用X-Fileエクスポーターでは
まともにモーション付きX-Fileを出力できないです。

全てのボーンにウェイトマップをきっちり割り当てて
use weight map onlyを指定するといくらかまともに出力されるかも。

漏れは自作のコンバーター使ってます。

X-File出力できるツール(コンバーター)は
有名どころだとPolyTransとか?使ったことないですけど。

158 名前:名前は開発中のものです。 :04/10/11 23:45:03 ID:pWZ8/i0y
結局は自作するかちまちま書いてくしかないのか…(´A`)

159 名前:名前は開発中のものです。 :04/10/12 03:07:17 ID:GAKZ2Qt1
ちんこでもしごいてな

160 名前:名前は開発中のものです。 :04/10/14 00:01:52 ID:2TDHP0D6
お前ら、ぬるぽは好きガッ?

161 名前:名前は開発中のものです。 :04/10/18 02:01:54 ID:g5wSND4n
ぬるぽは好きだガッ、何か?

162 名前:名前は開発中のものです。 :04/10/20 18:13:21 ID:zP6xl/RK
今、DirectXを使ってエフェクトを作っているのですが、空のテクスチャを
用意してそこに色の情報を書き込みたいのですがLockなどを使うと思うのですが
よくわかりません。
空テクスチャに対してはどういったことをすれば色を書き込めるのでしょうか。
分かる方おりましたら教えていただけますか。

163 名前:名前は開発中のものです。 :04/10/20 18:20:16 ID:bd6yug97
いやその通りなんだけど…実際にやってみたら?
t-potとかを参考に。

164 名前:名前は開発中のものです。 :04/10/20 18:36:36 ID:+ZxZVXCe
DirectXを使うならC#とVB.netだと、どっちが良いですかね?
資料が豊富なほうがイイかな、とも思ってるんですが。

165 名前:名前は開発中のものです。 :04/10/20 18:41:41 ID:bd6yug97
どっちもどっちだけど多分C#のほうが資料は多いんじゃないかな。
英語版ヘルプとかでもC#の記述が多いし

166 名前:名前は開発中のものです。 :04/10/20 19:09:42 ID:/mBmRgO3
最近のDirectXってC#のソースはあってもVBのは入ってないっぽい。
Cマガジンも日経ソフトウェアもC#の記事しかやらない。

ネタっぽく書くとこんな感じ。
C#>>>C++>>>(超えられない壁)>>>HSP>LGP>>>VB>>>(あの夏の思い出)>>>Delphi

167 名前:名前は開発中のものです。 :04/10/20 19:28:36 ID://ogvlzz
>166
(あの夏の思い出)はもう少し↑だろ

168 名前:名前は開発中のものです。 :04/10/20 22:54:32 ID:6K7KSXLz
毎回、テクスチャ240*240に色を書き込んでそれをポリゴンにはっつけて
るんですがどうしてもスピードに問題があって10フレーム未満しかでないん
ですが何か改善策ありますでしょうか。
現在は毎回ロック・色書き込み・アンロックを繰り返してテクスチャを
書き換えてそれをポリゴンにはっつけてます。



169 名前:名前は開発中のものです。 :04/10/20 22:55:09 ID:+ZxZVXCe
>>165-166
さんくすです(・∀・)
VBは人気無くなっちったな。

170 名前:名前は開発中のものです。 :04/10/20 22:57:23 ID:bd6yug97
>>168
Usage.Dynamicなテクスチャで作ってる?
あと、毎フレーム240*240のテクスチャに書き込むというのはかなり膨大な作業になりそう。
どうしてもその作業が必要なら仕方ないけど、他の方法で近いことができそうなら、そうしたほうがいい。

171 名前:名前は開発中のものです。 :04/10/20 23:17:22 ID:c1ZkAW2J
>>166
俺のレベルだとC#,C++のサンプルさえあればDelphiで困らないけどね。

172 名前:名前は開発中のものです。 :04/10/21 00:01:41 ID:aFfvccIw
>>167
Del6のリリースが夏だったからかけてるんだYO!

>>171
C++はそうだけどC#は違うだろw
DelphiのヘッダはC++からのコンバートだからC#とは使える機能に若干の違いがあるよ
さらに細かい事をいえば構造体とか移植者が適当に定義してるから一貫性がないし

173 名前:名前は開発中のものです。 :04/10/21 00:02:57 ID:3V+U9H90
Usage.Dynamicというのはポリゴンへ描画するときテクスチャの
座標を変えて違う色を描画する方法のことですか?

FPSの計算をしたのですが何も描画しない状態でも60FPS前後しか
でないのですがサイトなどで公開されているFPSを計るものでは
120とかでてるのですが原因がわかりません。
分かる方おりましたらアドバイスお願いします。

174 名前:名前は開発中のものです。 :04/10/21 00:29:25 ID:QM0/p3ts
240*240は小さくできないの?
64*64とか
あとはもう一つテクスチャを準備して交互に書き込んでいくと、
もしかしたら少しは速度がでるかも

175 名前:名前は開発中のものです。 :04/10/21 01:07:34 ID:wLXaxqfN
>>173
60FPS前後なのは、自分でウエイトをかけるようにして、
デバイスを作っているからだろう。
サンプル丸写しで何も考えずに出来合の物を使うから、
そうやって基本的なことが出来なんだよ。

176 名前:名前は開発中のものです。 :04/10/21 01:23:16 ID:zdJbC46m
ウェイトをはずせw


177 名前:名前は開発中のものです。 :04/10/21 01:26:05 ID:ei1xXI0E
>>173
VRAMってのは普通にメモリを読み書きしようとすると遅い、とにかく遅い
そのVRAMに毎フレームで240*240なんていう広大な領域を更新するのは無理
だがUsage.Dynamicで宣言したテクスチャはVRAMじゃなくてAGPメモリに確保する
こうするとボトルネックとなっていたメモリアクセス速度は回避される

そもそもその毎フレーム書き換えたテクスチャで何をするのか、ちょっと聞いてみたい

178 名前:名前は開発中のものです。 :04/10/21 02:22:24 ID:ei1xXI0E
今173読み返したら見当違いの回答だったらしいなorz
Usage.Dynamicってのはnew Texture()の時に渡す引数のこと
ManagedじゃなくてCOM直叩きとかなら、D3DUSAGE_DYNAMICをCreateTextureに渡す感じ

179 名前:名前は開発中のものです。 :04/10/21 02:26:05 ID:ptio2rD4
320x240のムービーをリアルタイムにテクスチャにレンダリングしたことがあるが、
こま落ちなしで余裕で60fps出たぞ。

流れは、
Pool.SystemMemoryなテクスチャをLock→書き込み→Unlock→
Pool.Defaultなテクスチャに.UpdateTexture。
至極単純。

180 名前:名前は開発中のものです。 :04/10/21 02:37:23 ID:6qwKdW8H
>>173
FPS=60は、画面更新時に同期待ちをする設定になってるから。
C++の場合は、CreateDevice に渡す構造体 D3DPRESENT_PARAMETERS の
メンバ PresentationInterval を D3DPRESENT_INTERVAL_IMMEDIATE にすれば
同期待ちしなくなる。

181 名前:名前は開発中のものです。 :04/10/21 11:30:56 ID:v+ouiPQ0
そもそも、256*256のテクスチャじゃなくていいのか?

182 名前:名前は開発中のものです。 :04/10/21 19:05:15 ID:uHJFd8pj
そもそも、60fps以上の数値って、理論値だろ。
モニタが60Hzなのに400fpsなんてあり得ない。
BeginSceneからEndSceneまでにかかった時間を逆算してるだけ。


183 名前:名前は開発中のものです。 :04/10/21 19:31:15 ID:T7tkLkrE
    >>182

         \   ∩─ー、    ====
           \/ ● 、_ `ヽ   ======
           / \( ●  ● |つ
           |   X_入__ノ   ミ   そんな餌で俺が釣られクマー!
            、 (_/   ノ /⌒l
            /\___ノ゙_/  /  =====
            〈         __ノ  ====
            \ \_    \
             \___)     \   ======   (´⌒
                \   ___ \__  (´⌒;;(´⌒;;
                  \___)___)(´;;⌒  (´⌒;;  ズザザザ
                               (´⌒; (´⌒;;;



184 名前:名前は開発中のものです。 :04/10/21 19:35:48 ID:EF2ZVHXz
いや釣りじゃなく本気でそう思い込んでる気がする。

185 名前:名前は開発中のものです。 :04/10/21 19:41:49 ID:a0Jj2CZI
そもそもモニタが60Hz固定じゃないし
それはモニタの描画速度であってDirectXがVGAに転送する頻度とは関係ないし
クマー

186 名前:名前は開発中のものです。 :04/10/21 19:52:16 ID:aFfvccIw
モニタ
ディスプレイアダプタ
(ここから下はプログラマ次第)
描画ループ
内部(ロジック)ループ

これごっちゃにするのはFPS議論の基本だね♪

シューティングゲーム製作技術総合 5機目
http://pc5.2ch.net/test/read.cgi/gamedev/1098034919/
FPS(フレームレート) VSYNC(垂直同期 リフレッシュレート)  ←できればFPS議論はここにまとめたい。
http://bbs.gamdev.org/test/read.cgi/gamedev/1063274576/

187 名前:名前は開発中のものです。 :04/10/21 20:43:45 ID:SI9Ghux0
モニタが60Hz・・・すでに前提から間違ってる

188 名前:名前は開発中のものです。 :04/10/21 21:06:12 ID:wLXaxqfN
>60fps以上
突っ込みどころは色々あるが、
以上という言葉で60FPSを含めてしまっている時点で、
プログラマとしてはその知能に致命的な障害を持っている。

189 名前:名前は開発中のものです。 :04/10/22 08:34:09 ID:PpvljLwQ
サーフェスからテクスチャに書き込みたいのですがそんな命令あります?

190 名前:名前は開発中のものです。 :04/10/22 08:43:35 ID:vNrL/vfG
>>189
無いんじゃね?
サーフェスにはテクスチャを
テクスチャにはサーフェスを取り付けて
そっちに対して、サーフェスにテクスチャを書き込み。

191 名前:名前は開発中のものです。 :04/10/22 11:53:19 ID:mUf2dbjd
テクスチャからサーフェース取得すれば、
ある程度選択幅がでてくるだろうに。

もしくは、Lockして自前で転送。

192 名前:名前は開発中のものです。 :04/10/22 14:36:20 ID:DycM2TWf
> サーフェース
発音注意

193 名前:名前は開発中のものです。 :04/10/22 16:53:26 ID:oY6D88HE
テクスチャのUV座標情報が、ほぼ全ての面(の頂点)に付いている
モデルって珍しく無いと思うのですが、
この場合、IndexBufferはほとんど無意味ですよね?

無意味どころか有害な気がするんですが、実際どうなんでしょうか。

194 名前:名前は開発中のものです。 :04/10/22 16:58:59 ID:MMfa4NeD
一般的なモデリングデータの共通のメッシュで、頂点ごとのUVがバラバラであるケースはほとんど無い。
球面で法線が異なることなら多いけど。

195 名前:名前は開発中のものです。 :04/10/22 17:10:48 ID:b8gueTEV
>193
何が有害かわからないけどある程度複雑なモデルになると、
描画の時に2度以上指定しないといけない頂点がでてくるんだが、
IndexBufferを使っておくとお得な気がしませんか?

例えば↓のような四角形をトライアングルリストで描画するとして
1   2

3   4
IndexBufferを使った場合と使わなかった場合、それぞれどうVertexBufferを確保するか考えてみたら?




196 名前:名前は開発中のものです。 :04/10/22 17:10:51 ID:oY6D88HE
>>194
私が今解析してたモデルデータ達が特殊なのか…。
おかげで安心してIndexBufferを使って行けそうです。レスありがとうございました。

197 名前:名前は開発中のものです。 :04/10/22 17:12:53 ID:oY6D88HE
くっ、ちゃんとリロードしたのになぁ…3秒差か
というわけで、>>195さんもありがとうございましたー

198 名前:名前は開発中のものです。 :04/10/22 18:18:16 ID:B8sP9jTB
共有頂点の問題だろ。質問する方は分ってないから質問するんだけど
答える方が理解出来ないのな…

要はIndexBufferで共有頂点を指したいが、座標は同じでもUVが違う(マテリアルが違う)
そんな時は、そのUVの違う頂点が存在するようにデータを持ってる。
その時に共有頂点がない訳だからindexBufferはいらないだろ?って質問。
Xファイルしか見たことないやつ等なのかな?質問に答えてるのって。

例え共有頂点がなくとも、Indexを指定すれば(0,1,2,3,4,...と順並びでも)
描画が速い場合・も・ある、のでIndexBufferがあっても意味無い事はない。

199 名前:名前は開発中のものです。 :04/10/22 18:51:47 ID:CkzGgn6x
http://www.geocities.co.jp/SiliconValley-Oakland/9582/GamePrg/index.htm
このサイトの炎の表現2っていうのがあるんですけどそれをDirectX9で
表現したいと思い試みているのですがプログラムをよんで解析してるんですが
いまいち掴めません。
アドバイスよろしければお願いします。

200 名前:名前は開発中のものです。 :04/10/22 19:50:38 ID:MKQUsut/
>>199
その技法はあまりDXのバージョンに依存しないと思われる。

201 名前:名前は開発中のものです。 :04/10/22 20:00:31 ID:oY6D88HE
>>198
> 0,1,2,3,4,...と順並びでも

我が意を得たりというか、コンバートするとまさにこの状態なんですよ。それで疑問に思いまして…。
いや良かったです、速い場合があるんですね。その辺もう少し勉強してみます。
回答ありがとうございました!

202 名前:名前は開発中のものです。 :04/10/23 01:14:18 ID:y/5D5f1B
頂点シェーダやらピクセルシェーダやらプログラマブルシェーダやら
何やらかんやらありますがテクスチャ1枚を貼り付けたCUBEを100個
表示させるのならどれが一番速いですかね?
and
それぞれはどういった特徴があるのでしょうか?


203 名前:名前は開発中のものです。 :04/10/23 01:19:21 ID:bO77c3Y/
全く見当違いの質問でどう答えたらよいのやら…w
ホンダのエンジンとブリジストンのタイヤと日本石油のガソリンがありますが
100kmを走るにはどれが一番速いですか?って聞いてるようなもんだぞ

204 名前:名前は開発中のものです。 :04/10/23 01:33:21 ID:IHYlkrYR
>>202
プログラマブルシェーダって要するにシェーダをプログラムで組む奴ですよ。
つまり頂点シェーダとピクセルシェーダを包括するものだと思っとけw
頂点シェーダはモデルの頂点のシェーダ。(なんつーの?点1つ1つにほどこす計算みたいな?)
ピクセルシェーダはモデルのピクセルのシェーダ。(ポリゴンの色塗りに施す仕掛けだな)

つまり頂点シェーダとピクセルシェーダは同時に使える(使う)別々の処理を行うもので比べてもしゃーないのですよ。

205 名前:名前は開発中のものです。 :04/10/23 02:04:18 ID:2vLRGGWt
どれも使わない固定パイプラインが一番速いです。

206 名前:名前は開発中のものです。 :04/10/23 02:25:04 ID:IHYlkrYR
>>205
測ったこと無いけど固定パイプラインって色々やってるじゃん。
ライトを5つも6つも付けても、バンプや環境マップが設定できるでしょ(たしかw)
遅いと思うよ。(処理によると思うけど)

207 名前:名前は開発中のものです。 :04/10/23 03:33:36 ID:oxnV01Sw
モデルに対し
UVマッピングで1枚のテクスチャを貼る方法と面一枚一枚に複数貼る方法とでは
どちらが速度が速いのでしょうか?

208 名前:名前は開発中のものです。 :04/10/23 04:19:16 ID:IHYlkrYR
>>207
一枚のテクスチャを貼るほうが速いとされているけど
俺が測った感じだと数と場合による。

普通のモデルだったら一枚のテクスチャの方がはやいよ。多分。
でも、一画面にどう考えても入らないモデルをぎっちりまとめておくと
テクスチャ云々の問題よりモデルを分割して描画(つまり画面に入らない部分のモデルの計算からしない)
をすることができないから、それはそれでおそいんじゃねぇかなと予想してみる。
どうだろ。(ちなみに勘)

209 名前:名前は開発中のものです。 :04/10/23 15:08:06 ID:/MuH3fkP
テクスチャセットの呼び出しは少ない方が当然いい

210 名前:名前は開発中のものです。 :04/10/23 17:28:27 ID:SfTHYw6T
>>209
それはそうなんだけど。
一画面におさまる程度の大きさを超えた場合ってどうなるんだろうね。
つまり広大な地形の類とかさ。
真ん中に立って北を向いたとすると、そのときの描画自体は南のデータなんかいらないわけじゃん。
でもテクスチャやモデルは北と南の両方のデータがまとまってるわけじゃん。
こういう問題を含めると単純にまとめておくと速いって認識もどうよと思うわけよ。

スカイボックスの類なんてやったとすると一枚一枚別にした方がはやいんじゃねーかと考えてみたりして(もちろん勘)

211 名前:名前は開発中のものです。 :04/10/23 17:37:00 ID:sMo4Qn/6
一枚のテクスチャを複数のモデルデータで共有すればいいだけの話では?

212 名前:名前は開発中のものです。 :04/10/23 20:27:44 ID:YmVB4Iw2
>210
テクスチャは一つでもいいと思う
モデルは分割して見えない部分は描画しないってのも手だと思うけど
スカイボックスっていうぐらいだから頂点数は少ないでしょ
だったら分割してできるコストの方が大きい気がする

スカイボックスを軽く描画したいんだったら、できるだけ最後に描画したほうがパフォーマンスは稼げる
半透明(アルファ値を持つ)のものがあるとそっちの方を後に描画しないといけないけど
基本は手前から描いていく

>202はもうすこし理解してから質問しましょう
>頂点シェーダやらピクセルシェーダやらプログラマブルシェーダ
この時点で理解不足です
いや、煽りじゃなくてある程度理解がないと適切な質問もできないし、
返答を理解することもできないだろうから非効率だと思うんで

213 名前:名前は開発中のものです。 :04/10/24 00:42:31 ID:fL1Fp2Br
トゥームレイダーの暗闇をともすアイテム(マッチ)のような処理がしたいのですが
方法がよく分からないです。頂点カラーを操作しているのでしょうか?

214 名前:名前は開発中のものです。 :04/10/24 01:48:44 ID:cDjg2sjK
ポイントライト

215 名前:名前は開発中のものです。 :04/10/24 13:47:50 ID:y2umnsNY
すみません、DirectX9で3Dのゲームを作っている初心者なんですが、
スコアなどをテクスチャを貼り付けたポリゴンで表示したいのですが、
常に画面の同じ位置に表示させる方法が分かりません。
どうかこんな俺に救いの手をお願いします。

216 名前:名前は開発中のものです。 :04/10/24 14:14:03 ID:+00SYBin
D3DFVF_XYZRHW

217 名前:名前は開発中のものです。 :04/10/24 15:34:27 ID:fL1Fp2Br
カニ型ロボットを攻撃すると足やハサミが取れていくシーンを作りたいと思ってます。
そこで方法として
胴体x1 足x6 目x2 ハサミx2 計11個のポリゴンモデルすべてに同じボーン構造をもたせた
Xファイルを出力し、プログラム側で親子関係を持たせて結合、連動させるというのを思いついたのですが
この方法は正しいでしょうか?もっと他に良い方法など無いでしょうか?


218 名前:名前は開発中のものです。 :04/10/24 16:07:17 ID:/wWlJ+Yz
>>216
ありがとうございます。こんなに簡単な方法だったんですね。
かなり勘違いしてました。
ビルボードとかの技術を使わないといけないのかと思っていました・・・。 orz =3

219 名前:名前は開発中のものです。 :04/10/24 19:34:17 ID:bVUqYsQl
VC++でLPDIRECT3DVERTEXBUFFER9 vbを宣言しているmain.cppから
CreateA()してからA()、Aの戻り値が1ならCreateB()してB()という関数を呼び出してます。

A.cppのcreateA()という関数の中で
  externでvbを外部呼出しして
  CreateVertexBuffer命令・Lock・書き込み・unlockのあと
A.cppのA()という関数で
  その頂点データを使用して描画しています。

B.cppのcreateB()という関数の中で
  externでvbを外部呼出しして
  CreateVertexBuffer命令・Lock・書き込み・unlockのあと
B.cppのB()という関数で
  その頂点データを使用して描画しています。

B()関数を呼び出して描画しようとしてるのですができません。
原因わかりますでしょうか?
説明が下手で申し訳ありませんがよろしくお願いします。

220 名前:名前は開発中のものです。 :04/10/24 19:37:54 ID:OZox6TUu
できない、って、どういう具合にできないの?
エラーコードが帰ってきたりするならそれも教えて欲しいんだが

221 名前:名前は開発中のものです。 :04/10/24 19:50:05 ID:bVUqYsQl
頂点の情報は設定されているみたいなんですがテクスチャが張られてないみたいです。


222 名前:名前は開発中のものです。 :04/10/24 21:06:51 ID:ttvwl10O
みたいじゃなくて確認しろよ

223 名前:名前は開発中のものです。 :04/10/24 23:53:00 ID:xMz+4qg0
(例)
HRESULT hr;
hr = pD3DDevice->SetTexture( 0, pTexture );
if( FAILED( hr ) )
     return FALSE;
こんなんとか

hr = pD3DDevice->SetStreamSource( 0, pVB, 0, sizeof(頂点データ) );
if( FAILED( hr ) )
     return FALSE;

とかやってみては?
CreateVertexBufferも DrawPrimitiveも
失敗すれば hr にエラーが返ってくるから
どの設定が悪かったのか分かるかも。
張られて無いならエラーだしてるんでは?

もし俺なら、AのプログラムをBに
コピー&ペーストして動かしてみる(w

224 名前:名前は開発中のものです。 :04/10/25 00:53:04 ID:Z4xgve5p
main()からswitch(mode)でCreateAを通らしてmodeの値を変えてAに飛んで
Crate〜ってのが頂点データとか設定とかだけやっててすぐにTRUE返して。
A関数で描画を行なってるんですけどA関数はキーボードに反応させて1を
押したらTRUE返してCreateBに移ってこれもまたデータの設定とかで
B関数に飛んでまわしてるんですけど。
CreateA→Aでは欲しい結果は返ってきててそのあと返り値でCreateB→B
にいくとおかしくってるんですよね。
これでCreatA→Aを通さず、CreatB→Bだけだと成功するんですよね。
CreateVertexBufferのLock→書き込み→unlockって別に何度というか
2回しても大丈夫ですよね。

225 名前:名前は開発中のものです。 :04/10/25 01:39:10 ID:jOnQwe7Z
個人的にアクロバティックな動き方だと思うんだけど
switch(mode)
{
value1:
     CreateA();
     break;
value2:
     if( A() == TRUE )
          CreateB();
     break;
}
////////////////////
BOOL A()
{
     描画
     if( キー操作 )
          return TRUE;
     return FALSE;
}

void CreateB()
{
     B();
}

void B()
{
     描画
}
こういうこつ?

226 名前:名前は開発中のものです。 :04/10/25 02:01:03 ID:jOnQwe7Z
VertexBufferは何度も書き直しても大丈夫だけど
(自分のプログラムはしょっちゅうやっている いいか悪いかは知らねw)

処理の順番に問題があるような、そんな貴方に

『出来るだけシンプルに。しかしシンプル過ぎず。』

225を元にしてだけど、Aという関数が仕事し過ぎのような。

227 名前:名前は開発中のものです。 :04/10/25 03:27:46 ID:bQhV/SKL
説明通りか検証もない動作をグダグタ述べるならソースをUPしろ。
多分一発で解決だと思う。
コーディングミスってオチでね。

228 名前:名前は開発中のものです。 :04/10/25 15:44:08 ID:x6+SjO3O
>225
そういうことです。

229 名前:名前は開発中のものです。 :04/10/25 21:01:54 ID:CESlfaTk
>226
Aという関数が仕事し過ぎのようなとはどういうことですか?


230 名前:名前は開発中のものです。 :04/10/26 18:31:24 ID:sbftx/e5
>>229
一つの関数で多くの処理をやりすぎているってことだろ

つーか、225氏も言うとおりだが、プログラムがかなり怪しい動き方をしてると思うよ。
やりたい作業の手順の書き下し方がよくないんだろうと思うけれどなぁ。

231 名前:名前は開発中のものです。 :04/10/26 19:24:05 ID:Vz62+Yvu
ゲームを作ってるんですがタイトル画面→ゲーム画面っていうふうにしようと思って
while (!end){
if (PeekMessage(&msg,NULL,0,0,PM_REMOVE)){
 TranslateMessage(&msg); DispatchMessage(&msg);
}else{
 Main();
}
}
ーーーーー
void Main(){
  switch(Mode){
  case 0:
   if( CreateA() )
     Mode=1;
     break;
  case 1:
     if( A() ){
      if( CreateB() ){
       Mode=2;
       break;
      }
    }
  default:
    end=1;
  }
}

こんな感じでCreate〜で頂点データの作成とか設定を書き込んで
〜関数で描画って感じでしてるんですがアクロバティックですかね。
オーソドックスなスタイルを教えていただけませんでしょうか?
ちなみに欲しい結果はえられましたのでだいじょうび。

232 名前:名前は開発中のものです。 :04/10/26 19:51:17 ID:/HMietuq
Mainって・・・

233 名前:名前は開発中のものです。 :04/10/26 20:09:39 ID:/b5gpP3q
モード分けなんてしないで
タイトルロゴもボスシーンもエンディングもメニュー画面もすべて同じゲーム中のイベントとして考えればよい。
プログラムが始まってシステムの初期化が終わればメインループを抜けることは(ゲーム終了時をのぞき)無い。


234 名前:名前は開発中のものです。 :04/10/26 20:30:31 ID:E7UXsOTF
そもそもメッセージがないときにCPUをぶん回すその書き方は、
あちこちで見かけるが、最悪のコーディングなんだが。

235 名前:名前は開発中のものです。 :04/10/26 20:31:16 ID:E7UXsOTF
>>231

236 名前:名前は開発中のものです。 :04/10/26 20:53:00 ID:tYFSXHVI
>>234
べつにいいんじゃねぇ?
DirectXのフリップ関数はいってるんだろどうせ。
なら大丈夫じゃね。

237 名前:名前は開発中のものです。 :04/10/26 20:57:49 ID:sbftx/e5
>>231の方法だとモードが増えたらその分だけcase文を増やさなきゃならん、
モードが増えてもメインループのコードには手を付けなくて済むように書く

この手のプログラムは「状態の時間進行」と「現在状態の描画」の繰り返しなわけよ。
その2つの作業をする関数を定義しといたModeBase抽象クラスでも作っておいて
メインループはそいつを駆動させるように書く。
んでモード変更があったらポインタを入れ替えるだけで済む、と大体こんな感じ

>>236
余談だがPresentはCPUパワーを開放しないから
やっぱSleepをどっかで入れないと駄目らしい

238 名前:名前は開発中のものです。 :04/10/26 21:06:11 ID:tYFSXHVI
>>237
それってモードいくつ作ることが前提なシステムなんだよ。
話聞いてると3〜4こで済みそうなのに、
なんでそんなアホみたいに量産しないと元がとれないような設計勧めるんだ?
おそらくな、>>231はな、
タイトル画面→ゲーム画面→エンディング画面
でいいんだよ。
だったらcase文が一番シンプルで綺麗にかけるじゃねぇか。

>余談だがPresentはCPUパワーを開放しないから
俺のプログラム、Sleep入れて無いけどタスクマネージャで見てもCPU100%いかないよ。

239 名前:名前は開発中のものです。 :04/10/26 21:11:09 ID:E7UXsOTF
ビデオカードが対応していれば、垂直同期待ちでCPUは使用されないが、
今度は同期待ちの間、メッセージが処理されなくなる。
素直にイベントとスレッドを分けるべき。

240 名前:名前は開発中のものです。 :04/10/26 21:13:58 ID:tYFSXHVI
>>239
その結論はもちろんビデオカードの対応状況を調べた上での結論と思っていいんだろうね。

241 名前:名前は開発中のものです。 :04/10/26 21:28:05 ID:E7UXsOTF
>>240
確認したのはGeForce2/4、Radeon9600で、全て対応していたが、
市場の出回っているビデオカードを一つ残らず調べろと言うことなのか?

242 名前:名前は開発中のものです。 :04/10/26 21:37:32 ID:sbftx/e5
俺Detonator(GF3Ti)もCatalyst(RADEON9500Pro)も使ってるけど両方とも100%だわ。

それと>>239に対して>>240は全く見当はずれの回答をしているように思えるわけで

ついでにswitchと関数ポインタ系のやり方ってどっちがシンプルかって
それは人によって評価違うだろうしなんとも言えんけれど
俺はオーソドックスなのはやっぱ関数ポインタな気がするけどどうだろう

243 名前:名前は開発中のものです。 :04/10/26 21:47:01 ID:E7UXsOTF
>>242
確認してもらいたいんだが、
DX9cSDKサンプルからOptimizedMesh.exe(負荷の軽いサンプルなら何でも)を実行して、
デバイス設定をINTERVAL_DEFAULTに変更してCPU使用率を見てくれ。
最近のビデオカードなら普通は対応しているはずなんだが。

244 名前:名前は開発中のものです。 :04/10/26 22:09:02 ID:sbftx/e5
>>243
すまん確認したら負荷なしだった…。
つい先日まで同カードで負荷100%いってたゲームがあったから駄目なもんだと思ってた。
相当駄目なやり方してたのかなw

245 名前:名前は開発中のものです。 :04/10/26 22:54:58 ID:UwgETfqy
>231
A()とCreateB()が何かはしらないが漏れならこうする
てかcase 1のbreakおかしいぞ
てか直値よりenum使って変更したときのミスを減らせ
enum {GAME_TITLE=0,GAME_A, GAME_B,GAME_END};
void Main(){
  switch(Mode){
  case GAME_TITLE:
   if( CreateA() )
     Mode=GAME_A;
     break;
  case GAME_A:
     if( A() ){
       Mode=GAME_B;  
     }
     break;
  case GAME_B:
     if( CreateB() ){
      Mode=GAME_END;
     }
     break;
  default:
    end=1;
    break;
  }
}


246 名前:245 :04/10/26 23:02:35 ID:UwgETfqy
すまんよくよんでなかった、ダメだな
もしCretateB()に対応するB()があったらこの方がシンプルじゃないか?
switch(Mode){
  case GAME_TITLE:
    if( CreateA() ){
      A();
      Mode=GAME_B;
     }
     break;
  case GAME_B::
    if( CreateB() ){
      B();
      Mode=GAME_END;
     }
     break;
  default:
    end=1;
    break;
  }
}
でもenumは使え

247 名前:名前は開発中のものです。 :04/10/26 23:03:32 ID:KLw6ecBO
どうも231です。
DirectXのフリップ関数は各〜関数で使ってその一つの関数が
タイトル画面やらゲーム画面でやってます。
たしかにこれで作っててどんどんcase文が増えてます。
皆様のご意見を拝見させて頂いた結果としては書いたやり方は駄目ですかね?
いっそのことMain()の中をwhile(0)でその中でシーンごとフェーズごとに
したほうがよろしいですかね?
とりあえずDirectXに関しては本ばっかり読んでまして実践向きの
プログラムを打ててないのが現状ですので皆様のご意見お伺いしたいと思っております。
よろしくお願い致します。


248 名前:名前は開発中のものです。 :04/10/26 23:42:19 ID:tYFSXHVI
>>247
30個以下でおさまるんなら気にすることないよ。
caseでやっちゃえ。
別にcaseが30個以上ならんでたって俺は汚いソースだとは思わないよ。

249 名前:名前は開発中のものです。 :04/10/27 02:03:18 ID:UtCyRkAq
関数ポインタを使いたい年頃なんだろう。
いまどきswitchは遅いから使うななんて時代じゃないよ。

250 名前:名前は開発中のものです。 :04/10/27 06:32:21 ID:+29GhM1T
Strategy/Stateパターンで一発解決の話題だな


■過去ログ置き場に戻る■ 1- 次250 最新50
DAT2HTML 0.33f Converted.