关于IPGeo IPGeo是一款功能强大的IP地址提取工具,该工具基于Python 3开发,可以帮助广大研究人员从捕捉到的网络流量文件(pcap/pcapng)中提取出IP地址,并生成CSV格式的报告...在生成的报告文件中,将提供每一个数据包中每一个IP地址的地理位置信息详情。 ...报告中包含的内容 该工具生成的CSV格式报告中将包含下列与目标IP地址相关的内容: 1、国家; 2、国家码; 3、地区; 4、地区名称; 5、城市; 6、邮编; 7、经度;...8、纬度; 9、时区、 10、互联网服务提供商; 11、组织机构信息; 12、IP地址; 依赖组件 在使用该工具之前,我们首先需要使用pip3包管理器来安装该工具所需的依赖组件...接下来,广大研究人员可以使用下列命令将该项目源码克隆至本地: git clone https://github.com/z4l4mi/IpGeo.git 工具使用 运行下列命令即可执行IPGeo
关于apk2url apk2url是一款功能强大的公开资源情报OSINT工具,该工具可以通过对APK文件执行反汇编和反编译,以从中快速提取出IP地址和URL节点,然后将结果过滤并存储到一个.txt输出文件中...该工具本质上是一个Shell脚本,专为红队研究人员、渗透测试人员和安全开发人员设计,能够实现快速数据收集与提取,并识别目标应用程序相关连的节点信息。...值得一提的是,该工具与APKleaks、MobSF和AppInfoScanner等工具相比,能够提取出更多的节点信息。...然后切换到项目目录中,执行工具安装脚本即可: cd apk2url ..../install.sh 工具使用 扫描单个APK文件: ./apk2url.sh /path/to/apk/file.apk 扫描多个APK文件(提供目录路径) .
使用纹理后的片段着色器要使用 texture2D 函数给颜色赋值。 texture2D函数的作用就是采样,从纹理中采取像素赋值给 gl_FragColor变量,也就是最后的颜色。...和要创建一个 OpenGL ProgramId 类似,使用纹理也需要创建一个纹理 ID。...绑定纹理中的值 创建并且设置了纹理着色器ID之后,就需要绑定并设置在着色器语言中的变量了。...在一个系统中,纹理单元的数据是有限的,在源码中从 GL_TEXTURE0 到 GL_TEXTURE31 共定义了三十二个纹理单元,但具体数量根据机型而定。...把一些对纹理所做的操作提取到函数里,最后再加载纹理,并绑定到纹理目标上。 使用glUniform1i函数为采样器进行赋值为 0 ,这是和激活纹理单元相对应的。
最近在不断学习、使用的过程中,有了更深刻的理解,特来写一篇源码解读的文章详细介绍下核心代码的具体实现。...); ...... // 从cameraFrame的plane-1提取uv通道的数据,填充到chrominanceTextureRef...; uv数据则包含2个通道,所以设成了GL_LUMINANCE_ALPHA(带alpha的灰度图); 另外uv纹理的宽高只设成了图像宽高的一半,这是因为yuv420中,每个相邻的2x2格子共用一份uv数据...FragmentShader,FragmentShader(片段着色器)就是从纹理取出原始色值直接输出,最终效果就是把图片原样渲染到画面。...取数据时用了supportsFastTextureUpload判断,这是个从iOS5开始支持的一种CVOpenGLESTextureCacheRef和CVImageBufferRef的映射(映射的创建可以参看获取数据中的
本篇文章主要描述如何使用OpenGL ES来渲染i420(YUV420P)和nv21(YUV420SP) 首先准备yuv数据文件,使用ffmpeg对图片进行格式转换 原图大小为800x480: ?...GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0) } 首先把i420数据从文件中读取出来,然后创建3个2D纹理和buffer,并填充数据到buffer中,关键代码如下...在片元着色器中是如何从纹理中拿到Y,U,V分量的数据并且转化为R,G,B的呢?...从纹理中提取Y,U,V分量 // We had put the Y values of each pixel to the R, G, B components by GL_LUMINANCE, //...(GLES20.GL_TEXTURE_2D, 0) } 从文件中读取nv21数据,创建纹理和buffer,填充数据到buffer的流程和渲染i420的步骤是类似的,此处就不再赘述了 和渲染i420的片元着色器中唯一不同的就是获取
第一步是创建 gl 对象,上下文类型优先使用 "webgl2"。...// 16 个纹理采样器 void main(void){ vec4 color; if(vTextureId < 0.5) { // 从纹理采样器(比如图片转换过来的像素点集合...)中,提取特定位置的像素点 color = texture2D(uSamplers[0], vTextureCoord); }else if(vTextureId gl.linkProgram(webGLProgram); return shader; } (2)绑定 attribute 类型的变量 (但此时还没传入 Buffer 数据,只是设置了如何访问等操作...[this.shader.program.id]; } } 下面是设置 tint 的方法: 绑定纹理 绑定纹理。
说起OpenGLES,大家可能都敬而远之,其实它并没有想象中的那么可怕,当然也并没有那么容易 都0202年了,本系列使用OpenGLES3.0,这是一次有预谋的计 [- 多媒体 -] OpenGLES3.0...---- 1.1 三点绘制三角形:GL_TRIANGLES 目前的坐标系如下: 三个点从右上角开始逆时针,白、红、绿 ?...下面的图很好的体现了这些点的坐标是如何确定的 ?...(){ vec4 color= texture(uTexture, vTexCoord); vec4 color2 = texture(uTexture2, vTexCoord);//从纹理中采样出颜色值...下一篇将会详细介绍着色器代码的使用,你将会了解如何通过着色器的代码控制像素值以及像素的位置。本片就这样,相信你已经可以完成贴图了。
在2D中,通常只用到了颜色附着,另外两种附着通常在3D渲染中使用。 上面说了,FBO可用于离屏渲染,下面就来看看如何通过FBO将画面渲染到一个“后台”的纹理中。...这里的后台,指不用于显示到窗口的纹理。 三、如何使用FBO 1....首先,生成一个纹理ID,并绑定到OpenGL中。 其次,给这个纹理ID生成对应的纹理。...这次,不再像之前那样一次性贴出完整的代码,一步步来看下如何使用 FBO 。...关于纹理单元。在OpenGL基础知识中说过,OpenGL内置了多个纹理单元,并且可以同时使用。
在第二章中,我们通过一个Camera SurfaceTexture纹理,把摄像头数据绘制到这个纹理上,同时TextureView的SurfaceTexture纹理通过id与第一个纹理关联起来,从而把摄像头画面直接绘制到屏幕上...从数据流方向来看,Camer SurfaceTexture从Camera中读取数据缓存到自己的FBO中,然后离屏FBO通过Camer SurfaceTexture的ID读取Camera FBO中的数据缓存到自己的内存中...,在这里可以对这个FBO做各种处理,最后TextureView从离屏FBO的ID读取缓存的数据绘制到屏幕上。 ...= frameBuffer[0] //FBO ID,通过这个从FBO的内存中读取数据 frameBufferTexture = frameBufferTex[0]...本章知识点: FBO的使用。 OpenGL纹理绘制的基本流程。
在本教程中,我会介绍你使用此框架所需的所有基础内容。 介绍 开始学习之前,有几件事你是需要了解的。 WebGL是将3D内容渲染到HTML5的canvas元素上的一种JavaScript API。...从HTML文件中提取着色器源码的代码,封装到了一个函数中,称为LoadShader;稍后会讲到。 我们使用这个'着色器程序'将两个着色器链接起来,通过它,我们可以访问到着色器中的变量。...第二步:“简单”立方体 为了在WebGL中画出对象,你需要如下三个数组: 顶点 (vertices):构造你的对象的那些点 三角形 (triangles):告诉WebGL如何将顶点连接成面 纹理坐标...(texture coordinates):定义顶点如何被映射到纹理图像上 这个过程称为UV映射。...我设置的这些缩放性质只是告诉WebGL,图像应该如何向上采样和向下采样。 你可以使用其它的选项来得到不同的效果,不过我认为这个组合效果最佳。
学习是一件开心的额事情 学习目标 理解纹理图像的概念 掌握纹理采样器的类型和作用 在GLSL 中如何使用纹理 纹理缓冲区 纹理图像 玩过游戏的同学们,都知道在游戏人物身上穿的那个叫皮肤,专业点将那个就叫做纹理图像...访问纹理缓冲区 如何使用 第一步.采样器必须在着色器中声明为uniform,切记他们的赋值必须来自应用程序中,采样器也可以作为函数的参数,但必须是类型匹配的采样器 第二步.采样器在着色器中使用之前必须分配一个纹理单元...tex; void main(){ gl_fragColor = gl_color *texture2D(tex,gl_texCoord[0].st) } 依赖性纹理读取 先解释一下,在一个使用纹理贴图的着色器执行过程中...,需要使用纹理坐标在纹理图像中指定位置,并提取相应的纹理单元的值。...总结 纹理的使用在OpenGL 中是比较重要的一块内容,必须要掌握!
camera2+GLSurefaceView,采集到OES纹理,使用FBO复制成Texture2D纹理离屏渲染,将纹理ID交给TRTCSDK编码传输。...GLSurfaceView如何使用? GlSurfaceView从名字就可以看出,它是一个SurfaceView,看源码可知,GlSurfaceView继承自SurfaceView。...例如,当设备从纵向变为横向的系统调用这个方法。使用此方法可以在变化做出反应GLSurfaceView容器。...SUrfaceTexture绑定的纹理ID @Override public int onDrawFrame(int textureId) { //锁定绘制的区域 绘制是从左下角开始的...textureId是CameraFilter中FBO的纹理ID,赋值着色器变量,直接glDrawArrays绘制。
3D 模型渲染 上一节简单介绍了常用的 3D 模型文件 Obj 的数据结构和模型加载库 Assimp 的编译,本节主要介绍如何使用 Assimp 加载 3D 模型文件和渲染 3D 模型。...glm::vec2 TexCoords; }; 还需要一个描述纹理信息的结构体: struct Texture { GLuint id;//纹理 id ,OpenGL 环境下创建...,把结构体作为它的第一个参数,第二个参数是这个结构体名字的变量,函数返回这个变量从结构体开始的字节偏移量(offset)。...= u_MVPMatrix * position; } 而使用的片段着色器需要根据使用到的纹理数量和类型的不同做不同的调整。...texture_specular1; uniform sampler2D texture_specular2; uniform sampler2D texture_specular3; 总结起来就是我们需要根据 Mesh 中纹理的数量和类型以及模型光照需求来使用不同的片段着色器和顶点着色器
camera2+GLSurefaceView,采集到OES纹理,使用FBO复制成Texture2D纹理离屏渲染,将纹理ID交给TRTCSDK编码传输。...GLSurfaceView如何使用? GlSurfaceView从名字就可以看出,它是一个SurfaceView,看源码可知,GlSurfaceView继承自SurfaceView。...例如,当设备从纵向变为横向的系统调用这个方法。使用此方法可以在变化做出反应GLSurfaceView容器。...是SUrfaceTexture绑定的纹理ID @Override public int onDrawFrame(int textureId) { //锁定绘制的区域 绘制是从左下角开始的...textureId是CameraFilter中FBO的纹理ID,赋值着色器变量,直接glDrawArrays绘制。
不同类型的纹理和纹理技术可以用来模拟各种不同的视觉效果,从基本的颜色贴图到复杂的环境映射和法线贴图。...我们将这些控制点提取出来并存储在 controlPointsVector 容器中,以便后续计算使用。...对于每个 (i, j) 坐标点,我们使用贝塞尔曲面的公式计算了 x、y 和 z 坐标,并将它们存储在 vertices 中。 计算法线和纹理坐标 在这段代码中,法线的计算似乎与顶点坐标相同。...纹理贴图:在为Bezier曲面应用纹理贴图时,我必须考虑如何映射纹理坐标到曲面上。这可能涉及到在曲面上创建UV映射或使用其他技术,以确保纹理正确贴合曲面。...我现在更清楚地知道如何创建和渲染三维图形。 编程技能提升:通过实际的项目开发,我不仅提高了C++编程技能,还学会了如何使用OpenGL进行图形编程。
引言 在上一章节讲解FBO时,使用纹理来存储颜色缓存附件、深度缓存附件、模板缓存附件,但纹理并不是唯一的选择。...与可以在着色器中采样的纹理附件不同,渲染缓冲对象的不能被直接读取。...由于RBO不能被直接读取,所以无法像操作纹理一样从 RBO 中直接获取(采样)数据。...但这并不意味着不可以读取RBO中缓存数据,可以借助 glReadPixels接口获得指定区域内的数据,该接口的详细叙述如下: //// 从帧缓冲区中读取像素数据 /// x: 从帧缓冲区读取的像素的左下角...而纹理则更适合用于存储需要被采样的颜色缓冲数据,或者需要被多次使用的图像数据。纹理也能用来存储深度缓冲和模板缓冲。所以RBO的应用场景相对局限。 3.
指定存储在 renderbuffer 中图像的宽高以及颜色格式(从myLayer中获取),并按照此规格为之分配存储空间 [self.myContent renderbufferStorage:GL_RENDERBUFFER..., vertex); //4.3 将数据从内存中读取到顶点缓存区中 glBufferData(GL_ARRAY_BUFFER, sizeof(attrArr), attrArr, GL_STATIC_DRAW..., "textureMap"); //8.2 设置texture读取帧缓存区中的对应纹理ID=0(参数2)的纹理 glUniform1f(texture, 0); //...激活纹理空间 //OpenGL中纹理ID0默认打开,所以该方法可省略 //glActiveTexture(0); //8....载入纹理到帧缓存区中,并对应纹理ID=0 float fw = width, fh = height; /* 参数1:纹理模式,GL_TEXTURE_1D、GL_TEXTURE_
纹理坐标的范围是 0 ~ 1。 注:坐标系的xy轴方向很重要,决定了如何做顶点坐标和纹理坐标映射。 那么,这两个坐标系究竟有什么关系呢?...这里需要单独强调一下,OpenGL是基于线程的一个状态机,有关OpenGL的操作,比如创建纹理ID,初始化,渲染等,都必须要在同一个线程中完成,否则会造成异常。...vec2 vCoordinate;" + "void main() {" + //根据纹理坐标,从纹理单元中取色 " vec4...激活指定的纹理单元后,需要把它和纹理ID做绑定,并且在传递到着色器中的时候:GLES20.glUniform1i(mTextureHandler, 0),第二个参数索引需要和纹理单元索引保持一致。...,复写暴露的方法,并配置OpenGL显示窗口,清屏 创建纹理ID 配置好顶点坐标和纹理坐标 初始化坐标变换矩阵 初始化OpenGL程序,并编译、链接顶点着色和片段着色器,获取GLSL中的变量属性 激活纹理单元
领取专属 10元无门槛券
手把手带您无忧上云