012 奥行き付の描画

これまでに説明した描画関数「G@CHRCOPY」「G@CHRCOPYF」「G@CHRCOPYC」は上書きで描画をするので、以下のように「背景→A→B」の順番に描くと、最も置くに背景、一番手前にBが描かれます。

サンプルプログラム「2d 012」

CH = G@SETUP(640, 480, 16, 1)
B1 = G@CHRLOAD("BACK.BMP")   //「背景」
B2 = G@CHRLOAD("DATA1.BMP")  //「A」
B3 = G@CHRLOAD("DATA2.BMP")  //「B」
LOOP
 G@CHRCLEAR(CH)
 G@CHRRECT(CH, 0, 0)
 G@CHRCOPYF(B1, CH)

 G@CHRRECT(CH, 192, 112)
 G@CHRCOPYF(B2, CH)
 G@CHRCOPYF(B3, CH)


 G@FLIP()
ENDLOOP




描画関数をそれぞれ「G@CHRCOPY2」「G@CHRCOPYF2」「G@CHRCOPYC2」で奥行きを指定して描画することができます。この場合、描画の順番にかかわらず指定した奥行きで重ねて描画します。
以下のように「背景(奥行き0.5)→A(奥行き0.3)→B(奥行き0.4)」の順番に描いても、奥行きのしていにより最も置くに背景、一番手前にAが描かれます。奥行きは0.0(一番手前)〜1.0(一番奥)となります。

サンプルプログラム「2d 012-2」

CH = G@SETUP(640, 480, 16, 1)
B1 = G@CHRLOAD("BACK.BMP")   //「背景」
B2 = G@CHRLOAD("DATA1.BMP")  //「A」
B3 = G@CHRLOAD("DATA2.BMP")  //「B」
LOOP
 G@CHRCLEAR(CH)
 G@CHRRECT(CH, 0, 0)
 G@CHRCOPYF2(B1, CH, 0.5)

 G@CHRRECT(CH, 192, 112)
 G@CHRCOPYF2(B2, CH, 0.3)
 G@CHRCOPYF2(B3, CH, 0.4)


 G@FLIP()
ENDLOOP