OSDN Git Service

BGAの表示ずれ、ならびにBGAPAN 時のピクセル揺れを解消。
authorFROM <from@alto.ocn.ne.jp>
Mon, 8 May 2017 09:18:07 +0000 (18:18 +0900)
committerFROM <from@alto.ocn.ne.jp>
Mon, 8 May 2017 09:18:07 +0000 (18:18 +0900)
BGAの描画方法を、1枚の内部テクスチャに全部描画してからそのテクスチャを画面に表示する方法に変更した。

DTXManiaプロジェクト/コード/スコア、曲/CDTXNestedTypes.cs
DTXManiaプロジェクト/コード/ステージ/07.演奏/CAct演奏BGA.cs
FDK17プロジェクト/コード/04.グラフィック/CTexture.cs
実行時フォルダ/DTXCreator.exe
実行時フォルダ/DTXManiaGR.exe
実行時フォルダ/dll/FDK.dll
実行時フォルダ/ja-JP/DTXCreator.resources.dll
実行時フォルダ/ja-JP/DTXManiaGR.resources.dll

index da8fea6..6d594db 100644 (file)
@@ -346,6 +346,7 @@ namespace DTXMania
 \r
                                this.bDisposed済み = true;\r
                        }\r
+                       //-----------------\r
                        #endregion\r
                        #region [ private ]\r
                        //-----------------\r
index 608e03c..d6253f0 100644 (file)
@@ -30,8 +30,9 @@ namespace DTXMania
                        public long n移動開始時刻ms;\r
                }\r
 \r
-               private Surface sfBackBuffer;\r
+               private CTexture txBGA;\r
                private STLAYER[] stLayer = new STLAYER[8];\r
+               private readonly Size size基準 = new Size( 278, 355 );\r
 \r
                public CAct演奏BGA()\r
                {\r
@@ -57,10 +58,10 @@ namespace DTXMania
                        this.stLayer[i].pt画像側開始位置.Y = n画像側開始位置Y;\r
                        this.stLayer[i].pt画像側終了位置.X = n画像側終了位置X;\r
                        this.stLayer[i].pt画像側終了位置.Y = n画像側終了位置Y;\r
-                       this.stLayer[i].pt表示側開始位置.X = n表示側開始位置X * 2;\r
-                       this.stLayer[i].pt表示側開始位置.Y = n表示側開始位置Y * 2;\r
-                       this.stLayer[i].pt表示側終了位置.X = n表示側終了位置X * 2;\r
-                       this.stLayer[i].pt表示側終了位置.Y = n表示側終了位置Y * 2;\r
+                       this.stLayer[i].pt表示側開始位置.X = n表示側開始位置X;\r
+                       this.stLayer[i].pt表示側開始位置.Y = n表示側開始位置Y;\r
+                       this.stLayer[i].pt表示側終了位置.X = n表示側終了位置X;\r
+                       this.stLayer[i].pt表示側終了位置.Y = n表示側終了位置Y;\r
                        this.stLayer[i].n総移動時間ms = n総移動時間ms;\r
                        this.stLayer[i].n移動開始時刻ms = (n移動開始時刻ms != -1) ? n移動開始時刻ms : CDTXMania.Instance.Timer.n現在時刻;\r
                }\r
@@ -131,13 +132,23 @@ namespace DTXMania
 \r
                public override void OnManagedリソースの作成()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
                                using (Surface surface = CDTXMania.Instance.Device.GetBackBuffer(0, 0))\r
                                {\r
                                        try\r
                                        {\r
-                                               this.sfBackBuffer = Surface.CreateOffscreenPlain(CDTXMania.Instance.Device, surface.Description.Width, surface.Description.Height, surface.Description.Format, Pool.SystemMemory);\r
+                                               this.txBGA = new CTexture( CDTXMania.Instance.Device,\r
+                                                       size基準.Width,\r
+                                                       size基準.Height,\r
+                                                       surface.Description.Format,\r
+                                                       Pool.Default,\r
+                                                       Usage.RenderTarget );\r
+\r
+                                               txBGA.vc拡大縮小倍率 = new Vector3(\r
+                                                       (float) CDTXMania.Instance.Coordinates.Movie.W / size基準.Width,\r
+                                                       (float) CDTXMania.Instance.Coordinates.Movie.H / size基準.Height,\r
+                                                       1f );\r
                                        }\r
                                        catch (Exception e)\r
                                        {\r
@@ -150,12 +161,12 @@ namespace DTXMania
 \r
                public override void OnManagedリソースの解放()\r
                {\r
-                       if (!base.b活性化してない)\r
+                       if (base.b活性化してる)\r
                        {\r
-                               if (this.sfBackBuffer != null)\r
+                               if (this.txBGA != null)\r
                                {\r
-                                       this.sfBackBuffer.Dispose();\r
-                                       this.sfBackBuffer = null;\r
+                                       this.txBGA.Dispose();\r
+                                       this.txBGA = null;\r
                                }\r
                                base.OnManagedリソースの解放();\r
                        }\r
@@ -165,183 +176,202 @@ namespace DTXMania
                {\r
                        if (b活性化してる && CDTXMania.Instance.ConfigIni.bBGA && !CDTXMania.Instance.ConfigIni.bStoicMode)\r
                        {\r
-                               int x = CDTXMania.Instance.ConfigIni.cdMovieX[CDTXMania.Instance.ConfigIni.eActiveInst];\r
-                               int y = CDTXMania.Instance.ConfigIni.cdMovieY[CDTXMania.Instance.ConfigIni.eActiveInst];\r
-                               using (Bitmap bmp = new Bitmap(CDTXMania.Instance.Coordinates.Movie.W, CDTXMania.Instance.Coordinates.Movie.H))\r
+                               // (1) txBGA をレンダーターゲットにして、BGA を描画する。\r
+\r
+                               using( Surface sfBackBuffer = CDTXMania.Instance.Device.GetRenderTarget( 0 ) )\r
                                {\r
-                                       for (int i = 0; i < 8; i++)\r
+                                       using( Surface sfBGA = txBGA.texture.GetSurfaceLevel( 0 ) )\r
                                        {\r
-                                               if (((this.stLayer[i].n移動開始時刻ms != -1) && ((this.stLayer[i].rBMP != null) || (this.stLayer[i].rBMPTEX != null))) && (((this.stLayer[i].rBMP == null) || (this.stLayer[i].rBMP.bUse && (this.stLayer[i].rBMP.tx画像 != null))) && ((this.stLayer[i].rBMPTEX == null) || (this.stLayer[i].rBMPTEX.bUse && (this.stLayer[i].rBMPTEX.tx画像 != null)))))\r
+                                               CDTXMania.Instance.Device.SetRenderTarget( 0, sfBGA );\r
+                                               CDTXMania.Instance.Device.Clear( ClearFlags.Target, new ColorBGRA( (int) 0 ), 0f, 0 );\r
+\r
+                                               for( int i = 0; i < 8; i++ )\r
                                                {\r
-                                                       Size sizeStart = this.stLayer[i].sz開始サイズ;\r
-                                                       Size sizeEnd = this.stLayer[i].sz終了サイズ;\r
-                                                       Point ptImgStart = this.stLayer[i].pt画像側開始位置;\r
-                                                       Point ptImgEnd = this.stLayer[i].pt画像側終了位置;\r
-                                                       Point ptDispStart = this.stLayer[i].pt表示側開始位置;\r
-                                                       Point ptDispEnd = this.stLayer[i].pt表示側終了位置;\r
-                                                       long timeTotal = this.stLayer[i].n総移動時間ms;\r
-                                                       long timeMoveStart = this.stLayer[i].n移動開始時刻ms;\r
-\r
-                                                       if (CDTXMania.Instance.Timer.n現在時刻 < timeMoveStart)\r
+                                                       #region [ レイヤー i の描画 ]\r
+                                                       if( ( ( ( this.stLayer[ i ].n移動開始時刻ms != -1 ) && ( ( this.stLayer[ i ].rBMP != null ) || ( this.stLayer[ i ].rBMPTEX != null ) ) ) ) &&\r
+                                                               ( ( ( this.stLayer[ i ].rBMP == null ) || ( this.stLayer[ i ].rBMP.bUse && ( this.stLayer[ i ].rBMP.tx画像 != null ) ) ) &&\r
+                                                               ( ( ( this.stLayer[ i ].rBMPTEX == null ) || ( this.stLayer[ i ].rBMPTEX.bUse && ( this.stLayer[ i ].rBMPTEX.tx画像 != null ) ) ) ) ) )\r
                                                        {\r
-                                                               timeMoveStart = CDTXMania.Instance.Timer.n現在時刻;\r
-                                                       }\r
-                                                       // Size size3 = new Size( 0x116, 0x163 );\r
-                                                       Size size表示域 = new Size(278 * 2, 355 * 2);\r
-                                                       // chnrm0 : #34192\r
-                                                       // 表示域を2倍に変更した。\r
-                                                       // x,yについては次のように変更した。\r
-                                                       // 338,57 => 1014+139,128 (Dr.) 139は278の半分で、GR領域の中央によせるためにすこし右側にずらした。\r
-                                                       // 181,50 => 682, 112 (Gt.)\r
-                                                       Size sizeBMP = new Size(\r
-                                                               (this.stLayer[i].rBMP != null) ? this.stLayer[i].rBMP.n幅 : this.stLayer[i].rBMPTEX.tx画像.sz画像サイズ.Width,\r
-                                                               (this.stLayer[i].rBMP != null) ? this.stLayer[i].rBMP.n高さ : this.stLayer[i].rBMPTEX.tx画像.sz画像サイズ.Height);\r
-\r
-                                                       int n再生位置 = (int)((CDTXMania.Instance.Timer.n現在時刻 - timeMoveStart) * (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0));\r
-\r
-                                                       if ((timeTotal != 0) && (timeTotal < n再生位置))\r
-                                                       {\r
-                                                               this.stLayer[i].pt画像側開始位置 = ptImgStart = ptImgEnd;\r
-                                                               this.stLayer[i].pt表示側開始位置 = ptDispStart = ptDispEnd;\r
-                                                               this.stLayer[i].sz開始サイズ = sizeStart = sizeEnd;\r
-                                                               this.stLayer[i].n総移動時間ms = timeTotal = 0;\r
-                                                       }\r
+                                                               Size sizeStart = this.stLayer[ i ].sz開始サイズ;\r
+                                                               Size sizeEnd = this.stLayer[ i ].sz終了サイズ;\r
+                                                               Point ptImgStart = this.stLayer[ i ].pt画像側開始位置;\r
+                                                               Point ptImgEnd = this.stLayer[ i ].pt画像側終了位置;\r
+                                                               Point ptDispStart = this.stLayer[ i ].pt表示側開始位置;\r
+                                                               Point ptDispEnd = this.stLayer[ i ].pt表示側終了位置;\r
+                                                               long timeTotal = this.stLayer[ i ].n総移動時間ms;\r
+                                                               long timeMoveStart = this.stLayer[ i ].n移動開始時刻ms;\r
 \r
-                                                       Rectangle rect画像側 = new Rectangle();\r
-                                                       Rectangle rect表示側 = new Rectangle();\r
-\r
-                                                       if (timeTotal == 0)\r
-                                                       {\r
-                                                               rect画像側.X = ptImgStart.X;\r
-                                                               rect画像側.Y = ptImgStart.Y;\r
-                                                               rect画像側.Width = sizeStart.Width;\r
-                                                               rect画像側.Height = sizeStart.Height;\r
-                                                               rect表示側.X = ptDispStart.X;\r
-                                                               rect表示側.Y = ptDispStart.Y;\r
-                                                               rect表示側.Width = sizeStart.Width;\r
-                                                               rect表示側.Height = sizeStart.Height;\r
-                                                       }\r
-                                                       else\r
-                                                       {\r
-                                                               double coefSizeWhileMoving = ((double)n再生位置) / ((double)timeTotal);\r
-                                                               Size sizeWhileMoving = new Size(sizeStart.Width + ((int)((sizeEnd.Width - sizeStart.Width) * coefSizeWhileMoving)), sizeStart.Height + ((int)((sizeEnd.Height - sizeStart.Height) * coefSizeWhileMoving)));\r
-                                                               rect画像側.X = ptImgStart.X + ((int)((ptImgEnd.X - ptImgStart.X) * coefSizeWhileMoving));\r
-                                                               rect画像側.Y = ptImgStart.Y + ((int)((ptImgEnd.Y - ptImgStart.Y) * coefSizeWhileMoving));\r
-                                                               rect画像側.Width = sizeWhileMoving.Width;\r
-                                                               rect画像側.Height = sizeWhileMoving.Height;\r
-                                                               rect表示側.X = ptDispStart.X + ((int)((ptDispEnd.X - ptDispStart.X) * coefSizeWhileMoving));\r
-                                                               rect表示側.Y = ptDispStart.Y + ((int)((ptDispEnd.Y - ptDispStart.Y) * coefSizeWhileMoving));\r
-                                                               rect表示側.Width = sizeWhileMoving.Width * 2;\r
-                                                               rect表示側.Height = sizeWhileMoving.Height * 2;\r
-                                                       }\r
-                                                       if (\r
-                                                               (rect画像側.Right > 0) &&\r
-                                                               (rect画像側.Bottom > 0) &&\r
-                                                               (rect画像側.Left < sizeBMP.Width) &&\r
-                                                               (rect画像側.Top < sizeBMP.Height) &&\r
-                                                               (rect表示側.Right > 0) &&\r
-                                                               (rect表示側.Bottom > 0) &&\r
-                                                               (rect表示側.Left < size表示域.Width) &&\r
-                                                               (rect表示側.Top < size表示域.Height)\r
-                                                               )\r
-                                                       {\r
-                                                               // 画像側の表示指定が画像の境界をまたいでいる場合補正\r
-                                                               if (rect画像側.X < 0)\r
+                                                               if( CDTXMania.Instance.Timer.n現在時刻 < timeMoveStart )\r
                                                                {\r
-                                                                       rect表示側.Width -= -rect画像側.X;\r
-                                                                       rect表示側.X += -rect画像側.X;\r
-                                                                       rect画像側.Width -= -rect画像側.X;\r
-                                                                       rect画像側.X = 0;\r
-                                                               }\r
-                                                               if (rect画像側.Y < 0)\r
-                                                               {\r
-                                                                       rect表示側.Height -= -rect画像側.Y;\r
-                                                                       rect表示側.Y += -rect画像側.Y;\r
-                                                                       rect画像側.Height -= -rect画像側.Y;\r
-                                                                       rect画像側.Y = 0;\r
-                                                               }\r
-                                                               if (rect画像側.Right > sizeBMP.Width)\r
-                                                               {\r
-                                                                       rect表示側.Width -= rect画像側.Right - sizeBMP.Width;\r
-                                                                       rect画像側.Width -= rect画像側.Right - sizeBMP.Width;\r
-                                                               }\r
-                                                               if (rect画像側.Bottom > sizeBMP.Height)\r
-                                                               {\r
-                                                                       rect表示側.Height -= rect画像側.Bottom - sizeBMP.Height;\r
-                                                                       rect画像側.Height -= rect画像側.Bottom - sizeBMP.Height;\r
+                                                                       timeMoveStart = CDTXMania.Instance.Timer.n現在時刻;\r
                                                                }\r
 \r
-                                                               // 表示側の表示指定が表示域の境界をまたいでいる場合補正\r
-                                                               if (rect表示側.X < 0)\r
-                                                               {\r
-                                                                       rect画像側.Width -= -rect表示側.X;\r
-                                                                       rect画像側.X += -rect表示側.X;\r
-                                                                       rect表示側.Width -= rect表示側.X;\r
-                                                                       rect表示側.X = 0;\r
-                                                               }\r
-                                                               if (rect表示側.Y < 0)\r
+                                                               Size sizeBMP = new Size(\r
+                                                                       ( this.stLayer[ i ].rBMP != null ) ? this.stLayer[ i ].rBMP.n幅 : this.stLayer[ i ].rBMPTEX.tx画像.sz画像サイズ.Width,\r
+                                                                       ( this.stLayer[ i ].rBMP != null ) ? this.stLayer[ i ].rBMP.n高さ : this.stLayer[ i ].rBMPTEX.tx画像.sz画像サイズ.Height );\r
+\r
+                                                               int n再生位置 = (int) ( ( CDTXMania.Instance.Timer.n現在時刻 - timeMoveStart ) * ( ( (double) CDTXMania.Instance.ConfigIni.nPlaySpeed ) / 20.0 ) );\r
+\r
+                                                               if( ( timeTotal != 0 ) && ( timeTotal < n再生位置 ) )\r
                                                                {\r
-                                                                       rect画像側.Height -= -rect表示側.Y;\r
-                                                                       rect画像側.Y += -rect表示側.Y;\r
-                                                                       rect表示側.Height -= -rect表示側.Y;\r
-                                                                       rect表示側.Y = 0;\r
+                                                                       this.stLayer[ i ].pt画像側開始位置 = ptImgStart = ptImgEnd;\r
+                                                                       this.stLayer[ i ].pt表示側開始位置 = ptDispStart = ptDispEnd;\r
+                                                                       this.stLayer[ i ].sz開始サイズ = sizeStart = sizeEnd;\r
+                                                                       this.stLayer[ i ].n総移動時間ms = timeTotal = 0;\r
                                                                }\r
-                                                               if (rect表示側.Right > size表示域.Width)\r
+\r
+                                                               Rectangle rect画像側 = new Rectangle();\r
+                                                               Rectangle rect表示側 = new Rectangle();\r
+\r
+                                                               if( timeTotal == 0 )\r
                                                                {\r
-                                                                       rect画像側.Width -= (rect表示側.Right - size表示域.Width) / 2;\r
-                                                                       rect表示側.Width -= rect表示側.Right - size表示域.Width;\r
+                                                                       rect画像側.X = ptImgStart.X;\r
+                                                                       rect画像側.Y = ptImgStart.Y;\r
+                                                                       rect画像側.Width = sizeStart.Width;\r
+                                                                       rect画像側.Height = sizeStart.Height;\r
+                                                                       rect表示側.X = ptDispStart.X;\r
+                                                                       rect表示側.Y = ptDispStart.Y;\r
+                                                                       rect表示側.Width = sizeStart.Width;\r
+                                                                       rect表示側.Height = sizeStart.Height;\r
                                                                }\r
-                                                               if (rect表示側.Bottom > size表示域.Height)\r
+                                                               else\r
                                                                {\r
-                                                                       rect画像側.Height -= (rect表示側.Bottom - size表示域.Height) / 2;\r
-                                                                       rect表示側.Height -= rect表示側.Bottom - size表示域.Height;\r
+                                                                       double coefSizeWhileMoving = ( (double) n再生位置 ) / ( (double) timeTotal );\r
+                                                                       Size sizeWhileMoving = new Size( \r
+                                                                               sizeStart.Width + ( (int) ( ( sizeEnd.Width - sizeStart.Width ) * coefSizeWhileMoving ) ),\r
+                                                                               sizeStart.Height + ( (int) ( ( sizeEnd.Height - sizeStart.Height ) * coefSizeWhileMoving ) ) );\r
+                                                                       rect画像側.X = ptImgStart.X + ( (int) ( ( ptImgEnd.X - ptImgStart.X ) * coefSizeWhileMoving ) );\r
+                                                                       rect画像側.Y = ptImgStart.Y + ( (int) ( ( ptImgEnd.Y - ptImgStart.Y ) * coefSizeWhileMoving ) );\r
+                                                                       rect画像側.Width = sizeWhileMoving.Width;\r
+                                                                       rect画像側.Height = sizeWhileMoving.Height;\r
+                                                                       rect表示側.X = ptDispStart.X + ( (int) ( ( ptDispEnd.X - ptDispStart.X ) * coefSizeWhileMoving ) );\r
+                                                                       rect表示側.Y = ptDispStart.Y + ( (int) ( ( ptDispEnd.Y - ptDispStart.Y ) * coefSizeWhileMoving ) );\r
+                                                                       rect表示側.Width = sizeWhileMoving.Width;\r
+                                                                       rect表示側.Height = sizeWhileMoving.Height;\r
                                                                }\r
 \r
-                                                               if (\r
-                                                                       (rect画像側.Width > 0) &&\r
-                                                                       (rect画像側.Height > 0) &&\r
-                                                                       (rect表示側.Width > 0) &&\r
-                                                                       (rect表示側.Height > 0) &&\r
-\r
-                                                                       (rect画像側.Right >= 0) &&\r
-                                                                       (rect画像側.Bottom >= 0) &&\r
-                                                                       (rect画像側.Left <= sizeBMP.Width) &&\r
-                                                                       (rect画像側.Top <= sizeBMP.Height) &&\r
-                                                                       (rect表示側.Right >= 0) &&\r
-                                                                       (rect表示側.Bottom >= 0) &&\r
-                                                                       (rect表示側.Left <= size表示域.Width) &&\r
-                                                                       (rect表示側.Top <= size表示域.Height)\r
+                                                               if(\r
+                                                                       ( rect画像側.Right > 0 ) &&\r
+                                                                       ( rect画像側.Bottom > 0 ) &&\r
+                                                                       ( rect画像側.Left < sizeBMP.Width ) &&\r
+                                                                       ( rect画像側.Top < sizeBMP.Height ) &&\r
+                                                                       ( rect表示側.Right > 0 ) &&\r
+                                                                       ( rect表示側.Bottom > 0 ) &&\r
+                                                                       ( rect表示側.Left < size基準.Width ) &&\r
+                                                                       ( rect表示側.Top < size基準.Height )\r
                                                                        )\r
                                                                {\r
-                                                                       CTexture tex = null;\r
-                                                                       if (this.stLayer[i].rBMP != null)\r
+                                                                       #region " 画像側の表示指定が画像の境界をまたいでいる場合補正 "\r
+                                                                       //----------------\r
+                                                                       if( rect画像側.X < 0 )\r
                                                                        {\r
-                                                                               tex = this.stLayer[i].rBMP.tx画像;\r
+                                                                               rect表示側.Width -= -rect画像側.X;\r
+                                                                               rect表示側.X += -rect画像側.X;\r
+                                                                               rect画像側.Width -= -rect画像側.X;\r
+                                                                               rect画像側.X = 0;\r
                                                                        }\r
-                                                                       else if (this.stLayer[i].rBMPTEX != null)\r
+                                                                       if( rect画像側.Y < 0 )\r
                                                                        {\r
-                                                                               tex = this.stLayer[i].rBMPTEX.tx画像;\r
+                                                                               rect表示側.Height -= -rect画像側.Y;\r
+                                                                               rect表示側.Y += -rect画像側.Y;\r
+                                                                               rect画像側.Height -= -rect画像側.Y;\r
+                                                                               rect画像側.Y = 0;\r
                                                                        }\r
-                                                                       if (tex != null)\r
+                                                                       if( rect画像側.Right > sizeBMP.Width )\r
                                                                        {\r
-                                                                               if (CDTXMania.Instance.DTX != null && !CDTXMania.Instance.DTX.bUse556x710BGAAVI)\r
+                                                                               rect表示側.Width -= rect画像側.Right - sizeBMP.Width;\r
+                                                                               rect画像側.Width -= rect画像側.Right - sizeBMP.Width;\r
+                                                                       }\r
+                                                                       if( rect画像側.Bottom > sizeBMP.Height )\r
+                                                                       {\r
+                                                                               rect表示側.Height -= rect画像側.Bottom - sizeBMP.Height;\r
+                                                                               rect画像側.Height -= rect画像側.Bottom - sizeBMP.Height;\r
+                                                                       }\r
+                                                                       //----------------\r
+                                                                       #endregion\r
+\r
+                                                                       #region " 表示側の表示指定が表示域の境界をまたいでいる場合補正 "\r
+                                                                       //----------------\r
+                                                                       if( rect表示側.X < 0 )\r
+                                                                       {\r
+                                                                               rect画像側.Width -= -rect表示側.X;\r
+                                                                               rect画像側.X += -rect表示側.X;\r
+                                                                               rect表示側.Width -= rect表示側.X;\r
+                                                                               rect表示側.X = 0;\r
+                                                                       }\r
+                                                                       if( rect表示側.Y < 0 )\r
+                                                                       {\r
+                                                                               rect画像側.Height -= -rect表示側.Y;\r
+                                                                               rect画像側.Y += -rect表示側.Y;\r
+                                                                               rect表示側.Height -= -rect表示側.Y;\r
+                                                                               rect表示側.Y = 0;\r
+                                                                       }\r
+                                                                       if( rect表示側.Right > size基準.Width )\r
+                                                                       {\r
+                                                                               rect画像側.Width -= rect表示側.Right - size基準.Width;\r
+                                                                               rect表示側.Width -= rect表示側.Right - size基準.Width;\r
+                                                                       }\r
+                                                                       if( rect表示側.Bottom > size基準.Height )\r
+                                                                       {\r
+                                                                               rect画像側.Height -= rect表示側.Bottom - size基準.Height;\r
+                                                                               rect表示側.Height -= rect表示側.Bottom - size基準.Height;\r
+                                                                       }\r
+                                                                       //----------------\r
+                                                                       #endregion\r
+\r
+                                                                       if(\r
+                                                                               ( rect画像側.Width > 0 ) &&\r
+                                                                               ( rect画像側.Height > 0 ) &&\r
+                                                                               ( rect表示側.Width > 0 ) &&\r
+                                                                               ( rect表示側.Height > 0 ) &&\r
+\r
+                                                                               ( rect画像側.Right >= 0 ) &&\r
+                                                                               ( rect画像側.Bottom >= 0 ) &&\r
+                                                                               ( rect画像側.Left <= sizeBMP.Width ) &&\r
+                                                                               ( rect画像側.Top <= sizeBMP.Height ) &&\r
+                                                                               ( rect表示側.Right >= 0 ) &&\r
+                                                                               ( rect表示側.Bottom >= 0 ) &&\r
+                                                                               ( rect表示側.Left <= size基準.Width ) &&\r
+                                                                               ( rect表示側.Top <= size基準.Height )\r
+                                                                               )\r
+                                                                       {\r
+                                                                               CTexture tex = null;\r
+                                                                               if( this.stLayer[ i ].rBMP != null )\r
                                                                                {\r
-                                                                                       tex.vc拡大縮小倍率.X = 2.0f;\r
-                                                                                       tex.vc拡大縮小倍率.Y = 2.0f;\r
-                                                                                       tex.vc拡大縮小倍率.Z = 1.0f;\r
+                                                                                       tex = this.stLayer[ i ].rBMP.tx画像;\r
                                                                                }\r
+                                                                               else if( this.stLayer[ i ].rBMPTEX != null )\r
+                                                                               {\r
+                                                                                       tex = this.stLayer[ i ].rBMPTEX.tx画像;\r
+                                                                               }\r
+                                                                               if( tex != null )\r
+                                                                               {\r
+                                                                                       //if( CDTXMania.Instance.DTX != null && !CDTXMania.Instance.DTX.bUse556x710BGAAVI )\r
+                                                                                       //{\r
+                                                                                       //      tex.vc拡大縮小倍率.X = 2.0f;\r
+                                                                                       //      tex.vc拡大縮小倍率.Y = 2.0f;\r
+                                                                                       //      tex.vc拡大縮小倍率.Z = 1.0f;\r
+                                                                                       //}\r
 \r
-                                                                               tex.t2D描画(\r
-                                                                                       CDTXMania.Instance.Device,\r
-                                                                                       (x + rect表示側.X),\r
-                                                                                       (y + rect表示側.Y),\r
-                                                                                       rect画像側);\r
+                                                                                       tex.t2D描画( CDTXMania.Instance.Device, rect表示側.X, rect表示側.Y, rect画像側 );\r
+                                                                               }\r
                                                                        }\r
                                                                }\r
                                                        }\r
+                                                       #endregion\r
                                                }\r
+\r
+                                               // レンダーターゲットをバックバッファに戻す。\r
+                                               CDTXMania.Instance.Device.SetRenderTarget( 0, sfBackBuffer );\r
                                        }\r
                                }\r
+\r
+                               // (2) バックバッファに txBGA を描画する。\r
+\r
+                               int x = CDTXMania.Instance.ConfigIni.cdMovieX[ CDTXMania.Instance.ConfigIni.eActiveInst ];\r
+                               int y = CDTXMania.Instance.ConfigIni.cdMovieY[ CDTXMania.Instance.ConfigIni.eActiveInst ];\r
+\r
+                               txBGA.t2D描画( CDTXMania.Instance.Device, x, y );\r
                        }\r
                        return 0;\r
                }\r
index 37ea5d8..3b9b2e8 100644 (file)
@@ -451,7 +451,7 @@ namespace FDK
                                this.cvTransformedColoredVertexies[ 3 ].Color = color;\r
                                this.cvTransformedColoredVertexies[ 3 ].TextureCoordinates.X = f右U値;\r
                                this.cvTransformedColoredVertexies[ 3 ].TextureCoordinates.Y = f下V値;\r
-                               \r
+\r
                                device.SetTexture( 0, this.texture );\r
                                device.VertexFormat = TransformedColoredTexturedVertex.Format;\r
                                device.DrawUserPrimitives( PrimitiveType.TriangleStrip, 0, 2, this.cvTransformedColoredVertexies );\r
index b067cb5..eb391f6 100644 (file)
Binary files a/実行時フォルダ/DTXCreator.exe and b/実行時フォルダ/DTXCreator.exe differ
index ef8a420..c87e121 100644 (file)
Binary files a/実行時フォルダ/DTXManiaGR.exe and b/実行時フォルダ/DTXManiaGR.exe differ
index b563aba..97f07a6 100644 (file)
Binary files a/実行時フォルダ/dll/FDK.dll and b/実行時フォルダ/dll/FDK.dll differ
index 2f3f6f0..3fcbb79 100644 (file)
Binary files a/実行時フォルダ/ja-JP/DTXCreator.resources.dll and b/実行時フォルダ/ja-JP/DTXCreator.resources.dll differ
index 1031fd2..3f2e75b 100644 (file)
Binary files a/実行時フォルダ/ja-JP/DTXManiaGR.resources.dll and b/実行時フォルダ/ja-JP/DTXManiaGR.resources.dll differ