HSP3.5HGIMG4에 여러 카메라 포커스 그리기
gpdraw를 정상적으로 실행하면 이벤트 등 자동 이동 횟수를 반영하기 때문에 포인트는 gpdraw에 파라미터를 지정하여 자동 이동 반영과 그림을 분리하는 것입니다.
샘플 코드는 다음과 같습니다.
#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)
sx = ginfo(26)
sy = ginfo(27)
gpreset
setcls CLSMODE_SOLID, 0x000033
// 上下往復運動
newevent ev
event_addpos ev, 0, -0.002, 0
event_wait ev, 120
event_addpos ev, 0, 0.002, 0
event_wait ev, 120
event_jump ev, 0
gpload id, "res/duck"
setangr id, 0, -64, 0
setevent id, ev
duck_id = id
// ちらつき防止用
buffer 1, 32,32, 0
ow = sx / 4
oh = sy / 4
dist = 4
// メインカメラ
gpnull id
gpcamera id, 45, double(sx) / double(sy), 0.5, 768
setpos id, 2, 2, 3
gplookat id, 0, 0, 0
cam_id = id
// サブカメラ
dim cams,4
foreach cams
gpnull id
gpcamera id, 45, double(ow) / double(oh), 0.5, 768
if cnt == 0 {
setpos id, 0,0, dist
gplookat id, 0,0,0
}
if cnt == 1 {
setpos id, 0,dist,0
setangr id, -64, 0, 0
}
if cnt == 2 {
setpos id, -dist,0,0
gplookat id, 0,0,0
}
if cnt == 3 {
setpos id, dist,0,0
gplookat id, 0,0,0
}
cams.cnt = id
buffer cnt + 2, ow,oh, screen_offscreen
celdiv cnt + 2, ow, oh, ow/2, oh/2
loop
repeat
getreq ts, SYSREQ_TIMER
getreq fps, SYSREQ_FPS
// 移動の反映
gsel 1
gpdraw EG_CALC
// サブカメラでのオフスクリーン描画
foreach cams
gsel cnt + 2
redraw 0
gpusecamera cams.cnt
gpdraw EG_DRAW2D | EG_DRAW3D
redraw 1
loop
// メインカメラ
gsel 0
gpusecamera cam_id
gpdraw EG_DRAW2D | EG_DRAW3D
// サブカメラのオフスクリーンを可視描画
color 224,224,224
foreach cams
x = ((cnt & 1) * 10 + 3) * ow / 4
y = ((cnt / 2) * 10 + 3) * oh / 4
grect x, y, 0, ow+8, oh+8
pos x, y
celput cnt + 2
loop
pos 16, oh * 2
color 224,224,224
font "",36
mes strf("%2d [fps]", fps)
redraw 1
await 1000/60
loop
실행 결과일반 메인 카메라와 정면, 상, 좌우의 하위 카메라
프레임마다 그리는 횟수가 처리 부하를 증가하지만 캐릭터 위치 시점, 제3자 시점과 굽어보는 시점을 동시에 그릴 수 있다.
Reference
이 문제에 관하여(HSP3.5HGIMG4에 여러 카메라 포커스 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hta393939/items/b3eb2aeda07e5d5a9429텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)