^ 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.

Reply via email to