2016-08-30 3 views
2

SDL2 렌더러를 설정했으며 화면에 그려야하는 두 개의 텍스처가 있습니다. 이 작업을 별도로 수행하면 작동합니다. 그러나 두 가지를 모두 그릴 때 질감이 깜박입니다. 백 버퍼 문제입니까? 이중 버퍼를 사용하려면 다른 작업이 필요합니까?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); 
관련 문제