- 博客(862)
- 资源 (44)
- 收藏
- 关注
原创 3.10【窗口】窗口使用示例(窗口缩放 三)
要从窗口的所有者本身进行放大,可以将源图像矩形设置得比窗口小。可以想象我们在一张图片中选取一部分进行放大的操作。屏幕使用默认位置 (0,0) 作为源矩形、窗口和显示器显示的左上角。要放大源图形的特定区域,必须设置源矩形的大小。源矩形表示我们打算显示的窗口缓冲区的区域。假设我们将目标对准样本源图像中心的矩形区域进行显示。要设置这些属性,请将相应的窗口属性与Screen API函数一起使用,即Screen_set_window_property_iv().
2023-12-20 22:00:45 923
原创 3.9【窗口】窗口使用示例(窗口缩放 二)
要以全屏模式显示源,缓冲区和窗口大小必须与显示器显示大小相同。屏幕使用默认位置 (0,0) 作为源矩形、窗口和显示器的左上角。当缓冲区、窗口和源与显示器大小相同时,源将以全屏模式显示。默认情况下,屏幕将缓冲区设置为与显示器大小相同。屏幕还默认将源矩形和窗口设置为与缓冲区大小相同。但是,在此示例中,我们说明了如何显式设置这些大小。例如,假设想以全屏模式显示我们的样本源图像。SCREEN_PROPERTY_SIZE 是一个父窗口属性。通常,应用程序只设置缓冲区和源矩形的大小。
2023-12-20 21:41:14 863
原创 3.8【窗口】窗口使用示例(窗口缩放 一)
设置的属性以实现最终的显示效果取决于这个窗口是父窗口还是所有者窗口。父窗口和所有者窗口只能分别设置某些属性。因此,根据对应有权限访问的属性,我们需要设置不同的属性以实现所需的显示效果。在示例中,一些矩形以不同的颜色显示。例如,源矩形和剪切矩形通常以与(窗口和显示)上不同的颜色进行显示。通过设置一组或多组特定的窗口属性,我们可以操纵窗口缓冲区的显示部分以及它在显示器上的显示位置。有关这些窗口属性的详细信息,可以参考Screen属性类型。几个窗口属性控制着屏幕如何显示窗口缓冲区(源图像)。
2023-12-20 21:23:47 870
原创 3.7【窗口】窗口使用示例(创建子窗口)
使用 screen_create_window_type() 创建子窗口。SCREEN_CHILD_WINDOW 类型的窗口必须与父窗口相关联,以便它在显示器上可见。为了创建一个子窗口,我们需要经历下面的接步骤。
2023-12-20 21:05:42 415
原创 3.6【窗口】窗口使用示例(创建窗口)
下面是一些简单的教程和指南,通过该指南,你可以轻松了解如何使用你的Windows。我们使用 screen_create_window_type() 创建应用程序窗口。要创建窗口,请执行以下操作:1.2 创建上下文。上下文描述了应用程序与底层窗口系统之间的关系1.3 创建一个窗口。 screen_create_window() 函数接受窗口变量和你在第一步中创建的上下文变量1.4 以字符串形式检索窗口ID,以便子窗口可以使用它加入此窗口的组。SCREEN_PROPERTY_ID属性在
2023-12-19 23:31:19 806
原创 3.5【窗口】窗口管理
窗口管理器和父窗口负责管理其他窗口,包括相应地处理来自应用程序和子窗口的事件。窗口管理器和父窗口都会收到它们负责的窗口的事件。他们应该根据这些事件采取相应的行动。在大多数情况下,事件会触发窗口可见性、大小或位置的更新。窗口管理器和父窗口被赋予特殊权限,可以更改其组或层次结构中窗口的属性。
2023-12-18 22:25:42 1270
原创 3.4【窗口】窗口的几何形状(三,窗口旋转)
窗口的旋转由其SCREEN_PROPERTY_ROTATION属性描述。屏幕的窗口旋转实际上是一种包括旋转、平移和缩放的变换。这种变换是窗口内容旋转的方式。在按SCREEN_PROPERTY_ROTATION属性指定的源坐标旋转后,Screen对内容应用平移和缩放,以适应窗口尺寸的边界(如果适用)。如果需要,你可以通过设置窗口的SCREEN_PROPERTY_SCALE_MODE属性来修改这种缩放行为,以适应你的应用程序。更改窗口的旋转不影响其大小或位置,因为这些是与显示相关的属性。
2023-12-18 21:49:06 1202
原创 3.3【窗口】窗口的几何形状(二,窗口属性)
应用程序使用窗口来显示内容。一些属性决定了窗口及其内容的大小和位置。其他属性决定了窗口内容的外观和解释。了解窗口属性引用的两个坐标系非常重要。如果你知道你正在使用的坐标系,那么为你的窗口属性选择设置值会容易得多,并且会更有意义。
2023-12-17 18:54:39 70
原创 3.2【窗口】窗口的几何形状(一,窗口类型)
窗口的几何形状由一组属性定义,这些属性指示窗口及其内容的显示方式。定义窗口几何形状的属性集可分为两组:与显示相关的属性和与内容相关的属性。设置与显示相关的属性需要了解显示坐标系和窗口层次结构。原因是与显示相关的属性用于在显示上调整窗口的大小和位置。这些属性都与其父窗口相关,因此,你需要知道你的显示和窗口层次结构,以便正确设置这些窗口属性。通常,父窗口(如果存在)决定其子窗口的显示方式。与内容相关的属性使用源坐标系,与显示相关的属性不同,通常由窗口本身设置,而不是由其父窗口设置。
2023-12-17 18:24:18 123
原创 3.1【窗口】窗口简介与窗口组
Windows用于显示内容,并将不同生成的内容组合在一起。每个不同的呈现器都可以在同一个进程中,也可以在另一个或多个进程中。Screen中的窗口概念与你在传统窗口系统中可能习惯的略有不同。在Screen中,当内容来自不同来源时,应用程序被分成几个窗口,当应用程序的一个或多个部分必须独立于其他部分进行更新时,或者当应用程序试图面向多个显示器时。例如,在Adobe AIR中开发的用户界面可以叠加在本地文档查看器上,或者插件可以嵌入到Web视图或文档中。
2023-12-17 17:00:04 101
原创 2.7【渲染】字体渲染
如果安装了其他应用程序框架以与你的 Screen 应用程序一起使用,则字体的位置可能不同(例如,Qt5 安装的 /opt/qt5/lib/fonts)。你可以使用Fontconfig库为你的目标系统配置和定制字体配置。你可以将FreeType库与Screen一起使用,以渲染字体文件中的字形。使用这些库时,请确保你的环境变量(例如$LD_LIBRARY_PATH)已正确设置,以包含目标上的这些库的位置。如果你使用带有Screen的应用程序框架(例如Qt),则必须确保你还具有这些框架所需的相应字体配置。
2023-12-17 16:36:03 72
原创 2.6【渲染】混合渲染
当应用程序使用混合渲染选项时,应用程序必须确保渲染类型之间存在同步(例如,软件渲染、Khronos API渲染和blitting)。以下示例演示了如何将软件渲染与Khronos渲染API混合使用。如果同时使用软件和Khronos API渲染,如果要同时使用软件与此类硬件渲染,则硬件驱动程序必须支持EGL_KHR_lock_surface扩展。
2023-12-17 16:31:10 64
原创 2.5【渲染】Blitting
Blit是一种计算机图形学中常用的数据操作,基础原理是使多个位图通过布尔函数(boolean function)组合成一个新位图。在U3D中,常说的Blit其实是渲染后期的一个概念,它将摄像机渲染好的一个图的所有像素点,通过各种形式的运算,然后重新绘制到屏幕。这种达到后期效果的过程,就称之为Blitting。该操作涉及至少两个位图,一个是源和目的地,可能是第三个位图,通常被称为“掩码”,有时是第四个位图,用于创建模版。每个像素均根据指定的光栅运算(ROP)按位组合,然后将结果写入目标。
2023-12-17 15:57:56 166
原创 2.4【渲染】Vulkan渲染APIs
Screen支持Khronos的Vulkan渲染API。Vulkan是一款用于3D图形和计算的低开销、跨平台、开放行业标准API。它使开发人员能够使用相同的图形API来面向各种设备。Vulkan标准由Khronos Group发布。通常,硬件供应商都有自己的Khronos标准实现,利用硬件加速,特别是GPU硬件。为了向Screen应用程序提供通用接口,Khronos渲染API调用被重定向到适当的供应商特定的渲染API功能。Khronos标准由硬件供应商专门实施,因此,不同实施之间的性能会有所不同。
2023-12-17 09:05:26 299
原创 2.3 【渲染】硬件渲染
应用程序使用目标硬件的GPU通过Khronos渲染API调用执行渲染操作,或通过本地Screen API函数调用使用blitting。
2023-12-17 08:49:26 110
原创 2.2 【渲染】渲染目标
一个渲染目标是指专门创建的Surface,可以将渲染定向到该Surface。它可以是你自己创建,也可以其他人(例如,另一个进程)创建。如果你不是为了自己使用而渲染,可以使用 SCREEN_PROPERTY_PERMISSIONS 属性设置渲染目标的权限,以授予或拒绝对你创建的渲染目标的访问。渲染目标可用于渲染和显示内容(在屏幕上),或仅用于渲染(在屏幕外)。它们可以有一个或多个缓冲区。
2023-12-16 22:44:36 62
原创 1.5【应用开发】缓冲区(二)
你可以通过分别调用以下函数来附加一个缓冲区(screen_buffer_t类型),以将其与像素图、流或窗口相关联:screen_attach_pixmap_buffer() //用于附加像素图缓冲区screen_attach_stream_buffers()//用于附加流缓冲区screen_attach_window_buffers()屏幕附加窗口缓冲区。
2023-12-16 22:29:24 117
原创 1.3 【应用开发】函数执行类型
执行时效性本质上是指Screen执行的操作是立即执行还是延迟执行。函数调用的命令会立即执行,不会排队等待批处理。函数调用的命令被排队进行批处理,然后命令缓冲区立即被刷新以处理所有排队的命令,包括之前排队的命令。函数调用中的命令将排队等待批处理。函数调用的命令被添加到批处理队列中,然后立即刷新该队列以处理所有已排队的命令(包括之前已排队的命令)。必要时会重新绘制显示。大多数Screen API函数不会立即执行。相反,函数调用产生的命令在API排队,以便稍后进行批处理。
2023-12-16 21:25:25 50
原创 1.2 【应用开发】开发一个基本的Screen应用
QNX Screen图形子系统是一个图形框架,因此,使用该框架开发的应用程序在复杂性和功能上可能会有很大差异。也就是说,大多数Screen应用程序在简化后,会执行某种渲染,以便在显示器上显示最终图像。
2023-12-16 21:07:09 184
原创 1.1 【应用开发】应用开发简介
Screen图形子系统基于客户端/服务器模型,其中应用程序是请求图形服务的客户端(Screen)。它包括一个合成窗口系统作为这些服务之一,这意味着所有应用程序渲染都是在离屏缓冲区上执行的,然后可以在稍后用于更新显示。
2023-12-16 17:33:44 349
原创 目录 QNX Screen图形框架
通过使用Screen,开发人员可以轻松地创建具有丰富用户界面的应用程序,这些应用程序可以在QNX操作系统上运行,并且可以与其他QNX应用程序和服务进行无缝集成。请确保在您的应用程序中执行适当的错误处理。QNX Screen Graphics Subsystem为开发人员提供了一个完整的图形解决方案,包括窗口管理、渲染、事件处理、动画和多媒体支持等功能。总之,QNX Screen Graphics Subsystem为开发人员提供了一个强大而灵活的图形框架,使他们能够轻松地创建出色的交互式用户体验。
2023-12-16 17:12:26 1100
原创 【基础篇】1.5 IO分配(二)
ADCADC外设指的是模拟数字转换器(Analog-to-Digital Converter,简称ADC)的硬件设备。ADC是一种将模拟信号转换为数字信号的电子设备,广泛应用于各种数字信号处理系统中。ADC外设通常作为一个独立的集成电路芯片,可以与其他数字设备进行连接和通信。它接收模拟信号作为输入,经过采样、量化和编码等处理过程,将模拟信号转换为相应的数字信号,然后输出给数字设备进行处理。ADC外设具有不同的性能指标和特点,如分辨率、采样速率、精度等。
2023-12-16 13:09:03 882
原创 【基础篇】1.4 IO分配(一)
STM32的IO分配遵循先分配特定外设 IO,再分配通用IO,最后微调的原则。我们根据项目需求来对MCU 的 IO口进行分配,以连接不同的外设,从而实现整体功能。比如:GPIO、IIC、SPI、SDIO、FSMC、USB、中断等。接下来,我们分类看下都有哪些IO。
2023-12-16 12:45:36 1221
原创 【基础篇】1.3 认识STM32(二)
VREF+和VREF-是STM32中用于提供参考电压的引脚。如下图:VREF+引脚可以连接一个单独的外部参考电压,范围在2.0V~VDDA,但不能超过VDDA,否则就超过了模拟器件的最大供电电压。在100引脚的封装中,VREF-是A/D的参考,当需要使用时,必须绑定到VSSA(使得所有模拟器件的参考都相对于VSSA)。VREF-引脚是参考电压输入引脚负极。
2023-12-15 22:59:25 6441
原创 【基础篇】1.2 认识STM32(一)
STM32是一款由意法半导体公司开发的32位微控制器;其中ST指意法半导体;M指MCU或MPU,32指32 位。STM32覆盖了Cortex-M的多种系列,包括M0、M0+、M3、M7等。在分类上,STM32有很多系列,可以满足市场的各种需求,从内核上分有Cortex-M0、M3、M4 和 M7 这几种,每个内核又大概分为主流、高性能和低功耗。本系列基于高性能的Cortex-M4 内核。
2023-12-11 21:47:52 1143
原创 [实践篇]13.28 QNX下的mtouch服务
该参数用于指定 mtouch 资源管理器(驱动程序)的配置文件的位置。如果未指定 -c 选项,mtouch 将使用 /etc/system/config/mtouch.conf 作为默认值。
2023-12-10 17:33:24 666
原创 [实践篇]13.27 QNX下使用gles2-gears工具进行OpenGL ES 2.x出图
gles2-gears 二进制文件是一个命令行工具,可用于确认屏幕是否正在运行,以及 OpenGL ES 2.x 的所有必要驱动程序是否已到位。它会调用OpenGL ES 2.x来显示硬件渲染的内容。将背景设置为指定的 alpha 值,范围在 [0.0f..1.0f].内。如果未指定 bg-alpha 选项,则 gles2-gears 默认使用 0.0f。
2023-12-10 10:27:54 515
原创 [实践篇]13.26 QNX下使用sw_vsync工具检测screen运行情况及软件渲染状态
sw_vsync是一种命令工具,用于去人screen进程的运行状态,以及系统软件渲染状态。执行sw_vsync可以显示软件栅格化内容。internalcompositesvideoYPbPrrgbrgbhvdvihdmirgbhvotherdisplaydisplayrgba8888rgbx8888rgba5551rgbx5551rgb565-grid-pos=x,ynonetestsrc三,执行示例# sw-vsync。
2023-12-09 22:58:23 404
原创 3.9 Android eBPF HelloWorld调试(三)
我们在开发eBPF程序的过程中,并不是一帆风顺的,因此我们需要有能力对eBPF的编译,加载,运行进行调试,调试手段有很多,下面我们一个一个来介绍下。
2023-12-09 16:14:11 214
原创 【系统稳定性】1.6 黑屏(三)
qnx是目前座舱方案中主流的存在,如果qnx存在异常会导致host或la或其他娱乐世界offline。那么导致qnx的原因有很多,相应地,我们也有很多的排查手段。座舱方案中目前还是多域的设计,那么多域之间的连接主流是以太网,我们可以通过其他域以太网访问SOC的方式来排查,qnx是否online。如ping xxx.xxx.xxx.xxx。qnx启动异常,有可能是卡在xbl,也有可能卡在qnx的内核初始化或系统初始化等。我们可以通过串口日志的输出来进行判断,当前qnx处于什么状态。
2023-11-18 22:39:50 2497
原创 【系统稳定性】1.5 黑屏(二)
上一篇对常见的黑屏现象和类型做了简单的描述,其实大多数情况根据这些描述就可以大概地定位出哪一部分的问题,这对我们进行下一步的分析有很大的帮助,否则路走偏了,只会距离目标越来越远,耽误自己的时间不说,想想KPI,想想年终的那仨瓜儿俩枣。对于做系统稳定性研发的同学来说,名下的bug分析到最后大多是需要某一路神仙过来领走的,遇到喜欢扯皮的领主,你需要拿出铁证出来。总之,稳定性问题不会百分之一百消灭掉,我们要做的就是做好监控,做好workround,降低概率。
2023-11-18 16:44:10 1972
原创 【系统稳定性】1.4 黑屏(一)
黑屏是最最常见的问题,也是工程化过程中高发的稳定性问题。它作为稳定性问题消解的重中之重。它和重启一样会给用户带来极差的体验,甚至会直接导致产品上市价值锐减。对于当前风口上的新能源汽车智能化,除了影响娱乐体验,黑屏对于行车安全也是极大的威胁。对于智舱中Q+LA,仪表娱乐共屏的方案,从用户视角来将,黑屏还有全黑和半黑之分。半黑包括主驾仪表黑屏和副驾娱乐黑屏。
2023-11-11 17:15:52 2136 2
原创 【系统稳定性】1.3 异常重启
导致异常重启的原因有很多,以QNX +LA方案为例,由上至下,重启可分为以下几种:Android ART虚拟机重启:指内核没有异常,只是zygote,systemserver,surfaceflinger等服务异常重启导致。LA(Linux Kernel)重启:指内核检测到了异常,导致重新执行所有开机启动流程,从bootloader开始,init进程会重新执行;QVM(GVM)重启:指qvm启动异常,或功能异常导致的,常见的如镜像损坏,配置错误,关联的关键服务异常,驱动程序异常,以及狗复位等。
2023-11-11 16:13:20 2032 2
原创 3.8 Android eBPF Hello World调试(二)
我们开发eBPF程序的初衷就是再不改动内核的情况下,将内核监控数据传递给到用户态;像应用进程开发一样开发内核监控程序。Android开机的时候eBPF程序被加载器加载到内核中,但此时它并没有被附加到内核函数上去,也就是ebpf程序并不会执行,我们可以理解为,它仅仅被安装到了内核当中。那么,如果要将ebpf程序运行起来还需要进行attach。attach就是为了把ebpf程序hook到对应的内核监控点上,如tracepoint等类型。attach成功,ebpf程序才算真正的在内核中运行起来。
2023-11-04 17:15:49 350
原创 3.7 Android eBpf Hello World调试(一)
tracepoint是Linux内核中预定义的静态探测点,分布于内核各个子系统中。每个tracepoint通常包含开关-enable,过滤器-filter等。
2023-10-14 21:54:43 429
原创 3.5 Android gpu_mem ebpf程序设计原理(一)
前面提到过Android ebpf c语言版的源码结构,这里再以以gpu_mem为例详细拆解下。
2023-10-14 15:21:21 712
pageowner 解析工具
2022-05-13
SELinux4AndroidO
2018-02-05
recovery_l10n
2015-04-10
解决Android4.3彩信幻灯片中gif格式图片不能正常播放
2014-07-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人