0

私は OpenGL に比較的慣れていないので、C++ Win32 プロジェクトにアンチエイリアスを追加したいと考えています。現在、WM_CREATE メッセージが受信されたときにウィンドウ プロシージャでデバイス コンテキストを取得し、次のように、ピクセル フォーマット記述子を使用して OpenGL コンテキストを作成します。

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
//...

switch (msg) {
    case WM_CREATE:
        log("Starting WM_CREATE...");
        hDC = GetDC(hWnd);

        //Pixel Format
        ZeroMemory(&pfd, sizeof(PIXELFORMATDESCRIPTOR));
        pfd.nSize = sizeof(PIXELFORMATDESCRIPTOR);
        pfd.nVersion = 1;
        pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
        pfd.iPixelType = PFD_TYPE_RGBA;
        pfd.cColorBits = 32;
        pfd.cDepthBits = 24;
        pfd.cStencilBits = 8;

        format = ChoosePixelFormat(hDC, &pfd);
        if (!SetPixelFormat(hDC, format, &pfd)) {
           log("Error: Could not set pixel format.");
           PostQuitMessage(1);
           break;
        }
        //Create Render Context
        hRC = wglCreateContext(hDC);
        if (!wglMakeCurrent(hDC, hRC)) {
           log("Error: Could not activate render context.");
           PostQuitMessage(1);
           break;
        }

        //Initialize GLEW
        if (glewInit()) {
           log("Error: Could not initialize GLEW.");
           PostQuitMessage(1);
           break;
        }

        //Other initialization goes here
        //...

        break;
    //...
    }
    return 0;
}

アンチエイリアシングを機能させるには、WGL_ARB_multisample のような拡張機能を使用する必要があることを理解しています。特にGLEWで、これを実際に使用する方法の例はほとんどないようです。これを機能させるためにコードを変更するにはどうすればよいですか? ありがとう。

4

1 に答える 1