淘先锋技术网

首页 1 2 3 4 5 6 7

reference:

learningopengl
视频参考b站

GLFW相关函数操作参考如下;
GLFW 基础操作

本文并没有介绍GLAD,想要下载配置参考:链接

1.什么是openGL

一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。

OpenGL Logo

OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。至于内部具体每个函数是如何实现(Implement)的,将由OpenGL库的开发者自行决定(译注:这里开发者是指编写OpenGL库的人)。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配(亦即,作为用户不会感受到功能上的差异)

1.1 总结:opengl不是framework,不是library or engine 它只是一个Specification,它规定了API要干什么,但是没有具体实现,实现由显卡制造商完成。它并不开源(显卡制造商会好心开放源码?),不要被open误导。

1.2 牛在何处 (跨平台? >directX)

注意跨平台看似nb,实际上它的代码会劣于专门平台的api如directx(毕竟亲爸爸为儿子开发)

1.3 为什么学习

vulcan还很原始不稳定,openGL是你最容易学习的图像驱动,因为跨平台,也适合你将成果分享给各个平台,对于学生党而言,你一般没有资源去专门开发另一平台版本。

2.let’s start

2.1 Creating a window

2.11 首先下载GLFW库

windows下请下载32位,64位会有奇怪的问题,方便起见直接下win32,源码版本你还需要编译才能使用。

2.2 example(GLFW官网示例代码,建议手打)

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

当然会报错,你还没导入库

2.2.2 GLFW配置

项目目录下新建一个Dependencies文件

在这里插入图片描述
我们需要如下两个文件
在这里插入图片描述
删除lib文件中的dill,我们不需要它
在这里插入图片描述
将GLWF文件放在Dependencies文件夹里

在这里插入图片描述
在这里插入图片描述
调整项目属性平台设为win32

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
应用设置后报错消失

Linker配置类似如图
在这里插入图片描述
在这里插入图片描述

上述操作使得我们链接到了glfw3.lib
在这里插入图片描述

2.3 build

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

学会用百度搜索相关错误
在这里插入图片描述
查找添加相关库后如图

在这里插入图片描述
生成成功!
在这里插入图片描述

ps:这是b站视频为了展示linker步骤,实际不需要修改附加依赖项,原本默认基本全有

2.4 修改代码画个三角

在这里插入图片描述

#include<glad/glad.h>   //必须放在最前面  它已经包含正确的OpenGL文件  放后面会导致重复定义
#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;
}

运行结果

在这里插入图片描述