>最初は、暇人さんが仰る様に1行づつtexmes命令を呼び出していたのですが
>この時はテキスト更新フラグが立つ毎にCorei5のマシンがカクつくという信じ難い有様で…
1フレーム1行にしても?
自分の環境だと1ms程度
#include "hgimg3.as"
screen 0,640,480,0
cls 4
hgini
addxfile m_xmodel,dir_exe+"\\sample\\hgimg3\\font_a.x" ; モデルを読み込む
regobj xobj, m_xmodel ; オブジェクトの登録
setefx xobj, $80
setuv 0,0,64,64
addplate m_plate,1,3,3
texload dir_exe+"\\sample\\hgimg3\\efx.bmp"
newevent ev1 ; 新しいイベントIDを取得
event_setefx ev1, $2ff,0,0 ; 色加算モードに設定
event_setdir ev1, -0.5,-1.0,-0.5, 0.5,-1.2,0.5
event_prmon ev1,PRMSET_MODE,OBJ_MOVE|OBJ_XFRONT
event_adddir ev1, 0, 0.1, 0
event_wait ev1,10
event_efx ev1, 16, $200, 0, 0
event_adddir ev1, 0, 0.1, 0
event_wait ev1,16
event_delobj ev1
newevent ev2 ; 新しいイベントIDを取得
event_setwork ev2, 0, -5, 0
event_regobj ev2, m_plate, ev1
event_regobj ev2, m_plate, ev1
event_wait ev2,1
event_jump ev2,0
setevent xobj, ev2
font "MS ゴシック",24
color 255,255,255
; テクスチャの準備
;
texmake 256,32
timtexid = stat//処理時間 ms 表示用
texcls timtexid,0
texmes "処理時間 ms",timtexid,16,5
texmake 64,32
timdatatexid = stat//tim_c 表示用(毎フレーム書き換え)
texmake 640,240
mest = stat //メッセージ用テクスチャ1
texcls mest,0
texmake 640,240
mest(1) = stat //メッセージ用テクスチャ2
texcls mest(1),0
txt=""
repeat 10
repeat 26
txt+strf("%c",130)+strf("%c",160+rnd(50))
loop
txt+"\n"
loop
split txt,"\n",txt_split
texlinemax=stat
rgb=rnd(50)*3+100,rnd(50)*3+100,rnd(50)*3+100
clscolor $40
*main
if texline=texlinemax {//メッセージが完成してる
if k&256 {//左クリック
texcls mest(texno),0
texline=0
click_rl=1
rgb=rnd(50)*3+100,rnd(50)*3+100,rnd(50)*3+100
}
if k&512 {//右クリック
click_rl=2
texno^1//メッセージ用テクスチャ2枚を切り替え
texcls mest(texno),0
texline=0
alpha=256
rgb=rnd(50)*3+100,rnd(50)*3+100,rnd(50)*3+100
}
}else{//メッセージが完成してない
color rgb,rgb(1),rgb(2)
repeat 1,texline//一行分だけtexmes
texmes txt_split(cnt),mest(texno),0,cnt*24
loop
texline++
}
texcls timdatatexid,0
color 255,limit(255-tim_c*16,0,255),limit(255-tim_c*16,0,255)
texmes strf("%3d",tim_c),timdatatexid,0,5
addang xobj,0,0.05,0
hgdraw ; 描画処理
gmode 2,256,32
pos 256/2,50
hgrotate timtexid,0,0
gmode 2,64,32
pos 256/2+20,50
hgrotate timdatatexid,0,0
if click_rl=2 {//右クリック
if texline=texlinemax { //メッセージが完成した
gmode 2,640,240
pos 320+8,480-240/2-10
hgrotate mest(texno),0,0
}else{//メッセージが完成するまでにフェードアウト
alpha-=(256/texlinemax)
gmode 4,640,240,limit(alpha,0,256)
pos 320+8,480-240/2-10
hgrotate mest(texno^1),0,0
}
}else{//左クリック
gmode 2,640,240
pos 320+8,480-240/2-10
hgrotate mest(texno),0,0
}
hggettime tim_b,0
tim_c=tim_b-tim_a
hgsync 16 ; 時間待ち
hggettime tim_a,0
stick k,127
if k&128 : goto *owari ; [ESC]で終了
goto *main
*owari
end
常に書き換えされる処理時間の数値部分のテクスチャは小さく確保
左クリックで1フレーム1行描画してずらして追加してく表示
右クリックは裏でメッセージを完成させてから一回で表示(完成するまでに前のメッセージをフェードアウト)
裏でメッセージを完成さえるのを先読みでやっとけば
ある程度クリックからラグ無しで表示もできると思う