sample_10_d3square.hsp

sample\d3module\sample_10_d3square.hsp » Plain Format

;============================================================
;                                      s.programs 2005/--/--
;	d3module sample
;
;============================================================
;
; d3square 命令を用いて面を描画します。
;
; d3module では、単純に描画命令の実行順に画面への描画が
; 行われるので、プログラム的に工夫をしなければ、座標としては
; 奥にある面が手前にある面よりも前に描画されることがあります。
;
; それっぽくごまかすためには、描画時は gmode を 5 か 6 に
; 設定し、加算/減算合成でピクセルを描画します。
;
;============================================================

#include "d3m.hsp"

	gmode 5, , , 128 ; 面を描画するときのコピーモードを設定

	time_start = d3timer()

*mainloop

	; ループタイマー
	time = d3timer() - time_start

	; フレームレートを表示
	title "fps = " + d3getfps()

	redraw 0

	color : boxf

	; カメラ座標を回転させる
	d3setcam cos(0.002 * time) * 2000, sin(0.002 * time) * 2000, cos(0.001 * time) * 1000

	r = 500
	x = -r,  r,  r, -r
	y = -r, -r,  r,  r
	z = -r, -r, -r, -r
	s =  r,  r,  r,  r

	; キューブ表示

	;------------------------------------------------------------
	; 四角い面を描画

	color 127, 255, 255
	d3square  x, y, z
	d3square  x, y, s

	color 96, 192, 192
	d3square  z, x, y
	d3square  s, x, y

	color 63, 127, 127
	d3square  y, z, x
	d3square  y, s, x

	;        └┬──┘
	;          └ 描画する四角形の各頂点を格納した配列変数
	;------------------------------------------------------------

	redraw
	await

	goto *mainloop