目录贴图效果注意点源码可改进点写文目的不是经常用,可能会忘记基本用法,自留。贴图效果注意点构成矩形的两个三角形需要使用mapboxgl.MercatorCoordinate.fromLngLat方法转换至WebGL中的场景世界坐标,注意案例中是如何设置三角形顺序的,要逆时针render函数是每一帧绘制的调用函数,每一帧都要设置一次program、texture、vertexBuffer,才能触发draw,并且尤为注意矩阵uniform的地址,也是每一帧都要获取最新的(gl.getUniformLocation(this.program,'u_matrix'))贴图的长宽尺寸要用2的次幂源码访问
前言在上一篇理论文章中我们介绍了YUV到RGB之间转换的几种公式与一些优化算法,今天我们再来介绍一下RGB到YUV的转换,顺便使用OpenglES做个实践,将一张RGB的图片通过Shader的方式转换YUV格式图,然后保存到本地。可能有的童鞋会问,YUV转RGB是为了渲染显示,那么RGB转YUV的应用场景是什么?在做视频编码的时候我们可以使用MediaCodec搭配Surface就可以完成,貌似也没有用到RGB转YUV的功能啊,硬编码没有用到,那么软编码呢?一般我们做视频编码的时候都是硬编码优先,软编码兜底的原则,在遇到一些硬编码不可用的情况下可能就需要用到x264库进行软编码了,而此时RGB
其他章节请看:webgl系列渐变三角形本文通过一个渐变三角形的示例逐步分析:varying变量、合并缓冲区、图形装配、光栅化、varying内插绘制三个点v1需求:绘制三个相同颜色的点,效果如下:通过三角形的学习,这个需求非常容易实现。代码如下:constVSHADER_SOURCE=`attributevec4a_Position;voidmain(){gl_Position=a_Position;gl_PointSize=10.0;}`constFSHADER_SOURCE=`voidmain(){gl_FragColor=vec4(1.0,0.0,0.0,1.0);}`functionm
其他章节请看:webgl系列渐变三角形本文通过一个渐变三角形的示例逐步分析:varying变量、合并缓冲区、图形装配、光栅化、varying内插绘制三个点v1需求:绘制三个相同颜色的点,效果如下:通过三角形的学习,这个需求非常容易实现。代码如下:constVSHADER_SOURCE=`attributevec4a_Position;voidmain(){gl_Position=a_Position;gl_PointSize=10.0;}`constFSHADER_SOURCE=`voidmain(){gl_FragColor=vec4(1.0,0.0,0.0,1.0);}`functionm
其他章节请看:webgl系列绘制猫上文我们了解了如何绘制渐变彩色三角形,明白了图形装配、光栅化,以及片元着色器计算片元的颜色。现在如果让你绘制如下一只猫。难道绘制很多三角形,然后指定它们的颜色?那样简直太难、太繁琐了。这时可以使用三维图形学中的纹理映射技术来解决这个问题。纹理映射简单来讲就是将一张图映射(贴)到一个几何图形的表面。例如这样:本篇最后将实现如下效果:渐变矩形根据渐变三角形,我们很容易就可以绘制一个渐变矩形。就像这样:完整代码如下:constVSHADER_SOURCE=`attributevec4a_Position;attributevec2a_uv;varyingvec2v_
其他章节请看:webgl系列绘制猫上文我们了解了如何绘制渐变彩色三角形,明白了图形装配、光栅化,以及片元着色器计算片元的颜色。现在如果让你绘制如下一只猫。难道绘制很多三角形,然后指定它们的颜色?那样简直太难、太繁琐了。这时可以使用三维图形学中的纹理映射技术来解决这个问题。纹理映射简单来讲就是将一张图映射(贴)到一个几何图形的表面。例如这样:本篇最后将实现如下效果:渐变矩形根据渐变三角形,我们很容易就可以绘制一个渐变矩形。就像这样:完整代码如下:constVSHADER_SOURCE=`attributevec4a_Position;attributevec2a_uv;varyingvec2v_
https://github.com/android/media-samples安卓官方的视频解码器示例球形视频在全景视频、VR等领域有应用,原理是:解码视频获取每一帧图像,将图像用OpenGL渲染成球形展示出来。下面实现一个简单的Demo,分为三步:展示球体、解码视频、播放球形视频。image.pngaqwai-db9oc.gif1球体绘制球体绘制比其他形状稍微麻烦一点点,但是原理是一样的,就是把球面分解成很多三角形。为了便于计算,将球体看作地球,自转轴与屏幕y轴重合。先将球体按经线切成很多层layers,每一层的y坐标根据经线与球心的夹角计算;然后将每一层按纬线切成很多块sections,
https://github.com/android/media-samples安卓官方的视频解码器示例球形视频在全景视频、VR等领域有应用,原理是:解码视频获取每一帧图像,将图像用OpenGL渲染成球形展示出来。下面实现一个简单的Demo,分为三步:展示球体、解码视频、播放球形视频。image.pngaqwai-db9oc.gif1球体绘制球体绘制比其他形状稍微麻烦一点点,但是原理是一样的,就是把球面分解成很多三角形。为了便于计算,将球体看作地球,自转轴与屏幕y轴重合。先将球体按经线切成很多层layers,每一层的y坐标根据经线与球心的夹角计算;然后将每一层按纬线切成很多块sections,
在使用WebRTC的时候,对视频进行美颜处理一般有两种方式:替换WebRTC中的采集模块和对视频数据进行美颜。一、替换WebRTC中的采集模块替换WebRTC中的采集模块,相对比较简单,使用GPUImageVideoCamera替换WebRTC中的视频采集,得到经过GPUImage添加美颜处理后的图像,发送给WebRTC的OnFrame方法。参考基于WebRTC框架开发的全平台推拉流SDK:Github设置美颜-(void)setBeautyFace:(BOOL)beautyFace{if(_beautyFace==beautyFace)return;_beautyFace=beautyFac
在使用WebRTC的时候,对视频进行美颜处理一般有两种方式:替换WebRTC中的采集模块和对视频数据进行美颜。一、替换WebRTC中的采集模块替换WebRTC中的采集模块,相对比较简单,使用GPUImageVideoCamera替换WebRTC中的视频采集,得到经过GPUImage添加美颜处理后的图像,发送给WebRTC的OnFrame方法。参考基于WebRTC框架开发的全平台推拉流SDK:Github设置美颜-(void)setBeautyFace:(BOOL)beautyFace{if(_beautyFace==beautyFace)return;_beautyFace=beautyFac