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

OpenGL alpha值使纹理更白?

在计算机图形学中,OpenGL是一个广泛使用的跨平台API,用于渲染2D和3D图形。OpenGL支持多种纹理格式,其中alpha通道是一种透明度表示方法。当纹理的alpha值增加时,纹理的颜色会变得更亮。

纹理中的alpha值表示每个像素的透明度,范围从0(完全透明)到1(完全不透明)。当使用具有alpha值的纹理时,OpenGL会根据纹理的alpha值和场景中的其他物体进行混合。如果纹理的alpha值增加,那么该纹理在场景中的其他物体上的颜色会变得更亮。

例如,如果一个纹理的alpha值为0.5,那么该纹理的颜色会与场景中的其他物体的颜色混合,并且该纹理的颜色会变得更亮。这是因为alpha值表示了该纹理的透明度,当alpha值增加时,纹理的颜色会变得更亮。

总之,OpenGL alpha值的作用是控制纹理的透明度,当alpha值增加时,纹理的颜色会变得更亮。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OpenGL透明与混色效果

透明物体可以是完全透明(它使颜色完全穿透)或者半透明的(它使颜色穿透的同时也显示自身颜色)。一个物体的透明度,被定义为它的颜色的alpha。...alpha颜色是一个颜色向量的第四个元素,当alpha是0.0时就表示物体是完全透明的,alpha为0.5时表示物体的颜色由50%的自身的颜色和50%的后面的颜色组成。...我们之前所使用的纹理都是由3个颜色元素组成的:红、绿、蓝,但是有些纹理同样有一个内嵌的aloha通道,它为每个纹理像素(Texel)包含着一个alpha。...这个alpha告诉我们纹理的哪个部分有透明度,以及这个透明度有多少。...三、总结 进一步了解OpenGL程序的光照与材质参数的设置方法,并能使用alpha透明度参数实现不同几何对象的视觉色彩混合效果。

1.6K70

终端图像处理系列 - OpenGL混合模式的使用

对应到OpenGL的一次渲染过程里,源色就是Fragment Shader处理结束后给gl_FragColor的赋值,底色就是当前FBO绑定的纹理的颜色,混合后的结果会更新底色纹理的颜色,就好比是红色的画布在用黄色的笔画完后变成了绿色...RGB 为255,预乘机制的影响导致最终得到的结果是63.75,与期望128.5相比会偏向于黑色,下面是两种结果的对比图,第一张是正确的结果,第二张是预乘以后的结果。...所以在这种情况下inPremultiplied为false的Bitmap只能用作OpenGL上传纹理。...OpenGL混合时不再乘以alpha 在没有做预乘时,我们设置的OpenGL混合模式因子为glBlendFunc( GL_SRC_ALPHA , GL_ONE_MINUS_SRC_ALPHA ),即源色...RGB会乘以alpha,但是因为Bitmap在解码时已经做了预乘操作,所以源色混合因子不需要再乘以alpha,此时我们可以设置OpenGL混合模式为glBlendFunc( ONE , GL_ONE_MINUS_SRC_ALPHA

4.6K151

OpenGL 滤镜进阶(缩放+灵魂出窍+抖动+闪+毛刺+幻觉)

效果图 流程逻辑 详细解析参照 :OpenGL 分屏滤镜 https://juejin.cn/post/6859934701932118024 滤镜算法 缩放 原理 :随着时间戳改变放大顶点坐标的倍率...,获得3组颜色 从3组颜色中分别获取RGBA的 片元着色器 Shake.fsh 闪 原理 片元着色器 :添加⽩色图层 ,⽩色图层的透明度随着时间变化 片元着色器算法 通过mod函数计算当前时间戳对应的时间周期...设置一个白色遮罩 计算白色遮罩的振幅,振幅范围是[0,0, 1.0] 获取原图纹理的纹素,并与白色遮罩颜色混合 颜色混合的方式有多种,常用的一般是mix函数或者默认的混合方程式:mask*(1-alpha...& 计算纹理的x坐标 需要偏移,撕裂较大,即x的颜色偏移较大 不需要,撕裂较小,即x的颜色偏移很微小 获取撕裂后的纹理坐标 计算撕裂后的3组纹素,并获取不同组中的RGBA 片元着色器 Glitch.fsh...完整代码参考 :https://github.com/wq89816/OpenGL_Filter_-Advance -- END --

1.2K20

OpenGL ES实践教程(八)blend混合与shader混合

ES实践教程4-Demo04-VR全景视频播放 OpenGL ES实践教程5-Demo05-多重纹理实现图像混合 OpenGL ES实践教程6-Demo06-全景视频获取焦点 OpenGL ES...在OpenGL ES实践教程5-Demo05-多重纹理实现图像混合尝试把两个图像用多重纹理的方式进行混合,这次补充介绍其他混合方式--blend混合与shader混合。...核心思路 blend混合,先绘制图形1,开启blend混合,再绘制图形2; shader混合,先绘制图形1,在绘制图形2的时候读取图形1的颜色,图形2的颜色乘以(1 - 图形2alpha)再加到图形...blend混合常用在绘制透明的图形,会用到RGBA颜色空间中的alpha。...标准支持,但是无法支持特定的alpha; shader混合的优势在于可以任意操作颜色,比如demo就是通过读取gl_LastFragData,然后把之前的alpha修改为0.8,缺点在于非正式标准

3.1K51

【Android 音视频开发打怪升级:OpenGL渲染视频画面篇】五、OpenGL FBO数据缓冲区

首先,生成一个纹理ID,并绑定到OpenGL中。 其次,给这个纹理ID生成对应的纹理。...为了视频画面比例正常,可以把OpenGL的窗口宽高,以及纹理的宽高都设置为视频的宽高。因此,OpenGL在渲染的时候,我们也把无需再通过矩阵变换来矫正比例,直接拉伸就可以。...mVideoWidth, mVideoHeight) //设置一个颜色状态 GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f) //使能颜色状态的来清屏...0, mVideoWidth, mVideoHeight) //设置一个颜色状态 GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f) //使能颜色状态的来清屏...关于纹理单元。在OpenGL基础知识中说过,OpenGL内置了多个纹理单元,并且可以同时使用。

2.4K42

OpenGLES(一)- GLKit以及常见API

上图取自苹果官方文档OpenGL ES Programming Guide GLKit 常用API GLKit纹理加载 GLKTextureInfo (纹理对象) 纹理在进过图元装配步骤中的剪裁后...深度(我的理解是纹理的层级) GLKTextureInfoAlphaState alphaState; //加载纹理中的alpha分量状态 GLKTextureInfoOrigin...; //mip贴图层级数量 GLuint arrayLength; //我的理解是mip贴图数量 } 这些纹理读取时,通过纹理文件来获取。...ES上下⽂ EAGLContext *context; //将底层FrameBuffer对象绑定到OpenGL ES - bindDrawable // 布尔,指定视图是否响应视图重绘(-drawRect...,表示计算光照与材质交互时是否使⽤颜⾊顶点属性 colorMaterialEnable //布尔,指示是否使用常量颜⾊ useConstantColor //不提供每个顶点颜色数据时使⽤常量颜

1.2K30

OpenGL ES 2.0 (iOS):基础纹理

Texture 纹理,就是一堆被精心排列过的像素; 因为 OpenGL 就是图像处理库,所以 Texture 在 OpenGL 里面有多重要,可想而知; 其中间接地鉴明了一点,图片本身可以有多大变化,OpenGL...[x、y、z 属于 [-1, 1] 这个范围,就是与 Vertex Position 的范围一致] ?...;】 【MipMapping 发挥作用的地方就是在缩小的时候,OpenGL 会自动选择合适大小的像素数据】 如果纹理像素在 x、y 方向上是做同一个动作【拉伸或压缩】,则需要放大或缩小像素;如果纹理像素在...意思就是,采样提供的纹理像素,在放大、缩小的时候,使相邻的像素进行“一定程度的融合”产生新的像素信息,使最终显示在屏幕在的图片更加平滑;上图【猴子】中的效果就是利用这项技术来的,对于二维、三维,就相应地做多次采样...,当前环境支持的最大是 (4096, 4096),这个由以下两个 xx_MAX_xx 得到【就在 aspectSizeWithDataDimension: 方法内】: GLint _2dTextureSize

1.9K43

OpenGL ES _ 着色器_介绍

ES _ 入门练习_06 OpenGL ES _ 着色器 _ 介绍 OpenGL ES _ 着色器 _ 程序 OpenGL ES _ 着色器 _ 语法 OpenGL ES_着色器_纹理图像...OpenGL 固定功能管线 顶点数据 先上一张图了解一下顶点处理过程 顶点处理管线 当OpenGL 使用固定功能的管线处理顶点的时候,它负责提供下面的,主要用于后面的栅格化处理: 1.视觉空间坐标...2.主颜色和辅助颜色 3.纹理坐标 4.雾坐标 5.点的大小 顶点管线可能不会对上面所有的进行更新,这些都是应用程序根据glVertex()* 和 其他顶点数据调用所输入的数据进行计算的...,用于纹理贴图 2.纹理应用 3.雾 4.主色和辅助色颜色混合 提示:无论是否使用片段着色器,OpenGL 总是会执行下面的操作: 5.单调或平滑着色 6.像素覆盖计算 7.像素所有权测试...8.裁剪操作 9.点画模式应用(OpenGL 3.1 已经删除掉了) 10.alpha 测试(OPenGL 3.2 已经删除了) 11.深度计算 12.模板测试 13.alpha 测试

66120

Android OpenGL 做了一个修图(P 图)功能,对标 PS

[P 图功能与 OpenGL] 我们将一个区域的像素移走以后,那么用什么来填充这个被"掏空"的区域呢?答案是, OpenGL 自带插功能会使用周围的像素对被"掏空"的区域进行插填充。...回想下 OpenGL 纹理贴图,将图像贴到相对大的区域,就会产生拉伸的效果,贴到相对更小的区域就会产生挤压的效果,这都是借助于 OpenGL 的双线性插算法实现。...对纹理贴图不了解的同学可以移步:Android OpenGL ES 系统性学习教程 所以,当我们选中一块图像区域进行移动时,OpenGL 纹理贴图时会在移动的方向上产生挤压的效果,而反方向便会产生拉伸效果...[Android OpenGL 实现 P 图功能] 所以,剩下来的问题就是生成很多网格,然后控制网格结点的偏移,通过简单纹理映射实现 P 图功能。...= 1.0f - r / imgRadius; //做个平滑 alpha = smoothstep(0.f, 1.f, alpha); //移动方向 PointF dVec

1K60

OpenGLOpenGL在移动端的应用

这些包括存储颜色的renderbuffer对象、二维纹理或cubemap面的mip级别,甚至三维纹理中的二维切片的mip级别。类似地,各种包含深度的2D图像可以附加到FBO的深度附着点。...这些可以包括一个renderbuffer,一个二维纹理的mip级,或者一个存储深度的cubemap面。唯一可以附加到FBO模板附着点的2D图像是一个存储模板的renderbuffer对象。...3.往像素点中填充颜色(纹理/颜色) 如下是一个自定义的Fragment.glsl: precision mediump float; varying mediump vec4 OutColor...在光栅化阶段,基本图元被转换为二维的片元(fragment),fragment 表示可以被渲染到屏幕上的像素,它包含位置,颜色,纹理坐标等信息,这些是由图元的顶点信息进行插计算得到的。...7).Framebuffer:这是流水线的最后一个阶段,Framebuffer 中存储这可以用于渲染到屏幕或纹理中的像素

2.6K30

【专业技术】OpenGL操作技巧介绍

如果使用了纹理,这个阶段还将生 成并变换纹理坐标。如果启用了光照,就需要综合变换后的顶点,表面法线,光源位置,材料属性以及其他光照信息进行光照计算,产生最终的颜色。...OpenGL 有一种特殊的像素复制操作,可以把数据从帧缓冲区复制到帧缓冲区的其他位置或纹理内存中。这样,在数据写入到纹理内存或者写回到帧缓冲区之前,只需要进行一道像素转换就可以了。...6 纹理装配Texture Assembly OpenGL 应用程序可以在几何物体上应用纹理图像,使它们看上去更为逼真。如果需要使用多幅纹理图像,把它们放在纹理对象中是一种明智的做法。...有些 OpenGL 实现拥有一些特殊的资源,可以加速纹理的处理。这种资源可能是专用的,高性能的纹理内存。如果确实拥有这种内存,纹理对象可能会优先进行处理,以控制这种 有限和宝贵的资源的使用。...接着可能进行的是雾计算,然后是剪裁测试,alpha测试,模板测试和深度缓冲区 测试(深度缓冲区用于消除被隐藏的表面)。如果一个片断无法通过一个启用的测试,它的连续处理过程可能会被中断。

1.3K20

如何使用OpenGL渲染YUV数据

中,片元着色器最后输出的都是rgba的数据,所以使用OpenGL来渲染YUV数据的关键还是将YUV数据传递给着色器,并在着色器中将YUV转化为RGB 在我们创建一个2D纹理并使用glTexImage2D...,可选的有GL_RGB,GL_RGBA,GL_LUMINANCE,GL_LUMINANCE_ALPHA 等 通常使用的GL_RGBA这种internalformat,它会单独保存R,G,B,A四个数据...,G,B任意一个分量来获取到Y。...U,V分量同理 使用GL_LUMINANCE_ALPHA的时候,首先存储亮度,然后是alpha,利用这一点可以将U存储到像素的A通道,V存储到R,G,B通道 渲染i420 在使用GL渲染i420格式的...,Y分量纹理的颜色组件采用GL_LUMINANCE,UV分量纹理的颜色组件采用GL_LUMINANCE_ALPHA private fun textureLuminanceAlpha(imageData

6K22

(转载非原创)OpenGL ES 压缩纹理

压缩纹理的常见格式 基于OpenGL ES的压缩纹理有常见的如下几种实现: 1)ETC1(Ericsson texture compression) 2)ETC2(Ericsson texture...当加载压缩纹理时,参数支持如下类型的纹理: GL_ATC_RGB_AMD (RGB,每个像素0.5个字节) GL_ATC_RGBA_EXPLICIT_ALPHA_AMD (RGBA,每个像素1个字节)...10)glTexImage中指定压缩格式可以对上传的纹理进行压缩以改善内存使用,通过设置intenalFormat为表中一个实现。...通过这种方式进行图像压缩增加了纹理加载的开销,但却能够通过更有效地使用纹理存储空间来增加纹理性能,如果由于某些原因无法对纹理进行压缩,OpenGL就会使用下表中所列出的基本内部格式,并加载未经压缩的纹理...和GL_LUMINANCE_ALPHA的功能 11)判断纹理是否被成功压缩 GLint comFlag; glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_COMPRESSED

1.1K00

OPengl、DirectX、OPenCV、OpenCL

/GL30_Constants.html 基本设备: 1.帧缓冲区(glutInitDisplayMode(多种模式混合设置)):   a.深度缓冲区(z越大离相机越远,又称Z缓冲区,GL_DEPTH_BITS..., GL_ACCUM_BLUE_BITS, GL_ACCUM_ALPHA_BITS) 双缓冲技术,提供非缓冲区到缓冲区的拷贝,提升绘图效率 glflush(提交数据到缓冲区) glfinish...(同glflush并等待设备执行完返回) glClearDepth(像素深度0~1) 顶点属性:   坐标,颜色,法线,纹理 2.着色器(Shader): GLSL语言:   a.变量:...(glEnable启用) GL_COLOR:颜色平面 4.纹理: 相关函数:   glGenTextures创建纹理对象索引   glBindTexture绑定纹理对象   glTexImage2D...、R三个轴,范围(0~1),超出范围使用glTexParamteri设置,纹理坐标描述纹理与顶点的映射关系 glTexCoord控制坐标、glTexGen纹理坐标自动生成   (纹理坐标:s\

2K50

【Android 音视频开发打怪升级:OpenGL渲染视频画面篇】三、OpenGL渲染多视频,实现画中画

第二个画面 二、尝一下视频编辑的味道 现在,两个视频叠加在一起,看不到底下的视频,那么,我们来改变一下上面这个视频的alpha,让它变成半透明,不就可以看到下面的视频了吗?...接口 fun setAlpha(alpha: Float) } 在VideoDrawer中,保存该。...mTexturePosHandler: Int = -1 // 纹理接收者 private var mTextureHandler: Int = -1 // 半透接收者...() { //激活指定纹理单元 GLES20.glActiveTexture(GLES20.GL_TEXTURE0) //绑定纹理ID到纹理单元...---- 知道了如何传,其他的就一目了然了。 获取顶点着色器的alpha,然后在绘制前把传递进入。 在片元着色器中,修改从纹理中取出的颜色alpha

2.4K40

OpenGLES讲解稿

image.png ,如图,投影矩阵确实符合人的视觉效果,再看现实中一个很好的例子,火车轨道,两轨之间距离看起来就是近大远小,实际上是一样的: ?...再来看看片元着色器: 片元着色器就是把顶点着色器的数据处理成实际屏幕坐标上的像素颜色 片元着色器的功能如下: 1.计算颜色 2.获取纹理 3.往像素点中填充颜色(纹理/颜色) 此图是一个自定义的...在光栅化阶段,基本图元被转换为二维的片元(fragment),fragment 表示可以被渲染到屏幕上的像素,它包含位置,颜色,纹理坐标等信息,这些是由图元的顶点信息进行插计算得到的。...7).Framebuffer:这是流水线的最后一个阶段,Framebuffer 中存储这可以用于渲染到屏幕或纹理中的像素。..., GL_ONE_MINUS_SRC_ALPHA); glBlendFuncSeparate(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA, GL_ONE, GL_ONE_MINUS_SRC_ALPHA

1K20

OpenGLES(七)-GLSL案例:纹理颜色混合OpenGLES(七)-GLSL案例:纹理颜色混合

OpenGLES(七)-GLSL案例:纹理颜色混合 首先放出效果 效果图 原图: 原图 通过对比可以看出纹理和颜色进行了混合效果,下面就放出实现过程. vsh attribute vec4 position...) + vColor * alpha; } 可以看到在获取的纹理中的纹素之后并没有直接传递给内奸变量gl_FragColor,而是进行了计算vTexColor * (1.0 - alpha) + vColor...* alpha。...这里的计算公式是根据OpenGL中的颜色混合参数得到的:glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA),如果对这个公式陌生可以看看这篇文章:OpenGL...,代码上只是多传了一组颜色,别无其他区别 如果想要了解索引绘图和顶点绘图的区别可以移步:[OpenGLES(六)-综合案例:索引绘图](https://www.jianshu.com/p/acafedd09bd5

54030
领券