Path: chuka.playstation.co.uk!news1.scei.co.jp!usenet From: UEYAMA Satoshi Newsgroups: playstation.ny.program.labo Subject: Re: =?iso-2022-jp?B?GyRCNjUkKCRGJC8kQCQ1JCQhIxsoSg==?= Date: Sat, 12 Jul 1997 12:59:23 +0900 Organization: 3web user Lines: 40 Message-ID: <33C7011B.4549@tky.threewebnet.or.jp> References: <33BF061B.1996@mxz.meshnet.or.jp> NNTP-Posting-Host: 202.235.214.39 Mime-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit X-Mailer: Mozilla 3.01 [ja] (Win95; I) お久しぶりのうえやまです。 Shinpei Azuma wrote: > 実はサンプルプログラムでTMD読み込みのmodel_init()の最後のほうでGsDOBJ2の > objp=objectとわざわざアドレスを渡しているのですが、なぜこのようにしてい > るのでしょう? > objpをobjectのまま使うと何か不都合があるのでしょうか。 どのサンプルかわからなかったので推測も含みますが… > GsDOBJ2 *object; ここがポイントです。 model_init() の外で宣言されている=model_init() 以降も使う(かもしれない) 。 > /*ここからが問題点です*/ > for(i=0,objp=object;i /* Set Coordinate of Object Handler : > デフォルトのオブジェクトの座標系の設定 */ > objp->coord2 = &DWorld; > > objp->attribute = 0; > objp++; ここで objp++ していますので、objp が指すアドレスが変わります。ここで、 object をそのまま使ったとしたら、object が指すアドレスが変わってしまい、 以降で object を使うときに非常に不便です。 例えばサンプルの shuttle では、for 文直後でも object[0].attribute = ... などといったふうに使っています。ここで object の指すアドレスが変わって いたら… # まぁ、サンプルの shuttle では object が定数だからそもそも object++ で # きないんですけども、それはまた別の話。 -- うえやま%謎の生物愛好家 http://www1.scei.co.jp/‾ekb01823/