мерцание заставляет экран мерцать между красным и черным.рад работает - PullRequest
0 голосов
/ 26 февраля 2019

Я занимаюсь программированием на MacOS 10.14.3, которая поддерживает OpenGL 4.1.

Я использую glfw для пользовательского интерфейса и glew для обнаружения расширений.

этомой код на данный момент:

#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
const GLint WIDTH = 800, HEIGHT = 600;

int main() {

    if (!glfwInit()) {
        std::cout << "GLFW initialisation Failed";
        glfwTerminate();
        return 1;
    }
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,1);
    // Core profile = No Backwards Compatibility
    glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
    // Allow forward compatibility
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);

    GLFWwindow *mainWindow = glfwCreateWindow(WIDTH, HEIGHT, "Test Window", nullptr, nullptr);
    if (!mainWindow) {
        std::cout << "GLFW window creation Failed!";
        glfwTerminate();
        return 1;
    }
    // get buffer size information
    int bufferWidth, bufferHeight;
    glfwGetFramebufferSize(mainWindow,&bufferWidth,&bufferHeight);

    // Set context for GLEW to use
    glfwMakeContextCurrent(mainWindow);

    // Allow modern extension features
    glewExperimental = GL_TRUE;

    if (glewInit() != GLEW_OK) {
        std::cout << "GLEW initialisation Failed!";
        glfwDestroyWindow(mainWindow);
        glfwTerminate();
        return 1;
    }

    // Setup viewport size
    glViewport(0,0,bufferWidth,bufferHeight);

    while(!glfwWindowShouldClose(mainWindow)) {
        // Get + handle user input events
        glfwPollEvents();
        // Clear window
        glClearColor(1.0f, 0.0f, 0.0f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(mainWindow);
    }
    return 0;
}

это должен быть базовый запуск для приложения opengl.он должен инициализировать glfw и glew и покрасить экран в красный цвет, а кроме того я могу добавить свои функции рисования / рендеринга opengl.

Когда я запускаю его вместо того, чтобы видеть окно с красным цветом фона, цвет фона мигает между красным и черным.

есть идеи почему?

update

кажется, что экран мерцает между черным и красным, даже если я выбираю другой цвет с glClearColor.

начинаю думать, что, возможно, glew не работает должным образом.... я вернусь к радости и посмотрим, есть ли какая-либо разница.

обновление 2

заменил glew на glad, удалив код glew, генерируя код радости с помощью веб-интерфейса, затем включив glad.h и добавил glad.c к компиляции, и инициализирован доволен:

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }

хорошо, теперь все работает правильно ... но я хочу использовать glew ... в чем может быть проблема, которая вызывает это?

...