opengl学习之大难临头写毕设(二)

个人学习记录

  • 安装glfw和glad并配置,参考博客:
    Frank学习路上-【OpenGL】用GLFW和glad创建窗口
    有glfw和glad创建窗口的代码

  • tips:
    vs 报错:error: C1189: #error: OpenGL header already included, remove this include, glad already provides it
    解决方法:GLAD的头文件包含了所需的OpenGL头文件(例如GL/gl.h),因此将GLAD需要置于在其它依赖于OpenGL的头文件(如GLFW)之前。把#include <glad/glad.h>置于#include <GLFW/glfw3.h>前,放最顶上
    打开项目时需要点sln文件,直接从vs最近打开里打开
    opengl中把别的地方的文件复制粘贴进来需要手动选择添加-现有项
    在这里插入图片描述

课堂笔记

chapter 1:
opengl中都是记录的顶点的数据(三角形)
MVP变换:模型变换,平移旋转缩放,线代;观察变换,摄像机(摄像机永远看向摄像机坐标系的z轴),坐标轴;投影变换,3d投影到平面

chapter 2:shader

  • 定义:
    顶点缓冲对象:Vertex Buffer Object,VBO
    顶点数组对象:Vertex Array Object,VAO
    图形渲染管线:接受一组3D坐标,然后把它们转变为你屏幕上的有色2D像素输出的过程。

开始编程!!

首先以数组的形式传递3个3D坐标作为图形渲染管线的输入,用来表示一个三角形,这个数组叫做顶点数据(Vertex Data);顶点数据传入顶点着色器,它的输出传入片段着色器进行插值等操作并着色。fragmentshader进行插值操作,如给三角形着色等,
layout (location = 0) in vec3 aPos:在锚定点为0的地方放了一个三维的向量apos
out:输出

三角形顶点如下:

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

把它作为输入发送给图形渲染管线的第一个处理阶段:顶点着色器。它会在GPU上创建内存用于储存我们的顶点数据,这些顶点数据会储存在gpu中,由vertexshader对它进行空间变换的操作,通过顶点缓冲对象(Vertex Buffer Objects, VBO)管理这个内存。

构建vbo:
在这里插入图片描述

glGenBuffers(1, &VBO);//可以用来获取多个vbo的index,这里只传一个VBO
glBindBuffer(GL_ARRAY_BUFFER, VBO); //绑定GL_ARRAY_BUFFER这个vbo
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
//分配显存,给GL_ARRAY_BUFFER这个vbo分配,空间为sizeof(vertices),从vertices变量的开头开始读取,GL_STATIC_DRAW告诉opengl如何使用这个数据,是否会经常更改这个数据
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)0);
//针对layout=0这个点操作,一个顶点三个数据xyz,GL_FLOAT类型,不归一化,跨度为3个坐标,从开头读
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 6 * sizeof(float), (void*)(sizeof(float) * 3));
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);

shader的编译与链接

GLuint vertexShader;
vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);

图片管理类封装
要实现图片管理,需要下一个stb_image.h放到项目目录中,地址为https://github.com/nothings/stb。
新建一个图片类,在这里我用的是前人写好的ffimage.h,传入一个图片的路径就可以读入这个图片并且解析构成i一个mage类的对象并返回。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值