Android ApiDemos示例解析(200):Graphics->OpenGL ES->Textured Triangle

企业级开源堡垒系统实战部署与安全管控方案 堡垒系统(Bastion System)是企业IT基础设施中的关键安全控制点,用于集中管控对敏感资源的访问。它通过强身份认证、细粒度授权、操作审计和会话监控等机制,实现对运维人员访问服务器、数据库等核心资产的全过程可管、可控、可追溯。 阅读详情

前面介绍Android ApiDemos 跳过了其中与OpenGL 相关的例子,而是专为OpenGL编程写了教程。 这里将接着补上Android ApiDemos中有关OpenGL ES的例子的解析。

Textured Triangle 主要介绍了如何为图形添加材质。其具体步骤可以参见Android OpenGL ES 简明开发教程七:材质渲染。

本例对应的Activity为TriangleActivity,它使用了一个StaticTriangleRenderer 来绘制三角形,本例使用res.raw.robot 图像作为材质为三角形添加材质。 添加材质的一个关键步骤为UV坐标映射,将如何将一个二维图像的坐标映射到所要绘制的图形上。

一个简单的理解可以这样理解,如做风筝,用竹子做好框架(几何图形),然后如何将风筝纸(图像)粘帖到框架上,怎样放风筝纸到框架上,类同于OpenGL 如何将Texture坐标映射到几何图形的坐标上。

二维图像(材质)的坐标总是如下:UV坐标定义为左上角(0,0),右下角(1,1)(因为使用的2D Texture)

那么本例如何将这个材质的坐标映射到三角形上呢。下图为StaticTriangleRenderer例子中三角形和材质的坐标定义:

对应的代码如下:

// A unit-sided equilateral triangle centered on the origin.
 float[] coords = {
 // X, Y, Z
 -0.5f, -0.25f, 0,
 0.5f, -0.25f, 0,
 0.0f,  0.559016994f, 0
 };

 for (int i = 0; i < VERTS; i++) {
 for(int j = 0; j < 3; j++) {
 mFVertexBuffer.put(coords[i*3+j] * 2.0f);
 }
 }

 for (int i = 0; i < VERTS; i++) {
 for(int j = 0; j < 2; j++) {
 mTexBuffer.put(coords[i*3+j] * 2.0f + 0.5f);
 }
 }

 for(int i = 0; i < VERTS; i++) {
 mIndexBuffer.put((short) i);
 }

可以看到三角形顶点和Texture 坐标的对应关系,因此本例结果(在没有旋转角度的情况下)为下图。

三角形为正三角形,但由于Texture映射的关系,Android机器人图像为倒置的。


硬件设计SCH&PCB CHECK LIST-V1.0-CheckList 硬件设计SCH&PCB CHECK LIST-V1.0 包含原理图CheckList和PCB设计CheckList 立即下载

相关推荐

Qt QChart实战:从零打造一个实时温度监控仪表盘(附完整源码)

本文详细介绍了如何使用Qt QChart模块从零构建一个工业级实时温度监控仪表盘。通过实战案例,展示了波形图的绘制、坐标轴配置、数据流模拟等关键技术,并提供了完整的源码实现,帮助开发者快速掌握Qt在数据可视化领域的应用。

weixin_42537919的博客 244

Android OpenGL ES->Textured Triangle

前面介绍Android ApiDemos 跳过了其中与OpenGL 相关的例子,而是专为OpenGL编程写了教程。 这里将接着补上Android ApiDemos中有关OpenGL ES的例子的解析。 Textured Triangle 主要介绍了如何为图形添加材质。其具体步骤可以参见Android OpenGL ES 简明开发教程七:材质渲染。 本例对应的Activity为TriangleA...

编程资料大全 140

究竟什么是虚拟同步机???虚拟同步机巨简单理解

同步发电机定子铁芯的内圆均匀分布着定子槽,槽内按一定规律嵌放着对称的三相绕组U1-U2、V1-V2、W1-W2,如图1所示。工作原理转子铁芯上装有制成一定形状的成对磁极,磁极上绕有励磁绕组。励磁绕组上通直流电时,会在电机的气隙中形成极性相间的分布磁场,称为励磁磁场。当原动机拖动转子以恒定速度旋转时,励磁磁场随转轴一起旋转并顺次切割定子各相绕组。定子电枢绕组中将会感应出大小和方向周期性变化的三相对称正弦感应电动势。各相电动势大小相等,相位各差120°。

weixin_53126442的博客 2609

强化 Windows Server 2003 堡垒主机

本模块内容本模块解释专门用于堡垒主机的安全模板配置。堡垒主机是一种安全但可供公共访问的计算机,它位于外围网络的面向公众的一端。堡垒主机通常用作 Web 服务器、域名系统 (DNS) 服务器、文件传输协议 (FTP) 服务器、简单邮件传输协议 (SMTP) 服务器和网络新闻传输协议 (NNTP) 服务器。本模块引用“Windows Server 2003 Security”(英文)中所包含成员服

风雪迷漫 1872

【智驾与大模型】端到端与多模态大模型的精彩之旅

智驾和大模型的回顾与展望。开头的笔者自述也说了些心窝子话,边缘计算的监管刻不容缓!

仿生实验室:从0到1,制作人脸表情交互机器人,记录过程,软硬件全部开源,与君共襄盛举! 1321

GPIB通讯的代码怎么写

GPIB(General Purpose Interface Bus)是一种用于连接计算机和测试设备的接口标准。 在写 GPIB 通讯的代码时,首先需要在计算机上安装 GPIB 驱动程序。然后,使用相应的编程语言和 GPIB 库函数来操作 GPIB 设备。 下面是一个使用 Python 语言和 pyvisa 库来实现 GPIB 通讯的示例代码: import visa# 创建 Visa 资源管理器...

weixin_35752645的博客 1546

Android OpenGL ES: Textured Triangle

1 public class MyRenderer implements Renderer 2 { 3 FloatBuffer verticesBuffer; 4 private final int VERTEX_SIZE = (2 + 2) * 4; 5 private AssetManager asset; 6 private int text...

weixin_30908941的博客 131

图片边界矢量化-地理配准

无地理和投影信息的JPG图片,通过ArcGIS进行地理配准(Georeferencing)完成数字化边界。

u012727861的博客 1908

软件安全性检查checklist

代码安全性检验   程序代码安全性 C++/Java安全性列表(Checklist)  JavaScript安全性列表  代码安全性扫描工具必(AppScan)   Web安全性测试  动态跟踪元素属性  检测JavaScript事件   跨站脚本攻击(XSS)   跨站请求伪造攻击(CSRF)  拒绝服务攻击(DoS)  Cookie劫持  输入验证  浏览器安全问

steelzhong的专栏 2523

abaqus 根据坐标施加载荷- Analytical Field 载荷映射

在一些类型的分析中,需要将按位置分布的载荷施加到结构上,比如流体分析导出了结构的气动载荷、或者温度载荷,需要将压强分布、温度分布载荷施加到固体上。这种分析可以使用abaqus中的Analytical Field实现。 1 例子 1.1 结构 一个100*100mm的面,面的载荷分布函数为p=(x2+y2)0.5/((20.5)*100) MPa,即(0, 0)的压强为0,(100, 100)的压强为1。 1.2 载荷 载荷函数:p=(x^2+y^2)^0.5/((2^0.5)*100) in exce.

shengyutou的博客 2万+

基于STM32+华为云设计的智能鱼缸

本项目基于STM32单片机设计一款基于物联网的智能鱼缸系统,并通过应用侧接口开发上位机APP实现远程对鱼缸参数的检测和控制。该系统包括水温检测、水质检测、自动或手动换水、氛围灯灯光变换和自动或手动喂食等功能,可以帮助用户更好地管理鱼缸,提高鱼儿的生存率,同时增强用户对家庭装饰品的掌控感和科技感。

1万+

Android OpenGL ES->GLSurfaceView

这个例子是使用OpenGL ES绘图最简单的例子,说明如何使用GLSerfaceView,前面的例子Android OpenGL ES 开发教程(6):GLSurfaceView 已经详细说明了,本篇不再具体描述。几何图形顶点定义参见Android OpenGL ES 开发教程(8):基本几何图形定义,颜色定义参见Android OpenGL ES 开发教程(20):颜色Color。 本例对...

mmdev 260

《大数据: Hive 交互命令和常用配置》

一、Hive 交互命令 1. 首先解决一个可能发生的问题 (log4 jar包冲突) 我这里解决方法就是删除一个,我删的是hive下的包 yexiang@hadoop1:<hive>$ hive SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/opt/soft/apache-hive-2.3.7-bin/lib/log4j-slf4j-impl-2.6.2.ja.

yexiang优快云的专栏 289

Android OpenGL ES->Translucent GLSurfaceView

本例介绍使用透明背景绘制OpenGL 图形。步骤如下: 1. 对于Activity使用透明主题 &lt;activity android:name=”.graphics.TranslucentGLSurfaceViewActivity” android:label=”Graphics/OpenGL ES/Translucent GLSurfaceView” android:theme=”@s...

mapdigit 183

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

win10安装OpenGL踩坑

文章目录大坑一号:Cmake的错误提示大坑二号:"使用C++的桌面开发"巨慢的下载速度大坑三号:如何跑起来第一个程序注意!添加cpp是在解决方案资源管理器这个视图下面的源文件里面添加,改变项目属性是在类视图里面直接右键选择最后一项属性。运行成功(点击调试-开始执行) 安装教程:https://blog.youkuaiyun.com/sigmarising/article/details/80470054 首...

羊城迷鹿的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android ApiDemos示例解析:总结

Android ApiDemos示例解析(199):总结 前面基本介绍完Android ApiDemos中除与OpenGL ES相关的所有示例, ApiDemo详细介绍了Android平台主要API,分成了 App Content Graphics Media OS Text Views 几个大类,每个大类又分为几个小类,一共大约有200多个实例,涵盖了Android OS API的各个方...

mapdigit 228

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

分形之拆分三角形(Split Triangle)

      前面讲了谢尔宾斯基三角形,它是不停地将一个三角形拆分三个与之相似的三角形。这一节给大家展示的图形是将一个等腰钝角三角形不停地拆分两个与之相似的三角形。 核心代码: static void SplitTriangle(const Vector3&amp; v1, const Vector3&amp; v2, const Vector3&amp; v3, Yreal angle, ...

weixin_33991418的博客 353

Android ApiDemos示例解析:Graphics->Layers

http://www.imobilebbs.com/wordpress/?p=1494  Canvas 在一般的情况下可以看作是一张画布,所有的绘图操作如drawBitmap, drawCircle都发生在这张画布上,这张画板还定义了一些属性比如Matrix,颜色等等。但是如果需要实现一些相对复杂的绘图操作,比如多层动画,地图(地图可以有多个地图层叠加而成,比如:政区层,道路层,兴

GaoMatrix的专栏 4730

Android ApiDemos示例解析(1):创建ApiDemo示例

Android SDK中带有很多例子,其中ApiDemo详细介绍了Android平台主要API,分成了 App Content Graphics Media OS Text Views 几个大类,每个大类又分为几个小类,一共大约有200多个实例,涵盖了Android OS API的各个方面:下面是所有示例的列表: App/Activity/Animation App/Acti...

mapdigit 254

Android OpenGL ES->Compressed Texture

本例和上例Android ApiDemos示例解析(200):Graphics-&gt;OpenGL ES-&gt;Textured Triangle 非常类似,所不同的是调用图像(Texture)的方法不同。 本例介绍如何使用ETC1 压缩格式的图像,一种方式是从资源文件中读取ETC1格式的图像作为三角形的材质(本例使用res.raw 中的androids.pkm文件),一种是通过代码动态创建...

mmdev 178

Android OpenGL ES->Cube Map

Cube Map,中文可以翻译成立方环境映射,下面是摘自维基百科的说明: 立方反射映射是用立方映射使得物体看起来如同在反射周围环境的一项技术。通常,这通常使用户外渲染中使用的 skybox 完成。尽管由于反射物周围的物体无法在结果中看到,所以这并不是一个真正的反射,但是通常仍然可以达到所期望的效果。 通过确定观察物体的向量就可以进行立方映射反射,照相机光线在照相机向量与物体相交的位置按照曲面法...

mmdev 229
上一篇: Android ApiDemos示例解析:总结
下一篇: Android ApiDemos示例解析(201):Graphics->OpenGL ES->Compressed Texture
引路蜂
博客等级 码龄16年 3122粉丝 711原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值