OpenGL 画三角形(需要步骤、每一步解释)

笔者初入写文章,写的不怎么好,不懂的欢迎评论留言,笔者会认真解释

看着步骤太多,其实很简单,每个步骤就两三行代码左右。
一般看文档看一步做一步记不住什么意思,所以建议读者先一步一步看看这些步骤,不要觉得字多眼花缭乱而走神

其实每一步就像你和那个开车一样,从??到??需要注意的步骤

  1. 配置环境(很简单,一会放链接)
  2. 导入头文件
  3. 初始化(gl版本等)
  4. 创建窗口(设置窗口改变视口大小等)
  5. 创建链接到上下文然后glewInit();
  6. 创建VAO、VBO->绑定VAO、VBO->顶点绑定VBO
  7. 顶点着色器与片段着色器源码
  8. 创建顶点着色器与片段着色器对象
  9. 对象绑定顶点着色器与片段着色器源码
  10. 编译顶点着色器与片段着色器对象
  11. 创建着色器程序对象
  12. 顶点着色器与片段着色器绑定到着色器程序对象
  13. 链接着色器程序
  14. 释放不需要的顶点着色器与片段着色器对象
  15. 配置顶点解析方式
  16. 启用三角形的顶点属性
  17. 渲染:绑定VAO、使用着色器、绘制顶点、交换缓冲区

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

配置环境与导入头文件

这里是配置

/*导入头文件*/
#include <GL/glew.h>
#include <GLFW/glfw3.h>

初始化与创建窗口

首先调用

glfwInit();

这个函数是必须的
接下来是配置GLFW

	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

glfwWindowHint的第一个参数代表选项的名称,第二个参数接受一个整型,用来设置这个选项的值。
前面两次调用是在设置GLFW的版本,就是3.3,如果你用的GLFW不是这个版本你也可以按照你的版本进行修改

创建窗口对象

GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);

我们要对window进行判断是否为NULL,为真就是创建失败了,还是空指针

if (window == NULL)
    {
   
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }

设置视口
在设置视口时,不希望窗口大小改变后图像的大小依然是原来的大小,所以glfw提供了一个glfwSetFramebufferSizeCallback函数,当每次窗口大小发生改变时,就会回调参数里的函数,当然传递参数需要我们新定义

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
   
    glViewport(0, 0, width, height);
}

然后传参

glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

链接到状态机与VAO、VBO

将创建好的窗口链接到状态机上,这样渲染出来的图像是在这个窗口显示的

glfwMakeContextCurrent(window);

接下来开始写关于glew的代码了,首先初始化glew

glewInit();

然后我们创建VAO与VBO对象

	unsigned int VAO,VBO;
	glGenVertexArrays(1, &VAO);
	glGenBuffers(1, &VBO);

我们传入1表示我们只创建1个对象
接下来我们将VBO绑定到GL_ARRAY_BUFFER目标上

	glBindBuffer(GL_ARRAY_BUFFER, VBO);

输入顶点

float vertices[] = {
   
    -0.5f, -0.5f, 0.0f,
     0.5f, -0.5f, 0.0f,
     0.0f,  0.5f, 0.0f
    };

将顶点数据复制到缓冲的内存中(GL_ARRAT_BUFFER)

glBufferData(GL_ARRAY_BUFFER
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值