闪烁会导致屏幕在红色和黑色之间闪烁。高兴的作品

时间:2019-02-26 19:52:28

标签: c++ macos opengl glfw glew

我正在使用支持OpenGL 4.1的MacOS 10.14.3进行编程。

我将glfw用于ui,并使用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并闪烁并将屏幕涂成红色,最重要的是,我可以添加我的opengl绘制/渲染功能。

当我执行它而不是看到具有红色背景色的窗口时,背景色在红色和黑色之间闪烁。

为什么有什么主意?

更新

即使我使用glClearColor选择其他颜色,屏幕也似乎在黑色和红色之间闪烁。

开始认为也许问题不正常。.我将回到高兴的位置,看看是否有任何区别。

更新2

通过消除毛刺代码替换毛刺,使用Web界面生成毛刺代码,然后包含glad.h并将glad.c添加到编译中,并通过以下方式初始化高兴:

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

现在可以正常工作了...但是我想使用glew ...可能是什么原因引起的?

0 个答案:

没有答案