ページ 11

奥行を有効にする場合の図形の描画(DxLib)

Posted: 2012年9月15日(土) 12:38
by dic
また、つまづきました
現在3Dの図形描画について練習しています
そこで、VECTOR 変数を使って、3Dの球の集合を描いて
Y軸を中心に回転させると、どうにも変に描画されます

// ①・Zバッファを有効にする
SetUseZBuffer3D( TRUE ) ;

// ②・Zバッファへの書き込みを有効にする
SetWriteZBuffer3D( TRUE ) ;

上のふたつがDxLibのサンプルにあったので、
球の奥行きに関して関係しているのではないかと考えてます
しかし、

// ここで、①と②を同時に実行すると、色が変になる
// ①もしくは②のみだと、色は変ではないけど
// 奥行きが変になる

となります
どこをどういじれば、球の回転が思ったとおりに描画されるのでしょうか?
おそらく、球のライトのあたらない裏の部分を描画すればいいと


ソースコード、ワークスペースもつけてアップロードしておきます

Re: 奥行を有効にする場合の図形の描画(DxLib)

Posted: 2012年9月15日(土) 16:29
by softya(ソフト屋)
正常に描画されないのはClearDrawScreen()でZバッファをクリアしていないからです。
どんどんZバッファに深度情報が上書きされるので、3Dがどんどん書かれない状態となっています。

「Zバッファ - Wikipedia」
http://ja.wikipedia.org/wiki/Z%E3%83%90 ... 5%E3%82%A1

【補足】
前にも書きましたが確実動くモノに簡単な機能を加えていくことで足固めをしながら複雑にしていってください。
問題が起きたら確実に動くものと比べることで問題点が明らかに出来ます。

いきなり複雑なものを書くと今回のようにバグの原因がわからなくなります。
これは明らかに自分でやっていることがわかない複雑なものを書いている事が問題の原因です。
前回の私とトントンさんの返答をよく読み直してみてください。

Re: 奥行を有効にする場合の図形の描画(DxLib)

Posted: 2012年9月20日(木) 15:44
by dic
>>softyaさん
前回の質問ででた、サイトを一読してからまたやります
メインパソコンが壊れたので、またしばらくお休みします