OpenGL学习(二)第一个OpenGL程序,绘制三角形

2. 第一个OpenGL窗口程序

2.1 glfw库

一个轻量级的,开源的,跨平台的library。支持OpenGL及OpenGL ES,用来管理窗口,读取输入,处理事件等。因为OpenGL没有窗口管理的功能,所以很多热心的人写了工具来支持这些功能,比如早期的glut,现在的freeglut等。那么GLFW有何优势呢?glut太老了,最后一个版本还是90年代的。freeglut完全兼容glut,算是glut的代替品,功能齐全,但是bug太多。GLFW应运而生。
有了这个库,就可以开始着手建立一个OpenGL窗口了,你甚至只用五行代码就能画出一个三角形来
下载地址: glfw.org. 进入后点击Dowload,然后下载32-bit Windows binaries
网盘:https://pan.baidu.com/s/1PsbAhINrbJ2hfFCny0tiyA 提取码:lwlt
下载后你会得到一个压缩包,里边包含一堆lib库。

2.2 创建OpenGL程序

  1. 使用VisualStudio创建一个C++的空项目
    新建一个项目
  2. 添加源文件
    在程序中添加一个src文件夹用来存放源文件,首先点击解决方案资源管理器器上方的 “显示所有文件”,然后按照下图操作,以创建一个application.cpp文件,当然,名字随意。
    在这里插入图片描述
  3. 第一个窗口程序代码
#include <GLFW/glfw3.h>

int main(void)
{
    
    
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
    
    
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
    
    
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

当你把代码拷贝进入自己的程序中,发现会有一堆的错误,不要着急,下边我们将设置引入GLFW库。

  1. 设置GLFW库

我们在2.1中已经下载了GLFW的库,如果你没有下载那么去下载一下,然后在我们的解决方案所在目录下新建一个文件夹Dependencies,在Dependencies下建立文件夹GLFW,然后将2.1中下载的文件中的include文件夹和符合你VisualStudio版本的lib文件夹复制到GLFW文件夹中。并删除lib库中的动态库,因为我们只需要静态库。最后得到文件结构如下图所示

在这里插入图片描述
① 将头文件链接到项目中,打开解决方案属性页(Alt+Enter),在“C/C++”→“常规” →“附加包含目录”中设置include路径,$(SolutionDir)即我们项目解决方案所在的路径。如下图:
在这里插入图片描述
②将库文件链接到项目中,打开解决方案属性页(Alt+Enter)在“链接器”→“常规” →“附加库目录”中设置lib路径(根据自己实际情况),如下图:
在这里插入图片描述
③设置附加依赖项,打开解决方案属性页(Alt+Enter)在“链接器”→“输入” →“附加依赖项”中设置我们需要链接的文件,默认的那些我们可以删掉,因为我们不需要。如下图:
在这里插入图片描述
到这里,代码中的错误提示应该已经没有了,如果你还有错误,就去检查一下链接的头文件与库文件的路径是否正确。我们可以Ctrl+F7编译一下,显示成功就证明我们以上步骤都完成了,如下图:在这里插入图片描述
④.找回误删除的依赖
现在我们右击解决方案,点击生成,会发现有一大堆错误显示 “无法解释的外部符号”,这是因为我们在③中删除了所有的库,只留下了glfw3.lib,现在,我们需要用一分钟去找回他们。
在这里插入图片描述
我们可以切换到输出窗口(可以复制)
在这里插入图片描述
随便复制一条错误中的方法名称,例如glClear、TranslateMessage,然后在浏览器中使用微软Bing引擎国际版搜索,如下图:
在这里插入图片描述
点击第一条结果(微软建立的Documentation),下拉就会找到这个方法需要添加的依赖
在这里插入图片描述
然后将Opengl32.lib添加到③中“附加依赖项”中,并用相同方式解决剩下的错误,最后如下图:
在这里插入图片描述
现在我们重新生成一下,发现错误都没有了,最后点击F5或者本地Windows调试器来运行我们的程序,就会得到一个黑色的窗口。

在这里插入图片描述

2.2 绘制一个三角形

我们已经得到了一个窗口,现在我们要做的就是添加5行代码在窗口中绘制出一个三角形。在while循环中添加如下代码:

while (!glfwWindowShouldClose(window))
    {
    
    
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        glBegin(GL_TRIANGLES);
        glVertex2d(-0.5f,-0.5f);
        glVertex2d(0.0f, 0.5f);
        glVertex2d(0.5f, -0.5f);
        glEnd();

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

再一次运行我们的程序,一个三角形就被绘制出来了!!
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/mataojie/article/details/114458044