平面计算机

pygame

徘徊边缘 提交于 2019-11-28 19:55:34
关于pygame PyGame是SDL库的Python包装器。SDL是一个跨平台库,用于访问计算机多媒体硬件组件(声音,视频,输入等)。SDL是一个非常强大的工具,用于构建各种各样的东西,但它是用C语言编写的,C很难,所以我们使用PyGame。 github网址: https://github.com/pygame/pygame 安装 pip install pygame C:\Users\huang>pip install pygame Collecting pygame Downloading https://files.pythonhosted.org/packages/ed/56/b63ab3724acff69f4080e54c4bc5f55d1fbdeeb19b92b70acf45e88a5908/pygame-1.9.6-cp37-cp37m-win_amd64.whl (4.3MB) 100% |████████████████████████████████| 4.3MB 55kB/s Installing collected packages: pygame Successfully installed pygame-1.9.6 基础对象 屏幕对象 首先,我们需要一张画布,我们称之为“屏幕”,它是我们绘画的平台。为了创建一个屏幕,我们需要调用 pygame

Camera2相机预览流程

家住魔仙堡 提交于 2019-11-28 05:47:15
Android5之后,Camera的api有了很大变化,称为Camera2 Camera2的功能更多更强大,同时也更加复杂 在camera2中管道pipeline(也可以叫做流),照片,视频都是从流中获取的。 分析这张图,可以简单得到预览其实有三步 打开相机,创建与相机的会话(即建立管道) 发起CaptureRequest,获取流内容 建立Surface,将内容输出到Surface(即输出到手机屏幕) 当然,这只是将相机预览流程进行了抽象,实际相机预览流程没有那么简单,下面是一个简单的demo,实现相机预览 入口MainActivity package com.example.camera2test; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.FrameLayout; public class MainActivity extends AppCompatActivity { public static final String TAG = "MainActivity"; private Camera2Preview mCameraPreview; private

DEM

为君一笑 提交于 2019-11-27 18:52:58
Digital Elevation Models 定义 Surface analysis implies the analysis of continuous spatial variation. The most common application of surface analysis is Digital Elevation Modelling, which is widely employed in GIS. A DEM is a representation of three-dimensional (3D) space. DEMs are used for creating a surface of elevation data showing the rises and falls across a landform. # surface: representations of continuous values across space. For data that are not continuous, surfaces must be created from the point, line, or polygon data. 分类In GIS, DEMs are modelled by regular grids( altitude matrices )

Unity Surface Shader 示例分析

好久不见. 提交于 2019-11-27 08:39:41
Unity Surface Shader 示例分析 对于Unity中的表面着色器(Surface Shader),它的代码整体结构如下所示: Shader "name" { Properties { // 第一部分 } SubShader { // 第二部分 } Fallback "Diffuse" // 第三部分 } 第一部分 Properties 数据块 它的作用是充当数据的接口,将外部的数据(资源)引入进来,以供着色器内部使用。在这里,我们可以定义的数据类型如下所示: (1) _MainTex ( "Base (RGB)", 2D ) = "white" {} 2D类型,主要指我们所使用的纹理贴图。 _MainTex是自定义的变量名称,我们在编写shader的代码时将使用它,它会显示在shader的属性面板上,下同; "Base (RGB)"也是一个名称,它会在绑定该shader的材质属性面板上显示。 (2) _CubeTex ( "3D Map", Cube ) = "white" {} Cube类型,表示三维纹理。三维纹理具有宽度、高度以及深度三个维度的信息。 (3) _Color ( "Main Color", Color ) = (1,1,1,1) Color类型,表示一种颜色,包含( R, G, B, A )4个颜色值成分。 _Color是自定义的变量名称

3D分析之Functional Surface工具箱

时光毁灭记忆、已成空白 提交于 2019-11-27 08:39:27
1. Add Surface Information(添加表面信息) 向点、线或面要素的属性表添加表面高程信息。 要素几何 表面属性 Point 从表面上点的 XY 坐标插入的点高程。 MultiPoint 针对多点记录中所有点得到的点的最小、最大和平均高程。 Polyline 沿着表面的线的 3D 距离。 从表面上线的路径获得的最小、最大和平均高程和坡度。 Polygon 面定义的表面部分的 3D 面积。 来自表面的最小、最大和平均高程和坡度。 2. Interpolate shape(插值 Shape) 根据从栅格、不规则三角网 (TIN)、或 terrain 数据集获取的高程值为要素类插入 z 值。 3. Intersect 3D Line With Surface( 3D线与表面相交) 计算 3D 线要素与一个或多个表面的几何交集,并以分割线要素和点的形式返回交集。 4. Stack Profile(堆栈剖面) 创建表格和可选图表,用于说明一个或多个多面体、栅格、TIN 或 terrain 表面上的线要素的剖面。 这个工具可以来制作剖面图。 表中各个字段的含义: FIRST_DIST - 到剖面段中第一个折点的距离。 FIRST_Z - 剖面段中第一个折点的高度。 SEC_DIST - 剖面段中第二个折点的距离。 SEC_Z - 剖面段中第二个折点的高度。 LINE_ID

android graphic(8)—surface申请GraphicBuffer过程

吃可爱长大的小学妹 提交于 2019-11-27 08:38:40
surface的dequeueBuffer函数 向BufferQueue申请内存 Surface去requestBuffer 本节分析surface向Buffer Queue申请GraphicBuffer的过程(这里的surface是native的surface,不是java中的),在此过程中还会涉及利用Flattenable协议对对象序列化,binder传递文件描述符等概念。 surface的dequeueBuffer函数 Surface调用hook_dequeueBuffer()去申请图形缓冲区, int Surface::hook_dequeueBuffer(ANativeWindow* window , ANativeWindowBuffer ** buffer, int * fenceFd) { Surface* c = getSelf( window ); return c->dequeueBuffer(buffer, fenceFd); } 其中, typedef struct android_native_base_t { /* a magic value defined by the actual EGL native type */ int magic; /* the sizeof() of the actual EGL native type */ int

MATLAB Graphics -Surface 绘图

半腔热情 提交于 2019-11-27 08:38:29
1.Vocabulary: plot 绘图 surface 曲面 mesh 网格 grid 格子 illustrate 图解 region 区域 polygon 多边形 peak 顶点 tick 记号 helix 螺旋 magenta 洋红色 cyan 青色 gray 灰色 aquamarine碧绿色 2.一般步骤 Z = peaks( 20 ); % 1. Prepare your data. figure( 1 ) % 2.Select window and position plot region within window. subplot( 2 , 1 , 2 ) h = surf(Z); % 3.Call 3-D graphing function. colormap hot % 4.Set colormap and shading algorithm. shading interp set(h, 'EdgeColor' , 'k' ) light( 'Position' , [- 2 , 2 , 20 ] ) %5.Add lighting. lighting phong material( [ 0.4 , 0.6 , 0.5 , 30 ] ) set(h, 'FaceColor' , [ 0.7 0.7 0 ] , 'BackFaceLighting' , 'lit

Android图形系统分析与移植--四、Surface Manager(Surface Flinger简介)

╄→гoц情女王★ 提交于 2019-11-27 08:38:15
Surface Manager是用户空间中framework下libraries中负责显示相关的一个模块,当系统同时执行多个应用程序时,SurfaceManager会负责管理显示与存取操作间的互动,另外也负责将2D绘图与3D绘图进行显示上的合成。 1、Surface manager架构分析 Android中的图形系统采用Client/Server架构,如下: Client端:应用程序相关部分。代码分为两部分,一部分是由Java提供的供应用使用的api,另一部分则是由c++写成的底层实现。 Server端:即SurfaceFlinger,负责合成并送入buffer显示。其主要由c++代码编写而成。 Client和Server之前通过Binder的IPC方式进行通信,总体结构图如图1所示: 如上图所示,Surface的client部分其实是提供给各应用程序进行画图操作的一个桥梁,该桥梁通过binder通向server端的Surfaceflinger,Surfaceflinger负责合成各个surface,然后把buffer传送到FrameBuffer端进行底层显示。其中每个surface对应2个buffer,一个frontbuffer, 一个back buffer,更新时,数据更新在back buffer上,需要显示时,则将back buffer和front buffer互换。

Android Surface解析

大城市里の小女人 提交于 2019-11-27 08:37:56
本文为作者原创,转载请注明出处。公众号为 毛铜飞 欢迎关注 (源码截图是Android 5.1.1_r6) 一 App和Surface的关系是怎样的 不论是用Skia绘制二维图像,还是用OpenGL绘制三维图像,最终Application都要和Surface交互。Surface 是什么: Handle onto a raw buffer that is being managed by the screen compositor. 由屏幕显示内容合成器(screen compositor)所管理的原始缓冲区的句柄,就像在C++语言中,可以通过一个文件的句柄,就可以获得文件的内容一样,通过Surface就可以获得原生缓冲器以及其中的内容,那App是怎么通过Surface获取的缓冲区去绘图的呢? 应用程序的外表是通过Activity显示的,首先我们来看一下Activity是怎么完成界面绘制工作的。从Activity启动开始跟。 Zygote在收到启动请求的时候,会fork一个子进程,这个子进程就是app的对应的进程,它的入口函数就是ActivityThread类的main函数,这个类里面有一个handleLaunchActivity函数,它就是创建Activity的地方。 然后接着看Activity创建的代码performLaunchActivity Instrumentation

应用获取画布surface流程

耗尽温柔 提交于 2019-11-27 08:37:40
    前面我们已经分析了activity通过SurfaceComposerClient在surfaceflinger服务中创建了一个Client。在本文中,我们将详细分析应用获取画布Surface流程。在分析Surface创建流程时,会涉及显示缓冲区队列相关知识,本文只是简单一笔带过,将在后面做具体分析。 1、申请创建Surface 1.1 viewrootImpl.java 在应用启动时,会通过WindowManagerGlobal去添加view,添加view时会去创建viewrootImpl,然后进行设置view。 public void setView (View view, WindowManager.LayoutParams attrs, View panelParentView) { 。。。。。。 requestLayout(); //申请布局 。。。。。。 } requestLayout()—>scheduleTraversals()—>doTraversal()–>performTraversals() private void performTraversals () { 。。。。。。 //① 调用relayoutWindow,创建surface relayoutResult = relayoutWindow( params , viewVisibility,