OpenGL
文章平均质量分 57
YDDUONG
这个作者很懒,什么都没留下…
展开
-
OpenGL 摄像机
文章目录OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机的移动,产生一种 我们在移动,而不是场景在移动 的感觉要定义一个摄像机,我们需要它在世界空间中的位置、观察的方向、一个指向它右测的向量以及一个指向它上方的向量,我们实际上创建了一个三个单位轴相互垂直的、以摄像机的位置为原点的坐标系摄像机的方向,这里指的是摄像机指向哪个方向,指的是摄像机指向哪个方向: 用场景原点向量减去摄像机位置向量的结果就是摄像机的指向向量。由于我们知道摄像原创 2021-05-14 14:34:56 · 270 阅读 · 2 评论 -
OpenGL 渲染正方体
三维物体不是说相对2维多什么,是使用矩阵变化,来营造不同的视角,从而达到3维效果,这就涉及到了比较重要的总共有5个不同的坐标系统:局部空间(Local Space,或者称为物体空间(Object Space))世界空间(World Space)观察空间(View Space,或者称为视觉空间(Eye Space))裁剪空间(Clip Space)屏幕空间(Screen Space)将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(Vi原创 2021-05-13 17:52:08 · 1121 阅读 · 1 评论 -
OpenGL 矩阵与变换 让物体动起来
通过前面的学习,已经可以创建一个物体、着色、加入纹理,但它们都还是静态的物体,如何才能动起来?我们知道所看到的图象都是在渲染循环的while中,不停的绘制图象,才得以显示,所以我们就可以在每次绘图前,改变物体相关的属性,比如改变坐标位置,以达到让物体动起来。比如要实现物体移动,如何实现?可以先研究下面这个问题,物体在3维空间中都是又坐标点构成,假设其中一个点P为(x, y, z),同时让P向空间坐标系三个方向分别依次移动Tx, Ty, Tz个距离,我们就可以构造下面这个矩阵等式,而且式子右边的结果,刚好原创 2021-05-13 16:28:16 · 737 阅读 · 0 评论 -
error LNK2001: unresolved external symbol _glad_glClear
运行OpenGL程序时出现一堆这样错误:error LNK2001: unresolved external symbol _glad_glClear是因为在配置GLAD时,没有将glad.c文件添加到当前项目内解决办法:找到glad\src\glad.c文件,直接复制粘贴到工程内原创 2021-05-13 15:49:50 · 573 阅读 · 0 评论 -
OpenGL 纹理和贴图
纹理和贴图:可以为每个顶点添加颜色来增加图形的细节,从而创建出有趣的图像。但是,如果想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销,因为每个模型都会需求更多的顶点,每个顶点又需求一个颜色属性。纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节纹理也可以被用来储存大量的数据,这些数据可以发送到着色器上为了将纹理映射到 三角形上,需要指定纹理坐标,纹理坐标起始于(0, 0),也就是纹理图片的左下角,终始于(1, 1),即纹理图片的左下原创 2021-05-12 18:05:51 · 1512 阅读 · 0 评论 -
OpenGL量身定做数学库:GLM
OpenGL没有自带任何的矩阵和向量知识,但是有专门为OpenGL量身定做的数学库GLMGLM是OpenGL Mathematics的缩写,它是一个只有头文件的库,也就是说我们只需包含对应的头文件就行了,不用链接和编译下载地址:https://github.com/g-truc/glm下载整个项目,解压之后,将下面的glm文件夹放在第三方库的文件夹includes下GLM库从0.9.9版本起,默认会将矩阵类型初始化为一个零矩阵(所有元素均为0),而不是单位矩阵(对角元素为1,其它元素为0)。如果你原创 2021-05-12 12:50:35 · 1417 阅读 · 0 评论 -
图像库:stb_image.h
图像库:stb_image.h:https://github.com/nothings/stb/blob/master/stb_image.h下载这一个头文件,将它以stb_image.h的名字加入你的工程,并另创建一个新的C++文件,输入以下代码:#define STB_IMAGE_IMPLEMENTATION#include "stb_image.h"通过定义STB_IMAGE_IMPLEMENTATION,预处理器会修改头文件,让其只包含相关的函数定义源码,等于是将这个头文件变为一个 .cp原创 2021-05-12 12:40:26 · 2215 阅读 · 0 评论 -
OpenGL着色器语言(GLSL)
文章目录1. GLSL介绍2.输入变量3.GLSL基础数据类型4.多个着色器之间传输数据6.从应用程序中直接给片段着色器发送一个颜色7.输入多种不同类别值:位置和颜色8.自定义着色器类1. GLSL介绍GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。着色器的开头总是要声明版本,接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变量中2.输入变量每个输入变量也叫顶点属性(Vertex原创 2021-05-12 12:37:19 · 2126 阅读 · 0 评论 -
error X1504: invalid preprocessor command ‘version‘
添加着色器文本文件之后,运行出现:error X1504: invalid preprocessor command ‘version’或者 fatal error C1021: 无效的预处理器命令“version”:原因是IDE编译了这些文件,我们要知道不应该让你着色器文件被C++编译器编译,因为这只是资源文件,是用来读取的,在程序运行中被编译和链接解决方案:在文件夹内新建文件,再添加文件,不要建立C++源文件,再改后缀名...原创 2021-05-12 12:04:39 · 1593 阅读 · 3 评论 -
OpenGL 渲染一个三角形
本篇是通过OpenGL库,版本为3.3,渲染出一个三角形,效果如下:参考链接:https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/渲染流程如下:(GLFW配置正常写,可参考上篇博文:OpenGL 渲染一个窗口)创建顶点着色器程序并编译:glCreateShader(GL_VERTEX_SHADER)创建片段着色器程序并编译:glCreateShader(GL_FRAGMENT_SHAD原创 2021-05-12 11:46:29 · 593 阅读 · 0 评论 -
OpenGL 渲染一个窗口
本篇是通过OpenGL库,版本为3.3,渲染出一个窗口,效果如下:参考链接:https://learnopengl-cn.github.io/01%20Getting%20started/01%20OpenGL/https://learnopengl-cn.github.io/01%20Getting%20started/03%20Hello%20Window/早期的OpenGL使用立即渲染模式(Immediate mode,也就是固定渲染管线),这个模式下绘制图形很方便。OpenGL的大原创 2021-05-12 10:22:33 · 566 阅读 · 0 评论 -
OpenGL图形渲染管线理论和一些术语
参考链接:https://learnopengl-cn.github.io/01%20Getting%20started/04%20Hello%20Triangle/https://learnopengl-cn.github.io/01%20Getting%20started/10%20Review/https://blog.csdn.net/heyuchang666/article/details/50016865OpenGL实现图像绘制:在OpenGL中,任何事物都在3D空间中,而屏幕.原创 2021-05-12 09:26:36 · 272 阅读 · 1 评论 -
error LNK2019: 无法解析的外部符号 gladLoadGLLoader
运行OpenGL程序时出现:error LNK2019: 无法解析的外部符号 gladLoadGLLoader是因为在配置GLAD时,没有将glad.c文件添加到当前项目内解决办法:找到glad\src\glad.c文件,直接复制粘贴到工程内原创 2021-05-11 13:07:45 · 1616 阅读 · 1 评论 -
fatal error C1189: #error: OpenGL header already included, remove this include, glad already provid
编程OpenGL程序时出现的错误:fatal error C1189: #error: OpenGL header already included, remove this include, glad already provides it:头文件的顺序错误:GLAD的头文件包含了正确的OpenGL头文件(例如GL/gl.h),所以需要在其它依赖于OpenGL的头文件之前包含GLAD;所以要确认是在包含GLFW的头文件之前包含了GLAD的头文件。将:#include <GLFW/glfw3原创 2021-05-11 13:02:06 · 1257 阅读 · 0 评论 -
OpenGL 配置VS2019环境开发
OpenGL陆陆续续学习的大概有一周OpenGL,初次入门,先别慌,OpenGL网上有不少资料,但百分之90资料均来自Joey de Vries的OpenGL的教程,我自己也是。教程地址:https://learnopengl-cn.github.io/,后续的文章也都是相关学习笔记加上自己的理解,方便回看。参考链接:https://learnopengl-cn.github.io/01%20Getting%20started/02%20Creating%20a%20window/配置流程下载O原创 2021-05-11 12:55:00 · 918 阅读 · 1 评论