[過去ログ] DXライブラリ 総合スレッド その15 (997レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(3): 2013/04/02(火)19:54 ID:7ScEAe8S(1) AAS
Cを習得した程度のスキルでも、ゲームのグラフィックを比較的容易に描画する事のできる、
「DXライブラリ」に関するスレッドです。
DXライブラリに関するテクニックなどの情報交換などを行う事で、
多くのDXライブラリユーザのスキルの向上に役立てたら幸いです。
【公式】
外部リンク:homepage2.nifty.com
【前スレ】
省19
917: 2013/06/19(水)01:45 ID:yl+vr7Bp(1) AAS
モデル発光させたいなら公式のブルームエフェクトあたり参考にすれば
918: 2013/06/19(水)09:08 ID:fYanFfmb(1) AAS
>>916
おい。意味わかれ
919: 2013/06/19(水)12:30 ID:HTFvXNaB(1/4) AAS
>>915
そう だからライブラリの不備ではないはず
現状じゃあDrawBillboard3Dの方が速い印象だからまだDrawPolygonIndexed3DToShaderを使いこなせてないんだと思う
次レスみたいな感じでコーディングしてるんだけどMAX_PARTICLE_NUMBERが10万とか行ったらParticle[ i ].Valid == 1の走査10万回だけ(?)で(アイドル時でも毎フレーム行う)1コアの使用率が8割ぐらいまで上がってる
パーティクルの運動とか描画切っても有効なパーティクル数が増えたら描画の有無以上にfpsに影響する
こんな単純なところでたかだか10万の走査にアイドル時で1コア8割も使ってたら話にならない
なんかコーディングでおかしいところないかな
920: 2013/06/19(水)12:35 ID:HTFvXNaB(2/4) AAS
#define MAX_PARTICLE_NUMBER 40000
#define PARTICLE_ONCE_DRAWING_NUMBER 10000
void Common_Particle_Draw_Process( void )
{
SetUseZBuffer3D( TRUE ) ; // Zバッファを有効にする
SetUseTextureToShader( 0, ptg.test ) ; // 使用するテクスチャを0番にセット
SetDrawBlendMode(DX_BLENDMODE_ADD_X4 , 255 ); //合成方式
省17
921: 2013/06/19(水)12:36 ID:HTFvXNaB(3/4) AAS
void Particle_Draw_Process( int i , int j ) //文字入れ替わって分かりにくいけどi=上でのi+j,j=上でのi
{
// パーティクルデータが有効なもののみ描画準備を行う
if( Particle[ i ].Valid == 1 )
{
Vertex[ 4*j+0 ].pos = 略
Vertex[ 4*j+0 ].〜 = 〜
省7
922: 2013/06/19(水)12:41 ID:KHdYj9/C(1/2) AAS
格闘ゲームつくるときキャラクターの座標はどの部分にするの?
1箇所じゃなくて
Left Top Right Bottom
か
Left Top Width Hight
みたいにするの?
923: 2013/06/19(水)13:00 ID:HPPTVIoE(1) AAS
俺の場合、格ゲーじゃなくてアクションだけど、
足元(床の判定をする重心部分)基準で、攻撃判定とか食らい判定を複数持つようにしてる
924: 2013/06/19(水)13:13 ID:KHdYj9/C(2/2) AAS
足元の絶対座標と他の相対座標みたいな感じですか
ありがとうございます
925(1): 2013/06/19(水)13:16 ID:GzsTwj6B(1/2) AAS
そういえばMMEのパーティクルって完全なGPGPUだったような
CPUで計算や代入はしてないから、そりゃあ高速なわけだ
MMEと同じようにすればDXライブラリでも50万パーティクルいけるんじゃない?
926: 2013/06/19(水)13:21 ID:DCALVZLl(1) AAS
俺もいろいろ作ってきたが、やっぱ足元がいいと思う。
でないとキャラの身長によって、接地する位置(足元)が変わるから
接地判定のたびに、いちいち計算しなくてはいけなくなる。
927: 2013/06/19(水)16:10 ID:TAYU7NnF(1/2) AAS
頂点テクスチャ使えるんかな
使えればパーティクル表現の幅が広がるんだけど
無い頭じゃcannot map expression to vertex shader instruction setに阻まれる…
928: 2013/06/19(水)16:27 ID:TAYU7NnF(2/2) AAS
すまん癖でageてもた
tex2Dlod(Texture, float4(VSInput.Tex,0,1));でいけた
だがどうやって値を格納してインスタンシングするか思いつかん
929(2): 2013/06/19(水)17:22 ID:HTFvXNaB(4/4) AAS
>>925
やっぱGPGPUになってくるか
MMEでいくら負荷かけてもCPUほとんど負荷かからないしな
GPGPUって言ったらCUDAぐらいしか知らんってか開発環境引き継げそうなのなさそうだけど
ラデでもあったりするの?
MMEなんてゲフォかラデかも選ばないしどんなの使ってるんだろうか
930: 2013/06/19(水)18:21 ID:GzsTwj6B(2/2) AAS
いやいや、MME用のファイルみれば分かるよ、というか分かった
Zにインデックスを代入した頂点で形成されたポリゴンが30000個あるxファイルを用意して
それらのポリゴンの頂点を何処に配置するかはZに代入したインデックスと経過時間を代入した定数を利用して頂点シェーダで決めてた
929はMMEで50万パーティクル出したんでしょ?
それに使ったfxファイルやら何やらを見ればやり方は分かるよ
931: 2013/06/20(木)10:45 ID:LeX3JVlZ(1) AAS
>>929
GPGPUつっても単なるジェーダーだからな
DirectXSDKとかMMEのfxファイルを見てDXライブラリに適用できないか試行錯誤するしかないな
932(1): 2013/06/21(金)22:42 ID:zDpGF2Yh(1) AAS
しったか多いな。GPGPUの本来の意味くらい勉強しておけよw
933: 2013/06/22(土)01:30 ID:7ZaO3jUs(1) AAS
>>932
俺もよく知らないから詳しく教えて下さい
934: 2013/06/22(土)01:56 ID:yr7OmFcb(1/2) AAS
ゆってる意味わかるんだけどさ
ちゅーかさ、
そううじゃねえだろ!
動画リンク[YouTube]
たのむぜ、みんな
935: 2013/06/22(土)11:55 ID:GfSkSEBY(1/3) AAS
不正なソフト検出、934のリンク開いちゃ駄目だぞ
936: 2013/06/22(土)12:04 ID:8tGuWe3X(1) AAS
youtubeなのにそんな事あるのか。
たしかに934の書き込みは「どうとでもとれる内容」で「age」てると言う点でヤバイ感じがびんびんするが。
937: 2013/06/22(土)12:16 ID:msCGrHxo(1) AAS
構うなマルチだ
938: 2013/06/22(土)12:18 ID:yr7OmFcb(2/2) AAS
ああ、ヤバいぜww
のぞいてしまったら、後戻りはできないさww
939(1): 929 2013/06/22(土)13:33 ID:c+7nT2Dg(1) AAS
確かにほとんどシェーダで処理してるみたいだったけど値をどうやって管理してるか未熟なのもあってわからんわ
値をシェーダに渡せてもシェーダでの計算結果を返すのにはHLSLの出力のセマンティクスしか現状無理だよね?それもDXライブラリだと自動的に描画処理に回されるしかないし
運動まで記述してしかもfx内で完結してて同じエフェクトを大量に並列処理しても代入のし直しとかを回避できてるのがちょっと分からない
俺だと運動をCPUでやって座標等のパラメータを決定して、GPU使った描画処理で、決定したパラメータを基に6頂点を決定(回転、スケーリングなど)してるから
GPUに任せられるのは後半だけ、かつ値渡しの代入が待っててそれがボトルネックになってる
あとほとんど別件だけど配列に別の要素へのポインタを持たせてリストを作ってるとき、
端から端まで走査するときに要素[i]をforでiを0からMAXまで回すのとポインタを順にすべて辿っていくのでどれぐらいの速度差があるかな
省1
940: 2013/06/22(土)14:10 ID:GfSkSEBY(2/3) AAS
とりあえず50万だしたときのMMEのfxを見たい、そこに答えがあるはずだから
ポインタの話は具体的なコードを示してくれないと細かいところが分からない
941(1): 2013/06/22(土)14:43 ID:GfSkSEBY(3/3) AAS
>確かにほとんどシェーダで処理してるみたいだったけど値をどうやって管理してるか未熟なのもあってわからんわ
調べたMME用fxでは値は管理してなかった
初期値+経過時間だけで各パーティクルの座標、回転値、スケールを決定してた
初期値は頂点データに、経過時間は定数に入れる
2要素だけで決定されるから時間経過に伴う座標や回転値の推移を保持しておく必要がない
だからGPUで計算した結果をCPU側に戻す必要がないってわけ
942(1): 2013/06/23(日)16:44 ID:c1txBwZ+(1) AAS
構造体を配列に入れていくのと
クラスを配列に入れていくのとでは
それぞれどういうメリット、デメリットがあるか教えてくれませんか?
要は、インスタンス化させなきゃならない情報と
そうする必要の無い情報の違い?かな、、
943: 2013/06/23(日)16:59 ID:5aq6Vp/S(1/3) AAS
全部クラス使っとけ
944(1): 2013/06/23(日)17:00 ID:7v8kBqKf(1) AAS
くらすぞボケ
945: 2013/06/23(日)17:04 ID:5aq6Vp/S(2/3) AAS
と言っても答えになってなかったから補足。
カプセル化するかしないか。外側で構造体の面倒を見るのかそうでないか。
設計思想による。
厳密には確保のされ方が若干違うが、クラスも構造体も同じもの。public:とか書かないだけ。
946: 2013/06/23(日)17:10 ID:5aq6Vp/S(3/3) AAS
>>944
ああ? じゃっかぁしゃい! こうぞう(小僧)が!
947: 2013/06/23(日)17:21 ID:ImpBtOLQ(1) AAS
わざわざ連投してまで乗る流れではないと思うんです
>>942
C++だとstructもclassもメンバがprivateかpublicか程度で
ほとんど同じものだぞ、という指摘は多分的外れだろうから
勝手に「インスタンスの配列」と「ポインタの配列」の違いのことを
言っていると解釈して答えるけど
・ポインタだとポリモーフィズムが効く
省5
948: 2013/06/23(日)23:54 ID:loBJMC5T(1) AAS
深夜に質問すいません。
現在DXライブラリでゲームを作っているのですが、
visual C++ 2010 Express でReleaseビルドをしたときのみ発生するバグがあります。
Debugビルドをしているときは正常にゲームが起動し、動作するのですが。
こういった場合の解決策って何かありますか?
949(1): 2013/06/24(月)00:04 ID:/YJAjfYg(1) AAS
未初期化の変数を見ているとか範囲外アクセスしているとか
950: 2013/06/24(月)00:11 ID:yKlJMBcD(1) AAS
>>949
回答ありがとうございます。
さっそくその点は検証してみます。
951(1): 2013/06/24(月)00:43 ID:h96Wx/4y(1) AAS
クラス使い始めたら構造体忘れるくらいだな
まぁ同じようなもんだしね
952: 2013/06/24(月)01:02 ID:7OqibfHF(1/2) AAS
でもPOD型として使いたい時って、意味を明示するのに構造体として定義したいから忘れる事は無いよな
953: 2013/06/24(月)04:39 ID:k1GVFofP(1) AAS
やっぱそういうのって、ロマンティックだかセマンティックだか的に重要だよね
954(3): 2013/06/24(月)14:14 ID:w4EsdBi7(1/2) AAS
3Dでカメラのズームってどうやるんだろ?
カメラを近づける→間にある壁とか通り越しちゃう
全モデル拡大→カメラが壁に埋まりそう
DrawExtendGraph→画面粗くなる
FPS作りたかったのに基本的な部分でもう詰んだ
955(2): 2013/06/24(月)14:22 ID:0WENQ4Ky(1/2) AAS
カメラの視野角を狭くする
956(1): 2013/06/24(月)15:04 ID:7OqibfHF(2/2) AAS
>>954
間にある壁とか通り越さないように近づけるだけじゃね
957(1): 2013/06/24(月)17:25 ID:/0Rqs52n(1) AAS
>>955でFA
958(1): 2013/06/24(月)19:42 ID:QtyOlFn5(1) AAS
ズームの原理がまんま>>955だわなw
959(1): 2013/06/24(月)20:10 ID:2MKwvOCU(1/2) AAS
>>954
>DrawExtendGraph→画面粗くなる
これを回避する関数がDXライブラリにはある
960: 2013/06/24(月)20:31 ID:2MKwvOCU(2/2) AAS
>>954
2Dでも3Dでもムービーでも拡大表示すると荒くなってしまう
つまり、「DrawExtendGraph→画面粗くなる」を使う方法なのだが
これを使っても画面が粗くならないようにすればいい
ヒントは、どんなゲームでもズームをすると
画面全体が少し「ぼやけた感じ」になる
これがヒント
961: 2013/06/24(月)21:54 ID:w4EsdBi7(2/2) AAS
>>956>>957>>958
なんとFOV変えるだけで拡大になるんですね
原理とか全然知りませんでした。ありがとうございました
>>956
目の前にフェンスがある場合とかだとカメラ近づけるわけにはいきませんよね
>>959
FPSだとズームしてぼけては困りますので
省1
962: 2013/06/24(月)22:48 ID:0g5sX5P5(1) AAS
そっか、カメラを近づけるって事は見える角度が変わるって事だからズームと同じじゃないんだな。
横からだけど勉強になりました。
963: 2013/06/24(月)22:50 ID:0WENQ4Ky(2/2) AAS
視野角広げながら近づく、とかちょっと前のドラマで流行ってた演出もあるよね
964: 2013/06/25(火)00:57 ID:ATbmu7ey(1) AAS
cameraに距離変数作って数字弄るだけでカメラ距離は簡単に動かせる
数学やで
965(1): 2013/06/27(木)00:19 ID:4uTUBgp+(1/2) AAS
クォータニオンの掛け算を使った回転を実装しようと思っています。
しかし、書いてくのはいいのですが、なんかこう、
36行目~41行目をもうちょっと綺麗にかけないかと思うのと、
クォータニオンの掛け算になりきれていない関数をうまくリファクタリングできません。
これ以上スマートにかけないでしょうか?
外部リンク:codepad.org
966: 2013/06/27(木)06:44 ID:+1WUpA+2(1/2) AAS
>>951
初心者の頃バンバン構造体使ってたけどやっぱりクラス覚えてから使わなくなるよなw
967: 2013/06/27(木)10:02 ID:x/Xyu3mq(1) AAS
いまだにクラスの有効的な使い方が解らない俺。
968: 965 2013/06/27(木)11:06 ID:4uTUBgp+(2/2) AAS
質問板で効いてきたほうがいいですね、失礼しました
969(1): 939 2013/06/27(木)17:30 ID:FeY2Pa5S(1) AAS
>>941
遅くなってすまん
50万以上出たのはParticleEXってやつ。もしかしたら同じfxファイル見てるんじゃないかな
やっぱりそういう形で管理してたんだな
こうやって時間だけで位置を指定するのは革新的な方法だと感じたけど
こうすると初期値をシェーダに渡す量が増えると思うんだよな
ただでさえそんな大量のパラメーターを渡せないしどうしたものかと悩んでるのに
省21
970(3): 2013/06/27(木)19:17 ID:+U5GrHWc(1/2) AAS
革新的てw
MMEは元々MMDに存在しないエフェクトファイルの読み込み機能をDLLをフックして実現してるんだから
>それともMMDの自由度の低さを補うためにこんなことをしてるだけで特に利点はないのか
これ以外に何があるんだよw
シェーダだけで書いてるパーティクルエフェクトが存在しなかったとでも言いたいの?
もっと勉強した方がいいよ。
GPU PROかShaderXお勧め。最新刊から読むべし。
971(1): 2013/06/27(木)19:25 ID:9DsHtcle(1) AAS
なんでそんな皮肉った言い方しかできないの。
972: 2013/06/27(木)19:35 ID:+U5GrHWc(2/2) AAS
じゃあ、お前がやさしく答えてあげればいいよ。
973: 2013/06/27(木)23:32 ID:+1WUpA+2(2/2) AAS
プログラムスレってだいたいこんなんばっかよ
974: 2013/06/27(木)23:43 ID:2GBOEG5L(1) AAS
2chに何期待してるんだか。
>>970は皮肉交じりにちゃんと答えてるけど
>>971 は文句だけで何もしない学級委員だしな
975(1): 2013/06/28(金)06:42 ID:o7SuB0OL(1) AAS
客先常駐で偉そうな客先社員に見下されて何の経験にもならない雑用を押し付けられて精神病むのがオチw
30代で常駐先がなくなって未経験の異業種で人生やり直すのがオチw
常駐先企業の人件費抑制に利用されただけの人生だったな残念w
システムエンジニアになろう〜新入社員研修編〜
動画リンク[ニコニコ動画]
976: 2013/06/28(金)08:31 ID:EUxLUSkI(1/2) AAS
>>975
そのオチって、基本的に本人が何もしないで口開けて待ってるだけの人が陥るパターン
ITに限らないけど、自分個人が常に自学自習かスキルアップしないとそうなって当たり前だと思う
単芝生やして言う事じゃないと思う
977: 2013/06/28(金)12:14 ID:IDCn9td6(1/2) AAS
触るな触るな
978: 2013/06/28(金)18:05 ID:0Y+3eGOT(1) AAS
その手の話題は雑談スレ(というかプログラマ板向けだな)
スキル磨くならフリーランス最強
979(1): 969 2013/06/28(金)18:59 ID:AYnm5c/2(1) AAS
>>970
経験の浅い初心者なもんで新鮮だったんだ
拙い質問ばっかりだけど叩かれてもいいからもう少し付き合って欲しい
外部リンク[cgi]:hpcgi2.nifty.com
>GPUが頂点シェーダーに対応している場合はモデルの頂点データは予めVRAMに置いておくので、
>GPUが直ぐにアクセスして頂点計算をして描画することが出来るのですが、
>DrawPolygonIndexed3D で描画する場合は頂点データがシステムメモリにあるので、
省3
980(1): 2013/06/28(金)20:12 ID:IDCn9td6(2/2) AAS
そういえばdxlibには
頂点バッファに相当する機能が無いね
981: 2013/06/28(金)20:18 ID:EUxLUSkI(2/2) AAS
>>980
VertexBufferをラップした物って話?
あんま意味無いような
982: 2013/06/28(金)21:17 ID:zHBwMUSv(1) AAS
スキル磨けば評価されて生き残れるようになってるんだったら日本の労働生産性が米国の6割にはならねえよ
結局既得権益を持ってる組織に入り込めるかどうかだけが全て能力は関係ないそういう国でした
983: 2013/06/28(金)21:52 ID:06thrNab(1) AAS
一応、「VertexBufferハンドル」というものはあるっぽい
CreateVertexBuffer で作って、Draw〜_UseVertexBufferで描画できる
(シェーダ使うならDrawPolygon3DToShader_UseVertexBuffer)
984: 979 2013/06/29(土)14:02 ID:K6rcYNWm(1) AAS
おお、シェーダ使った関数もあったのか
あと実装に向けての問題は、
1.フレームまたいだパーティクルの生成にどうやって対応するか(すでにVRAM上に存在するデータを送りなおしていたら遅くなる)
2.GPUで処理するために初期値とパーティクルの運動記述するための変数の渡し方(数が多すぎてHLSLのセマンティクスでは足りない)
3.バッファのサイズはunsigned short(65535)が上限なのか
これぐらいかな
1は出来るだけ渡す回数を減らしてシステムメモリのアクセスを無くしてGPUが独立に処理できる状態を維持しないといけないし
省9
985: 2013/06/29(土)15:01 ID:xJM8sS91(1) AAS
おじさん古い人間なんで、話半分に聞いてね
1を避けることは無理だべ
実際データが更新される以上、更新されたデータは渡さなきゃならない
2は別のセマンティクスを無理やり利用するとか?
外部リンク[aspx]:msdn.microsoft.com
ブレンディングウェイトとか法線ベクトルとか
2つ目以降のテクスチャ座標とか・・・
省7
986: 2013/06/30(日)12:02 ID:SMOxOWeK(1/2) AAS
>>970
ShaderXは翻訳本がないのがなぁ
この業界、新しい技術を勉強しようとすると英語必須だな。
プレイステーションくらいまではむしろ日本語が標準語だったのだが。
最近じゃ韓国語のマニュアルはあるけど日本語はないとか
そんなんばっか。
987: 2013/06/30(日)12:13 ID:Bvq6l+EP(1/3) AAS
そろそろ次スレ
テンプレなんだが、【関連スレ】を
【公式】と【前スレ】の間に置くのはどうだろうかと提案してみる
あっち過疎ってるから少し分散させた方がいいかなと
988: 2013/06/30(日)12:26 ID:db0hqSYS(1) AAS
効果があるとも思えないけど、それくらいの変更ならいいんじゃないかな。
消極的賛成。
989(1): 2013/06/30(日)13:22 ID:SMOxOWeK(2/2) AAS
つーか
板違いだけど。この辺りをテンプレび関連スレに入れておいた方がいいじゃない?
DXをDirectXと勘違いしてここに来る人もたまにいるし。
人もあちらの方が多し。
ゲームプログラムなら俺に聞け
2chスレ:tech
ここと
省2
990: 2013/06/30(日)16:50 ID:AaytdumH(1/2) AAS
3Dライン引いたときに カメラの近くのラインが消えちゃうのは
どうにもならぬのですか
991: 2013/06/30(日)17:21 ID:rmIY2lVx(1) AAS
Projection行列(perspective/ortho)のznearの値を小さくする
992: 2013/06/30(日)17:45 ID:AaytdumH(2/2) AAS
ありがとござまーす
993: 2013/06/30(日)20:17 ID:99KgEoEE(1) AAS
モデルのフレーム位置ってどうやって設定するんですか?
MV1SetMatrixで設定しても足元の位置を取得してるみたいです
モデルが悪いのかモーションが悪いのか…
994: 2013/06/30(日)23:18 ID:Bvq6l+EP(2/3) AAS
>>989のスレと「スレ立てる前に〜」スレを追加して
スレ立て行ってきます
995: 2013/06/30(日)23:23 ID:Bvq6l+EP(3/3) AAS
ごめん、無理だった・・・
誰か頼むorz
996: 2013/06/30(日)23:59 ID:j62MvD3e(1) AAS
次スレ立てたよ
997: 2013/07/01(月)00:31 ID:UEznuvcB(1) AAS
スレ立て乙
2chスレ:gamedev
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s