随笔分类 -  OPENGL

摘要:1,下载glew和glfw,camke生成xcode工程文件,编译出.a文件 2, 拖拽glew和glfw各自的头文件+.a文件到工程。 3,运行,此时一直glfw报错 is not a fat file4,百度之上面的错误时生成文件时候选择编译平台不对,arm平台的东西不适用于x86,但是检查工程 阅读全文
posted @ 2017-08-29 14:38 细雨细语 阅读(385) 评论(0) 推荐(0)
摘要:1,为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。 Vclip=Mprojection⋅Mview⋅Mmodel⋅Vlocal//colors.vslayout (location = 阅读全文
posted @ 2017-08-04 14:26 细雨细语 阅读(380) 评论(0) 推荐(0)
摘要:1,Assimp可以导入几十种不同格式的模型文件(同样也可以导出部分模型格式)。只要Assimp加载完了模型文件,我们就可以从Assimp上获取所有我们需要的模型数据。Assimp把不同的模型文件都转换为一个统一的数据结构,所有无论我们导入何种格式的模型文,件,都可以用同一个方式去访问我们需要的模型 阅读全文
posted @ 2017-04-18 03:40 细雨细语 阅读(2168) 评论(0) 推荐(0)
摘要:1,聚光灯光源也会随着距离衰减,但它不是像点光源照向四面八方的而是像平行光那样有一个聚光方向(相当于取点光源的一个锥形的一小部分),聚光灯光源呈锥形,因此有一个新的属性,就是离光源越远,照亮的圆形区域会越大(光源位于锥形体的尖端)。例如:手电筒。图中垂直指向地面的黑色尖头指的是光源方向,这里想实现让光源只照亮两条红线夹角之间的区域,这里仍然可以使用点积来实现。我们可以定义光锥为光线方向L和红线之间... 阅读全文
posted @ 2017-04-17 14:51 细雨细语 阅读(1923) 评论(0) 推荐(0)
摘要:1,(环境光,漫射光和镜面反射光),这三种模型都是基于平行光的。平行光只是通过一个向量来表示,没有光源起点,因此它不会随着距离的增大而衰减点光源:它有光源起点而且有衰减效果,距离光源越远光线越弱。平行光的方向是恒定的,但点光源光线的方向是变化的,四处扩散。点光源向各个方向均匀照射,因此点光源的方向要通过计算物体到点光源之间的向量得到,这就是为什么要定义点光源的起点而不是它的方向。但3D图形中这个公... 阅读全文
posted @ 2017-03-28 01:07 细雨细语 阅读(629) 评论(0) 推荐(0)
摘要:1,我们在计算环境光的时候,光的强度是唯一的影响因素。然后处理漫射光的时候公式中加入了光的方向参数。镜面反射包含了上面所有的综合因素并且添加了一个新的元素:观察者的位置。镜面反射时光以一定角度照射到物体表面,同时会在法线的另一侧对称的角度上反射出去,如果观察者刚好在反射光线的路径上那么就会看到格外强烈的光线。镜面反射最终的结果是物体在从某个角度看上去会十分明亮,而移动开后这个光亮又会消失。现实中好... 阅读全文
posted @ 2017-03-24 18:51 细雨细语 阅读(2485) 评论(0) 推荐(0)
摘要:1,漫射光和环境光的主要不同是漫射光的特性依赖光线的方向,而环境光完全忽略光的方向。当只有环境光时整个场景是被均匀照亮的,而漫射光使物体朝向它的那一面比其他背向光的面要更亮。漫射光还增加了一个光强度的变化现象,光的强度大小还取决于光线和物体表面的角度。漫射光模型是建立在兰伯特余弦定律上的,光线的强度和观察者视线与物体表面法线夹角的余弦值成正比(夹角越大光强度越小)。注意这里略有变化,我么使用的是光... 阅读全文
posted @ 2017-03-24 16:06 细雨细语 阅读(774) 评论(0) 推荐(0)
摘要:1,光源颜色 * 物体表面颜色 => 得到反射回来的颜色再乘以环境光的强度因素从而得到最终的颜色值。2,获取键盘事件修改环境强度因素值。每次渲染的时候传入光源颜色值和环境强度因素值。glUniform3f(dirlight_colorlocation, directionallight.Color.x, directionallight.Color.y, directionallight.Col... 阅读全文
posted @ 2017-02-16 19:20 细雨细语 阅读(263) 评论(0) 推荐(0)
摘要:1,创建定点位置和纹理值纹理值范围[0,1],如果一张图长宽为512*256,则纹理点(0.5, 0.3)表示图片(512*0.5, 256*0.3)处位置。 glFrontFace(GL_CW); glCullFace(GL_BACK); glEnable(GL_CULL_FACE);glFron 阅读全文
posted @ 2017-02-03 17:43 细雨细语 阅读(454) 评论(0) 推荐(0)
摘要:1,使用键盘控制位置的移动没有使用glutSpecialFunc,glutKeyboardFunc因为我这个win32程序。2,相机类里面定义了相机的三个方向成员:位置(position),target向量和up向量前后移动是最简单的,因为这俩种移动方向和tartget向量在一条线上,我们只需要从起始位置加上或者减去一定数量的tartget向量即可实现前后移动,target向量本身不会变化。在加减... 阅读全文
posted @ 2017-02-02 00:50 细雨细语 阅读(572) 评论(0) 推荐(0)
摘要:1,相机相当于我们的眼睛,使对物体的操作都已相机(观察者)为视角。物体在世界坐标空间,使其乘以观察矩阵(View Matrix),转换到相机空间,然后我们就可以不管世界空间只需要考虑在相机空间中了。2,先在世界空间设置相机位置摄像机位置简单来说就是世界空间中一个指向摄像机位置的向量。 glm::ve 阅读全文
posted @ 2017-02-01 09:16 细雨细语 阅读(1544) 评论(0) 推荐(0)
摘要:1,We have finally reached the item that represents 3D graphics best - the projection from the 3D world on a 2D plane while maintaining the appearance of depth. A good example is a picture of a road or... 阅读全文
posted @ 2017-01-26 17:06 细雨细语 阅读(3309) 评论(1) 推荐(1)
摘要:1,多数情况下,你会想缩放物体来和3d世界相适应,旋转物体到合适的方向,移动物体到某个地方等等。到现在我们已经实践了每一次的单一图形变换。为了实现上面一系列的变换,我们需要对顶点位置左乘第一个变换矩阵,然后得到的结果再左乘下一个变换矩阵等等,将所有变换矩阵都左乘顶点位置之后实现多个变换。在shader中应用每一个变换矩阵实现所有的变换,但这样很低效,因为对于所有顶点这些矩阵都是一样的,只有顶点的位... 阅读全文
posted @ 2017-01-25 23:30 细雨细语 阅读(393) 评论(0) 推荐(0)
摘要:1,glDrawArrays顺序绘制,从指定偏移量依次扫描顶点缓冲区所有图元的每一个顶点。缺点是若一个是多个图元的共同顶点那么这个顶点就会在缓冲区出现多次。通过索引绘制类的函数,除顶点缓冲器(Vertices[])外额外还有一个索引缓冲(Indices[]),Indices存储着Vertices中顶点的索引值。Indices中重复顶点在顶点缓冲中的索引,不需要在Vertices中多次存储。2,顶点... 阅读全文
posted @ 2017-01-24 17:02 细雨细语 阅读(758) 评论(0) 推荐(0)
摘要:1,glutSwapBuffers();是基于console的,应为我是win32程序所以应该用ms自带的SwapBuffers(hdc);2, glutSwapBuff*ers执行双缓冲交换的时候,就隐形的执行了一次刷新操作,就不用使用glFlush,如果两个都使用了,会降低渲染帧率。 3,OpenGL在绘图上下文 Rendering Context (HGLRC)上绘图。程序运行过程中,可以... 阅读全文
posted @ 2017-01-23 18:15 细雨细语 阅读(1541) 评论(0) 推荐(0)
摘要:1,光栅器对从顶点着色器传来的变量插值。为了在屏幕上真正显示,必须将顶点着色器vs的输出变量设置为'gl_Position',gl_Position是一个保存着顶点齐次坐标的4维向量。XYZ分量被W分量所分割(称作视角分割,这个是教程的重点话题)并且XYZ分量上超出单位化盒子([-1,1])的部分会被裁剪掉。最终的结果会被转换到屏幕坐标系然后三角形(或者其他支持的图元类型)被光栅器渲染到屏幕上。光... 阅读全文
posted @ 2017-01-04 02:16 细雨细语 阅读(944) 评论(0) 推荐(0)
摘要:1,旋转变换,也就是能够实现让一个点沿着一个坐标轴旋转一定的角度。旋转变换将总是改变位置的其中两个坐标,第三个坐标保持不变,这意味着旋转的路径会保持在其中一个平面上:XY平面(绕Z轴旋转),YZ平面(绕X轴旋转)和XZ平面(绕Y轴旋转)。2,我们从最开始的原变换矩阵来看,回忆平移变换矩阵的样子,我们保持结果矩阵中V1,V2和V3保持原样的办法是让变换矩阵主对角线上的值都为'1',这样原向量一次都和... 阅读全文
posted @ 2017-01-04 01:31 细雨细语 阅读(460) 评论(0) 推荐(0)
摘要:1,矩阵相乘The most basic application of matrices is solving systems of linear equations.2x+1y = 3;4x+ 3y = 7;关键就是一句话,矩阵的本质就是线性方程式,两者是一一对应关系。如果从线性方程式的角度,理解矩阵乘法就毫无难度。 下面是一组线性方程式。 矩阵的最初目的,只是为线性方程组提供一个简写形式... 阅读全文
posted @ 2017-01-03 21:36 细雨细语 阅读(176) 评论(0) 推荐(0)
摘要:1,GLuint ShaderProgram = glCreateProgram();GLuint ShaderObj = glCreateShader(ShaderType);glShaderSource(ShaderObj, 1, p, Lengths);glCompileShader(ShaderObj);glAttachShader(ShaderProgram, ShaderObj);gl... 阅读全文
posted @ 2017-01-03 18:19 细雨细语 阅读(183) 评论(0) 推荐(0)
摘要:1,查看当前opengl版本2,glewthe OpenGL Extension Wrangler Library. GLEW helps you deal with the headache that can accompany the management of extensions in Op 阅读全文
posted @ 2017-01-03 15:37 细雨细语 阅读(175) 评论(0) 推荐(0)