回答編集履歴

2

追記

2023/11/22 22:26

投稿

quickquip
quickquip

スコア11072

test CHANGED
@@ -16,3 +16,26 @@
16
16
  ----
17
17
  (追記)
18
18
  グラフィックス系のライブラリで、"指定矩形の範囲外を再描画しないとは限らない"と明記されているものを扱ったことがあって、実際の再描画と再描画の間に「複数回のupdateRectがあって最大外接矩形が全体に対してある程度以上の比率になったら自動で全体の再描画になる」と経験的に推測できる実装などを見てきたので、質問をみて、そういうことはあるだろう、それは問題にはならないはず、と思って回答しました。
19
+
20
+ ----
21
+ (追記)
22
+
23
+ > その際に、できるだけ処理を省こうとすると、
24
+ >
25
+ > 1. 背景を緑色でfill
26
+ > 1. 新しい女の子の画像を配置
27
+ > 1. 女の子のウィンドウ部分のみ更新
28
+ >
29
+ > としたいと思います。
30
+
31
+ 1. 背景を緑色でfill
32
+
33
+ が無駄です。
34
+
35
+ 1. 新しい女の子の画像を配置
36
+ 1. 女の子のウィンドウ部分のみ更新
37
+
38
+ でいいのです。
39
+ これであれば「女の子のウィンドウ部分のみ更新」の時に指定した矩形範囲以外が(パフォーマンス等の理由で)再描画されたとしても、**そこに表示されるべき内容で描画される**ので何も問題ないわけです。
40
+
41
+ "背景を緑色でfill"は **描画されるべきでない内容をバッファに書きこんでいる**ということなので、完全に無駄な処理なのです。

1

追記

2023/11/22 15:52

投稿

quickquip
quickquip

スコア11072

test CHANGED
@@ -1,7 +1,7 @@
1
1
  "指定された矩形の範囲を再描画する"ことは保証されていますし、保証されていないと困ります。
2
2
  ですが、裏の、"指定した矩形の範囲外を再描画しない"ことは保証されていません。また保証されていないことが問題になることはないはずです。
3
3
 
4
- あるプラットフォームで、指定された矩形**だけ**再描画することがパフォーマンス的に不利だということはありえるでしょう。その場合、指定された矩形だけを無理に再描画する理由はないです。指定された矩形を含む範囲が、パフォーマンス的に有利な方法で再描画されれば十分なはずです。
4
+ あるプラットフォームで、指定された矩形**だけ**再描画することがパフォーマンス的に不利だということはありえるでしょう。その場合、指定された矩形だけを無理に再描画する理由はないです。指定された矩形を含む範囲が、パフォーマンス的に有利な方法で再描画されれば十分なはずです。
5
5
 
6
6
  TakaiY さんがコメントしていることにまったく同意で、いま「白で描画せよと指定した部分が白で再描画されている」ことがどういう問題になるのか分かりませんでした。
7
7
  不思議だと思うのは理解できますが、"表示がバグる可能性がある"というのがどういう状況か説明が必要かと思います。
@@ -12,3 +12,7 @@
12
12
 
13
13
  いまmacOSで青色四角の左右が白で再描画されているのが、バグなのか、実装として妥当なのか(つまりパフォーマンス的に有利だという理由で意図的にそうしているのか)の判断はつきませんでした。
14
14
  この部分はSDL ( https://www.libsdl.org/ , https://github.com/libsdl-org/SDL )の範疇なので、[SDL](https://teratail.com/tags/SDL%20(Simple%20DirectMedia%20Layer)),C言語,Objective-C のタグを付ける方が回答できる人に届くと思います。
15
+
16
+ ----
17
+ (追記)
18
+ グラフィックス系のライブラリで、"指定矩形の範囲外を再描画しないとは限らない"と明記されているものを扱ったことがあって、実際の再描画と再描画の間に「複数回のupdateRectがあって最大外接矩形が全体に対してある程度以上の比率になったら自動で全体の再描画になる」と経験的に推測できる実装などを見てきたので、質問をみて、そういうことはあるだろう、それは問題にはならないはず、と思って回答しました。