sample_11_d3texture.hsp

sample\d3module\sample_11_d3texture.hsp » Plain Format

;============================================================
;                                      s.programs 2005/--/--
;	d3module sample
;
;============================================================
;
; d3texture 命令を用いて、面に画像を貼り付けて描画します。
;
;============================================================

#include "d3m.hsp"

	TEX_SIZE = 128 ; 使用するテクスチャの大きさ

	; テクスチャを格納する仮想スクリーン

	buffer 2, TEX_SIZE, TEX_SIZE, 0
	picload "toge.gif", 1

	buffer 3, TEX_SIZE, TEX_SIZE, 0
	picload "jupiter.gif", 1

	buffer 4, TEX_SIZE, TEX_SIZE, 0
	picload "crystal.gif", 1

	gsel 0

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

	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

	; キューブ表示

	;------------------------------------------------------------
	; 面に画像を貼り付けて描画

	d3texture  x, y, z,  2,  0, 0,  TEX_SIZE, TEX_SIZE
	d3texture  x, y, s,  2,  0, 0,  TEX_SIZE, TEX_SIZE

	d3texture  z, x, y,  3,  0, 0,  TEX_SIZE, TEX_SIZE
	d3texture  s, x, y,  3,  0, 0,  TEX_SIZE, TEX_SIZE

	d3texture  y, z, x,  4,  0, 0,  TEX_SIZE, TEX_SIZE
	d3texture  y, s, x,  4,  0, 0,  TEX_SIZE, TEX_SIZE

	;         └┬──┘ │ └┬┘ └┬───────┘
	;           │       │   │     └ テクスチャの大きさ (h, w)
	;           │       │   └ テクスチャの左上位置 (x, y)
	;           │       └ テクスチャを格納したスクリーンの ID
	;           └ 描画先の四角形の各頂点を格納した配列変数
	;------------------------------------------------------------

	redraw
	await

	goto *mainloop