demi的博客

GPU屏幕渲染——离屏渲染

一、概念理解

OpenGL中,GPU屏幕渲染有以下两种方式:

  ○  On-Screen Rendering
意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。

  ○  Off-Screen Rendering
意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。

二、离屏渲染的是是非非

相比于当前屏幕渲染,离屏渲染的代价是很高的,主要体现在两个方面:

  •   创建新缓冲区

要想进行离屏渲染,首先要创建一个新的缓冲区。

  •   上下文切换

一文带你了解ADAS都有哪些系统!

ADAS(Advanced Driving Assistant System)即高级驾驶辅助系统。

ADAS 是利用安装于车上的各式各样的传感器,在第一时间收集车内外的环境数据, 进行静、动态物体的辨识、侦测与追踪等技术上的处理, 从而能够让驾驶者在最快的时间察觉可能发生的危险, 以引起注意和提高安全性的主动安全技术。

ADAS 采用的传感器主要有摄像头、雷达、激光和超声波等,可以探测光、热、压力或其它用于监测汽车状态的变量, 通常位于车辆的前后保险杠、侧视镜、驾驶杆内部或者挡风玻璃上。

早期的ADAS 技术主要以被动式报警为主,当车辆检测到潜在危险时, 会发出警报提醒驾车者注意异常的车辆或道路情况。对于最新的ADAS 技术来说,主动式干预也很常见。

关于Cocos2d-x中物理世界的物体乱跳的问题的解决

这是电脑短时间内帧率低,无法满足游戏配置的帧率引起的。

解决方法:

第一种:

1.打开AppDelegate.cpp文件

2.把director->setAnimationInterval(1.0 / 60);改为 director->setAnimationInterval(1.0 / 50);或者更低一点。

这样游戏性能会有些许的下降,就是游戏会变的卡一点,但是物体不会乱跳,在真机上运行,我相信不会出现乱跳的情况。所以等开发完后再把帧率调回来。

第二种:

把setPosition里面的参数都用变量的形式表示,不要直接用常量,用变量比较稳定,亲试可行。

用常量表示其实是非常不好的,因为如果改变屏幕分辨率,就会造成混乱,最好是用屏幕尺寸的几分之几来表示。

第三种:

用简单的精灵节点来代替节点加子节点的形式,亲试可行。

物联网常见定位技术的优缺点

万物互联的时代也是数据为王的时代,然而在很多时候,没有对应的位置信息就意味着数据是“杂乱无章”的,可利用的价值就会大大降低。随着物联网行业这两年的蓬勃发展,定位技术在各种物联网应用场景的需求也大大提升,以下就为大家介绍几种室内外的定位技术。

1、射频识别室内定位技术

物联网常见定位技术的优缺点

射频识别室内定位技术利用射频方式,固定天线把无线电信号调成电磁场,附着于物品的标签经过磁场后生成感应电流把数据传送出去,以多对双向通信交换数据以达到识别和三角定位的目的。

射频识别室内定位技术作用距离很近,但它可以在几毫秒内得到厘米级定位精度的信息,且由于电磁场非视距等优点,传输范围很大,而且标识的体积比较小,造价比较低。但其不具有通信能力,抗干扰能力较差,不便于整合到其他系统之中,且用户的安全隐私保障和国际标准化都不够完善。

机器视觉中不同类型光源的不同打光方式的效果探究

有经验的机器视觉工程师都会认可这样一句话:机器视觉项目的成败在于能否得到一张打光优秀的图片。如果采集到的图片本身“质量”很差,那么接来下的图像处理工作就会困难重重。

由于项目的需求以及光源厂商的努力,目前机器视觉光源的类型可以说十分丰富,例如条光、背光、平行背光、同轴光、点光、隧道光、碗光、环形光、球形光、条形聚光等。根据光的波长和颜色,又可以分为X光、蓝光、红光、白光、红外光等。

网上关于光源选型方面的资料多如牛毛,我不想再重复,我想说点其他的。

在光源大家族中,有一种光最为灵活多变,它就是环形光。环形光有低角度环形光、高角度环形光等不同类型,例如0°环形光、30°环形光、45°环形光、60°环形光、90°环形光等。

不同的资料对于这个环光的“角度”定义不同,有的指“光源照射方向与水平面的夹角”,有的指“光源照射方向与镜头光轴(一般是竖直方向)的夹角”。本文采用后一种定义方式来描述。

为什么说环形光的花样多呢?因为它的口径可以不同、它的“角度”可以不同、它的光的颜色可以不同、它的安装高度也可以不同(其他光源安装高度不同差异一般不会有这么大)。

下面我以拍摄镜头模组为例,采用不同“角度”的环形光,沿着镜头光轴方向在不同高度分别采集图像,大家可以观察图像的特点与变化。

老程序员解Bug的通用套路!

千万不要当程序员面说有bug!对于新手程序员而言,在复杂代码中找BUG是一个难点。下面我们总结下老从程序员解Bug的通用套路,希望对大家有帮助。

1. IDE调试

根据项目特点和语言特点选择一个最合适的IDE,由于本人是做C++出身,最喜欢用的莫过于Visual Studio 了,这款微软开发的IDE,自从研发出来,就被称为宇宙第一编译器,能编译调试C/C++、C#、F#、Python、JavaScript、Qt、iOS等多种语言的开发。目前的VS2017还原生支持远程跨平台的软件开发,这无疑给我们常年奋战在linux/Unix黑匣子开发环境,使用G++调试的C/C++程序猿们带来了福音。

老程序员解Bug的通用套路!

2. 重构大法

如果你发现无论如何也找不到BUG,而且代码只是复杂,本身不是很长,直接重写代码吧!重构大法是解决爆炸性bug的绝招。

Android OpenGL ES 开发(十): 通过GLES20与着色器交互

1. 获取着色器程序内成员变量的id(句柄、指针)

GLES20.glGetAttribLocation方法:获取着色器程序中,指定为attribute类型变量的id。
GLES20.glGetUniformLocation方法:获取着色器程序中,指定为uniform类型变量的id。

如:

// 获取指向着色器中aPosition的index
maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
// 获取指向着色器中uMVPMatrix的index
muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");

2. 向着色器传递数据

使用上一节获取的指向着色器相应数据成员的各个id,就能将我们自己定义的顶点数据、颜色数据等等各种数据传递到着色器当中了。

高清语音技术(WBS)及其在手机和蓝牙耳机中的实现

高清语音也被称为宽带语音,是一种能为蜂窝网络、移动电话和无线耳机传输高清、自然语音质量的音频技术。与传统的窄带电话相比,高清语音很大程度上提高了语音质量,减少了听觉负担。

通信产业链上的所有网络和设备都需支持高清语音才能体现出该技术的优点。到2011年6月为止,18个国家运营的20种蜂窝网络,以及33家领先的手机品牌都已支持高清语音。通过部署自适应多速率宽带(AMR-WB)语音编码,GSM, WCDMA(UMTS)和LTE蜂窝网络中已经引入了高清语音。此外, 通过使用改良的子带编码(mSBC)语音编解码技术,无线蓝牙耳机也开始支持高清语音,将免提通话与高语音质量结合在了一起。

高清语音的优点同样可以在现有网络中体现出来。随着窄带网络和设备向高清语音过渡,一种名为带宽扩展(BWE)的语音处理技术可以用来在接收终端设备上模拟类似于高清语音的通话质量,为不支持高清语音的设备提供了一个折中的解决方案。

从窄带到高清语音

自主移动机器人同时定位与地图创建(SLAM)方法概述

1. 引言:

机器人的研究越来越多的得到关注和投入,随着计算机技术和人工智能的发展,智能自主移动机器人成为机器人领域的一个重要研究方向和研究热点。移动机器人的定位和地图创建是自主移动机器人领域的热点研究问题。对于已知环境中的机器人自主定位和已知机器人位置的地图创建已经有了一些实用的解决方法。然而在很多环境中机器人不能利用全局定位系统进行定位,而且事先获取机器人工作环境的地图很困难,甚至是不可能的。这时机器人需要在自身位置不确定的条件下,在完全未知环境中创建地图,同时利用地图进行自主定位和导航。这就是移动机器人的同时定位与地图创建(SLAM) 问题,最先是由SmithSelf 和Cheeseman在1988年提出来的,被认为是实现真正全自主移动机器人的关键。

自动驾驶的核心技术是什么?

用4级或5级来定义自动驾驶很难有一个明确的标准,自动驾驶也不应该搞得很复杂。自动驾驶实际包含三个问题:一是我在哪?二是我要去哪?三是如何去?能完整解决这三个问题就是真正的自动驾驶。所以特斯拉升级后的8000美元的Autopilot 2.0只有部分线控功能,不能算真正的自动驾驶。福特、百度和谷歌这些公司做的才是真正的自动驾驶,远在特斯拉之上,两者云泥之差,天壤之别。

第一个问题是定位,自动驾驶需要的是厘米级定位。

第二个问题是路径规划,自动驾驶的路径规划第一层是点到点的非时间相关性拓扑路径规划;第二层是实时的毫秒级避障规划;第三层是将规划分解为纵向(加速度)和横向(角速度)规划。

第三个问题是车辆执行机构执行纵向和横向规划,也就是线控系统。

目前自动驾驶的技术基本上都源自机器人,自动驾驶可以看做是轮式机器人加一个舒适的沙发。机器人系统中定位和路径规划是一个问题,没有定位,就无法规划路径。厘米级实时定位是目前自动驾驶最大的挑战之一。