OpenGL
悠然少年心
做自己感兴趣的事
展开
-
OpenGL第十一章 多光源
这一章是对前面所学光线的总结//MultipleLights#include "Shader.h"#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h"#include <glad/glad.h>#include <GLFW/glfw3.h>#include <glm/glm.hpp>#include <glm/gtc/matrix_transform.hpp>#include <g原创 2022-05-31 17:26:59 · 453 阅读 · 0 评论 -
OpenGl第十章 投光物
投射光源的物体就是投光物平行光(Directional Light)点光源(Point Light)聚光(Spotlight)平行光由于平行光所有光源都是平行的所以"光源和物体的相对位置"并不是那么重要,我们只需要定义一个"方向向量direction"来模拟平行光//fs#version 330 coreout vec4 FragColor;struct Material { sampler2D diffuse; sampler2D specular;原创 2022-05-30 17:30:00 · 221 阅读 · 0 评论 -
OpenGl第九章 光照贴图
//LightingMaps#include "Shader.h"#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h"#include <glad/glad.h>#include <GLFW/glfw3.h>#include <glm/glm.hpp>#include <glm/gtc/matrix_transform.hpp>#include <glm/gtc/type_ptr.h原创 2022-05-26 09:01:25 · 179 阅读 · 1 评论 -
OpenGL错误指南
物体变成不规则三角形集合请检查顶点属性的设置原创 2022-05-25 00:02:51 · 163 阅读 · 0 评论 -
OpenGL第八章 材质material
当描述一个表面时,我们可以分别为三个光照分量定义一个材质颜色(Material Color):环境光照(Ambient Lighting)漫反射光照(Diffuse Lighting)镜面光照(Specular Lighting)反光度(Shininess)通过为每个分量指定一个颜色,我们就能够对表面的颜色输出有细粒度的控制了。现在,我们再添加一个反光度(Shininess)分量,结合上述的三个颜色,我们就有了全部所需的材质属性了:ambient材质向量定义了在环境光照下这个表面反射的是什么颜色原创 2022-05-24 17:01:09 · 692 阅读 · 0 评论 -
OpenGL第七章 基础光照
这里的基础光照使用的是:冯氏光照模型冯氏光照模型分为三部分1环境光照(Ambient)把环境光照添加到场景里非常简单。我们用光的颜色乘以一个很小的常量环境因子,再乘以物体的颜色,然后将最终结果作为片段的颜色2漫反射(diffuse)我们知道两个单位向量的夹角越小,它们点乘的结果越倾向于1。当两个向量的夹角为90度的时候,点乘会变为0。这同样适用于θ,θ越大,光对片段颜色的影响就应该越小。那么此时我们就要一个法线方向和一个指向光源的方向(图形学里面光照方向指的是从每一个世界坐标出发指向原创 2022-05-24 10:43:59 · 564 阅读 · 0 评论 -
现代图形学入门
全文作为入门图形学的笔记 学习跟踪GAMES101-现代计算机图形学入门-闫令琪https://www.bilibili.com/video/BV1X7411F744?p=2ss学习之前了解一些基本的线性代数知识只有当左边的列数=右边的行数(n=n)时矩阵可以相乘这是一个三行两列的矩阵乘以两行四列的矩阵=三行四列的矩阵9=1x3+2x3 27=1x6+3x7 33=1x9+3x8 13=1x4+3x319=5x3+2x2 44=5x6+2x7 61=5x9+2x8 26=5x4+原创 2021-11-03 17:15:16 · 1309 阅读 · 0 评论 -
OpenGl第六章 摄像机
我们使用摄像机移动的时候需要使我们的世界坐标向摄像机移动的反方向移动造成一种我们摄像机在移动的错觉第一步和在unity和UE中使用摄像机一样我们需要定义一个摄像机的位置glm::vec3 cameraPos = glm::vec3(0.0f, 0.0f, 3.0f);这张图很好的反应了我们的摄像机与坐标轴的关系 当我们需要向后移动的时候,我们是沿着Z轴的正方形移动的第二部摄像机方向:下一个需要的向量是摄像机的方向,这里指的是摄像机指向哪个方向。现在我们让摄像机指向场景原点:(0, 0, 0)。原创 2022-05-19 01:52:35 · 1225 阅读 · 0 评论 -
OpenGL第五章坐标系统
这一节对shader类添加了一些函数在顶点坐标里面使用model view projection变换需要依次乘以model view projection矩阵注意矩阵的连续乘法是从右到左结合的glm::mat4 model = glm::mat4(1.0f);//定义一个单位矩阵projection = glm::perspective(glm::radians(45.0f), (float)SCR_WIDTH / (float)SCR_HEIGHT, 0.1f, 100.0f);//perspe原创 2022-05-19 00:22:28 · 451 阅读 · 0 评论 -
OpenGL第四章变换
使用之前需要用到一个GLM库就是opengl的函数库下载之后在项目属性中配置如果配置出错就把他放到和你项目一个文件夹里面GLM下载提取码:984h要选父文件夹不要点进去选子文件夹glm不要选这个//Transformation.cpp//使用纹理单元#include "Shader.h"#include <GLFW/glfw3.h>#include <glad/glad.h>#include<iostream>#define STB_IMA原创 2022-05-16 23:57:42 · 124 阅读 · 0 评论 -
OpenGL第三章纹理 texture
#include "Shader.h"#include <GLFW/glfw3.h>#include <glad/glad.h>#include<iostream>#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h"float vertices[] = { // ---- 位置 ---- ---- 颜色 ---- - 纹理坐标 - 0.5f, 0.原创 2022-05-15 21:34:52 · 523 阅读 · 0 评论 -
OpenGL的环境配置
第一步下载glad以及glfw点击下载glad选择核心模式版本选择3.3以上的点击下载glfw根据系统下载32位还是64位两个包下载解压出来之后就是这个样子打开VS新建一个空项目右键项目名称打开属性这里配置和平台选择所有配置 和所有平台 然后点击VC++目录 点击包含目录 打开之后选择编辑点击这个文件夹菜单 要勾选从父级货项目默认设置继承选择刚刚glfw文件夹里面的include文件夹 以及glad包里面的include文件夹之后点击这个库目录选择glfw包里面.原创 2022-05-13 20:59:30 · 5391 阅读 · 5 评论 -
OpenGl第二章着色器与更多属性以及创建shader类来管理着色器
#include <glad/glad.h>#include <GLFW/glfw3.h>#include<iostream>using namespace std;void processInput(GLFWwindow* window){ if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) glfwSetWindowShouldClose(window, true);原创 2022-05-13 13:43:47 · 328 阅读 · 0 评论 -
OpenGL第一章基础三角形与索引
/*整个流程// ..:: 初始化代码(只运行一次 (除非你的物体频繁改变)) :: .. // 1. 绑定VAOglBindVertexArray(VAO);// 2. 把顶点数组复制到缓冲中供OpenGL使用glBindBuffer(GL_ARRAY_BUFFER, VBO);glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);// 3. 设置顶点属性指针告诉GPU怎样使用这些顶点glVert原创 2022-05-13 09:59:23 · 415 阅读 · 0 评论