HSP3.5HGIMG4에 2D 뷰 포트 표시
HSP3.5HGIMG4에서는 기능이 다소 제한적이지만 크로스컨트리(렌더링 대상)를 사용할 수 있습니다.이 약간 확대된 지도로 창문으로 보는 것과 같은 표현 등이 가능하다.
버퍼의 네 번째 매개 변수에서screen은 버퍼를 오프라인으로 생성합니다offscreen을 지정합니다.
샘플 코드는 다음과 같습니다.
소스 코드 파일의 설치 폴더가 C:\hsp35이면 C:\hsp35\sample\hgimg4 폴더에 저장합니다.
#include "hgimg4.as"
#const EG_CALC GPDRAW_OPT_OBJUPDATE
#const EG_DRAW2D (GPDRAW_OPT_DRAW2D | GPDRAW_OPT_DRAW2D_LATE)
#const EG_DRAW3D (GPDRAW_OPT_DRAWSCENE | GPDRAW_OPT_DRAWSCENE_LATE)
#const WID_TV 3
#const WID_DOT 4
#const WID_WIDE 5
#module
#defcfunc sgn double x
if x == 0.0 {
return 0.0
}
if x < 0.0 {
return -1.0
}
return 1.0
#global
sx = ginfo(26)
sy = ginfo(27)
map_w = 2048
map_h = 2048
gpreset
setcls CLSMODE_NONE
celload dirinfo(5) + "\\hsptv_img.png", WID_TV
celdiv WID_TV, 64,64
celload dirinfo(5) + "\\tamadot.png", WID_DOT
celdiv WID_DOT, 64,64, 32,32
// 珠音
dim evs, 16
c = 0
repeat 16
i = cnt
newevent ev
repeat 4
index = cnt + i * 4
event_prmset ev, PRMSET_SPRCELID,index
event_wait ev, 15
loop
event_jump ev, 0
evs.c = ev
c ++
loop
gpspr id, WID_DOT, 0
setevent id, evs.1
tama = id
// マップ配列
xnum = map_w / 64
ynum = map_h / 64
num = xnum * ynum
dim vxpos,num
dim vypos,num
dim vcelid,num
c = 0
repeat ynum
i = cnt
repeat xnum
j = cnt
index = 16 + limit(rnd(21) - 14, 0,6)
if i == 0 | i == ynum - 1 | j == 0 | j == xnum - 1 {
index = 16 + 7
}
//gpspr id, WID_TV, index
vxpos.c = j * 64
vypos.c = i * 64
vcelid.c = index
c++
loop
loop
buffer WID_WIDE, map_w,map_h, screen_offscreen
celdiv WID_WIDE, map_w,map_h, map_w/2, map_h/2
cx = double(map_w / 2)
cy = double(map_h / 2)
vr = 1.0
repeat
getreq fps, SYSREQ_FPS
getreq ts, SYSREQ_TIMER
gsel 0
mx = mousex
my = mousey
dx = double(mx - sx / 2)
dy = double(my - sy / 2)
cx += sgn(dx)
cy += sgn(dy)
cx = limitf(cx, 96, map_w - 96)
cy = limitf(cy, 96, map_h - 96)
setpos tama, cx,cy, 0
gsel WID_WIDE
redraw 0
gpdraw EG_CALC
celputm vxpos, vypos, vcelid, WID_TV, num
gpdraw EG_DRAW2D
redraw 1
vr = sin(double(ts) * 0.0005) * 0.2 + 0.8
gsel 0
redraw 0
color 0xff,0xcc,0x66
boxf
pos - (cx - map_w / 2) * vr + sx/2, - (cy - map_h / 2) * vr + sy/2
celput WID_WIDE,0, vr,vr
pos 16,16
color 0,0,0
font "",48
mes strf("%2d [fps]", fps)
redraw 1
await 1000/60
loop
마우스 커서 위치에서 위아래 좌우로 이동합니다.실행 결과 1
넓은 범위의 상태 표시
확대율은 시간의 변화에 따라 변화한다.
실행 결과2
좁은 범위의 상태 표시
주로 3D 방향의 HGIMG4이지만, 사이다 등 기술을 활용해 3D와 2D의 하이브리드로 다양하게 표현해 진화를 기대하고 있다.
Reference
이 문제에 관하여(HSP3.5HGIMG4에 2D 뷰 포트 표시), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hta393939/items/e6fb2399030287005b5f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)