; e3dhsp.dll test script #include "e3dhsp3.as" #module #deffunc waitbyfps var fps, int p1 E3DWaitbyFPS@ p1, fps await 0 return #global dim keybuf, 256 ;file のpath 用のバッファーの作成 pathlen = 2048 sdim mediadir, pathlen mediadir = dir_cur + "\\Media" sdim pathbuf, pathlen, 2 chgdegx = 0 : chkdegy = 0 : chkdegz = 0 screenw = 480 : screenh = 480 screen 0, screenw, screenh, 1 pointmax = 100 objsize 480, 240 winobj "STATIC", "", 0, $54000000 objid1 = stat winobj "STATIC", "", 0, $54000000 objid2 = stat screen 2, 300, 300, 1 title "Easy3D for HSP3 sample" ;開発中は下の行のコメントアウトを外すことを推奨します。 ;E3DEnableDbgFile ;初期化 E3DInit 0, objid1, 0, 32, 0, scid1 E3DCreateSwapChain 0, objid2, scid2 E3DCreateSwapChain 2, -1, scid3 ;カメラの初期化 camposx = 0.0 : camposy = 800.0 : camposz = -2800.0 E3DSetCameraPos camposx, camposy, camposz camdegxz = 180.0 : camdegy = 0.0 E3DSetCameraDeg camdegxz, camdegy ;projectionの変更をしたいときは、以下の2行を有効にしてください。 proj_near = 100.0 : proj_far = 30000.0 : proj_fov = 60.0 E3DSetProjection proj_near, proj_far, proj_fov pathbuf.0 = mediadir + "\\poo\\poo.sig" E3DSigLoad pathbuf.0, hsid1 lightdirx1 = 0 lightdiry1 = 0 lightdirz1 = 1 lightr1 = 255 lightg1 = 255 lightb1 = 255 E3DCreateLight lid1 E3DSetDirectionalLight lid1, lightdirx1, lightdiry1, lightdirz1, lightr1, lightg1, lightb1 chkfps1 = 0 pathbuf.0 = mediadir + "\\lake.bmp" pathbuf.1 = mediadir + "\\cloud3.bmp" E3DCreateBG scid1, pathbuf.0, pathbuf.1, 0.001, 0.0, 1 *main ; keybuf変数は、メインループの外で、dim keybuf, 256 として、確保しておいてください。 E3DGetKeyboardState keybuf if keybuf.VK_ESCAPE = 1 : goto *bye ; [ESC]で終了 gosub *MoveCamera E3DBeginScene scid1 E3DChkInView scid1, hsid1 E3DRender scid1, hsid1, 0, 0, 0 gosub *DrawText E3DEndScene E3DPresent scid1 E3DBeginScene scid2 E3DChkInView scid2, hsid1 E3DRender scid2, hsid1, 0, 0, 0 E3DEndScene E3DPresent scid2 E3DBeginScene scid3 E3DChkInView scid3, hsid1 E3DRender scid3, hsid1, 0, 0, 0 E3DEndScene E3DPresent scid3 waitbyfps chkfps1, 60 goto *main *bye E3DBye end *MoveCamera k=0 posstep = 100 ; VK_ が頭につく、定数の詳細は、e3dhsp_vk.as をご覧ください。 ; keybuf は、GetKeyboardState 命令で、セットされます。 if keybuf.VK_LEFT = 1 : k+=1 ; 矢印左 if keybuf.VK_UP = 1 : k+=2 ; 矢印上 if keybuf.VK_RIGHT = 1 : k+=4 ; 矢印右 if keybuf.VK_DOWN = 1 : k+=8 ; 矢印下 if keybuf.'Z' = 1 : k+= 16 E3DGetCameraPos camposx, camposy, camposz E3DGetCameraDeg camdegxz, camdegy forwardflag = 0 if ( k&16 ) { if k&2 : E3DCameraPosForward 100 : forwardflag = 1 if k&8 : E3DCameraPosForward -100 : forwardflag = 1 } else { if k&2 : camposy += 100 if k&8 : camposy -= 100 } if k&1 : camdegxz += 2 if k&4 : camdegxz -= 2 if forwardflag = 0 : E3DSetCameraPos camposx, camposy, camposz E3DSetCameraDeg camdegxz, camdegy return *DrawText sdim strchk7, 1024 textr = 255 : textg = 255 : textb = 255 textscale = 1.0 textposx = 10 : textposy = 60 strchk7 = "objid1 " + objid1 + " objid2 " + objid2 E3DDrawText textposx, textposy, textscale, textr, textg, textb, strchk7 textposy += 20 strchk7 = "chkfps1 " + chkfps1 E3DDrawText textposx, textposy, textscale, textr, textg, textb, strchk7 return