首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

OpenGL 颜色混合使用

OpenGL 同样有这样颜色混合问题。...颜色混合基础知识 OpenGL 颜色混合就是将通过各种测试准备进入帧缓冲片元(源片元)与帧缓冲原有片元(目标片元)按照设定比例加权计算最终片元颜色值。...混合因子 OpenGL 通过设置混合因子来指定两个片元加权比例,每次都需要给出两个混合因子: 源因子,用于确定将进入帧缓冲片元在最终片元比例 目标因子,用于确定原帧缓冲片元在最终片元比例...由于 OpenGL 每个颜色值包括 4 个色彩通道,因此,两种混子因子都有 4 个分量值,分别对应一个色彩通道,具体混合计算细节如下: 设源因子目标因子分别为 ?... ? 。此组合实现是最典型半透明遮挡效果。若源片元是透明,则根据透明度透过后面的内容;若源片元不透明,则仅能看到源片元,因此,使用此组合时往往会采用半透明纹理颜色对源片元着色。

2.4K11

NDK OpenGL ES 3.0 开发(十五):立方体贴图(天空盒)

OpenGL ES 立方体贴图 ? 立方体贴图 OpenGL ES 立方体贴图本质上还是纹理映射,是一种 3D 纹理映射。...立方体贴图所使纹理称为立方图纹理,它是由 6 个单独 2D 纹理组成,每个 2D 纹理是立方图一个面。 ?...立方图纹理采样通过一个 3D 向量(s, t, r)作为纹理坐标,这个 3D 向量只作为方向向量使用,OpenGL ES 获取方向向量触碰到立方图表面上纹理像素作为采样结果。...方向向量触碰到立方图表面对应纹理位置作为采样点,要求立方图中心必须位于原点。 立方图各个面的指定方法与 2D 纹理基本相同,且每个面必须为正方形(宽度高度必须相同)。...不同是,对应片段着色器,采样器变成了 samplerCube,并且纹理坐标变成了三维方向向量。

1.4K40
您找到你想要的搜索结果了吗?
是的
没有找到

OpenGLES进阶教程7-天空盒效果

写这个demo过程遇到了一些坎,最后会提到。 特别留意天空盒纹理坐标推导顶点数据对象切换。...概念准备 天空盒特效:OpenGL ES提供了一个立方体贴图(cube mapping)专门用于产生天空盒效果纹理贴图模式。...同时天空盒中心要尽可能贴近视点眼睛位置,避免太近产生纹理拉伸。 ?...VAOVBO VBO:顶点缓冲区对象(buffer-object),用于存储顶点坐标、纹理坐标、顶点法线、顶点颜色等。...经过很多天尝试后,已经可以确定是,是飞机绘制影响了天空盒位置,角度旋转只是隐藏了bug。 开始寻找非OpenGL ES文章,看看OpenGL天空盒实现,同时查看苹果官方文档。

1.3K60

OpenGLES-04 绘制带颜色立方体

, 0.7, 1.0); } 如果我们想在外面的代码动态修改它颜色,我们需要定义一个变量来接收传入颜色。...GL_STENCIL_BUFFER_BIT 也可组合:glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 这里我们只用了color...,颜色,法线,纹理或点精灵大小)在着色器程序槽位; 参数 size :指定每一种数据组成大小,比如顶点由 x, y, z 3个组成部分,纹理由 u, v 2个组成部分; 参数 type :表示每一个组成部分数据格式...这里它指向 CPU 内存顶点数据数组; 代码我们给stride填值,以前都是写0,现在是写出了具体步长,写0是针对单一数据,只有顶点数据或颜色数据时候,系统会自己计算匹配,这时候可以写0,若不是单一数据...颜色运行结果.png 结果显示了我们立方体正面的颜色,顶点用到了(0,1,2,3),所以颜色是红黄蓝白线性插值。下一篇文章,我们将对这个立方体进行3D变换以看清它确实是个立方体

65120

OpenGLES-04 绘制带颜色立方体

, 0.7, 1.0); } 如果我们想在外面的代码动态修改它颜色,我们需要定义一个变量来接收传入颜色。...GL_STENCIL_BUFFER_BIT 也可组合:glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 这里我们只用了color...,颜色,法线,纹理或点精灵大小)在着色器程序槽位; 参数 size :指定每一种数据组成大小,比如顶点由 x, y, z 3个组成部分,纹理由 u, v 2个组成部分; 参数 type :表示每一个组成部分数据格式...这里它指向 CPU 内存顶点数据数组; 代码我们给stride填值,以前都是写0,现在是写出了具体步长,写0是针对单一数据,只有顶点数据或颜色数据时候,系统会自己计算匹配,这时候可以写0,若不是单一数据...颜色运行结果.png 结果显示了我们立方体正面的颜色,顶点用到了(0,1,2,3),所以颜色是红黄蓝白线性插值。下一篇文章,我们将对这个立方体进行3D变换以看清它确实是个立方体

1.5K90

OpenGL ES学习阶段性总结

帧缓存可以同时存在多个,但是屏幕显示像素受到保存在前帧缓存(front frame buffer)特定帧缓存像素颜色元素控制。...图像数据在内存很少以紧密形式存在,出于性能考虑,每一行都该从特定字节对齐地址开始。 OpenGL 采用4个字节对齐方式。 存储大小 != 像素宽度 * 高度值。...对RGB 3字节像素而言,若一行10个像素,即30个字节,在4字节对齐模式下,OpenGL会读取32个字节数据,若不加注意,会导致glTextImage致函数读取越界崩溃。...当着色器计算出来一个完全不透明像素颜色时,可以简单替换帧缓存对应位置颜色,也可以通过glEnable(GL_BLEND)来开启混合功能,并通过glBlendFunc设置混合函数。...2、立方体纹理 由6个正方形2D图像组成纹理。 3、多重纹理 同时使用两个或者更多纹理。 4、点块纹理 在一个顶点上应用纹理纹理数组、纹理代理略。

2.1K80

OpenGL 抗锯齿

在前面的图片中4个样本只有2个被覆盖,像素颜色将以三角形颜色进行平均化,颜色同时也被储存到其他2个采样点,最后生成是一种浅蓝色。 结果是,颜色缓冲中所有基本图形边都生成了更加平滑样式。...OpenGLMSAA 如果我们打算在OpenGL中使用MSAA,那么我们必须使用一个可以为每个像素储存一个以上颜色颜色缓冲(因为多采样需要我们为每个采样点储存一个颜色)。...还原一个多采样帧缓冲,通常用glBlitFramebuffer来完成,它从一个帧缓冲复制一个区域粘贴另一个里面,同时也将任何多采样缓冲还原。...你可能还记得帧缓冲教程,如果我们绑定到GL_FRAMEBUFFER,我们实际上就同时绑定到了读帧缓冲目标。...我们可以做事情是把多缓冲位块传送(Blit)到另一个带有非多采样纹理附件FBO。之后我们使用这个普通颜色附件纹理进行后处理,通过多采样来对一个图像渲染进行后处理效率很高。

2.8K20

20分钟让你了解OpenGL ——OpenGL全流程详细解读

遗留下来常见和易于理解部分,同时也尽量在介绍时候兼顾易懂性严谨性。希望对即将或正在学习OpenGL开发者,提供一定帮助。 ...因此,渲染缓冲区都是2D图像类型,而纹理一般有立方体纹理,1D、2D、3D纹理等类型,同时纹理还额外支持了mipmap等其他特性。...画图一般是先画好图像骨架,然后再往骨架里面填充颜色,这对于OpenGL也是一样。顶点数据就是要画图像骨架,现实不同是,OpenGL图像都是由图元组成。...如果图元有纹理,就必须用纹理来产生图元二维渲染图象上每个像素颜色。对于图元在二维屏幕上图象每个像素来说,都必须从纹理获得一个颜色值。...8.2  混合(Blending) 在测试阶段之后,如果像素依然没有被剔除,那么像素颜色将会帧缓冲区颜色附着上颜色进行混合,混合算法可以通过OpenGL函数进行指定。

7.7K44

一看就懂 OpenGL 基础概念(2):EGL,OpenGL 与设备桥梁丨音视频基础

关注一下成本不高,错过干货损失不小 ↓↓↓ ---- 通过《一看就懂 OpenGL 基础概念》一文,我们介绍了 OpenGL 角色、渲染架构、状态机、渲染管线等内容,我们接着来看看它如何在设备上实现渲染...EGL 提供如下机制: 与设备原生窗口系统通信; 查询绘图图层可用类型配置; 创建绘图图层; 在 OpenGL ES 其他图形渲染 API 之间同步渲染; 管理纹理贴图等渲染资源。...本地窗口相关 API 提供了访问本地窗口系统接口,而 EGL 可以创建渲染表面 EGLSurface ,同时提供了图形渲染上下文 EGLContext,用来进行状态管理,接下来 OpenGL ES...系统自己保留了这些操作权,以便可以随时使用 Core Animation 合成器来控制显示最终外观。...如下图所示,OpenGL ES 图层显示了一个应用生成旋转立方体,但是在显示器顶部显示状态栏图层则是由操作系统生成控制,此图显示是合并两个图层来产生后帧缓存颜色数据过程,交换后,我们看到就是前帧缓存上内容

1.6K10

音视频开发之旅(42)-光照基础(一)

漫反射光照是一种简单光照模型,它公式是: 111.jpg N是顶点单位法线,L是表示从顶点到光源单位向量方向。Cmat是表面材料颜色,Cli是光线颜色,Cdiff是最终散射颜色。...镜面反射光照模型公式是: 222.jpg H表示光线向量视图向量(可通过视图矩阵转换)之间夹角正中方向。称为半角向量。Sexp是最终产生镜面颜色。...画一个立方体 加上图片纹理 加上环境光 加上漫反射光 加上镜面反射光 2.1 画个立方体并且渲染图片纹理 立方体绘画我们可以采用画六个面的方式,也可以采用画一个面然后采用投影方式。...-光照(光照基础,漫反射,镜面反射) NDK OpenGL ES 3.0 开发(九):光照基础 OPENGL ES 案例03:COREANIMATION绘制立方体+旋转 收获 了解了经典冯氏光照模型...在学习实践过程地图非常关键,当不知道往哪走时候,打开地图,想一想目的地,很快就可以梳理清楚要走路。一起加油。

52930

opengl入门教程pdf

想象你在一个建模软件创建了一个立方体。你创建立方体原点有可能位于(0, 0, 0),即便它有可能最后在程序处于完全不同位置。甚至有可能你创建所有模型都以(0, 0, 0)为初始位置。...裁剪空间 在一个顶点着色器运行最后,OpenGL期望所有的坐标都能落在一个特定范围内,且任何在这个范围之外点都应该被裁剪掉(Clipped)。...立方体纹理,是一种特殊纹理技术,它用6幅二维纹理图像构成一个以原点为中心纹理立方体立方体纹理非常适用于实现环境、反射光照效果。...GL_NEAREST所需计算比GL_LINEAR要少,因而执行得更快,但GL_LINEAR提供了比较光滑效果。 同时纹理坐标可以超出(0, 1)范围,并且在纹理映射过程可以重复映射或约简映射。...光亮金属塑料具有很高非反射成分,而象粉笔地毯等几乎没有反射成分。因此,三某种意义上讲,物体反射程度等同于其上光强(或光亮度)。 创建光源 光源有许多特性,颜色、位置、方向等。

3.1K30

OpenGL 3D 模型加载渲染

在使用 OpenGL 绘制时,我们最多绘制是一些简单图形,比如三角形、圆形、立方体等,因为这些图形顶点数量不多,还是可以手动写出那些顶点,可要是绘制一些复杂图形该怎么办呢?...,加载过程可以忽略 “v” 开头行用于存放顶点坐标,后面三个数表示一个顶点 x , y , z 坐标 : 1v -0.052045 11.934561 -0.071060 "vt" 开头行表示存放顶点纹理坐标...,后面三个数表示纹理坐标的 S,T,P 分量,其中 P 指的是深度纹理采样,主要用于 3D 纹理采样,但使用较少 : 1vt 0.000000 0.000000 0.000000 "vn" 开头行用于存放顶点法向量...每组数据包含 3 个数值,用 / 分隔,依次表示顶点坐标数据索引、顶点纹理坐标数据索引、顶点法向量数据索引,注意这里都是指索引,而不是指具体数据,索引指向是具体哪一行对应坐标 : 1f 1/10...如果顶点坐标没有法向量纹理坐标,那么直接可以忽略,用空格将三个顶点坐标索引分开就行 1f 1 3 4 最后 OpenGL 在绘制时采用是 GL_TRIANGLES,也就是由 ABCDEF 六个点绘制

3K21

程序员笔记——通过OpenGL理解前端渲染原理(1)

我们买显卡都支持特定版本OpenGL。 下图是用OpenGL旋转立方体。 ?...二、渲染原理 渲染管道 在OpenGL,所有东西都在一个3D空间里,而我们屏幕窗口都是2D,所以OpenGL需要将3D坐标转换成2D坐标,做这件事OpenGL渲染管道(graphics...同时,因为它们运行在GPU上,又给我们保留了珍贵GPU时间,在平时开发,我们也要充分利用GPU渲染来提高软件性能。...在实际OpenGL编程,我们至少需要定义一个Vertex ShaderFragment shader。...三、总结 本文为该系列文章第一篇,先简单介绍OpenGL一些原理,后续文章中会添加新代码分析,包括着色器(Shader)、纹理(Textture)、变形(transformation)、坐标系统(

1.1K30

OpenGL API 简介

核心库函数主要可以分为以下几类函数: 绘制基本几何图元函数: glBegain()、glEnd()、glNormal*()、glVertex*(); 矩阵操作、几何变换投影变换函数: 矩阵入栈函数...颜色、光照材质函数: 设置颜色模式函数 glColor*()、glIndex*(),设置光照效果函数 glLight*() 、glLightModel*()设置材质效果函数glMaterial...OpenGL 核心库实用库可以在所有的 OpenGL 平台上运行。...三维物体绘制函数: 包括了两种形式网状体实心体,绘制立方体auxWireCube()、auxSolidCube()。...下面给出 OpenGL 官方规定命名规则: • ARB – OpenGL Architecture Review Board 正式核准扩展,往往由厂商开发扩展发展而来,如果同时存在厂商开发扩展

2.2K41

音视频开发之旅(41)-天空盒

一、立方体贴图天空盒 所谓天空盒其实就是将一个立方体展开,然后在六个面上贴上相应贴图 天空盒效果正如开篇动画中展示效果一样,从一个视点,旋转视角看天空,呈现出来不同画面。...因此我们可以采用上面的原理,在一个立方体进行立方体贴图 在实际渲染,将这个立方体始终罩在摄像机周围,让摄像机始终处于这个立方体中心位置,然后根据视线与立方体交点坐标,来确定究竟要在哪一个面上进行纹理采样...然后让其他两个分量都除以最大分量绝对值,这样就让另外两个分量都映射到了[0,1]内,然后就可以直接在对应纹理上做纹理映射就行了,这个方法就是所谓Cube Map,是天空盒方法核心 立方体贴图是...} return textureObjectIds[0]; } OpenGL给我们提供了6个特殊纹理目标,专门对应立方体贴图一个面。...NDK OpenGL ES 3.0 开发(十五):立方体贴图(天空盒) 立方体贴图 OpenGL 图形库使用(二十六)—— 高级OpenGL立方体贴图Cubemaps opengl渲染管线 不能再详细了

1.1K20

Shader 入门:GLSL ES(数据类型)

b = float(a); // 0.1 —▼— · 向量(Vector) 在 GLSL 向量一般用于储存顶点坐标、颜色纹理坐标数据。...x, y, z, w 顶点坐标向量 r, g, b, a 颜色向量 s, t, p, q 纹理坐标向量 使用 ....- 关键字 > 下面表格 n m 皆为 2 到 4 任意数字 关键字 含义 举例 matnxn /matn 表示一个 n 列 n 行浮点型矩阵 mat2、mat3、mat3x3 matnxm...,升维则会自动补零: // 伪代码 mat3x3(mat4x4); // 保留参数前 3 列前 3 行元素 mat2x3(mat4x2); // 保留参数前 2 列前 2 行元素,第 3 行补零...- 关键字 > 采样器类型较多,这里只列出了常见几个 关键字 含义 smapler2D 用来访问 2D 纹理句柄 sampler3D 用来访问 3D 纹理句柄 samplerCube 用来访问立方体映射纹理句柄

1.9K30

1.1 Programmable Graphics Processing Unit 发展历程

这一时期 GPU 功能非常有限,只能用于纹理组合数学计算或者像素颜色计算。 从 1999 到 2000 年,是第二代 modern GPU 发展时期。...这是一个非常重要时期,在此之前只有高级工作站 (workstation)图形硬件才支持快速顶点变换。同时,这一阶段 GPU 对于纹理操作也扩展到了立方体纹理(cube map)。...同时,Direct8 OpenGL 都本着与时俱进精神,提供了支持 vertex programmability 扩展。...同时 DirectX OpenGL 也扩展了 自身API,用以支持vertex programmabilityfragment programmability。...恭喜 GeForce ATI 硬件研发人员,你们终于可以歇口气了,不用较着劲地出显卡了,同时也恭喜 DirectX OpenGL 研发人员,你们也可以休息下了,不用斗鸡一般工作了,最后恭喜广大工作在图形图像领域程序员

35230
领券