OpenGL
文章平均质量分 64
正在注销账号
等风来不如追风去~
展开
-
OpenGL之纹理的常用方法
常用函数1.载入纹理 glTexImage2Dvoid glTexImage2D(GLenum target,GLint level,GLintinternalformat,GLsizei width,GLsizei height,GLintborder,GLenum format,GLenum type,void * data);参数:target:GL_TEXTURE_1D、GL_TEXTURE_2D、GL_TEXTURE_3D。Level:指定所加载的mip贴图层次。⼀一般我们都把这个原创 2020-07-18 11:00:50 · 1032 阅读 · 0 评论 -
OpenGL之矩阵相乘
单位矩阵主对角线上数据都是1,其余元素都是0,即为单元矩阵。向量 X 单元矩阵 = 向量 X 1,不会发生任何变化。向量与单元矩阵相乘的前提是:向量的列数 == 单元矩阵的行数矩阵分类行优先矩阵:一行一行读取。列优先矩阵:一列一列读取两者的关系行优先矩阵经过转置 即可的到列优先矩阵矩阵的点乘矩阵可以进行点乘的前提:两个矩阵的行列数相等矩阵A · 矩阵B = 矩阵C-规则: 矩阵A的第一个元素与矩阵B的第一个元素的乘积 = 矩阵C的第一个元素矩阵的叉乘矩阵可以进行叉乘的前原创 2020-07-16 22:18:28 · 1054 阅读 · 0 评论 -
OpenGL之视图变换与模型变换
视图变换从大局上考虑,在应用任何其他模型变换之前,必须先应用视图变换。-- 《OpenGL 超级宝典 第5版》视图变换是应用到场景中的第一种变换,通过物体/观察者在Z轴上的移动,确定场景中利于观察的位置。默认情况下,透视投影中的观察者位置处于原点(0,0,0),并沿着z轴负方向看向屏幕里面,一般通过moveForward方法来调整观察者位置,moveForward默认的朝向是-z轴,所以向屏幕里面移动传正数值,向屏幕外即+z轴,需要传负数值。模型变换模型变换不无外乎就是平移、旋转和缩放。在iOS核原创 2020-07-16 21:54:13 · 398 阅读 · 0 评论 -
OpenGL--正背面剔除、多边形偏移和深度测试
问题在 3D 图形的渲染过程中,我们是需要来决定哪部分是要对观察者 可见/不可见 的,对于不可见的部分,我们就没有渲染的必要了,要及早丢弃掉他们。例子:一间草屋,我们站在门前的时候,草屋的背后我们是看不到的,那么就不要渲染它了。否则就会出现下图中的场景(我们绘制一个立体图形后 对其进行旋转操作查看时,背面我们本应是看不到的面也被看到了),叫做“隐藏面消除”(Hidden surface elimination)。 (图中的)背面为什么黑色呢?光源着色器,想象一下我们在太阳光下,光打下来,朝阳和背阳的两原创 2020-07-11 19:28:45 · 468 阅读 · 0 评论 -
openGL之颜色混合
什么是颜色混合颜色混合就是两种或者多种透明度不为1的颜色混合在一起会产生一种新的颜色,这个过程就是颜色混合。在渲染过程中,颜色都是存放到颜色缓冲区中,两个重叠的图层,在同一个点存储到颜色缓冲区中的颜色只是最上层图层的颜色值。但是如果重叠的图层上面的图层是半透明的,这时就需要将这两个图层的颜色进行混合。什么时候使用颜色混合大前提:不能开启深度测试,如果开启了深度测试,那么颜色混合就会以深度为基础进行渲染。也就是说开启深度测试然后在开启颜色混合会发生问题,例如:有两个正方形A、B,A的深度为2、颜色不透原创 2020-07-11 18:46:15 · 474 阅读 · 0 评论 -
openGL-- 基本图元
图元类型图元描述GL_POINTS每个顶点在屏幕上都是单独点GL_POINTS每个顶点在屏幕上都是单独点GL_LINES每⼀对顶点定义⼀个线段GL_LINE_STRIP⼀个从第⼀个顶点依次经过每一个后续顶点而绘制的线条GL_LINE_LOOP和GL_LINE_STRIP相同,但是最后⼀个顶点和第⼀个顶点连接起来了.GL_TRIANGLES每3个顶点定义⼀个新的三⻆形GL_TRIANGLE_STRIP共用⼀个条带(strip)上的顶点的一组...原创 2020-07-09 22:59:25 · 206 阅读 · 0 评论 -
OpenGL——矩阵堆栈的入栈出栈详解及金字塔案例
什么是矩阵堆栈矩阵堆栈指的就是内存中专门用来存放矩阵数据的某块特殊区域。一般说来,矩阵堆栈常用于构造具有继承性的模型,即由一些简单目标构成的复杂模型。矩阵堆栈对复杂模型运动过程中的多个变换操作之间的联系与独立十分有利。堆栈的特点是先进后出,堆栈的默认深度是64矩形堆栈都有默认值,且默认值是单元矩阵。初始化一个矩阵堆栈矩阵堆栈中默认会有一个单元矩阵,但是你也可以初始化一个单元矩阵。//初始化一个单元矩阵modelViewMatrix.LoadIdentity();压栈 PushMatr原创 2020-07-09 22:50:40 · 1319 阅读 · 0 评论 -
浅谈图像撕裂问题及解决方法
图像撕裂问题及解决方法什么是图像撕裂就是一张图片在显示的时候分成了两半,即出现断层。如下图:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200704112847359.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MDkxODEwNw==,size_16,color_FFFFFF,原创 2020-07-04 12:48:32 · 7918 阅读 · 0 评论 -
OpenGL渲染架构解析
OpenGL渲染架构解析请看图:以上是OpenGL渲染架构流程图,接下来让我们来分析一下这张图的每一步。Client 和 Server此图中的Client和Server与平时大家在开发中遇到的前端和后台是不一样的。Client:是存储在CPU存储器中的代码,并在应用程序或者在内存的驱动程序中执行。Server:通过GPU不断的将数据块和命令组合起来送入顶点着色器和片元着色器。Shader(着色器)着色器的介绍在此篇文章中就不介绍,详情请查看博客:https://blog.csdn.ne原创 2020-06-20 19:08:38 · 293 阅读 · 0 评论 -
OpenGL专业名词解析
OpenGL专业名词解析OpenGL专业名词解析Content(上下文)OpenGL状态机Rendering(渲染)VertexArray(顶点数组)和VertexBuffer(顶点缓冲区)管线GLSL(OpenGL Shading Language)Rasterization(光栅化)纹理Blending(混合)Transformation(变换矩阵)Projection(投影矩阵)SwapBuffer(交换缓冲区/渲染上屏)OpenGL专业名词解析在音视频的处理中,不管是OpenGL、OpenGL原创 2020-06-20 12:14:30 · 469 阅读 · 0 评论 -
使用OpenGL绘画一个三角形
先看一下绘制三角形的思维导图,流程是从上至下依次执行。废话不多说,直接上代码。使用的语言是C++int main(int argc,char *argv[]){ //初始化GLUT库,这个函数只是传说命令参数并且初始化glut库 glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL); //GLUT窗口大小、原创 2020-07-02 13:19:47 · 300 阅读 · 0 评论 -
浅谈OpenGL的深度缓冲区
OpenGL的深度缓冲区什么是深度缓冲区所谓深度,就是在openGL坐标系中,像素点Z坐标距离摄像机的距离。摄像机可能放在坐标系的任何位置,那么,就不能简单的说Z数值越大或越小,就是越靠近摄像机。深度缓存区,就是⼀块内存区域,专⻔存储着每个像素点(绘制在屏幕上的)深度值,把一个距离观察平面(近裁剪面)的深度值(或距离)与窗口中的每个像素相关联。为什么需要深度缓冲区当我们在绘制有多个图像时,并且这多个图像有层叠覆盖,哪个图像先绘制,哪个就显示在下面,这样我们就需要考虑每个图像的绘制顺序。但是有了深原创 2020-06-30 22:51:00 · 435 阅读 · 0 评论 -
OpenGL设置三角形的法线
设置三角形法线表面法线是有方向的向量,代表表面或者顶点面对的方向(相反的方向)。M3DVector3f a = { 1.0f, -1.0f, 1.0f };M3DVector3f b = { -1.0f, -1.0f, -1.0f };M3DVector3f c = { 1.0f, -1.0f, -1.0f };M2DVector3f n;m3dFindNormal(n,a,b,c);...原创 2020-06-27 14:54:59 · 453 阅读 · 0 评论