こんにちは、KivyのFBO(Framebuffer)についてです。
このFBOを利用する事で、フレームバッファ機能を作れるとのことですが、
実際どのように作成するのかわかりません。
私の目標はiOSのナビゲーションバーで使われている、ブラー効果を作る事です。
わたしの考えでは、表示した画面の一部をFBOでフレームバッファーとして再利用し、effectモジュールでブラー効果をつければ出来るのではと考えています。
ですが、その足がかりとなりそうなFBOがよくわからないのです。
下記のようなコードを書きました。
(...Pythonファイルの方は本家サイトのリファレンスそのままです。...)
私の気がかりな部分は
self.fbo = Fbo(size=(256, 256))
と
with self.fbo:
の二つです。
とりあえずself.fboがカンバスと同じ用量なのは理解しました。
ただ、Fbo関数がなんのためにあって、何をする関数なのかがわかりません。
もしkivyの言うフレームバッファというものが、Rectangleなどを使っての図形描画でしか表示することができないのであれば私の目標は達せないことになります。
###この、Fbo関数が何かを教えて下さい。
###もしわかれば、iOSブラーをどう作るかを教えて下さい。
python
1from kivy.app import App 2from kivy.lang import Builder 3from kivy.core.window import Window 4from kivy.graphics import Fbo, Color, Rectangle 5from kivy.uix.widget import Widget 6 7 8Window.clearcolor = (1, 1, 1, 1) 9 10class FboTest(Widget): 11 def __init__(self, **kwargs): 12 super(FboTest, self).__init__(**kwargs) 13 14 # first step is to create the fbo and use the fbo texture on other 15 # rectangle 16 17 with self.canvas: 18 # create the fbo 19 self.fbo = Fbo(size=(256, 256)) 20 21 # show our fbo on the widget in different size 22 Color(1, 1, 1, 1) 23 Rectangle(size=(500, 500), texture=self.fbo.texture) 24 25 # in the second step, you can draw whatever you want on the fbo 26 with self.fbo: 27 28 Color(0, 0, 1, 1) 29 Rectangle(size=(256, 64)) 30 Color(0, 1, 0, 1) 31 Rectangle(size=(256, 64), pos=(0, 64)) 32 33 34class FboApp(App): 35 36 def build(self): 37 pass 38 39if __name__ == '__main__': 40 FboApp().run()
kv
1#kvfile 2#ファイル名は fbo.kv 3 4ScreenManager: 5 sca: sca 6 Screen: 7 id: sca 8 name: "ScreenA" 9 ScrollView: 10 size_hint_y: 1 11 pos_hint: {'top': 1} 12 GridLayout: 13 cols: 1 14 size_hint: 1, None 15 height: self.minimum_height 16 padding: 0, sp(50), 0, sp(50) 17 FboTest: 18 transitions: transitions 19 Label: 20 id: transitions 21 text: "Pellentesque" 22 font_size: 150 23 text_size: self.width, None 24 size_hint: 1, None 25 height: self.texture_size[1] 26 color: 0.000 ,0.4784 ,1.000, 1 27 28 RelativeLayout: 29 size_hint: 1, None 30 height: sp(100) 31 canvas.before: 32 Color: 33 rgba: 1,1,1,.8 34 Rectangle: 35 size: self.size 36 pos: self.pos
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/02 13:21
2017/12/02 13:24
2017/12/02 13:26
2017/12/02 13:29
2017/12/02 16:10 編集
2017/12/03 06:14
2017/12/03 06:16
2017/12/03 14:11
2017/12/03 14:20
2017/12/03 14:40 編集
2017/12/03 15:09
2017/12/03 15:13 編集
2017/12/04 01:47