gpmesh命令を使用していた所、ある段階でポリゴンが崩壊する現象に遭遇しました。
スクリプトに問題はないようなので再現性を検証していたところ、どうも一定数のポリゴンを突破した時点で問題が発生するようです。
試しに以下のような簡易的なメッシュ生成テストを行ったところ、16000ポリゴン(?)を突破したあたりからおかしくなるようでした。
以下のスクリプトは四角面を指定ポリゴン数で円形に配置するサンプルです。
今は2000ポリゴンが指定されていますが、0を1つ増やして20000にして実行してみてください。正常に円形が形成できるでしょうか?
このサンプルでは大胆な崩壊現象は起こらないのですが、使用状況によってはポリゴンの崩壊が発生するので何らかのメモリ違反をしているような気がしています。
この問題を回避する方法や使い方の誤りがありましたらコメントいただければ幸いです。
//HSP3.6〜3.7で動作確認済 max=2000 //←★ 2000ポリゴンでは大丈夫ですが20000ポリゴンだと? #include "hgimg4.as" chdir dir_exe+"\\sample\\hgimg4" gpreset setreq SYSREQ_CLSCOLOR,0 gpmeshclear //ポリゴン生成開始 repeat max fv=sin(m_pi/max*cnt*2)*30,-10.0,cos(m_pi/max*cnt*2)*30 //生成位置 gpmeshadd p1,fv-1,fv(1)-1,fv(2), 0,0,1, 0,0 gpmeshadd p2,fv+1,fv(1)-1,fv(2), 0,0,1, 1,0 gpmeshadd p3,fv-1,fv(1)+1,fv(2), 0,0,1, 0,1 gpmeshadd p4,fv+1,fv(1)+1,fv(2), 0,0,1, 1,1 gpmeshpolygon p1,p2,p3,p4 if cnt\5000=4999:{ //念のためアイドル(これは原因ではないっぽい) title "処理中..."+cnt:await 5 } if cnt>100000:dialog "10万ポリゴン以上の検証はやめておきます。":end loop gpmesh m *main redraw 0 gpdraw redraw 1 await 16 goto *main
宜しくお願いいたします。



