2016-08-30 20 views
2

私はSDL2レンダラーをセットアップしましたが、私は画面に描画しようとしている2つのテクスチャを持っています。私はこれを別々に行うと、うまく動作します。しかし、私はそれらの両方を一緒に描くと、テクスチャはちらつきます。バックバッファの問題ですか?ダブルバッファを有効にするために必要なことはありますか?SDL2を使用して複数のSDL_Textureを描画中にちらつきが発生する

は、ここで私がやっているものです:

Renderer::m_Renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); 
    if (Renderer::m_Renderer == nullptr){ 
     SDL_DestroyWindow(win); 
     std::cout << "SDL_CreateRenderer Error: " << SDL_GetError() << std::endl; 
     SDL_Quit(); 
    } 

    while (!m_bQuit) { 
     m_tCurrentFrameTime = clock(); 

     // Input 
     while (SDL_PollEvent(&m_Event)) { 
      switch (m_Event.type) { 
       case SDL_QUIT: 
        m_bQuit = true; 
        break; 

       default: 
        break; 
      } 
     } 

     // Update 

    SDL_RenderCopyEx(m_Renderer, m_tBackgroundTexture, NULL, &m_rRect, m_fRotation, NULL, SDL_FLIP_NONE); 
    SDL_RenderPresent(Renderer::getRenderer()); 

    SDL_RenderCopyEx(m_Renderer, m_tCharacterTexture, NULL, &m_rRect, m_fRotation, NULL, SDL_FLIP_NONE); 
    SDL_RenderPresent(m_Renderer); 


     // Clear screen 
     SDL_RenderClear(m_Renderer); 
    } 

答えて

2

その後、テクスチャの両方SDL_RenderPresent()、ないSDL_RenderPresent()あたりをレンダリングします。だから、

SDL_RenderCopyEx(m_Renderer, m_tBackgroundTexture, NULL, &m_rRect, m_fRotation, NULL, SDL_FLIP_NONE); 
SDL_RenderCopyEx(m_Renderer, m_tCharacterTexture, NULL, &m_rRect, m_fRotation, NULL, SDL_FLIP_NONE); 
SDL_RenderPresent(m_Renderer); 

// Clear screen 
SDL_RenderClear(m_Renderer); 
関連する問題