修订版 | 71b46369d2bb9d54f9e1298bf7aac9293c281df8 (tree) |
---|---|
时间 | 2017-05-08 18:18:07 |
作者 | FROM <from@alto...> |
Commiter | FROM |
BGAの表示ずれ、ならびにBGAPAN 時のピクセル揺れを解消。
BGAの描画方法を、1枚の内部テクスチャに全部描画してからそのテクスチャを画面に表示する方法に変更した。
@@ -346,6 +346,7 @@ namespace DTXMania | ||
346 | 346 | |
347 | 347 | this.bDisposed済み = true; |
348 | 348 | } |
349 | + //----------------- | |
349 | 350 | #endregion |
350 | 351 | #region [ private ] |
351 | 352 | //----------------- |
@@ -30,8 +30,9 @@ namespace DTXMania | ||
30 | 30 | public long n移動開始時刻ms; |
31 | 31 | } |
32 | 32 | |
33 | - private Surface sfBackBuffer; | |
33 | + private CTexture txBGA; | |
34 | 34 | private STLAYER[] stLayer = new STLAYER[8]; |
35 | + private readonly Size size基準 = new Size( 278, 355 ); | |
35 | 36 | |
36 | 37 | public CAct演奏BGA() |
37 | 38 | { |
@@ -57,10 +58,10 @@ namespace DTXMania | ||
57 | 58 | this.stLayer[i].pt画像側開始位置.Y = n画像側開始位置Y; |
58 | 59 | this.stLayer[i].pt画像側終了位置.X = n画像側終了位置X; |
59 | 60 | this.stLayer[i].pt画像側終了位置.Y = n画像側終了位置Y; |
60 | - this.stLayer[i].pt表示側開始位置.X = n表示側開始位置X * 2; | |
61 | - this.stLayer[i].pt表示側開始位置.Y = n表示側開始位置Y * 2; | |
62 | - this.stLayer[i].pt表示側終了位置.X = n表示側終了位置X * 2; | |
63 | - this.stLayer[i].pt表示側終了位置.Y = n表示側終了位置Y * 2; | |
61 | + this.stLayer[i].pt表示側開始位置.X = n表示側開始位置X; | |
62 | + this.stLayer[i].pt表示側開始位置.Y = n表示側開始位置Y; | |
63 | + this.stLayer[i].pt表示側終了位置.X = n表示側終了位置X; | |
64 | + this.stLayer[i].pt表示側終了位置.Y = n表示側終了位置Y; | |
64 | 65 | this.stLayer[i].n総移動時間ms = n総移動時間ms; |
65 | 66 | this.stLayer[i].n移動開始時刻ms = (n移動開始時刻ms != -1) ? n移動開始時刻ms : CDTXMania.Instance.Timer.n現在時刻; |
66 | 67 | } |
@@ -131,13 +132,23 @@ namespace DTXMania | ||
131 | 132 | |
132 | 133 | public override void OnManagedリソースの作成() |
133 | 134 | { |
134 | - if (!base.b活性化してない) | |
135 | + if (base.b活性化してる) | |
135 | 136 | { |
136 | 137 | using (Surface surface = CDTXMania.Instance.Device.GetBackBuffer(0, 0)) |
137 | 138 | { |
138 | 139 | try |
139 | 140 | { |
140 | - this.sfBackBuffer = Surface.CreateOffscreenPlain(CDTXMania.Instance.Device, surface.Description.Width, surface.Description.Height, surface.Description.Format, Pool.SystemMemory); | |
141 | + this.txBGA = new CTexture( CDTXMania.Instance.Device, | |
142 | + size基準.Width, | |
143 | + size基準.Height, | |
144 | + surface.Description.Format, | |
145 | + Pool.Default, | |
146 | + Usage.RenderTarget ); | |
147 | + | |
148 | + txBGA.vc拡大縮小倍率 = new Vector3( | |
149 | + (float) CDTXMania.Instance.Coordinates.Movie.W / size基準.Width, | |
150 | + (float) CDTXMania.Instance.Coordinates.Movie.H / size基準.Height, | |
151 | + 1f ); | |
141 | 152 | } |
142 | 153 | catch (Exception e) |
143 | 154 | { |
@@ -150,12 +161,12 @@ namespace DTXMania | ||
150 | 161 | |
151 | 162 | public override void OnManagedリソースの解放() |
152 | 163 | { |
153 | - if (!base.b活性化してない) | |
164 | + if (base.b活性化してる) | |
154 | 165 | { |
155 | - if (this.sfBackBuffer != null) | |
166 | + if (this.txBGA != null) | |
156 | 167 | { |
157 | - this.sfBackBuffer.Dispose(); | |
158 | - this.sfBackBuffer = null; | |
168 | + this.txBGA.Dispose(); | |
169 | + this.txBGA = null; | |
159 | 170 | } |
160 | 171 | base.OnManagedリソースの解放(); |
161 | 172 | } |
@@ -165,183 +176,202 @@ namespace DTXMania | ||
165 | 176 | { |
166 | 177 | if (b活性化してる && CDTXMania.Instance.ConfigIni.bBGA && !CDTXMania.Instance.ConfigIni.bStoicMode) |
167 | 178 | { |
168 | - int x = CDTXMania.Instance.ConfigIni.cdMovieX[CDTXMania.Instance.ConfigIni.eActiveInst]; | |
169 | - int y = CDTXMania.Instance.ConfigIni.cdMovieY[CDTXMania.Instance.ConfigIni.eActiveInst]; | |
170 | - using (Bitmap bmp = new Bitmap(CDTXMania.Instance.Coordinates.Movie.W, CDTXMania.Instance.Coordinates.Movie.H)) | |
179 | + // (1) txBGA をレンダーターゲットにして、BGA を描画する。 | |
180 | + | |
181 | + using( Surface sfBackBuffer = CDTXMania.Instance.Device.GetRenderTarget( 0 ) ) | |
171 | 182 | { |
172 | - for (int i = 0; i < 8; i++) | |
183 | + using( Surface sfBGA = txBGA.texture.GetSurfaceLevel( 0 ) ) | |
173 | 184 | { |
174 | - 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))))) | |
185 | + CDTXMania.Instance.Device.SetRenderTarget( 0, sfBGA ); | |
186 | + CDTXMania.Instance.Device.Clear( ClearFlags.Target, new ColorBGRA( (int) 0 ), 0f, 0 ); | |
187 | + | |
188 | + for( int i = 0; i < 8; i++ ) | |
175 | 189 | { |
176 | - Size sizeStart = this.stLayer[i].sz開始サイズ; | |
177 | - Size sizeEnd = this.stLayer[i].sz終了サイズ; | |
178 | - Point ptImgStart = this.stLayer[i].pt画像側開始位置; | |
179 | - Point ptImgEnd = this.stLayer[i].pt画像側終了位置; | |
180 | - Point ptDispStart = this.stLayer[i].pt表示側開始位置; | |
181 | - Point ptDispEnd = this.stLayer[i].pt表示側終了位置; | |
182 | - long timeTotal = this.stLayer[i].n総移動時間ms; | |
183 | - long timeMoveStart = this.stLayer[i].n移動開始時刻ms; | |
184 | - | |
185 | - if (CDTXMania.Instance.Timer.n現在時刻 < timeMoveStart) | |
190 | + #region [ レイヤー i の描画 ] | |
191 | + if( ( ( ( this.stLayer[ i ].n移動開始時刻ms != -1 ) && ( ( this.stLayer[ i ].rBMP != null ) || ( this.stLayer[ i ].rBMPTEX != null ) ) ) ) && | |
192 | + ( ( ( this.stLayer[ i ].rBMP == null ) || ( this.stLayer[ i ].rBMP.bUse && ( this.stLayer[ i ].rBMP.tx画像 != null ) ) ) && | |
193 | + ( ( ( this.stLayer[ i ].rBMPTEX == null ) || ( this.stLayer[ i ].rBMPTEX.bUse && ( this.stLayer[ i ].rBMPTEX.tx画像 != null ) ) ) ) ) ) | |
186 | 194 | { |
187 | - timeMoveStart = CDTXMania.Instance.Timer.n現在時刻; | |
188 | - } | |
189 | - // Size size3 = new Size( 0x116, 0x163 ); | |
190 | - Size size表示域 = new Size(278 * 2, 355 * 2); | |
191 | - // chnrm0 : #34192 | |
192 | - // 表示域を2倍に変更した。 | |
193 | - // x,yについては次のように変更した。 | |
194 | - // 338,57 => 1014+139,128 (Dr.) 139は278の半分で、GR領域の中央によせるためにすこし右側にずらした。 | |
195 | - // 181,50 => 682, 112 (Gt.) | |
196 | - Size sizeBMP = new Size( | |
197 | - (this.stLayer[i].rBMP != null) ? this.stLayer[i].rBMP.n幅 : this.stLayer[i].rBMPTEX.tx画像.sz画像サイズ.Width, | |
198 | - (this.stLayer[i].rBMP != null) ? this.stLayer[i].rBMP.n高さ : this.stLayer[i].rBMPTEX.tx画像.sz画像サイズ.Height); | |
199 | - | |
200 | - int n再生位置 = (int)((CDTXMania.Instance.Timer.n現在時刻 - timeMoveStart) * (((double)CDTXMania.Instance.ConfigIni.nPlaySpeed) / 20.0)); | |
201 | - | |
202 | - if ((timeTotal != 0) && (timeTotal < n再生位置)) | |
203 | - { | |
204 | - this.stLayer[i].pt画像側開始位置 = ptImgStart = ptImgEnd; | |
205 | - this.stLayer[i].pt表示側開始位置 = ptDispStart = ptDispEnd; | |
206 | - this.stLayer[i].sz開始サイズ = sizeStart = sizeEnd; | |
207 | - this.stLayer[i].n総移動時間ms = timeTotal = 0; | |
208 | - } | |
195 | + Size sizeStart = this.stLayer[ i ].sz開始サイズ; | |
196 | + Size sizeEnd = this.stLayer[ i ].sz終了サイズ; | |
197 | + Point ptImgStart = this.stLayer[ i ].pt画像側開始位置; | |
198 | + Point ptImgEnd = this.stLayer[ i ].pt画像側終了位置; | |
199 | + Point ptDispStart = this.stLayer[ i ].pt表示側開始位置; | |
200 | + Point ptDispEnd = this.stLayer[ i ].pt表示側終了位置; | |
201 | + long timeTotal = this.stLayer[ i ].n総移動時間ms; | |
202 | + long timeMoveStart = this.stLayer[ i ].n移動開始時刻ms; | |
209 | 203 | |
210 | - Rectangle rect画像側 = new Rectangle(); | |
211 | - Rectangle rect表示側 = new Rectangle(); | |
212 | - | |
213 | - if (timeTotal == 0) | |
214 | - { | |
215 | - rect画像側.X = ptImgStart.X; | |
216 | - rect画像側.Y = ptImgStart.Y; | |
217 | - rect画像側.Width = sizeStart.Width; | |
218 | - rect画像側.Height = sizeStart.Height; | |
219 | - rect表示側.X = ptDispStart.X; | |
220 | - rect表示側.Y = ptDispStart.Y; | |
221 | - rect表示側.Width = sizeStart.Width; | |
222 | - rect表示側.Height = sizeStart.Height; | |
223 | - } | |
224 | - else | |
225 | - { | |
226 | - double coefSizeWhileMoving = ((double)n再生位置) / ((double)timeTotal); | |
227 | - Size sizeWhileMoving = new Size(sizeStart.Width + ((int)((sizeEnd.Width - sizeStart.Width) * coefSizeWhileMoving)), sizeStart.Height + ((int)((sizeEnd.Height - sizeStart.Height) * coefSizeWhileMoving))); | |
228 | - rect画像側.X = ptImgStart.X + ((int)((ptImgEnd.X - ptImgStart.X) * coefSizeWhileMoving)); | |
229 | - rect画像側.Y = ptImgStart.Y + ((int)((ptImgEnd.Y - ptImgStart.Y) * coefSizeWhileMoving)); | |
230 | - rect画像側.Width = sizeWhileMoving.Width; | |
231 | - rect画像側.Height = sizeWhileMoving.Height; | |
232 | - rect表示側.X = ptDispStart.X + ((int)((ptDispEnd.X - ptDispStart.X) * coefSizeWhileMoving)); | |
233 | - rect表示側.Y = ptDispStart.Y + ((int)((ptDispEnd.Y - ptDispStart.Y) * coefSizeWhileMoving)); | |
234 | - rect表示側.Width = sizeWhileMoving.Width * 2; | |
235 | - rect表示側.Height = sizeWhileMoving.Height * 2; | |
236 | - } | |
237 | - if ( | |
238 | - (rect画像側.Right > 0) && | |
239 | - (rect画像側.Bottom > 0) && | |
240 | - (rect画像側.Left < sizeBMP.Width) && | |
241 | - (rect画像側.Top < sizeBMP.Height) && | |
242 | - (rect表示側.Right > 0) && | |
243 | - (rect表示側.Bottom > 0) && | |
244 | - (rect表示側.Left < size表示域.Width) && | |
245 | - (rect表示側.Top < size表示域.Height) | |
246 | - ) | |
247 | - { | |
248 | - // 画像側の表示指定が画像の境界をまたいでいる場合補正 | |
249 | - if (rect画像側.X < 0) | |
204 | + if( CDTXMania.Instance.Timer.n現在時刻 < timeMoveStart ) | |
250 | 205 | { |
251 | - rect表示側.Width -= -rect画像側.X; | |
252 | - rect表示側.X += -rect画像側.X; | |
253 | - rect画像側.Width -= -rect画像側.X; | |
254 | - rect画像側.X = 0; | |
255 | - } | |
256 | - if (rect画像側.Y < 0) | |
257 | - { | |
258 | - rect表示側.Height -= -rect画像側.Y; | |
259 | - rect表示側.Y += -rect画像側.Y; | |
260 | - rect画像側.Height -= -rect画像側.Y; | |
261 | - rect画像側.Y = 0; | |
262 | - } | |
263 | - if (rect画像側.Right > sizeBMP.Width) | |
264 | - { | |
265 | - rect表示側.Width -= rect画像側.Right - sizeBMP.Width; | |
266 | - rect画像側.Width -= rect画像側.Right - sizeBMP.Width; | |
267 | - } | |
268 | - if (rect画像側.Bottom > sizeBMP.Height) | |
269 | - { | |
270 | - rect表示側.Height -= rect画像側.Bottom - sizeBMP.Height; | |
271 | - rect画像側.Height -= rect画像側.Bottom - sizeBMP.Height; | |
206 | + timeMoveStart = CDTXMania.Instance.Timer.n現在時刻; | |
272 | 207 | } |
273 | 208 | |
274 | - // 表示側の表示指定が表示域の境界をまたいでいる場合補正 | |
275 | - if (rect表示側.X < 0) | |
276 | - { | |
277 | - rect画像側.Width -= -rect表示側.X; | |
278 | - rect画像側.X += -rect表示側.X; | |
279 | - rect表示側.Width -= rect表示側.X; | |
280 | - rect表示側.X = 0; | |
281 | - } | |
282 | - if (rect表示側.Y < 0) | |
209 | + Size sizeBMP = new Size( | |
210 | + ( this.stLayer[ i ].rBMP != null ) ? this.stLayer[ i ].rBMP.n幅 : this.stLayer[ i ].rBMPTEX.tx画像.sz画像サイズ.Width, | |
211 | + ( this.stLayer[ i ].rBMP != null ) ? this.stLayer[ i ].rBMP.n高さ : this.stLayer[ i ].rBMPTEX.tx画像.sz画像サイズ.Height ); | |
212 | + | |
213 | + int n再生位置 = (int) ( ( CDTXMania.Instance.Timer.n現在時刻 - timeMoveStart ) * ( ( (double) CDTXMania.Instance.ConfigIni.nPlaySpeed ) / 20.0 ) ); | |
214 | + | |
215 | + if( ( timeTotal != 0 ) && ( timeTotal < n再生位置 ) ) | |
283 | 216 | { |
284 | - rect画像側.Height -= -rect表示側.Y; | |
285 | - rect画像側.Y += -rect表示側.Y; | |
286 | - rect表示側.Height -= -rect表示側.Y; | |
287 | - rect表示側.Y = 0; | |
217 | + this.stLayer[ i ].pt画像側開始位置 = ptImgStart = ptImgEnd; | |
218 | + this.stLayer[ i ].pt表示側開始位置 = ptDispStart = ptDispEnd; | |
219 | + this.stLayer[ i ].sz開始サイズ = sizeStart = sizeEnd; | |
220 | + this.stLayer[ i ].n総移動時間ms = timeTotal = 0; | |
288 | 221 | } |
289 | - if (rect表示側.Right > size表示域.Width) | |
222 | + | |
223 | + Rectangle rect画像側 = new Rectangle(); | |
224 | + Rectangle rect表示側 = new Rectangle(); | |
225 | + | |
226 | + if( timeTotal == 0 ) | |
290 | 227 | { |
291 | - rect画像側.Width -= (rect表示側.Right - size表示域.Width) / 2; | |
292 | - rect表示側.Width -= rect表示側.Right - size表示域.Width; | |
228 | + rect画像側.X = ptImgStart.X; | |
229 | + rect画像側.Y = ptImgStart.Y; | |
230 | + rect画像側.Width = sizeStart.Width; | |
231 | + rect画像側.Height = sizeStart.Height; | |
232 | + rect表示側.X = ptDispStart.X; | |
233 | + rect表示側.Y = ptDispStart.Y; | |
234 | + rect表示側.Width = sizeStart.Width; | |
235 | + rect表示側.Height = sizeStart.Height; | |
293 | 236 | } |
294 | - if (rect表示側.Bottom > size表示域.Height) | |
237 | + else | |
295 | 238 | { |
296 | - rect画像側.Height -= (rect表示側.Bottom - size表示域.Height) / 2; | |
297 | - rect表示側.Height -= rect表示側.Bottom - size表示域.Height; | |
239 | + double coefSizeWhileMoving = ( (double) n再生位置 ) / ( (double) timeTotal ); | |
240 | + Size sizeWhileMoving = new Size( | |
241 | + sizeStart.Width + ( (int) ( ( sizeEnd.Width - sizeStart.Width ) * coefSizeWhileMoving ) ), | |
242 | + sizeStart.Height + ( (int) ( ( sizeEnd.Height - sizeStart.Height ) * coefSizeWhileMoving ) ) ); | |
243 | + rect画像側.X = ptImgStart.X + ( (int) ( ( ptImgEnd.X - ptImgStart.X ) * coefSizeWhileMoving ) ); | |
244 | + rect画像側.Y = ptImgStart.Y + ( (int) ( ( ptImgEnd.Y - ptImgStart.Y ) * coefSizeWhileMoving ) ); | |
245 | + rect画像側.Width = sizeWhileMoving.Width; | |
246 | + rect画像側.Height = sizeWhileMoving.Height; | |
247 | + rect表示側.X = ptDispStart.X + ( (int) ( ( ptDispEnd.X - ptDispStart.X ) * coefSizeWhileMoving ) ); | |
248 | + rect表示側.Y = ptDispStart.Y + ( (int) ( ( ptDispEnd.Y - ptDispStart.Y ) * coefSizeWhileMoving ) ); | |
249 | + rect表示側.Width = sizeWhileMoving.Width; | |
250 | + rect表示側.Height = sizeWhileMoving.Height; | |
298 | 251 | } |
299 | 252 | |
300 | - if ( | |
301 | - (rect画像側.Width > 0) && | |
302 | - (rect画像側.Height > 0) && | |
303 | - (rect表示側.Width > 0) && | |
304 | - (rect表示側.Height > 0) && | |
305 | - | |
306 | - (rect画像側.Right >= 0) && | |
307 | - (rect画像側.Bottom >= 0) && | |
308 | - (rect画像側.Left <= sizeBMP.Width) && | |
309 | - (rect画像側.Top <= sizeBMP.Height) && | |
310 | - (rect表示側.Right >= 0) && | |
311 | - (rect表示側.Bottom >= 0) && | |
312 | - (rect表示側.Left <= size表示域.Width) && | |
313 | - (rect表示側.Top <= size表示域.Height) | |
253 | + if( | |
254 | + ( rect画像側.Right > 0 ) && | |
255 | + ( rect画像側.Bottom > 0 ) && | |
256 | + ( rect画像側.Left < sizeBMP.Width ) && | |
257 | + ( rect画像側.Top < sizeBMP.Height ) && | |
258 | + ( rect表示側.Right > 0 ) && | |
259 | + ( rect表示側.Bottom > 0 ) && | |
260 | + ( rect表示側.Left < size基準.Width ) && | |
261 | + ( rect表示側.Top < size基準.Height ) | |
314 | 262 | ) |
315 | 263 | { |
316 | - CTexture tex = null; | |
317 | - if (this.stLayer[i].rBMP != null) | |
264 | + #region " 画像側の表示指定が画像の境界をまたいでいる場合補正 " | |
265 | + //---------------- | |
266 | + if( rect画像側.X < 0 ) | |
318 | 267 | { |
319 | - tex = this.stLayer[i].rBMP.tx画像; | |
268 | + rect表示側.Width -= -rect画像側.X; | |
269 | + rect表示側.X += -rect画像側.X; | |
270 | + rect画像側.Width -= -rect画像側.X; | |
271 | + rect画像側.X = 0; | |
320 | 272 | } |
321 | - else if (this.stLayer[i].rBMPTEX != null) | |
273 | + if( rect画像側.Y < 0 ) | |
322 | 274 | { |
323 | - tex = this.stLayer[i].rBMPTEX.tx画像; | |
275 | + rect表示側.Height -= -rect画像側.Y; | |
276 | + rect表示側.Y += -rect画像側.Y; | |
277 | + rect画像側.Height -= -rect画像側.Y; | |
278 | + rect画像側.Y = 0; | |
324 | 279 | } |
325 | - if (tex != null) | |
280 | + if( rect画像側.Right > sizeBMP.Width ) | |
326 | 281 | { |
327 | - if (CDTXMania.Instance.DTX != null && !CDTXMania.Instance.DTX.bUse556x710BGAAVI) | |
282 | + rect表示側.Width -= rect画像側.Right - sizeBMP.Width; | |
283 | + rect画像側.Width -= rect画像側.Right - sizeBMP.Width; | |
284 | + } | |
285 | + if( rect画像側.Bottom > sizeBMP.Height ) | |
286 | + { | |
287 | + rect表示側.Height -= rect画像側.Bottom - sizeBMP.Height; | |
288 | + rect画像側.Height -= rect画像側.Bottom - sizeBMP.Height; | |
289 | + } | |
290 | + //---------------- | |
291 | + #endregion | |
292 | + | |
293 | + #region " 表示側の表示指定が表示域の境界をまたいでいる場合補正 " | |
294 | + //---------------- | |
295 | + if( rect表示側.X < 0 ) | |
296 | + { | |
297 | + rect画像側.Width -= -rect表示側.X; | |
298 | + rect画像側.X += -rect表示側.X; | |
299 | + rect表示側.Width -= rect表示側.X; | |
300 | + rect表示側.X = 0; | |
301 | + } | |
302 | + if( rect表示側.Y < 0 ) | |
303 | + { | |
304 | + rect画像側.Height -= -rect表示側.Y; | |
305 | + rect画像側.Y += -rect表示側.Y; | |
306 | + rect表示側.Height -= -rect表示側.Y; | |
307 | + rect表示側.Y = 0; | |
308 | + } | |
309 | + if( rect表示側.Right > size基準.Width ) | |
310 | + { | |
311 | + rect画像側.Width -= rect表示側.Right - size基準.Width; | |
312 | + rect表示側.Width -= rect表示側.Right - size基準.Width; | |
313 | + } | |
314 | + if( rect表示側.Bottom > size基準.Height ) | |
315 | + { | |
316 | + rect画像側.Height -= rect表示側.Bottom - size基準.Height; | |
317 | + rect表示側.Height -= rect表示側.Bottom - size基準.Height; | |
318 | + } | |
319 | + //---------------- | |
320 | + #endregion | |
321 | + | |
322 | + if( | |
323 | + ( rect画像側.Width > 0 ) && | |
324 | + ( rect画像側.Height > 0 ) && | |
325 | + ( rect表示側.Width > 0 ) && | |
326 | + ( rect表示側.Height > 0 ) && | |
327 | + | |
328 | + ( rect画像側.Right >= 0 ) && | |
329 | + ( rect画像側.Bottom >= 0 ) && | |
330 | + ( rect画像側.Left <= sizeBMP.Width ) && | |
331 | + ( rect画像側.Top <= sizeBMP.Height ) && | |
332 | + ( rect表示側.Right >= 0 ) && | |
333 | + ( rect表示側.Bottom >= 0 ) && | |
334 | + ( rect表示側.Left <= size基準.Width ) && | |
335 | + ( rect表示側.Top <= size基準.Height ) | |
336 | + ) | |
337 | + { | |
338 | + CTexture tex = null; | |
339 | + if( this.stLayer[ i ].rBMP != null ) | |
328 | 340 | { |
329 | - tex.vc拡大縮小倍率.X = 2.0f; | |
330 | - tex.vc拡大縮小倍率.Y = 2.0f; | |
331 | - tex.vc拡大縮小倍率.Z = 1.0f; | |
341 | + tex = this.stLayer[ i ].rBMP.tx画像; | |
332 | 342 | } |
343 | + else if( this.stLayer[ i ].rBMPTEX != null ) | |
344 | + { | |
345 | + tex = this.stLayer[ i ].rBMPTEX.tx画像; | |
346 | + } | |
347 | + if( tex != null ) | |
348 | + { | |
349 | + //if( CDTXMania.Instance.DTX != null && !CDTXMania.Instance.DTX.bUse556x710BGAAVI ) | |
350 | + //{ | |
351 | + // tex.vc拡大縮小倍率.X = 2.0f; | |
352 | + // tex.vc拡大縮小倍率.Y = 2.0f; | |
353 | + // tex.vc拡大縮小倍率.Z = 1.0f; | |
354 | + //} | |
333 | 355 | |
334 | - tex.t2D描画( | |
335 | - CDTXMania.Instance.Device, | |
336 | - (x + rect表示側.X), | |
337 | - (y + rect表示側.Y), | |
338 | - rect画像側); | |
356 | + tex.t2D描画( CDTXMania.Instance.Device, rect表示側.X, rect表示側.Y, rect画像側 ); | |
357 | + } | |
339 | 358 | } |
340 | 359 | } |
341 | 360 | } |
361 | + #endregion | |
342 | 362 | } |
363 | + | |
364 | + // レンダーターゲットをバックバッファに戻す。 | |
365 | + CDTXMania.Instance.Device.SetRenderTarget( 0, sfBackBuffer ); | |
343 | 366 | } |
344 | 367 | } |
368 | + | |
369 | + // (2) バックバッファに txBGA を描画する。 | |
370 | + | |
371 | + int x = CDTXMania.Instance.ConfigIni.cdMovieX[ CDTXMania.Instance.ConfigIni.eActiveInst ]; | |
372 | + int y = CDTXMania.Instance.ConfigIni.cdMovieY[ CDTXMania.Instance.ConfigIni.eActiveInst ]; | |
373 | + | |
374 | + txBGA.t2D描画( CDTXMania.Instance.Device, x, y ); | |
345 | 375 | } |
346 | 376 | return 0; |
347 | 377 | } |
@@ -451,7 +451,7 @@ namespace FDK | ||
451 | 451 | this.cvTransformedColoredVertexies[ 3 ].Color = color; |
452 | 452 | this.cvTransformedColoredVertexies[ 3 ].TextureCoordinates.X = f右U値; |
453 | 453 | this.cvTransformedColoredVertexies[ 3 ].TextureCoordinates.Y = f下V値; |
454 | - | |
454 | + | |
455 | 455 | device.SetTexture( 0, this.texture ); |
456 | 456 | device.VertexFormat = TransformedColoredTexturedVertex.Format; |
457 | 457 | device.DrawUserPrimitives( PrimitiveType.TriangleStrip, 0, 2, this.cvTransformedColoredVertexies ); |