[過去ログ]
ゲームプログラミング相談室【Part5】 (970レス)
ゲームプログラミング相談室【Part5】 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: 名前は開発中のものです。 [] 02/11/04 20:41 ID:a1Mhmm8N ゲームプログラミング全般の質問スレッド。 扱う話題のダイナミックレンジはやや広め。包容力高め。 他の初心者質問スレとの棲み分けを探りつつ これからもマターリと活用しておくれ。 ■前スレ 【Part4】http://game.2ch.net/test/read.cgi/gamedev/1005040025/ ■旧スレ(プログラム技術板) 【Part1】http://piza.2ch.net/tech/kako/969/969984472.html 【Part2】http://pc.2ch.net/tech/kako/985/985540361.html 【Part3】http://pc.2ch.net/tech/kako/1002/10028/1002894129.html
■関連スレなど >>2-5 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/1
2: 名前は開発中のものです。 [sage] 02/11/04 20:42 ID:??? ■関連スレ ○【初心者歓迎】スレを立てる前にココで質問を【その3】 http://game.2ch.net/test/read.cgi/gamedev/1032814540/ ○物凄い勢いで誰かが質問に答えるスレ@ゲ製板 4つめ (※第3スレ後半〜第4スレ前半は一時的な紛争地域) http://game.2ch.net/test/read.cgi/gamedev/1035601681/ ○鬱だ氏のう DirectX (DirectXに関する話題) http://game.2ch.net/test/read.cgi/gamedev/1033920036/ http://echo.5ch.net/test/read.cgi/gamedev/1036410116/2
3: 名前は開発中のものです。 [age] 02/11/04 20:49 ID:??? age http://echo.5ch.net/test/read.cgi/gamedev/1036410116/3
4: あぼーん [あぼーん] あぼーん あぼーん http://echo.5ch.net/test/read.cgi/gamedev/1036410116/4
5: 名前は開発中のものです。 [sage] 02/11/04 22:41 ID:??? 乙彼〜 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/5
6: 名前は開発中のものです。 [sage] 02/11/06 00:04 ID:??? 乙 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/6
7: 名前は開発中のものです。 [] 02/11/06 00:20 ID:Hy1yMbKx age http://echo.5ch.net/test/read.cgi/gamedev/1036410116/7
8: 名前は開発中のものです。 [] 02/11/06 20:50 ID:mrrgYg+p 某 MIPS 系のマシンで STL コンテナを使おうとすると、リンク時に "relocation truncated"と怒られる。どうも template がらみでできる weak object の配置に 失敗してるみたいだけど、解決策知ってる人います? (確かに MIPS だとグローバルポインタ相対でアクセスするから、配置する箇所に よってはグローバル変数といえどアクセスできなくなるよな。ld に喰わせるスクリ プトファイル書けばいいのか?) http://echo.5ch.net/test/read.cgi/gamedev/1036410116/8
9: 名前は開発中のものです。 [age] 02/11/07 01:44 ID:??? >>8 ふつう -G0 ってコンパイラ何使ってるかくらい書けヨ! http://echo.5ch.net/test/read.cgi/gamedev/1036410116/9
10: エックサー [] 02/11/07 19:03 ID:O6dqrNtE DirectX8使ってるんですけど、メッシュの頂点の、ディスプレイ上での座標を知るにはどうしたらいいんですか? http://echo.5ch.net/test/read.cgi/gamedev/1036410116/10
11: 8 [sage] 02/11/07 21:47 ID:??? >>9 Thanks > ってコンパイラ何使ってるかくらい書けヨ! 確かに。想像の通り gcc です。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/11
12: 名前は開発中のものです。 [] 02/11/08 13:56 ID:mLnGgDjl わたしも 3D座標をスクリーン座標に変換する方法が知りたいです。 座標xyzをwで割るらしいのですが、xyzwの求め方がわかりません。 xyzはただの3D座標なのでしょうか? それとも何かの行列を 掛けたりしているのでしょうか? wはどこからでてくるのでしょうか? すみませんが 教えていただけませんか? http://echo.5ch.net/test/read.cgi/gamedev/1036410116/12
13: 名前は開発中のものです。 [sage] 02/11/08 14:34 ID:??? ビューと射影行列を掛けるだけ DirectD3なりのレンダリングエンジンを使うにしても 描画前に行列をセットしていると思うが何が分からないのか分からん http://echo.5ch.net/test/read.cgi/gamedev/1036410116/13
14: 8 [sage] 02/11/08 21:31 ID:??? STL の件だけど、要するに __malloc_alloc_oom_handler などの static 変数 が .sdata セクションに配置されるのが問題なんだね。 教えてもらった -G0 を使って「全部 .data セクションに置く」方法に加えて、 問題になってる変数に個別に __attribute__((section(".data"))) 指定する 方法でも動きました。 しかし、何で __malloc_alloc_oom_handler などのクラステンプレート中で 定義された static 変数に限って .sdata に配置できないのかは謎です。 .sdata や.sbss 使い切るほど static 変数定義してない
んだけど。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/14
15: 名前は開発中のものです。 [sage] 02/11/08 21:41 ID:??? >>12 オブジェクトのローカル座標に、ローカル・ワールド変換行列、ワールド・ビュー 変換行列、ビュー・スクリーン変換行列(a.k.a 射影行列) と順にかけて、出てき た座標を w で割れば良い。 行列だけど、DirectX 使ってるなら SetTransform() に D3DTS_WORLD D3DTS_VIEW D3DTS_PROJECTION という第一引数を指定して渡してるヤツ。 >>13 まぁ、サンプルコードを深く理解せずに copy & paste してるんでしょう。趣味 でプログラミングしてるなら、そういう態度もアリだ
とは思うよ。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/15
16: 名前は開発中のものです。 [sage] 02/11/09 00:02 ID:??? >>14 gccって、vtblを.dataに吐いてたりしない? http://echo.5ch.net/test/read.cgi/gamedev/1036410116/16
17: 名前は開発中のものです。 [] 02/11/09 01:09 ID:0QThSDoj >>15 そーゆー奴ってさワールドからローカルへの変換ができねぇってことだろ? 動いてる物体にのれないのはもちろんのこと スキニングも理解してできてねぇだろ? 逆行列はしっかり理解してから次のステップへいってもらいたいね。 俺も会社入るまえそうだっただけに応援したいね。 ローカルに直せるってだけでかなりできることが増えるね。 なにいってるかわかんなくなったね。 じゃあね http://echo.5ch.net/test/read.cgi/gamedev/1036410116/17
18: 8 [sage] 02/11/09 01:16 ID:??? >>16 vtbl が配置されるセクションと、クラステンプレートの static 変数が配置される セクションが違うと、何か問題がある? あと、今回の件に関しては STL のコン テナが利用する allocator の話なんで、仮想関数は出てこないはず。 そもそも .sdata, .sbss に関しては、こういうことだと理解してるんだが、勘違い があったら指摘して下さいな。 1. EE-core (っつーか MIPS) は 32bit 固定長命令を採用しており、アドレス 空間も 32bit ある。 2. したがって 1 命令で 32bit の任意のアドレスにアク
セスすることはできない。 どうしてもアクセスしたければ a) まず 16bit をレジスタの上位アドレスに読み込み b) 次にオフセット付きメモリ参照命令を使って、メモリにアクセス と 2 命令使う。 3. それだと効率が悪いので、汎用レジスタの一つ ($gp) をグローバルポインタ として固定した値を入れて利用。static なデータは $gp から 16bit 相対で アクセスできる範囲に入れておく。(これが .sdata と .sbss) 当然 16bit 相対でアクセスできる範囲は限られるから、そこから溢れたデータ は効率悪くても 2 の方法でアクセスする必要があ
る。gcc は標準では 8byte 以下のデータは .sdata, .sbss セクションに、それ以上のデータは .data, .bss セクションに格納する。この閾値は、必要に応じて -G オプションで変更できる。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/18
19: 8 [sage] 02/11/09 01:19 ID:??? >>18 の続き そういうわけで gp がらみで問題になるのは 1. .sdata, .sbss が溢れるほど大量に static データを定義した場合 2. 翻訳単位によって、閾値が異なる場合。たとえば同一のグローバル変数を 参照するプログラムの片方を -G0 でコンパイル、他方を -G8 でコンパイル とか。 3. $gp を書き換える場合。特に位置独立なコードを使うシェアードライブラリの 関数を呼ぶ場合。(ふつー Global Offset Table 用意して、$gp 書き換えた上 で関数を呼ぶスタブを作る) といった場合。クラステン
プレートの static 変数が関わるとは思えんのよ。 PS2 Linux だとなんの問題もなく動いたような気がするし。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/19
20: 12 [] 02/11/09 01:55 ID:s6gdDMqC >>15 ビュー行列 と 射影行列を掛けたものと、 3D座標を 掛けたの ですが、でた xyzwで x/w y/w z/w をやってみたのですよ。 しかし、 値が1.0を超えているにもかかわらずスクリーンの端 にまで、 ラインが(この時二つの座標を線で結んでいました。) 届いてませんでした。 なので、 やり方が違うのかなとおもいまして・・・・ http://echo.5ch.net/test/read.cgi/gamedev/1036410116/20
21: 名前は開発中のものです。 [sage] 02/11/09 01:58 ID:??? >>20 なんか微妙に日本語が変な気が。ありがちなのは行列をかける順番を 間違えてるとかだが。 > しかし、 値が1.0を超えているにもかかわらずスクリーンの端 > にまで、 ラインが(この時二つの座標を線で結んでいました。) 意味が良く分からん。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/21
22: 12 [] 02/11/09 02:14 ID:s6gdDMqC >>21 すばやいレスありがとうございます。 2点をラインで描画しました。 ビュー行列 matView 射影行列 matProj 調べたい座標 Vec 計算後の値 v4 mat = matView * matProj D3DXVec3Transform(&v4,Vec,mat); Vecとmatを計算して求められた 値をwで割る v4.x/v4.w v4.y/v4.w v4.z/v4.w ここで スクリーン座標が求められるはずです。 スクリーン座標の値は xyに関しては -1〜1 zは 0〜1に なるはず だけれど、 その値を超えたにもかかわらず そのラインは 画面の端まで届きませんでし
た。 mat = matProj* matView でやってみても 値は変わりますが、 ラインが端まで届きません。 なので、計算の仕方が間違ってるのか、それか根本が間違っている かどちらかだとおもうのです。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/22
23: 名前は開発中のものです。 [] 02/11/09 03:22 ID:gww9xFnI ビューポートは考慮したーのーかーなーあーあーあーあ? http://echo.5ch.net/test/read.cgi/gamedev/1036410116/23
24: 12 [] 02/11/09 03:44 ID:s6gdDMqC >>23 すみません。 たしかに、 640,480のウインドウを値(1.0,1.0)に する必要がありますが、 このビューポートを実際どのように 使えばいいのか。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/24
25: 12 [] 02/11/09 05:27 ID:s6gdDMqC >>23 もとめられた値に windowのサイズの半分を掛けて あげればよいのでしょうか? 640,480のウインドウなら320,240をそれぞれ掛けてあげる x = x*320; y = y*240; それですと 一応それらしき値はでます。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/25
26: 名前は開発中のものです。 [] 02/11/09 09:43 ID:iuRz/9+A ちゅーしんをあーわーせーろー。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/26
27: 名前は開発中のものです。 [] 02/11/09 14:55 ID:9m0Zluol 意外にみんな親切なのな。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/27
28: 名前は開発中のものです。 [sage] 02/11/09 14:59 ID:??? 誠意が見られるなら付き合うよ。 質問の仕方とか…ね。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/28
29: 名前は開発中のものです。 [] 02/11/09 15:20 ID:m4HooRjJ http://alink3.uic.to/user/ranran2.html http://echo.5ch.net/test/read.cgi/gamedev/1036410116/29
30: 12 [] 02/11/09 17:41 ID:s6gdDMqC >>26 >>ちゅーしんをあーわーせーろー。 中心ですか どうやってあわせるのだろう・・・・・ 視点と注視点から 角度を求めて それを 頂点に掛けて あげるのでしょうか・・・ うーんでも、ビュー行列を掛けたときにすでに入っているような気も しないでもないですね。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/30
31: 名前は開発中のものです。 [sage] 02/11/09 21:43 ID:??? そういうのは3Dグラフィックの基礎知識だから、そっち方面の 参考書でも読んで勉強したほうがいいと思うぞ。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/31
32: 名前は開発中のものです。 [sage] 02/11/09 22:11 ID:??? そだね。DirectX がどうこうの前に、基礎的な知識を習得したほうが近道だよ 試しに自力でライブラリ無しでポリゴン出してみなよ ワイヤーフレームでいいからさ。いろいろ分かると思うよ http://echo.5ch.net/test/read.cgi/gamedev/1036410116/32
33: 名前は開発中のものです。 [] 02/11/10 00:18 ID:laxcwGaC おーれーはーそーのーすーたーんーすーがきらーいだー。 目的地をみさーだーめーていっちーょくせんでりろーんはそーれーかーら かーんーがえーるーのがーすーきーだ。 ちーなーみーにーちゅうーしーんをもとーめるーとゆーんは、 たーすーだーけーだーよ?あ? で、あーとーはーじぶーんでなーんとかしれー http://echo.5ch.net/test/read.cgi/gamedev/1036410116/33
34: 名前は開発中のものです。 [age] 02/11/10 00:32 ID:??? >>8 誰なのかわかりますた ヽ(´ー` )ノ 初期化してないstatic class memberが .bssに入らないで.dataセクションに 入っちゃうみたいだけど、それじゃない? それが正しいのか間違ってるのかしらないけど。 http://chapuni.com/topics/psx/ でも、やっぱ -G0 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/34
35: 12 [] 02/11/10 03:52 ID:CLex+uUH >>33 私も とりあえず、足せば良いのかなと思いやってみたのですが うまくいきませんでした。 >あーとーはーじぶーんでなーんとかしれー いろいろご指導ありがとうございました。 いろいろ試して見たいと思います。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/35
36: 名前は開発中のものです。 [sage] 02/11/10 07:26 ID:??? オブジェクトのワールド座標ににプロジェクション行列の逆行列をかけて 求まったxとyを使えば良いんじゃねーの? その時、原点は画面中央、640×480の場合、xが0なら 画面中央320って事じゃないの? …漏れの環境だとね。 zはカリングで使うじゃない?マイナスだとカメラの後ろに来てるって事。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/36
37: 名前は開発中のものです。 [sage] 02/11/10 11:38 ID:??? >>34 static class menber でも、問題が出るものと出ないものがあります。 普通のクラスの static member object -> 問題なし テンプレートクラスの static member object -> relocation truncated ... でリンク時エラー 普通のクラスとテンプレートクラスで異なる点は、nm で見た限りだとシンボルが weak か否かという点。テンプレートクラスの static member は複数の翻訳単位 でインスタンス化される可能性があるけど、リンク後には実体を 1 つにせにゃな らんので
weak object になってる。 それで weak object + .sdata セクションという組み合わせが悪いのかと思ったの だけど、違うのかなぁ。(これ以上は binutils のソース読まんと解決しないような 気がしてきた) > でも、やっぱ -G0 らじゃ。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/37
38: 名前は開発中のものです。 [] 02/11/10 17:12 ID:X0lDMmpo >>36 >オブジェクトのワールド座標ににプロジェクション行列の逆行列をかけて >求まったxとyを使えば良いんじゃねーの? これですと 値が変動するときは プロジェクション行列が変わった時だけ なのでうまくいかないと思います。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/38
39: 36 [sage] 02/11/10 19:10 ID:??? ああ、すまんね。 こっちの環境だと、独自クラスのカメラてのがあって 毎フレーム、視錐台の変更って感じでやっているから出切るんだわ。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/39
40: 前編 [] 02/11/10 20:19 ID:JSg4/5lD はいではやりかたを整理しましょう。 まず変換したいワールド座標にカメラの逆行列をかけます。 これはDIRECTXではGetTransなんとかでとれるあたいそのままです。 つぎにプロジェクションマトリクスをかけます。 これは大抵の環境で同じです。 それからビューポートの変換です。 これは640X480の場合は http://echo.5ch.net/test/read.cgi/gamedev/1036410116/40
41: 後編 [] 02/11/10 20:29 ID:JSg4/5lD X=(X/W)*320+320 Y=(Y/W)*-240+240 で終了です。 これはDIRECTXのヘルプにものっています。 ヘルプでビューポートで検索をかけるとみつかります。 これでできなかったら少し実際にものをだして動かしてみてはどうでしょうか? http://echo.5ch.net/test/read.cgi/gamedev/1036410116/41
42: 37 [sage] 02/11/11 20:55 ID:??? 解決しました。結論としては linker に読ませてるスクリプト指定が腐ってる、 .gnu.linkonce.s セクションのデータを $gp 相対でアクセスできそうなところに 配置しろ、ってことで。 (結局 gcc のソースを読む羽目になったよ……) http://echo.5ch.net/test/read.cgi/gamedev/1036410116/42
43: 名前は開発中のものです。 [sage] 02/11/12 00:59 ID:??? >>42 そんなんでgccのソース読む羽目になったの? マップファイル見たらすぐわかりそうなのに。 http://echo.5ch.net/test/read.cgi/gamedev/1036410116/43
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 927 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s