wxWidgets OpenGL 프로그램에 대해 멀티샘플링을 활성화하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/21560

  •  09-06-2019
  •  | 
  •  

문제

멀티샘플링 신청하는 방법이에요 전체 화면 앤티앨리어싱 (FSAA)를 3D 애플리케이션에서 사용합니다.현재 OpenGL 프로그램에 포함되어 있는 OpenGL 프로그램에서 멀티샘플링을 사용해야 합니다. wx위젯 GUI.이를 수행할 수 있는 방법이 있습니까?이를 달성하기 위한 세부 단계를 알고 있는 경우에만 응답해 주세요.

다음을 사용하여 멀티샘플링을 활성화하는 것을 알고 있습니다. WGL (OpenGL에 대한 Win32 확장).그러나 내 OpenGL 프로그램은 MFC로 작성되지 않았기 때문에(그리고 코드가 다중 플랫폼 이식 가능하도록 하기를 원함) 이는 나에게 옵션이 아닙니다.

도움이 되었습니까?

해결책

마침내 wxWidgets OpenGL 프로그램을 사용하여 멀티샘플링을 사용할 수 있게 되었습니다.지금은 약간 지저분하지만 방법은 다음과 같습니다.

wx위젯 가지고 있지 않다 멀티샘플링 그들의 지원 안정적인 릴리스 지금(현재 최신 버전은 2.8.8).그러나 패치와 일일 스냅샷을 통해서도 사용할 수 있습니다.(후자는 패치가 승인되었고 문제가 없다면 향후 안정 릴리스에 나타나야 한다는 의미이므로 고무적입니다.)

따라서 두 가지 옵션이 있습니다.

  1. 다운로드하여 구축하세요. 일일 스냅샷.

  2. 받기 반점 작동하는 wxWidgets 설치를 위해.

작업 설치를 최대한 방해하고 싶지 않기 때문에 두 번째 옵션이 덜 번거롭다는 것을 알았습니다.Windows에서 패치하는 방법을 모르는 경우 다음을 참조하세요. 이것.

최소한 Windows의 경우 패치는 다음 파일을 수정합니다.

$(WX_WIDGETS_ROOT)/include/wx/glcanvas.h
$(WX_WIDGETS_ROOT)/include/wx/msw/glcanvas.h
$(WX_WIDGETS_ROOT)/src/msw/glcanvas.cpp

패치 후, 재컴파일 wxWidgets 라이브러리.

wxWidgets OpenGL 프로그램에서 멀티샘플링을 활성화하려면 코드를 약간 변경해야 합니다.

속성 목록을 wxGL캔버스 건설자:

int attribList[] = {WX_GL_RGBA,
                    WX_GL_DOUBLEBUFFER,
                    WX_GL_SAMPLE_BUFFERS, GL_TRUE, // Multi-sampling
                    WX_GL_DEPTH_SIZE, 16,
                    0, 0};

이미 속성 목록을 사용하고 있었다면 다음 줄을 추가하세요. GL_SAMPLE_BUFFERS, GL_TRUE 그것에.그렇지 않으면 이 속성 목록 정의를 코드에 추가하세요.

그런 다음 이 속성 목록을 매개변수로 사용하도록 wxGLCanvas 생성자를 수정합니다.

myGLFrame::myGLFrame    // Derived from wxGLCanvas
(
    wxWindow *parent,
    wxWindowID id,
    const wxPoint& pos,
    const wxSize& size,
    long style,
    const wxString& name
)
: wxGLCanvas(parent, (wxGLCanvas*) NULL, id, pos, size, style, name, attribList)
{
    // ...
}

wxGLCanvas 요소가 생성된 후에는 기본적으로 멀티샘플링이 켜집니다.마음대로 비활성화하거나 활성화하려면 관련 OpenGL 호출을 사용하십시오.

glEnable(GL_MULTISAMPLE);
glDisable(GL_MULTISAMPLE);

이제 멀티샘플링이 wxWidgets OpenGL 프로그램에서 작동합니다.곧 wxWidgets의 안정적인 릴리스에서 지원되어 이 정보가 관련이 없게 되기를 바랍니다. :-)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top