![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenGL
文章平均质量分 96
弹吉他的小刘鸭
Happiness is nothing but self-building.
展开
-
OpenGL笔记(一)
笔记(答案见后)1.glEnalbleVertexAttribArray函数的作用?2.创建VBO的一系列操作?3.具体开启了VertexAttribArray后,应该如何设置呢?4.GLunit是什么意思?5.补充完成昨天的没完成的第三个问题。6.什么是shader?什么是GPU?7.具体画三角形的函数?8.glEnalbeVertexAttribArray(0)和glDisab...原创 2019-01-26 16:23:39 · 1762 阅读 · 2 评论 -
OpenGL笔记(二)
笔记(答案见后)2019.1.151. 如何配置OpenGL库?2. 回顾一下,C++中,从磁盘加载数据到CPU有哪些步骤?3. 在写shader的时候,用于检查错误的时候除了要用到glGetShaderiv(),还会用到什么函数用来报错?4. char log[512] 如何cout整个字符数组?5. 两个正交的向量叉乘会产生什么?6. 在GLSL中,用vec4*vec4可以吗?...原创 2019-01-26 16:27:18 · 523 阅读 · 1 评论 -
OpenGL笔记(三)
笔记1. 思考回顾一下,OpenGL中使用贴图texture的步骤。2. texture贴图的环绕方式有哪四种?3. OpenGL 提供了一个函数,用来关闭绘图之后出来的鼠标,这样程序执行之后鼠标就不见了,而且鼠标被锁定在窗口范围内,不得跳出,所以这是FPS类游戏惯用的东西。4. deltatime是什么?为什么一定要用这个?5. callback翻译过来是回调,所以什么是回调函数?6...原创 2019-02-16 10:37:00 · 221 阅读 · 0 评论 -
OpenGL笔记(九)
一. 阴影贴图目前并没有一个完全成熟的实现阴影的算法,先介绍一个比较简单实用的方法:阴影贴图shadow mapping:is quite easily extended into more advanced algorithms (like Omnidirectional Shadow Maps and Cascaded Shadow Maps).阴影贴图的原理很简单,之前的depth...原创 2020-03-01 15:07:40 · 324 阅读 · 0 评论 -
OpenGL简单的demo出现内存泄露
今天学习阴影贴图的时候莫名其妙发现内存泄露,process memory在程序运行的时候一直飞速增长我对自己用的所有的new关键字进行了查找,没有发现问题后来发现是OpenGL本身API的原因:{ //我在一个局部域里面进行了以下操作 glGenVertexArrays(1, &quadVAO); glGenBuffers(1, &quadVBO); //但是没调...原创 2020-02-25 01:07:28 · 1135 阅读 · 0 评论 -
OpenGL笔记(八)
几何着色器几何着色器可以用来改变顶点着色器的primitive,比如在屏幕上画四个点,可以利用几何着色器将其改为任意图元。下面举一个几何着色器的例子,屏幕上画了四个点,利用几何着色器可以将其改成四条线段:#version 330 corelayout (points) in; //顶点着色器输入的图元为点layout (line_strip, max_vertices =...原创 2020-02-19 00:30:36 · 430 阅读 · 0 评论 -
源.obj : error LNK2001: unresolved external symbol __imp___glewActiveTexture
今天上传自己的OpenGL源代码到GIthub上后,报了标题的错误。查资料后发现,unresolved external symbol 是因为只有该函数的声明(.h文件)但是没有该函数的定义,正常情况下,去把对应的Lib文件加入库中即可具体把对应lib文件链接进工程的步骤可参考:https://blog.csdn.net/alexhu2010q/article/details/866584...原创 2019-12-24 17:02:52 · 576 阅读 · 0 评论 -
OpenGL笔记(七)
Advanced Data除了基本的往OpenGL的buffer里面填充的API:glBufferData,再介绍几个相关API。glBufferSubData: 可以在特定类型buffer的特定位置,插入数据,可用于动态添加buffer数据,而不用重新分配空间。此函数需要在有具体Buffer内存时,才可使用,所以该函数要在glDataBuffer调用之后。glBufferSubDat...原创 2019-11-05 13:06:19 · 333 阅读 · 0 评论 -
OpenGL笔记(六)
1. 面剔除默认OpenGL中的正面是逆时针的图元顺序,通过剔除反面的渲染,可以提高GPU的效率。如图所示,从眼睛看过去,在给三角形添加顺序后,只有眼睛看的角度,为逆时针才会显示。值得注意的是,顶点的绘制顺序是在光栅化阶段,在片元着色器之后,所以说完全是在MVP矩阵都固定以后进行的。PS:面剔除技术适用于封闭模型,我的理解是,封闭模型上面的三角形都是从外往里看,逆时针的方向的。关于面剔...原创 2019-10-24 19:11:07 · 851 阅读 · 0 评论 -
OpenGL笔记(五)
1.下列代码是同时用两组VBO和VAO进行绘制,这里是设置界面,一个VAO挖一个VBO的数据,挖完存储起来,再挖下一组VBO。 unsigned int VBO[2],VAO[2]; glGenBuffers(2, VBO); glGenVertexArrays(2, VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO[0]); glBufferDa...原创 2019-09-25 18:50:00 · 372 阅读 · 0 评论 -
OpenGL笔记(四)
笔记2019.2.261. Mac里的Xcode添加个着色器文件都那么麻烦, 具体配置方式参考https://www.youtube.com/watch?v=aA112viAx7c&list=PLRtjMdoYXLf6zUMDJVRZYV-6g6n62vet8&index=142. windows下和Linux下的抛出异常用法并不相同,记住这一点。3. glGenBuff...原创 2019-04-08 15:05:38 · 1019 阅读 · 0 评论 -
OpenGL常犯的错误及查错方法总结
由于OpenGL在着色器方面,C++没有对应的查找错误的方法,在此简单总结一下纠错方法:1.检测着色器能否编译成功,即在语法上能不能通过。这里要用到glGetShaderiv()函数,具体用法如下,可以用来检测编译状态的。int success1 = 0; glGetShaderiv(vertexShader,GL_COMPILE_STATUS,&success1); if(...原创 2019-03-02 12:12:47 · 2368 阅读 · 0 评论