수직 동기화 관련 자료 수집, DirectX SwapChain::Present()
VBlank (vertical blank)
https://learn.microsoft.com/en-us/windows/win32/api/dxgi/nf-dxgi-idxgioutput-waitforvblank
IDXGIOutput::WaitForVBlank (dxgi.h) - Win32 apps
Halt a thread until the next vertical blank occurs.
learn.microsoft.com
DXGI(DirectX Graphics Infrastructure) 프레젠테이션
DXGI 개요 - Win32 apps
이 항목에는 다음과 같은 섹션이 포함되어 있습니다.
learn.microsoft.com
Android Performance Patterns: Understanding VSYNC
https://www.youtube.com/watch?v=1iaHxmfZGGc
DX IDXGISwapChain::Present()
https://learn.microsoft.com/ko-kr/windows/win32/api/dxgi/nf-dxgi-idxgiswapchain-present
IDXGISwapChain::P resent(dxgi.h) - Win32 apps
렌더링된 이미지를 사용자에게 표시합니다.
learn.microsoft.com
DXGI_SWAP_EFFECT
https://learn.microsoft.com/ko-kr/windows/win32/api/dxgi/ne-dxgi-dxgi_swap_effect
DXGI_SWAP_EFFECT(dxgi.h) - Win32 apps
IDXGISwapChain1::P resent1을 호출한 후 디스플레이 화면에서 픽셀을 처리하는 옵션입니다.
learn.microsoft.com
Unreal Engine 5 코드 참고
UnrealClient.cpp (1689)
void FViewport::EndRenderFrame(...)
> RHICmdList.EndDrawingViewport(GetViewportRHI(), bPresent, bLockToVsync);
SlateRHIRenderer.cpp
inline bool CompositeUIWithHdrRenderTarget(const FViewportInfo* ViewInfo)
> RHICmdList.EndDrawingViewport(ViewportInfo.ViewportRHI, true, DrawCommandParams.bLockToVsync);
DX11 Tutorial
https://www.rastertek.com/dx11win10tut03.html
void D3DClass::EndScene()
{
// Present the back buffer to the screen since rendering is complete.
if(m_vsync_enabled)
{
// Lock to screen refresh rate.
m_swapChain->Present(1, 0);
}
else
{
// Present as fast as possible.
m_swapChain->Present(0, 0);
}
return;
}
OpenGL Tutorial
https://www.rastertek.com/gl4linuxtut03.html
// Get the current drawable so we can modify the vertical sync swapping.
drawable = glXGetCurrentDrawable();
// Turn on or off the vertical sync depending on the input bool value.
if(vsync)
{
glXSwapIntervalEXT(m_display, drawable, 1);
}
else
{
glXSwapIntervalEXT(m_display, drawable, 0);
}
Unreal Engine Lyra 샘플 문서
수직 동기화(Vertical Sync)
수직 동기화는 항상 전체 프레임을 렌더링 및 프레젠테이션하여 스크린 티어링을 제거합니다. 수직 동기화를 비활성화하면 프레임 레이트와 입력 반응이 향상되지만 수평 화면 테어링이 발생할 수 있습니다. 수직 동기화는 다음 옵션을 통해 토글될 수 있습니다.
Unity Engine 의 vSyncCount
https://docs.unity3d.com/2022.3/Documentation/ScriptReference/QualitySettings-vSyncCount.html
Unity - Scripting API: QualitySettings.vSyncCount
An integer. vSyncCount specifies the number of screen refreshes your game allows to pass between frames. In the Unity Editor, this corresponds to the VSync Count property under Project Settings > Quality > Other. The default value of vSyncCount is 0. In th
docs.unity3d.com
using UnityEngine;
public class Example : MonoBehaviour
{
void Start()
{
// Sync the frame rate to the screen's refresh rate
QualitySettings.vSyncCount = 1;
}
}
팁 강좌
디스플레이 분류| 수직동기화, 그 정체를 파헤쳐보자! 작성 완료: 2016-09-12 2:50
https://coolenjoy.net/bbs/37/123538?sfl=wr_subject&stx=%EC%88%98%EC%A7%81&sop=and
수직동기화, 그 정체를 파헤쳐보자! 작성 완료: 2016-09-12 2:50 > 팁 강좌 | 쿨엔조이
늘 함께하지만, 다소 생소한 메커니즘. "수직동기화" 수직동기화, 그 정체를 파헤쳐보자! "수직동기화가 뭐죠?" "그래픽카드를 업그레이드 하니 화면이 찢어져요!" "수직동기화가 화면을 안찢어
coolenjoy.net
수직 동기화의 원리와 설정 방법
https://blog.naver.com/chlrkfka949/222689689535
수직 동기화의 원리와 설정 방법
컴퓨터 본체와 모니터는 케이블 하나로 데이터를 주고 받는 관계에 있습니다. 그러니까, 서로는 사실 남이...
blog.naver.com