c++
文章平均质量分 92
你的晚餐
这个作者很懒,什么都没留下…
展开
-
opengl学习之投光物
平行光当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向。当我们使用一个假设光源处于无限远处的模型时,它就被称为定向光,因为它的所有光线都有着相同的方向,它与光源的位置是没有关系的。定向光非常好的一个例子就是太阳。太阳距离我们并不是无限远,但它已经远到在光照计算中可以把它视为无限远了。所以来自太阳的所有光线将被模拟为平行光线。因为所有的光线都是平行的,所以物体与光源的相对位置是不重要的,因为对场景中每一个物体光的方向都是原创 2020-09-16 14:31:22 · 164 阅读 · 0 评论 -
vs2019中opengl之光照贴图
着色器ColorVertexShader.glslColorFragmentShader.glslLightcubeVertexShader.glslLightcubeFragmentShader.glslcontainer2.pngcontainer2_specular.png主程序为Shader.hCamera.h#include <glad/glad.h>#include <GLFW/glfw3.h>#define STB_IMAGE_IMPLEMENT原创 2020-09-11 11:08:46 · 361 阅读 · 0 评论 -
vs2019中opengl学习之材质
修改着色器代码ColorVertexShader.glsl#version 330 corelayout (location = 0) in vec3 aPos;layout (location = 1) in vec3 aNormal;out vec3 FragPos;out vec3 Normal;uniform mat4 model;uniform mat4 view;uniform mat4 projection;void main(){ FragPos = ve原创 2020-09-10 15:59:33 · 238 阅读 · 0 评论 -
vs2019中opengl之光照颜色
创建四个着色器ColorVertexShader.glsl#version 330 corelayout (location = 0) in vec3 aPos;uniform mat4 model;uniform mat4 view;uniform mat4 projection;void main(){ gl_Position = projection * view * model * vec4(aPos, 1.0);}"ColorFragmentShader.glsl#v原创 2020-09-10 14:50:55 · 289 阅读 · 0 评论 -
vs2019中opengl之摄像机
我们会将摄像机的注视点保持在(0, 0, 0)。我们需要用到一点三角学的知识来在每一帧创建一个x和z坐标,它会代表圆上的一点,我们将会使用它作为摄像机的位置。通过重新计算x和y坐标,我们会遍历圆上的所有点,这样摄像机就会绕着场景旋转了。我们预先定义这个圆的半径radius,在每次渲染迭代中使用GLFW的glfwGetTime函数重新创建观察矩阵,来扩大这个圆。float radius = 10.0f;float camX = sin(glfwGetTime()) * radius;float cam原创 2020-09-10 11:19:08 · 449 阅读 · 0 评论 -
vs2019中opengl之坐标系统
OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,y,z坐标都应该在-1.0到1.0之间,超出这个坐标范围的顶点都将不可见。我们通常会自己设定一个坐标的范围,之后再在顶点着色器中将这些坐标变换为标准化设备坐标。然后将这些标准化设备坐标传入光栅器(Rasterizer),将它们变换为屏幕上的二维坐标或像素。将坐标变换为标准化设备坐标,接着再转化为屏幕坐标的过程通常是分步进行的,也就是类似原创 2020-09-10 08:55:14 · 534 阅读 · 0 评论 -
vs2019中opengl学习之变换操作
GLM是OpenGL Mathematics的缩写,它是一个只有头文件的库,也就是说我们只需包含对应的头文件就行了,不用链接和编译。GLM可以在它们的网站上下载。把头文件的根目录复制到你的includes文件夹,然后你就可以使用这个库了。我使用的版本为https://download.csdn.net/download/Zhangle11/12827615编辑顶点着色器#version 330 corelayout (location = 0) in vec3 aPos;layout (lo原创 2020-09-09 18:04:36 · 169 阅读 · 0 评论 -
opengl学习之纹理的创建
接上篇我们创建一个stb_image.h的文件可在以下链接找到https://github.com/nothings/stb/blob/master/stb_image.h编辑顶点着色器#version 330 corelayout (location = 0) in vec3 aPos;layout (location = 1) in vec3 aColor;layout (location = 2) in vec2 aTexCoord;out vec3 ourColor;out ve原创 2020-09-09 15:32:33 · 303 阅读 · 0 评论 -
opengl学习之如何创建我们自己的着色器类
创建Shader.h的头文件#ifndef SHADER_H#define SHADER_H#include <glad/glad.h>; // 包含glad来获取所有的必须OpenGL头文件#include <string>#include <fstream>#include <sstream>#include <iostream>class Shader{public: // 程序ID unsigned int ID;原创 2020-09-02 14:17:15 · 822 阅读 · 0 评论 -
创建两个着色器程序,第二个程序使用一个不同的片段着色器,输出黄色;再次绘制这两个三角形,让其中一个输出为黄色
#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow* window);// 设置const unsigned int SCR_WIDTH = 800;const unsigned原创 2020-09-01 16:16:27 · 1023 阅读 · 2 评论 -
创建相同的两个三角形,但对它们的数据使用不同的VAO和VBO
其中三角形坐标可自行绘制#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>void framebuffer_size_callback(GLFWwindow* window, int width, int height);void processInput(GLFWwindow* window);// 设置const unsigned int SCR_WIDTH = 800;co原创 2020-09-01 15:36:34 · 316 阅读 · 1 评论 -
openGL练习题之添加更多顶点到数据中,尝试绘制两个彼此相连的三角形
先将各个点的坐标进行计算,然后写入代码中在这里我使用的是索引缓冲对象(Element Buffer Object,EBO,也叫Index Buffer Object,IBO)。和顶点缓冲对象一样,EBO也是一个缓冲,它专门储存索引,OpenGL调用这些顶点的索引来决定该绘制哪个顶点。代码如下所示#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostream>void framebuffer_si原创 2020-08-31 10:02:02 · 353 阅读 · 0 评论 -
VS2019 最简单的配置glfw+glad教程以及画出三角形
https://download.csdn.net/download/Zhangle11/12766169将配置文件下载后创建一个文件夹专门放入:创建一个项目工程右击属性将glad.c添加进来配置完成下面展示代码可参见https://learnopengl.com/Getting-started/Hello-Triangle#include <glad/glad.h>#include <GLFW/glfw3.h>#include <iostrea原创 2020-08-28 10:52:30 · 1552 阅读 · 2 评论 -
MFC做一个销售管理系统
创建一个MFC应用程序选择将勾在网上下载两个ico文件,放入项目文件夹中打开项目中资源视图中icon,点击添加资源将那两个icon文件添加进来。然后将两个icon文件属性中的id修改为以下点击类视图在CMainFrame下的OnCreate下添加以下代码:在类视图下的CSaleSystemDoc::OnNewDocument里添加以下代码:点击运行看看效果具体后续代码请见https://download.csdn.net/download/Zhangle11/12613998...原创 2020-08-24 10:38:06 · 1441 阅读 · 4 评论