Включение мультисэмпла в окне GLFW не улучшает качество сглаживания - PullRequest
0 голосов
/ 08 июля 2019

Я включил мультисэмплинг в окне GLfW, но вывод выглядит странно, вместо того, чтобы улучшать объекты, становятся более алиасами.

Когда я устанавливаю Samples в 0, это результат.enter image description here

, когда я устанавливаю сэмплы на 8, это результат.enter image description here

После увеличения выборки выходной сигнал становится более псевдонимом.

это код.

const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);

float Trianglevertices[] = {
    -0.5f, -0.5f, 0.0f,
    0.5f, -0.5f, 0.0f,
    0.0f,  0.5f, 0.0f
};

int main(int argc, char *argv[])
{
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    glfwWindowHint(GLFW_SAMPLES, 8 );  // defined samples for  GLFW Window

    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH , SCR_HEIGHT, "Renderer", nullptr, nullptr);   // Create the render window
    if (window == NULL)
    {
        glfwTerminate();
        return -1;
    }

    glfwMakeContextCurrent(window);
    GLenum GlewInitResult;
    glewExperimental = GL_TRUE;
    GlewInitResult = glewInit();
    if ( GLEW_OK != GlewInitResult)   // Check if glew is initialized properly
    {       
        glfwTerminate();
        return -1;
    }

    glEnable(GL_MULTISAMPLE);  // Enabled Multisample 
    glEnable(GL_DEPTH_TEST);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    glBlendEquation(GL_FUNC_ADD);
    LoadShader("C:\\vertex.txt", "C:\\Fragment.txt");
    unsigned int VBOdel, VAOdel;
    glGenVertexArrays(1, &VAOdel);
    glGenBuffers(1, &VBOdel);
    glBindVertexArray(VAOdel);
    glBindBuffer(GL_ARRAY_BUFFER, VBOdel);
    glBufferData(GL_ARRAY_BUFFER, sizeof(Trianglevertices), &Trianglevertices, GL_STATIC_DRAW);
    glEnableVertexAttribArray(0);
    glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (void*)0);
    glBindBuffer(GL_ARRAY_BUFFER, 0);
    glBindVertexArray(0);
    GetShader("TestShader").Use();
    while (!glfwWindowShouldClose(window))
    {
        // input
        // -----
        processInput(window);

        // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
        // -------------------------------------------------------------------------------
        glClearColor(0.0, 0.0, 0.0, 1.0);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
        ////////////////////////////////////////////////////////////////
        glBindVertexArray(VAOdel);
        glDrawArrays( GL_TRIANGLES, 0, 3);
        glBindVertexArray(0);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    // glfw: terminate, clearing all previously allocated GLFW resources.
    // ------------------------------------------------------------------
    glfwTerminate();
    return 0;
}

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height );
}

void processInput(GLFWwindow *window)
{
    if (glfwGetKey( window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
    {
        QMessageBox  MsgBox;
        MsgBox.setText("EScape Key Pressed");
        glfwSetWindowShouldClose(window, true);
    }
}

1 Ответ

0 голосов
/ 09 июля 2019

В конце концов, поигравшись, я обнаружил, что в панели управления NVidia в настройке управления 3D-изображениями, если я изменяю предпочитаемый графический процессор на высокопроизводительный процессор Nvidia, работает мультисэмплинг.

Первоначально он был установлен на Автовыбор иприложение использует встроенный графический процессор.

enter image description here

...