微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法创建简单的彩色窗口OpenGL,GLFW,GLEW

如何解决无法创建简单的彩色窗口OpenGL,GLFW,GLEW

我已经尝试了几天来创建一个带有蓝色背景的简单窗口,但是由于某些未知的原因,我只得到了一个黑色窗口。我正在使用以下3个文件来编译一个小程序

  • main.cpp
#include "wind.hpp"

int main()
{
    wind display;
    display.test();
}
  • wind.hpp
#include <GL/glew.h>
#include <GLFW/glfw3.h>

class wind
{
public:

    void test();

};
  • wind.cpp
#include "wind.hpp"

void wind::test()
{
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MInor,3);

    GLFWwindow* window = glfwCreateWindow(800,600,"LearnopenGL",nullptr,nullptr);

    glfwMakeContextCurrent(window);

    glewInit();

    std::cout << "Version: " << glGetString(GL_VERSION) << std::endl;

    static unsigned frameCount = 0;

    while (true)
    {
        glClearColor(0.0f,0.0f,1.0f,1.0f);
        glClear(GL_COLOR_BUFFER_BIT);


        std::cout << ++frameCount << '\r';

        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();
}

我编译包含这3个文件的程序,输出为:

enter image description here

系统:Ubuntu 18.04.5 LTS。 使用的工具:OpenGL(彩色),GLFW(用于窗口),GLEW(用于OpenGL调用),CMake(用于建筑物)。

一些事实:

  • glfwCreateWindow(800,NULL,NULL) != NULL
  • glewInit() == GLEW_OK
  • 在控制台中,我得到的唯一输出Version: 。后续的std::cout似乎都没有执行(没有输出)。
  • 如果删除std::cout << "Version: " << glGetString(GL_VERSION) << std::endl;,则会在控制台中获得frameCount值(因此,主循环正在运行)。但是窗户还是黑的。
  • 如果我使用“ wind.hpp”和“ wind.cpp”(例如“ libwind.a”)创建静态库,然后将其链接到程序(“ main.cpp”)并进行编译。我得到了蓝色的窗口。但是我应该只为创建这个简单的蓝色窗口而做所有这一切。我不明白为什么它会这样运作,而不是其他...

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。