

pygameを使用して二枚の画像を交互に描画するプログラムを作成しました。  
28fpsまでは描画に違和感はなく実行することが可能だったのですが、30fps以上になるとラグがあるように思った描画ができなくなってしまいます。  
プログラムに異常があるのか、fpsを変更しなければいけないのか分かりません。  
どなたかわかる方いますでしょうか？コードは以下のようになっています。よろしくお願いいたします。

[code]

    import time
    import sys, random
    import pygame
    from pygame.locals import *
    
    def main():
        pygame.init()
        screen = pygame.display.set_mode((960, 540))
        pygame.display.set_caption("image")
        logoA = pygame.image.load("checkA.bmp")
        logoA = pygame.transform.scale(logoA, (960, 540))
        logoB = pygame.image.load("checkB.bmp")
        logoB = pygame.transform.scale(logoB, (960, 540))
        imageFrag = 0
        fps = 28
    
        screen = pygame.display.set_mode((960, 540))
        pygame.display.set_caption("image")
        t1 = time.time()
        while True:
            fpsclock = pygame.time.Clock()
            fpsclock.tick(fps)
            screen.fill((0,0,0))
            if imageFrag == 0:
                screen.blit(logoA,(0,0))
                imageFrag = 1
                print("logoA")
            else:
                screen.blit(logoB,(0,0))
                imageFrag = 0
                print("logoB")
            pygame.display.update()
            for event in pygame.event.get():
                if event.type == KEYDOWN:
                    if event.key == K_SPACE:
                        t2 = time.time()
                        print(t2-t1)
                        print(fpsclock.get_fps())
                        pygame.quit()
                        sys.exit()
    
    if __name__ == '__main__':
        main()
    
[/code]


CC BY-SA 4.0
2022-10-26T05:54:21.957
91832
2022-10-26T07:00:38.747
2022-10-26T05:59:20.797
3060
55043
question
python python3 pygame
pygameで30fps以上で二種類の画像を描画したい


Clock の生成はループの外に出せる（出すべき）と思います。

[code]

    fpsclock = pygame.time.Clock()
    while True:
    
[/code]

これで多少は速くなると思います。しかし、「ラグがある」というのは、ディスプレイのリフレッシュレートとの兼ね合いの可能性が有ります。

質問のコードはコマを交互に切り替えています。切り替えの間隔がディスプレイのリフレッシュレートに近づいたり超えたりすると、どのコマをディスプレイが拾うかによって、様々な現象が起り得ます。まだ30fps程度だと関係無いかも知れませんが、ディスプレイのリフレッシュレートを確認してみて下さい。

なお、このプログラムは光過敏性発作に注意し、表示する画像を選択する必要があると思います。


CC BY-SA 4.0
2022-10-26T07:00:38.747
91835
2022-10-26T07:00:38.747
3054
91832
answer