OpenGL入门(1)——建立一个OpenGL项目


前言

本系列为OpenGL入门系列,用于记录自己的学习过程并分享学习经验。本人是跟随视频博主The Cherno发布的视频教程进行学习,B站也有搬运过来的视频最好的OpenGL教程之一,有兴趣的朋友可以一同学习。


(注:文中关于OpenGL、GLFW、GLEW的理解还存在一些问题,有兴趣的朋友可以查看LearnOpenGL纠正理解。同样这个网站也极为推荐大家去看,里边有详细教程,内容非常丰富。)

一、OpenGL是什么?

OpenGL(英语:Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。

根据视频里的内容了解到OpenGL实际上是一种用于控制GPU的规范,这一规范获得了各平台和软硬件厂商的认可,同样也被遵守。但这并不是说他们共用同一套OpenGL,实际上他们各自有自己的OpenGL,针对自身系统或软硬件有不同程度的优化,且大多为非开源,不过在我们这些调用者的眼中,他们表面上所用的调用语句基本一样,实现的效果基本一样,很容易就认为这是一样的东西。

二、建立OpenGL项目

1.准备工作

上文说大多数的OpenGL都不是开源的,那有没有开源的OpenGL呢?答案是肯定的!
这里我们使用GLFW开源的OpenGL库进行学习。

进入主页我们会看到这样的页面:
GLFW主页
可以看到直接就有下载的提示,不过这个是大而全的,而我们想用的是小而美的,适合个人开发使用的。找到右上方“下载”按钮,点击进入如下页面:
GLFW
这里就要根据自己的平台进行选择了,本人所用平台为Windows,可以选择32位的和64位的。有一点需要知道的是,这里32位的能在32位和64位的操作系统中运行,64位的只能在64位的操作系统中运行,而且运行的速度据说也差不多,所以为了能适用于更多的操作系统选择32位的进行下载。
下载并解压后得到
GLFW WIN32
至此准备工作完成。

2.建立项目

2.1 建立项目文件

新建项目
在项目下添加Dependencies文件夹,并在文件夹内添加GLFW文件夹,将之前下载的文件里的includ文件和lib-vc2019(本人用的VS为2019版本,这个别的应该也差不多都适用)复制到GLFW文件夹内。
得到如下的项目文件:
项目文件夹
Dependencies
GLFW
至此完成项目文件的建立。

2.2 链接OpenGL库

在VS中资源管理器下右键项目
右键项目
点击最下方的“属性”,出现项目属性页
找到C/C++下的“常规”里的“附加包含目录”,写入$(SolutionDir)Dependencies\GLFW\include(此处用到了宏,编译器会自动对$SolutionDir进行解析得到对应的路径)

项目属性页
找到“链接器”下的“常规”里的“附加库目录”,写入$(SolutionDir)Dependencies\GLFW\lib-vc2019
附加库目录
至此完成OpenGL库的链接。

2.3 测试

在VS中建立好的OpenGL项目下新建筛选器“src”,用于存放源代码,在其下添加Applications.cpp
测试
将如下代码复制到Applications.cpp中

#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);

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


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

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

    glfwTerminate();
    return 0;
}

运行得到如下结果即代表OpenGL项目完成创建。
运行结果


总结

以上就是建立一个OpenGL项目的内容,本文仅仅简单介绍了OpenGL项目的创建,而OpenGL提供了大量能使我们快速便捷地处理图象的函数和方法,在接下来的文章中会逐步介绍,敬请期待。

猜你喜欢

转载自blog.csdn.net/QBigBangQ/article/details/112167669