Включить инициализацию для openGL ES 3.0

Моя цель — включить сглаживание в приложении C++ win32, использующем powerVR SDK, в Visual Studio 2015. Поиск в Интернете информации о том, как это сделать, дал мне некоторые идеи об использовании egl, поэтому я попробовал этот метод.

`   EGLint attribs[] =
    {
        EGL_LEVEL, 0,
        EGL_NATIVE_RENDERABLE, 0,
        EGL_BUFFER_SIZE, 0,
        EGL_DEPTH_SIZE, 16,
        EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
        EGL_SAMPLE_BUFFERS, 1,
        EGL_SAMPLES, 4, 
        EGL_NONE
    };

    attribs[1] = 16; // 16x anti-aliasing
    EGLConfig config = new EGLConfig[1];
    EGLint num_config;

    bool result = eglChooseConfig(eglGetDisplay(EGL_DEFAULT_DISPLAY), attribs, &config, 1, &num_config);
    if (!result)
    {
        this->setExitMessage("Antialiasing has not configured properly");
        return pvr::Result::Enum::InvalidData;
    }`

Он компилируется и работает отлично, без ошибок, но линии по-прежнему чертовски зазубренные — сглаживание не применяется.

Что я делаю неправильно в приведенном выше коде?

Каков правильный путь?


person ampawd    schedule 27.10.2016    source источник
comment
stackoverflow.com/questions/27035893/ Кроме того, настройки attribs[1] = 16 не делают того, что вы хотите. attribs — это просто массив int (EGLint), поэтому вы устанавливаете 2-й элемент равным 16, например, запрашивая EGL_LEVEL=16. Вероятно, это не поддерживается.   -  person MuertoExcobito    schedule 02.11.2016
comment
@MuertoExcobito спасибо за предложения, однако я уже исправил эту проблему - проблема заключалась в том, что драйвер NVIDIA переопределял любое специально включенное сглаживание - я просто установил, чтобы он не переопределялся с панели управления NVIDIA - и это сработало.   -  person ampawd    schedule 02.11.2016