>HGIMG3では左右別々に表示ができずに頓挫しました。
多分
>2007/02/07 ( Ver3.1β7 )
> ビューポートを設定するためのhgview命令を追加。
> hgdraw命令のオプションパラメーターを追加。
これで出来るようになった(まだhgviewが不完全みたいだけど)
とりあえず左右に別のカメラ座標での表示サンプル
#include "hgimg3.as"
fullscr=1 ; フルスクリーンか? (1=yes/0=no)
_dispx=1280:_dispy=720 ; 画面サイズ(HMZ-T1の解像度に会わせてみた)
;
randomize
if fullscr=0 {
screen 0,_dispx,_dispy,0
} else {
bgscr 0,_dispx,_dispy,0
hgsetreq SYSREQ_DXMODE,1 ; フルスクリーンモードを指定
hgsetreq SYSREQ_DXWIDTH,_dispx ; フルスクリーン解像度X
hgsetreq SYSREQ_DXHEIGHT,_dispy ; フルスクリーン解像度Y
}
cls 4
hgini
if fullscr {
wait 100
mouse -1
gsel 0,2
}
setfont 16,16,12,1 ; font Tex select(cx,cy,px,mode)
texload "fontchr.bmp" ; フォントテクスチャの登録
addxfile m_xmodel,"font_a.x" ; モデルを読み込む
;
max=5
dim obj,max
repeat max
regobj obj.cnt, m_xmodel ; オブジェクトの登録
setpos obj.cnt, cnt*8-16, 0, cnt*10-limit((cnt-2),0,max)*20
loop
;
addbox amid,1.0,1.0
regobj aoid,amid
setdir HGOBJ_LIGHT, 0, 64, 0 ; 標準ライトのアンビエント
;
reglight exlight ; 追加のライト
setscale exlight, 255, 0, 0 ; ライト色を設定
setdir exlight, 0, 64, 0 ; アンビエント色を設定
;
clscolor $50 ; 背景色の設定
;
a=1
cammode CAM_MODE_LOOKAT ; カメラ注視モード
ax=0.0
ay=0.0
az=0.0
selcint
objsetf3 ax, ay, az ; 注視先
cx=0.0
cy=-10.0
cz=50.0
eyes=1.0
gosub *set_all
*main
stick key,64
if key&128 : goto *owari
if (key&64)=0 {
eyes=limitf(eyes+0.0005*mousew,0,100) //マウスホイールで目の間隔を調整(↑で広く、↓で狭く)
}else{// Ctrl
az=limitf(az-0.005*mousew,-200,40) //Ctrl+マウスホイールで注視先の距離を調整(↑で遠く、↓で近く)
selcint
objsetf3 ax, ay, az ; 注視先
}
setpos aoid,ax, ay, az ; 注視先を示すオブジェクト
selcpos ;カメラ位置選択
objsetf3 cx-eyes, cy, cz ; 左目カメラ座標
hgview 0,0,_dispx/2,_dispy ; 左目描画領域
hgdraw 1 ; 左画面描画
fprt "eyes:"+(eyes*2),8,8 ; 目と目の間隔(左画面)
fprt "az:"+(az),8,8+16 ; 注視先Z座標(左画面)
selcpos ;カメラ位置選択
objsetf3 cx+eyes, cy, cz ; 右目カメラ座標
hgview _dispx/2,0,_dispx/2,_dispy ; 右目描画領域
hgdraw 1 ; 右画面描画
fprt "eyes:"+(eyes*2),8+_dispx/2,8 ; 目と目の間隔(右画面)
fprt "az:"+(az),8+_dispx/2,8+16 ; 注視先Z座標(右画面)
hgsync 10 ; 時間待ち
; 回転、特別なライトに変えるオブジェクト選択
if key&4 : a=limit(a+1,0,max-1) : gosub *set_all
if key&1 : a=limit(a-1,0,max-1) : gosub *set_all
; モデルを回転させる
addang obj.a, 0, 0.05, 0
goto *main
*set_all
; 変数aのオブジェクトを特別なライトに
repeat max
if cnt=a : objlight obj.cnt, exlight : else : objlight obj.cnt, HGOBJ_LIGHT
loop
return
*owari
end
フルスクリーン指定してるので注意
ESCで終了