^ v ^ Thank you again the correct my wrong understanding, I would draw (0.0,0.0,0.0,0.5) trangle or quad as background, then blit my firework on it. It would course fade effect.
At 2016-12-13 20:36:10, "Petr Viktorin" <encu...@gmail.com> wrote: >On 12/13/2016 01:32 PM, xinming wrote: >> >> yeah, thank you for your detailed explaination, I always thought flip >> the display and buffer in one frame. It is only correct in single >> buffer, there is double buffering and even triple , quad buffering. And >> I really should use drawing black background instead of gl operations. > >Oh, the gl operation is perfectly fine if you want to clear the >background to a solid color. >But for your effect you might want to try drawing a *semi-transparent* >black rectangle, so the old images of fireworks fade to black over time. > >> Many thanks! >> >> Simon >> >> >> >> >> At 2016-12-13 18:13:50, "Petr Viktorin" <encu...@gmail.com> wrote: >>>Hi, >>>Pyglet typically uses double buffering [0]: one picture (buffer) is >>>being drawn, while another is being displayed in the window. Then, they >>>are flipped, so what was drawn is now displayed, and drawing is done on >>>the hidden buffer. >>>This prevents partially-drawn buffers from being displayed. >>> >>>So, if you clear every 2 frames, you're only ever clearing one of the >>>two buffers; the other one continues to accumulate whatever was drawn on it. >>> >>>You can tell Pyglet to turn double buffering on or off using context >>>configuration [1]. (I guess the proper solution would be to draw to a >>>dedicated buffer, and blit that to the screen. But I've never done that >>>with Pyglet.) >>>For your effect, you might also consider drawing a semi-transparent >>>black rectangle over the screen, rather than clearing every few frames. >>>But be sure to clear the buffer at the beginning. Some systems don't >>>start you off with a black window. >>> >>> >>>[0] >>>https://en.wikipedia.org/wiki/Multiple_buffering#Double_buffering_in_computer_graphics >>>[1] >>>http://pyglet.readthedocs.io/en/pyglet-1.2-maintenance/programming_guide/windowing.html >>> >>> >>>On 12/13/2016 07:33 AM, xinming wrote: >>>> >>>> >>>> Sorry, I did not describe my problem clearly. It would work without >>>> raising errors, however, if I set in odd it would works fine, the >>>> screenshot here: >>>> >>>> >>>> if set even number, it seemed >>>> that glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) did not work, so I >>>> said failed, here is the screenshot if I change 5 to 6. >>>> >>>> >>>> >>>> >>>> At 2016-12-13 14:24:01, "..." <offonoffoffon...@gmail.com> wrote: >>>> >>>> What do you mean "it failed"? Can you post a traceback or describe >>>> how the result differs from your expectation? >>>> >>>> On Dec 12, 2016 10:34 PM, "Simon" <xinmingm...@163.com >>>> <mailto:xinmingm...@163.com>> wrote: >>>> >>>> Hi guys, I met a strange problem. I use pyglet building an app >>>> to simulate fireworks. And I want to add special effects of >>>> persistence of vision. I do not know how to do it, I just do it >>>> in my own way. Maybe you can tell me how to do it. My problem is >>>> that I update the background >>>> (glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)) every 3, 5, 7 >>>> frames, it works. If I update the background every 2,4,6,8 >>>> frames, it failed. why? >>>> >>>> >>>> my code is like this >>>> >>>> >>>> def on_draw(self): >>>> glViewport(0, 0, window.width, window.height) >>>> glMatrixMode(gl.GL_PROJECTION) >>>> glLoadIdentity() >>>> gluPerspective(90,window.width/window.height,0.05,1000) >>>> glMatrixMode(gl.GL_MODELVIEW) >>>> glLoadIdentity() >>>> gluLookAt(0.0,0.0,4.0, >>>> 0.0,0.0,0.0, >>>> 0.0,1.0,0.0) >>>> if self.frame % 5 == 1: # >>>> if change 5 to even number 4,6,8, it failed >>>> glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) >>>> >>>> full code can be found here >>>> >>>> <https://github.com/xinmingzhang/fireworks/blob/master/fireworks.py> >>>> >>>> And I am new to OpenGL, I also lost in setting these gl >>>> environment, like gl.GL_PROJECTION, gl.GL_MODELVIEW etc. >>>> Sometimes I set the projection, and I see nothing on screen. Is >>>> there any good suggestions? >>>> > >-- >You received this message because you are subscribed to the Google Groups >"pyglet-users" group. >To unsubscribe from this group and stop receiving emails from it, send an >email to pyglet-users+unsubscr...@googlegroups.com. >To post to this group, send email to pyglet-users@googlegroups.com. >Visit this group at https://groups.google.com/group/pyglet-users. >For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "pyglet-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to pyglet-users+unsubscr...@googlegroups.com. To post to this group, send email to pyglet-users@googlegroups.com. Visit this group at https://groups.google.com/group/pyglet-users. For more options, visit https://groups.google.com/d/optout.