
opengl
文章平均质量分 62
泡泡茶壶Wending
男
展开
-
glOrtho与gluOrtho2D 的作用
函数设置二维正交裁剪区域。相当于调用 zNear = -1 且 zFar = 1 的。left, right 指定可视空间的左边界和右边界bottom, top 指定可视空间的下边界和上边界zNear:距离较近的深度剪裁平面。zFar:到更远深度剪裁平面的距离。正交投影的裁剪空间如图:更直观的说法,g,调用gluOrtho2D后,我们代码中要传给着色器的顶点坐标数据,就不再是规范化的了(-1~1),不再是-1~1;原创 2023-08-13 20:59:57 · 674 阅读 · 0 评论 -
OpenGL之VAO,VBO和EBO
缓冲对象是OpenGL管理的一段内存,为了与我们CPU的内存区分开,一般称OpenGL管理的内存为:显存。显存,也就是显卡里的内存。显卡访问显存比较快,而Buffer Object,就是由OpenGL维护的一块显存区域。比如说在一块显存为2G的显卡里,分配了128K大小的内存区域给OpenGL使用,这个128K大小的内存区域,就叫一个Buffer Object。由于显卡访问显存,比访问内存(CPU里的内存区域)要快很多。而且显卡做运算,一般都是访问显存的数据,然后运算得到结果,并把结果也都保存在显存中。转载 2023-06-08 17:42:44 · 6277 阅读 · 0 评论 -
【转】关于Mip贴图
当摄像机的视点前后移动,比如游戏中的人物移动,距离人物较远的画面纹理如果使用的贴图大小和距离较近的纹理大小相同,那么我们将无法分辨远近距离。要想解决这样的问题,就需要将距离视点远的图形纹理等比缩小,这时候,我们就需要一种缩小纹理的技术,这也就是Mip的需求。为了减少这个问题造成的影响,我们可以将贴图提前进行滤波,并且将滤波后的图像存储为连续的,低分辨率的版本(原始图像是全分辨率),这个动作就是Mip贴图。转载 2023-05-17 16:36:33 · 562 阅读 · 0 评论 -
【转】OpenGL中的基本图元
OpenGL中一共有7种基本的图元,代表了7种基本的绘制方式,根据图元的不同,可以将OpenGL中构成图形的三种基本图形扩展成其他的图形。转载 2023-05-17 15:25:04 · 1361 阅读 · 0 评论 -
OpenGL 与 OpenGL ES区别
Cocos2d-x底层的api是opengl es,Cocos2d-x基于OpenGL ES进行图形渲染,从而让移动设备的GPU性能发挥到极致。OpenGL 与 OpenGL ES 的主要区别,在于OpenGL ES 主要针对嵌入式设备使⽤。opengl es是opengl的嵌入式版本,原创 2023-05-17 15:49:08 · 1508 阅读 · 1 评论 -
glsl语法之变量限定符
varying类型变量是 vertex shader 与 fragment shader 之间的信使,一般我们在 vertex shader 中修改它然后在fragment shader使用它,但不能在。和C语言类似,被const限定符修饰的变量初始化后不可变,除了局部变量,函数参数也可以使用const修饰符.但要注意的是结构变量可以用const修饰,//结构变量可以用const修饰。attribute变量是`全局`且`只读`的,它只能在vertex shader中使用,只能与浮点数,向量或矩阵变量组合,原创 2022-08-24 20:06:24 · 484 阅读 · 0 评论 -
OpenGL代码解读,创建shader,并使用
【代码】OpenGL代码解读,创建shader,并使用。原创 2022-08-19 16:17:14 · 444 阅读 · 0 评论 -
glGetUniformLocation,glUniform4f
代码】glGetUniformLocation。原创 2022-07-20 11:55:09 · 337 阅读 · 0 评论 -
学习笔记(15):OpenGL-压缩纹理
立即学习:OpenGL-15-压缩纹理-张立铜的在线视频教程-优快云程序员研修院OPGL压缩文理:好处:1.传输效率很高因为压缩率很大,压缩后内存降低了6倍或12倍。2.这个格式是由硬件支撑的,它在绘制时候效率非常高。OPGL ES的压缩纹理有常见的如下几种实现:1.ETC1(Ericsson texture compression)2.PVRTC(PowerVR texture compression)3.ATITC(ATI texture compression)原创 2020-05-30 22:31:42 · 999 阅读 · 0 评论 -
GPU渲染管线概述
渲染流程可分为:应用程序阶段(CPU)->几何阶段(GPU)->光栅化阶段(GPU)原创 2022-02-22 14:48:26 · 2171 阅读 · 0 评论 -
在OpenGL顶点着色器中,w是什么,为什么除以w?(In OpenGL vertex shaders, what is w, and why do I divide by it?)
顶点数据经过mvp变换下一步先要divide by w用来标准化设备坐标:标准化设备坐标是一个x、y和z值在-1.0到1.0的一小段空间。任何落在范围外的坐标都会被丢弃/裁剪,不会显示在你的屏幕上。与通常的屏幕坐标不同,y轴正方向为向上,(0, 0)坐标是这个图像的中心,而不是左上角。最终你希望所有(变换过的)坐标都在这个坐标空间中,否则它们就不可见了。顶点着色器代码:void main(void){ vec4 clipCoord = glModelViewProjectionmat..原创 2020-08-10 12:48:59 · 1345 阅读 · 0 评论 -
学习笔记(12):3D图形理论-投影和观察矩阵
课程实现一套软3D,即不依赖任何第三方API(OpenGL,D3D,GDI)等。 课程从建立建立颜色缓冲区,绘制点,绘制线,绘制面,绘制图片,建立纹理,作图形的旋转,图像的混合,建立三维坐标系,实现模型矩阵,投影矩阵,观察矩阵,深度缓冲区等三维核心功能,实现基本的OpenGL核心绘制功能,让开发者从底层,全面的认识3D,为优化,开发出更好的游戏奠定基础。......原创 2020-05-28 22:57:27 · 1027 阅读 · 0 评论 -
glPushMatrix和glPopMatrix
glPushMatrix函数将当前矩阵压入堆栈,使得之后的操作不受之前矩阵变换的影响,都是相对于原始的世界坐标系进行操作。glPopMatrix将与之最近的一个glPushMatrix压入堆栈的矩阵取出,使得之前的矩阵变换对其后的运算有效。这两个函数的配合使用可以使得两者之间的矩阵操作不受之前生成的变换矩阵的影响,并且两者之间的矩阵操作也不会对主体的矩阵变换产生影响。...转载 2019-08-07 14:57:43 · 506 阅读 · 0 评论 -
OpenGL API 之glGen*形式、glBind*形式、和glBufferData()的理解
先举例来说:void glGenVertexArrays(GLsizei n,GLuint *arrays);返回n个未使用的对象名到数组arrays中,用作顶点数组对象。返回的名字可以用来分配更多缓存对象,并且它们已经使用未初始化的 顶点数组集合的默认状态 进行了数值初始化。很多OpenGL命令都是glGen*的形式,它们负责分配不同类型的OpenGL对象的名称。这里的名称类似C语言中的一个...原创 2019-10-22 12:23:22 · 1301 阅读 · 0 评论 -
为什么要引入4D齐次坐标?
https://blog.youkuaiyun.com/saltriver/article/details/79680364矩阵乘法:计算规则是,第一个矩阵第一行的每个数字(2和1),各自乘以第二个矩阵第一列对应位置的数字(1和1),然后将乘积相加( 2 x 1 + 1 x 1),得到结果矩阵左上角的那个值3。...转载 2019-04-23 16:36:58 · 515 阅读 · 0 评论 -
glFlush与glutSwapBuffers区别
1 glFlush就是强制刷新吧,要知道OPENGL是使用一条渲染管线线性处理命令的,一般情况下,我们提交给OPENGL的指令并不是马上送到驱动程序里执行的,而是放到一个缓冲区里面,等这个缓冲区满了再一次过发到驱动程序里执行;很多时候只有几条指令是填充不满那个缓冲区的,这就是说这些指令根本没有被发送到驱动里,所以我们要调用glFlush来强制把这些指令送到驱动里进行处理。2glutS...转载 2019-06-23 22:44:52 · 2771 阅读 · 0 评论 -
《OpenGL编程指南》收藏的学习网址
https://yq.aliyun.com/articles/212917?spm=a2c4e.11153940.blogcont212814.13.501c37d5c4KWZlhttps://www.cnblogs.com/MenAngel/p/5630475.html转载 2019-01-04 10:56:00 · 575 阅读 · 0 评论 -
glViewport()函数和glOrtho()函数的理解
在OpenGL中有两个比较重要的投影变换函数,glViewport和glOrtho。glOrtho是创建一个正交平行的视景体。 一般用于物体不会因为离屏幕的远近而产生大小的变换的情况。比如,常用的工程中的制图等。需要比较精确的显示。 而作为它的对立情况, glFrustum则产生一个透视投影。这是一种模拟真是生活中,人们视野观测物体的真实情况。例如:观察两条平行的火车到,在过了很远之后,这两条...原创 2019-02-14 16:21:20 · 869 阅读 · 0 评论 -
gluOrtho2D作用
glViewport(0, 0, WIDTH, HEIGHT);gluOrtho2D是用来指定屏幕区域对应的模型坐标范围,我们自己所绘制的图形的坐标必须在这个范围内,不然不能看到自己绘制的图形。在没调用gluOthor2d函数之前,窗口的中心坐标为(0,0);调用了这个函数之后窗口的中心坐标不再是(0,0)了,窗口的左下角才是(0,0)。在没调用gluOthor2d函数之前,坐标范围是...原创 2019-02-01 12:37:36 · 19766 阅读 · 7 评论 -
着色器与OpenGL
着色器与OpenGL 现代OpenGL渲染管线严重依赖着色器来处理传入的数据。如果不使用着色器,那么用OpenGL可以做到的事情可能只有清除窗口内容了,可见着色器对于OpenGL的重要性。在OpenGL 3.0版本以前(含该版本),或者如果你用到了兼容模式(compatibility prof?ile)环境,OpenGL还包含一个固定功能管线(f?ixed-function pipel...转载 2019-01-04 11:04:30 · 261 阅读 · 0 评论 -
opengl状态机
OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为OpenGL上下文(Context)。我们通常使用如下途径去更改OpenGL状态:设置选项,操作缓冲。最后,我们使用当前OpenGL上下文来渲染。假设当我们想告诉OpenGL去画线段而不是三角形的时候,我们通过改变一些上下文变量来改变OpenGL状态,从而...转载 2019-01-03 16:12:40 · 930 阅读 · 1 评论 -
opengl蓝宝书学习笔记1_3D图形技术和术语介绍
1将数学和图形数据转换成3D空间图像的操作叫做渲染(Rending)渲染过程中出现的其他一些属性和操作:1.1变换(Transformation)和投影(Projection) 顶点(Vertex),能够通过一种称为变换矩阵(Transformation Matrix)的数学结构进行旋转,另外还有一种矩阵叫做投影矩阵(Projection Matrix),用于将3D坐标...原创 2018-11-16 17:24:56 · 287 阅读 · 0 评论 -
OpenGL超级宝典学习笔记——显示列表
在先前的章节中,我们已经讨论OpenGL基本的一些渲染技术。这些基本的技巧足够渲染简单的图像,然而在渲染精细的画面逼真的画面的时候(非常多的顶点和纹理),如果使用之前的方式渲染(立即模式)速度就很慢了,考虑到性能的原因(特别是实时渲染)我们需要以更快的方式完成画面的渲染。精细的画面有大量的数据需要CPU和GPU去处理,而且把数据从应用程序发送到显卡有带宽和显存的瓶颈。显示列表到目前为止,我...转载 2018-11-14 16:19:59 · 686 阅读 · 0 评论 -
glMatrixMode()函数和glLoadIdentity()函数
glMatrixMode():指定哪一个矩阵是当前矩阵C语言描述void glMatrixMode(GLenum mode)参数mode指定哪一个矩阵堆栈是下一个矩阵操作的目标,可选值:GL_MODELVIEW、GL_PROJECTION、GL_TEXTURE.说明glMatrixMode设置当前矩阵模式:GL_MODEVIEW,对模型视景矩阵堆栈应用随后的矩阵操作。...转载 2019-02-14 14:52:33 · 1322 阅读 · 0 评论 -
四种可以向OpenGL着色器传递渲染数据的方法
1.属性2.uniform值3.纹理4.输出(out,in)原创 2019-03-27 16:50:37 · 737 阅读 · 0 评论 -
理解OpenGL对象
对象OpenGL库是用C语言写的,同时也支持多种语言的派生,但其内核仍是一个C库。由于C的一些语言结构不易被翻译到其它的高级语言,因此OpenGL开发的时候引入了一些抽象层。“对象(Object)”就是其中一个。在OpenGL中一个对象是指一些选项的集合,它代表OpenGL状态的一个子集。比如,我们可以用一个对象来代表绘图窗口的设置,之后我们就可以设置它的大小、支持的颜色位数等等。可以把对...转载 2019-08-05 15:44:32 · 2376 阅读 · 1 评论 -
模型矩阵、视图矩阵、投影矩阵
模型视图投影矩阵的作用,就是将顶点从局部坐标系转化到规范立方体(Canonical View Volnme)中。总而言之,模型视图投影矩阵=投影矩阵×视图矩阵×模型矩阵,模型矩阵将顶点从局部坐标系转化到世界坐标系中,视图矩阵将顶点从世界坐标系转化到视图坐标系下,而投影矩阵将顶点从视图坐标系转化到规范立方体中。如下图所示,假设现在要将三维空间中的三角形渲染到屏幕上。三角形的模型文件中,顶点坐标是...转载 2019-07-30 23:41:24 · 7163 阅读 · 0 评论 -
解析顶点着色器和片元着色器
管线也称渲染管线,因为 OpenGL ES在渲染处理过程中会顺序执行一系列操作,这一系列相关的处理阶段就被称为OpenGL ES 渲染管线。OpenGL ES 渲染过程就如流水线作业一样,这样的实现极大地提高了渲染的效率。如图就是 OpenGL ES 的管线图,学习OpenGL ES 就是学习这张图中的每一个部分。图中阴影部分的 Vertex Shader(顶点着色器) 和 Fr...转载 2019-07-24 12:06:44 · 4757 阅读 · 0 评论 -
OpenGL 深度缓冲区 Z缓冲区 介绍
第一篇【颜色缓冲区】 颜色缓冲区(COLOR_BUFFER)就是帧缓冲区(FRAME_BUFFER),你需要渲染的场景最终每一个像素都要写入该缓冲区,然后由它在渲染到屏幕上显示.【深度缓冲区】 深度缓冲区(DEPTH_BUFFER)与帧缓冲区对应,用于记录上面每个像素的深度值,通过深度缓冲区,我们可以进行深度测试,从而确定像素的遮挡关系,保证渲染正确.【模板缓冲区】 ...转载 2019-06-24 23:17:52 · 1109 阅读 · 0 评论 -
wglChoosePixelFormatARB
wglChoosePixelFormatARB能够找到合适的像素格式。Windows下要通过程序设置多重采样,必须使用wglChoosePixelFormatARB这个函数。目前网上基本都是自己去获取这个函数的接口地址,其实根本不用这么麻烦。GLEW已经有这个函数接口了,我们要做的,就是正确地使用而已。正确使用这个函数的关键,就是需要创建一个临时窗体,通过这个窗体,我们可以初始化GLEW,以及...转载 2019-06-25 23:15:54 · 1916 阅读 · 0 评论 -
glu 、glut 、freeglut与glew 作用
glu是实用库,包含有43个函数,函数名的前缀为glu。Glu 为了减轻繁重的编程工作,封装了OpenGL函数,Glu函数通过调用核心库的函数,为开发者提供相对简单的用法,实现一些较为复杂的操作。glaux是OpenGL辅助库,包含有31个函数,函数名前缀为aux。这部分函数提供窗口管理、输入输出处理以及绘制一些简单三维物体。glut是实用工具库,基本上是用于做窗口界面的,并且是跨平台(所以有...转载 2019-06-11 10:44:28 · 2773 阅读 · 0 评论 -
2D坐标和像素是不同的
图形渲染管线的工作可以被划分为两个主要的部分:把3D坐标转换成2D坐标。把2D坐标转换成实际有颜色的像素。注意:2D坐标和像素是不同的,2D坐标精确的描述了一个点在2D空间中的位置,二2D像素是这个点的近似值,2D像素受到你的屏幕/窗口分辨率的限制...原创 2019-05-17 11:45:17 · 595 阅读 · 0 评论 -
OpenGL的简介
(1)OpenGL概述: openGL(Open Graphics Library)是个专业的图形程序接口,定义了一个跨编程语言、跨平台的编程接口规格。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层三维图形处理库,也是该领域的工业标准。 计算机三维图形是指将用数据描述的三维空间通过计算转换成二维图像并显示或打印出来的技术。(2)OpenGL的图形库函数 ...转载 2019-03-28 18:23:33 · 599 阅读 · 0 评论 -
OpenGL渲染流程
https://www.cnblogs.com/BigFeng/p/5068715.html转载 2018-09-26 16:55:29 · 614 阅读 · 0 评论