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

如何在onCreate获取View高度宽度

如何在onCreate获取View高度宽度 在开发过程中经常需要获取到View宽和高,可以通过View.getWidth()View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成,一个measure过程,一个layout过程。...只有经过“测量”“布局”之后,View才能正确地完成绘制。而这一切是发生在onCreate方法之后。...所以在onCreate中直接使用View.getWidth()View.getHeight()是无法得到正确。 那应该怎么onCreate获取View宽高呢?...开发者可以通过View.post()方法来获取到View宽高,该方法传递一个Runnable参数,然后将其添加到消息队列,最后在UI线程执行。

5.3K20

OpenGL(八)--纹理相关APIOpenGL(八)--纹理相关API

原始图像数据 //存储图像数据所占内存大小 size = 图像高度 * 图像宽度 * 每个像素所占字节数 像素所占字节数:一般为4Byte,包含RGBA四个通道,每个通道为1Byte(8Bit) 2...//参数1:x,矩形左下⻆角窗⼝坐标 //参数2:y,矩形左下⻆角窗⼝坐标 //参数3:width,矩形宽,以像素为单位 //参数4:height,矩形⾼,以像素为单位 //参数5:format...,OpenGL 像素格式,参考 表1 //参数6:type,解释参数pixels指向数据类型,告诉OpenGL 使⽤缓存区什么 数据类型来存储颜⾊分量,像素数据数据类型,参考 表2 //参数...//width、height、depth参数:指加载纹理宽度、⾼高度、深度。一般使用2整数次⽅方。(OpenGL旧版中会有这个要求) //border:允许为纹理贴图指定⼀个边框宽度。...纹理对象 生成纹理对象 //使⽤函数分配纹理对象 //指定纹理对象数量 指针(指针指向⼀个⽆符号整形数组,由纹理对象标识符填充)。

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

OpenGL ES学习阶段性总结

帧缓存可以同时存在多个,但是屏幕显示像素受到保存在前帧缓存(front frame buffer)特定帧缓存像素颜色元素控制。...万向节死锁:Wiki解释 如果是用高度偏航角来解释,就是当高度角等于90°时候,偏航角维度已经丢失,不管你怎么转都不会产生结果。...图像数据在内存很少以紧密形式存在,出于性能考虑,每一行都该从特定字节对齐地址开始。 OpenGL 采用4个字节对齐方式。 存储大小 != 像素宽度 * 高度值。...应该是每行宽度 * 高度值,每行宽度可能会有填充空字节。...纹理高级知识 1、矩形纹理 GL_TEXTURE_RECTANGLE不能进行MIP贴图,只能加载glTexImage2D第0层。

2.1K80

OpenGL 学了那么久了,glViewport 你真的会用吗?

OpenGL glViewport 函数用于定义视口(Viewport),即确定窗口中显示区域。...y:视口左下角Y坐标。 width:视口宽度。 height:视口高度。 glViewport函数作用是将正投影坐标(OpenGL默认坐标系)映射到屏幕上实际显示区域。...它将正投影坐标系点映射到屏幕上指定大小矩形区域内。 在使用OpenGL进行绘图时,我们通常需要先通过glViewport来设置视口,将整个窗口或窗口一部分作为渲染区域。...且数据宽是由xwidth控制。 只改变 height 参数 这里传入参数为glViewport(0,0,width,height/2),此时数据正常时相比高度变成了之前一半。...同时改变 width height 参数 这里传入参数为 glViewport(0,0,width/2,height/2),此时数据正常时相比宽度变成了之前一半,高度也变成了之前一半。

1.8K10

libgdx 图形绘制

纹理(texture) 一个图片从原始格式解码并上传到GPU就被称为纹理OpenGL要求纹理高度宽度都必须是2n次方大小,只有满足这个条件纹理图片才是有效。...一旦获取了像素值,我们就可以将这些数据传给OpenGL,让OpenGL生成一个纹理贴图 为了绘制texture,常常使用几何来描述,通过几何对应顶点来描述纹理。...比如要描述一个矩形,可以通过矩形四个顶点来描述。 要绘图时,首先要绑定纹理,然后传递一个几何描述(如矩形四个顶点)给OpenGL进行绘制。...而绘图大小位置由几何描述OpenGLviewport设置共同决定。当然大部分游戏都会让viewport大小屏幕一致,这就意味使用像素更容易让纹理绘制在合适大小位置。...绘制一个矩形几何图形是非常常见,同样让同一个纹理在不同位置以不同大小位置也是非常常见,比如漫天弹幕。但是每次都传递每个形状到GPU进行绘制效率是较低

1.6K30

《Cocos2D权威指南》——3.5 CCTexture纹理类「建议收藏」

3.5 CCTexture纹理类 游戏运行,所有图像文件(PNG、PVR)都被加载成GPU可以理解OpenGL ES纹理,而精灵则对应着这些纹理图。...3.5.1 纹理纹理图集 所有游戏角色都是以图像形式存储在iPhoneiPad设备内存,通常使用格式是PNG或JPEG。这些图像一旦被加载入内存,它们将以一种未压缩纹理格式来存储。...纹理(Texture) 游戏角色图像文件在使用前必须解压缩,并转换成iPhoneiPadGPU可以理解格式,同时要加载进RAM(随机存储器),这样图像称为纹理。...让这种内存限制更捉襟见肘是,旧版iOS设备,图像填充到纹理时,其长度宽度必须使用2乘方。...3.5.2 CCTexture2D、CCTextureCacheCCTextureAtlas 在Cocos2D,使用CCTexture2D(纹理)从图片、文本或源数据创建OpenGL 2D纹理,所创建纹理对象使用

93610

【FFmpeg】SDL 音视频开发 ② ( SDL 视频显示函数 | 设置渲染器目标纹理 | 设置渲染器颜色 | 清除渲染器 | 渲染器绘制矩形 | 纹理拷贝 | 窗口中显示渲染纹理 )

渲染绘制 SDL_Texture 纹理画面 , 矩形就在该纹理上进行绘制 ; rect 参数 : 指向 SDL_Rect 结构指针 , 该结构体中封装了 矩形 左上角坐标位置 宽高 , 单位都是像素...是矩形结构 , 该结构体内容如下 : int x, y 是 矩形左上角 x y 坐标 , int w, h 是 矩形宽度高度 , 单位都是像素 ; typedef struct SDL_Rect...{ int x, y; // 矩形左上角 x y 坐标 int w, h; // 矩形宽度高度 } SDL_Rect; 代码示例...: 下面的代码 , 为 renderer 渲染器 设置目标纹理为 texture 纹理 , 绘制内容在 texture 纹理上 , 在该纹理上绘制一个红色矩形 , 矩形左上角坐标位置是 (100...renderer 参数 绑定 渲染目标纹理位置大小 ; 代码示例 : 下面的代码 , 现在 texture 纹理 , 绘制了一个矩形 , 然后将 渲染器 渲染目标纹理 设置为窗口 ,

7210

使用 iOS OpenGL ES 实现长腿功能

警告: 本文属于进阶教程,阅读前请确保已经熟悉 OpenGL ES 纹理渲染相关概念,否则强行阅读可能导致走火入魔。 注: 下文中 OpenGL ES 均指代 OpenGL ES 2.0。...三、为什么要使用 OpenGL ES 可能有人会说:你这个功能平平无奇,就算不懂 OpenGL ES,我用其它方式也能实现呀。 确实,在 iOS ,我们绘图一般是使用 CoreGraphics。...计算顶点关键步骤如下: /** 根据当前控件尺寸纹理尺寸,计算初始纹理坐标 @param size 原始纹理尺寸 @param startY 中间区域开始纵坐标位置 0~1 @param...出于对结果分辨率考虑,我们不会直接读取当前屏幕渲染结果对应帧缓存,而是采取「渲染到纹理方式,重新生成一个宽度与原图一致纹理。 这是为什么呢?...这里分为两步,第一步仍然是上面提到重新生成纹理,第二步就是把纹理转化为图片。 第二步主要通过 glReadPixels 方法来实现,它可以从当前帧缓存读取出纹理数据。

77460

Qt5 OpenCV4 计算机视觉项目:6~9

-featureType参数指定特征类型。 它值可以是 HAAR 或 LBP。 -w-h自变量指定训练过程中使用样本宽度高度(以像素为单位)。...,我们为 YOLO 模型定义了输入图像宽度高度。...从glfwCreateWindow函数参数可以看到,新创建窗口宽度为 640 像素,高度为 480 像素,并以Hello OpenGL字符串作为标题。...我们图像只有 RGB 值,因此我们也将存储带有 RGB 值纹理。 widthheight是目标纹理宽度高度。 我们在这里使用图像尺寸。 border是没有意义传统参数,应始终为0。...这可以通过将 1.0 除以图像宽度高度来解决。 这样,我们将获得两个浮点数,它们在纹理坐标系中分别代表一个像素宽度一个像素高度。 稍后,我们将两个数字存储在统一两个元素向量

3.1K30

Android 基于OpenGl ES渲染yuv视频(十二)

常使用在各个影像处理组件。“Y”表示明亮度,“U”“V”则是色度、浓度相对我们都比较熟悉编码格式RGB,RGB诉求于人眼对色彩感应,YUV则着重于视觉对于亮度敏感程度。...了解YUV 数据流对做视频领域的人十分重要,同时为了我们后续ffmpeg编解码工具学习做铺垫,所以我们可以先学习如何使用OpenGl去渲染yuv格式视频。...通俗来说,就是比方你顶点坐标提供是一个矩形,现在要将一张图片“贴”到矩形上,那么需要指定一个纹理坐标,告诉OpenGl矩形光栅化处理后每个片段对应图片哪个像素颜色。...亮度,灰度图(这里就是只取一个亮度颜色通道意思,因这里只取yuv其中一个分量) width,//加载纹理宽度。...最好为2次幂 height,//加载纹理高度

2.1K60

(译)SDL编程入门(10)Color Key

例如,如果你想获得某些关于纹理信息,如它宽度高度,你将不得不使用一些SDL函数来查询纹理信息。相反,我们要做是使用一个类来封装存储纹理信息。 从设计上来说,这是一个相当直接类。...= NULL; } 纹理加载功能工作原理之前纹理加载课程差不多,但做了一些小但重要调整。首先,我们对纹理进行重新分配,以防有一个已经加载纹理。...在对加载表面进行颜色键控后,我们从加载颜色键控表面创建一个纹理。如果纹理创建成功,我们存储纹理宽度/高度,并返回纹理是否加载成功。...当渲染某个地方纹理时,你需要指定一个目标矩形,设置x/y位置宽度/高度。在不知道原始图像尺寸情况下,我们无法指定宽度/高度。...所以这里当我们渲染纹理时,我们用位置参数成员宽度/高度创建一个矩形,并将这个矩形传入SDL_RenderCopy。

1.1K20

OpenGL ES实践教程(五)多重纹理实现图像混合

较为熟悉; 方案3相对方案2简单,同时对性能要求最低,最为符合。...核心思路 自定义shader,传入两个纹理对应矩形坐标; 在像素着色器内判断当前点范围,如果处于对应矩形内,则进行混合操作; 效果展示 ?...通过GLProgram-uniformIndex:-attributeIndex:方法,可以便捷取到对应属性索引,再通过glUniform1i glUniform2f方法可以上次数据到OpenGL...先选择(你也可以按照词面意思理解为激活)纹理单元1,同时开启2D纹理目标; 然后生成一个纹理对象,把纹理对象绑定到纹理单元12D纹理上; 接下来所有的操作都是针对纹理单元1上纹理对象,直到你再次通过...变量rightTop变量形成矩形内。

3.2K40

什么岗位需要学习 OpenGL ES ?说说 3.X 新特性

OpenGL 岗位需求 OpenGL ES 3.X 有什么新特性? 纹理 2D 纹理数组 3D 纹理,保存一组 2D 纹理纹理目标。...sRGB 纹理,通常用于存储显示经过 sRGB gamma 校正图像,以获得更准确更自然颜色显示效果。 浮点纹理,常用于计算着色器(Compute Shader)。 着色器 二进制程序文件。...OpenGL ES 3.0 引入了 glDrawArraysInstanced glDrawElementsInstanced 函数,它们允许开发者在不同位置上绘制多个具有相同网格物体,每个物体可以有不同变换...使应用程序能够执行对像素操作和纹理传输操作异步数据传输。 缓冲区位块传输(Blit)。主要用于帧缓冲区之间像素拷贝,性能高且使用方便,可以指定缓冲区任意矩形区域像素拷贝。...允许应用程序同时渲染到多个颜色缓冲区。 多重采样渲染缓冲区。减少锯齿边缘颤动,从而改善图像平滑度质量。 帧缓冲区失效机制。

12500

【Android 音视频开发打怪升级:OpenGL渲染视频画面篇】二、使用OpenGL渲染视频画面

一、渲染视频画面 在第一篇文章【音视频基础知识】文章,就介绍过,视频其实就是一张张图片组成,在上文【初步了解OpenGL ES】,介绍了如何通过OpenGL渲染一张图片,可以猜想到,视频渲染图片渲染应该是差不多...} 一样地方: 顶点坐标纹理坐标的设置 新建OpenGL Program,加载GLSL程序流程。...投影规定了裁剪空间范围,也就是物体可视空间范围 将裁剪空间内物体投影到屏幕上 要讲清楚OpenGL投影并不是一件简单事,会涉及到OpenGL关于各类空间定义,这里简单列一下: 局部空间:...,只需根据视口视频画面原始宽高就可以在代码自动推断出缩放比例。...uniform mat4 uMatrix; gl_Position = aPosition*uMatrix; 在代码也通过OpenGL方法获取了着色器矩阵变量,并计算好缩放矩阵,传递给顶点着色器

2K30

【愚公系列】2023年08月 WEBGL专题-canvaswebgl区别 | 技术创作特训营第一期

学习数字孪生技术可以帮助你了解物理系统本质运作方式,同时也可以帮助你掌握虚拟建模仿真技术。...通过数字孪生技术,你可以将现实物理过程转化为数字化模型,并通过对数字模型分析优化,进而改善实际系统运行状况。这种能力对于未来物联网工业4.0时代工作和研究,都具有非常重要意义。...”Canvas元素,并且设置其宽度为200px,高度为100px。...接着,我们设置矩形颜色为红色,并使用“fillRect”方法在Canvas上绘制了一个矩形,位置位于Canvas(10,10)坐标处,宽度高度都为50px。...WebGL2主要作用包括:支持更先进图形效果更高图形性能,可以渲染比WebGL1更复杂场景。提供更强大图形处理能力,支持更多着色器功能更多纹理贴图。

53231

【Cocos2d-x】Cocos2d-x精灵性能优化

2、减少OpenGL ES绘制调用并且加速渲染 OpenGL ES 1.1仅仅能够使用2n次幂大小图片(即宽度或者高度是2、4、8、64…)。...如果采用小图片OpenGL ES1.1会分配给每个图片2n次幂大小内存空间,即使这张图片达不到这样宽度高度也会分配大于此图片2n次幂大小空间。...那么运用这种图片集方式将会减少内存碎片。 虽然在Cocos2d-x v2.0后使用OpenGL ES2.0,它不会再分配2几次幂内存块了,但是减少读取次数绘制优势依然存在。...这是很耗时。实际上这是可以由软件(ZwoptexTexturePacker)来完成。 做出来纹理图集由两部分构成。一部分是存有纹理,也就是大图文件。...将一个图读到精灵帧缓存同时也会加载到纹理缓存 3、动画缓存(AnimationCache) 动画缓存主要用于精灵动画,精灵动画中每一帧是从动画缓存获取 SpriteFrameCache

55120

opengl入门教程pdf

概述OpenGLOpenGL是渲染2D、3D矢量图形硬件一种软件接口。本质上说,它是一个3D图形模型库,具有高度可移植性,并且具有非常快渲染速度。...概述 OpenGL OpenGL是渲染2D、3D矢量图形硬件一种软件接口。本质上说,它是一个3D图形模型库,具有高度可移植性,并且具有非常快渲染速度。...纹理分类 按照纹理使用场景表现形式来分,纹理主要分为以下几类: 一维纹理,例如,程序所绘制纹理镶条所有变化可能发生在同一个方向,一维纹理就像一个高度为1二维纹理。...三维纹理可以看成一层层二维子图像矩形构成。 球体纹理, 也就是环境纹理,目标是渲染具有完美反射能力物体,它表面颜色就是反射到人眼周围环境颜色。...参数widthheight给出了纹理图像长度宽度,参数border为纹理边界宽度,它通常为0,widthheight必须是2m+2b,这里m是整数,长宽可以有不同值,b是border值。

3.1K30

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

写在前面 距离上次更新已经有两个星期,由于这段时间事情比较多,还请各位关注本系列文章小伙伴见谅,一有时间我会加紧码字,感谢大家关注督促。 下面就来看看如何在OpenGL渲染多视频画面。...一、渲染多画面 在上篇文章,详细讲解了如何通过OpenGL渲染视频画面,以及对视频画面进行比例矫正,基于前面系列文章中封装好工具,可以非常容易地实现在OpenGL渲染多个视频画面。...当然了,你可以添加更多画面到OpenGL渲染。...---- 知道了如何传值,其他就一目了然了。 获取顶点着色器alpha,然后在绘制前把值传递进入。 在片元着色器,修改从纹理取出颜色值alpha。...OpenGL世界坐标 实际上整个OpenGL世界坐标宽为:2倍w_ratio;高为2倍h_ratio。所以要把实际(0~1)换算为对应世界坐标距离,需要乘以2,才能得到正确移动距离。

2.4K40

C++学习(一五九)Qt场景图Scene Graph

它用于通过定义其几何形状材质来定义自定义图形。使用QSGGeometry定义几何形状,并描述图形图元形状或网格。它可以是直线,矩形,多边形,许多不连续矩形或复杂3D网格。...QSGSimpleTextureNode-QSGGeometryNode子类,它使用纹理材质定义矩形几何形状。...当前,默认情况下,线程渲染器可以在具有opengl32.dllWindows平台、不包括Mesa llvmpipeLinux平台、具有MetalmacOS平台、移动平台、具有EGLFS嵌入式Linux...(basic或windows) 当前,默认情况下,非线程渲染循环在具有ANGLE或非默认opengl32实现Windows,具有OpenGLmacOS具有某些驱动程序Linux上使用。...“场景图-金属纹理导入”示例中演示了直接使用基础API创建和渲染纹理,然后在自定义QQuickItemQt Quick场景包装使用此资源。

2.2K40
领券