Winform DirectX 적용 시, CreateParams 관련 질문

안녕하세요. 최근에 DirectX 적용하다 어느정도 기능 구현이 완료됐다 판단하여 추가 작업이 없었는데 CreateParams를 재정의하면서 문제점이 확인돼어 왜 안되는지 이해가 되지 않아 문의 남깁니다.

protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}

위 코드를 적용하고 UserControl로 Panel을 생성 후,
[DirectX] .Net WinForm에서 GDI+와 SharpDX 사용하기 (예제 포함)

해당 블로그에 올라온 코드를 활용하여 작업하였습니다.

cp.ExStyle |= 0x02000000; 적용하지 않으면 정상적인 렌더링이 되는데, cp.ExStyle |= 0x02000000; 적용하면 렌더링이 정상적으로 일어나지 않습니다;

cp.ExStyle |= 0x02000000; 이 코드가 방해할만한 요소가 있을까요?
확실히 이 부분에 의해 렌더링 문제는 확인이돼서요

아시는 의견이 있으시면 의견 부탁드립니다.

cp.ExStyle |= 0x02000000;을 꼭 적용해야하는 것은 아니지만, 렌더링 안되는 문제를 방지를 하고싶어서 입니다.

읽어주셔서 감사합니다.

알고 있는 지식에 기반해서 말씀드립니다만 이 분야에 좀 더 경험이 많으신 다른 커뮤니티 회원 분들의 조언이 있으면 좋겠습니다.

말씀하신 0x02000000 플래그는 WS_EX_COMPOSITED 플래그로 더블 버퍼링에 관련된 플래그인 것으로 보이는데, DirectX를 사용한다고 하더라도 Windows Forms 위에 렌더링하는 경우에는 결국 GDI 동작에 영향을 받을 수 있을 것 같습니다.

이 플래그를 지정하면 DirectX로 렌더링한 내용을 GDI가 다시 덮어써서 렌더링되지 않는 것처럼 보일 개연성이 있는 것 같네요!

1 Like

DX 자체가 더블버퍼링 입니다.
flickering 발생하면 WM_ERASEBKGND, WM_PAINT 핸들러에서 적절한 처리를…

2 Likes

의견 감사합니다.
참고하여 작업 해보도록 하겠습니다.