自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 收藏
  • 关注

原创 3、OpenGL ES 纹理加载图片图片翻转的几种方式

OpenGL ES 纹理加载图片的几种翻转方式1、补充前面的渲染1.1、着色器渲染过程在渲染过程中,必须存储2中着色器,分别是顶点着色器、片元着色器。顶点着色器是第一个着色器、片元着色器是最后一个。顶点着色器中处理顶点、片元着色器处理像素点颜色。渲染流程图创建顶点 通过顶点着色器渲染 通过指定方式连接顶点,组成几何图形 光栅化:确定像素点在屏幕上绘制的位置,然后这些片段由片元着色器处理(输入给片元着色器) 光栅化阶段生成每个片元执行这个着色器 最终呈现出图形...

2020-08-09 22:09:10 1321

原创 2、OpenGL ES - EGL 探索

https://www.ixueshu.com/document/f2f5be57efaaad68.htmlOpenGL ES - EGL 探索OPenGL ES(OPenGL for Embedded Systems)是以手持和嵌入式为目标的高级3D图形应用程序API。支持多个平台:iOS、Andriod、BlackBerry、bada、Linux、Windows。OPenGL 和 OPenGL ES 的基本概念和历史OPenGL ES 1.x : 针对固定功能流水管线硬件 OP..

2020-08-07 10:45:17 511

原创 1、OPenGL ES - 简介、iOS中GLKit简单应用

OPenGL ES - 简介、iOS中GLKit简单应用一、OPenGL ES1、简介:OpenGL ES 是以手持和嵌入式为目标的高级的3D图形应用程序编程接口(API),OpenGL ES 是目前智能手机中占据统治地位的图形API,支持的平台有iOS、Andriod,BlackBerry,bada,Linux,Windows。OpenGL 和 OpenGL ES 其实是一套标准,是跨平台的,并没有提供载体。所以在对应的平台需要提供对应的载体用于实现。1.1、OpenGL ...

2020-07-27 12:52:22 858

原创 11、OpenGL - 混合(颜色混合)

混合OpenGL 渲染时会把颜色存在颜色缓冲区中,每个片段的深度值也是放在深度缓冲区。当深度缓冲区被关闭时,新的颜色将简单的覆盖原来颜色缓冲区存在的颜色值。当深度缓冲区再次打开时,新的颜色片段只是当他们比原来的值更接近临近的裁剪屏幕才会替换原来的颜色片段//开启混合gl_Enable(GL_BIEND);1、颜色混合目标颜色:已经存储在颜色缓存区的颜色值(已经存在的颜色,旧颜色)源颜色:作为当前渲染命令结果进入颜色缓冲区的颜色(新进来的颜色,新颜色)(颜色混合可以.

2020-07-21 23:53:43 898

原创 10、OpenGL - 正背面剔除、深度缓冲区

OpenGL 正背面剔除、深度缓冲区详细代码参见Demo 甜甜圈 demoDemo地址 -> OpenGLDemos -> 3.donuts 1、隐藏面消除在绘制3D场景时,我们需要决定哪些部分是对观察者可见的,或者哪些部分是不可见的。对于不可见的部分,应该丢弃。这种丢弃不可见部分的做法叫 -- 隐藏面消除方案:1.1、油画算法油画算法的思路是,先绘制离观察者最远的物体,然后依次类推,直到绘制完毕。如下图,先绘制红色部分,再绘制黄色部分,最后再绘制...

2020-07-19 22:34:31 914

原创 9、OpenGL - 金字塔(无底)、矩阵堆栈

OpenGL 金字塔 与 矩阵堆栈详细代码参见Demo 离屏渲染Demo地址 -> OpenGLDemos -> 2、金字塔代码解析:头文件#include <stdio.h>#include "GLTools.h"#include "GLMatrixStack.h"#include "GLFrame.h"#include "GLFrustum.h"#include "GLGeometryTransform.h"#include &l...

2020-07-13 21:12:34 233

原创 8、OpenGL - 渲染框架

OpenGL 渲染架构1、渲染架构顶点着色器、片元着色器,可以自定义编程图元装配、渲染,是我们不可以控制的1.1、渲染流程1、设置顶点数据和其他参数2、在定点着色器中进行运算的到裁剪的坐标3、细分着色器、几何着色器,不可自定义。4、图元设置,根据设置构成点、线、三角形。5、裁剪,裁剪掉超出显示区域的部分。6、光栅化,将图源栅格化为一个个的像素点。7、片元着色器,将应对的栅格(像素)填充为具体的颜色8、渲染图像。1.2、参数类型将数据传给顶点着色..

2020-07-12 17:02:53 527

原创 7、OPenGL - iOS 离屏渲染

离屏渲染:前面分析我们知道,iOS的渲染流程:主要流程:Core Animation 提交会话,包括自己和子树的layout 状态等(CPU进行解压计算等操作)RenderServer 解析提交的子树状态,生成绘制指令GPU 执行绘制指令显示渲染后的数据详细代码参见Demo 离屏渲染Demo地址 -> OpenGL -> iOSOpenGLDemos1、离屏渲染简单的可以理解为一帧的画面是有多个渲染图层合并的结果,在这些图层合并到帧缓冲区之前,需要...

2020-07-10 00:10:05 403

原创 6、OpenGL - iOS渲染流程

iOS渲染流程目录1、基础流程介绍 2、GPU图形渲染流水线 3、iOS 下的渲染框架 4、CoreAnimation 渲染面试的过程中经常会遇到类似这样的面试题:APP 从点击屏幕 到完全渲染,中间发生了什么? 一个UIImageView 添加到视图上以后,内部是如何渲染到手机上的。流程是是什么? 如果接解决tableView 有多个cell 的卡顿问题?iOS的渲染视图的核心是Core Animation其渲染层次依次为:图层树 -> 呈现树 -> 渲..

2020-07-08 16:56:51 899

原创 5、OpenGL - 渲染基础

OpenGL 渲染的基础大纲:1、CPU 和 GPU2、计算机渲染原理3、屏幕成像与卡顿情况1、CPU 和 GPU1.1、CPU(Central Processing Unit)现代计算机整个系统的运算核心、控制核心。处理依赖性非常高的事情Control控制单元、ALU有一部分运算单元、Cache显存1.2、GPU(Graphics Processing Unit)可进行绘图运算工作的专用微处理器,是连接计算机和显示终端的纽带处理依赖性非常低的事情,因为有非常多.

2020-07-06 23:04:53 582

原创 4、OpenGL - 基本用法介绍(许多方法已弃用,仅为了了解)

OpenGL - 基本用法介绍#include "GLShaderManager.h"/* `#include<GLShaderManager.h>` 移入了GLTool 着色器管理器(shader Mananger)类。没有着色器,我们就不能在OpenGL(核心框架)进行着色。着色器管理器不仅允许我们创建并管理着色器,还提供一组“存储着色器”,他们能够进行一些初步䄦基本的渲染操作。 */#include "GLTools.h"/* `#include<GLTool.

2020-07-05 16:55:18 481

原创 3、OpenGL - Mac 上的环境配置

OpenGL - Mac 上的环境配置准备资料:CLTools glew libGLTools.a资源地址可以去我上传的GitHub上下载地址 -> OpenGL -> 1、配置文件 一、配置过程1、打开xcode -> macOS -> Cocoa Application2、添加OpenGL.framwork 和 GLUT.framework 两个系统库3、添加CLTools.h ,glew.h在Bulid Se...

2020-07-05 14:33:48 501 2

原创 2、OpenGL - 坐标系

OpenGL - 坐标系1、笛卡尔坐标1.1、2D笛卡尔坐标系平面坐标系,只有X 和 Y轴1.2、3D笛卡尔坐标系立体坐标系,有X Y轴还有Z 轴。形成立体3D图形2、视口在用户窗口中显示的大小,可以和原内容大小相同也可以不同3、投影光源的发出点称为 投影中心; 投影中心与物体上各点的连线称为 投影线; 接受投影的面,称为 投影面; 过物体上各点的投影线与投影面的交点称为这些点的投影。 投影分为 中心投影 和 平行投影 两大类。...

2020-07-04 23:14:41 602

原创 1、OpenGL - 专业名词解析

1、OpenGL - 专业名词解析业界常说的两本书:红宝书: 《OpenGL编程指南》蓝宝书:《OpenGL超级宝典》1、图形API1.1、OpenGL(Open Graphics Library)是一个夸编辑语言、跨平台的编程图形程序接口。他将计算机的资源抽象成为一个OpenGL的对象,对这些资源的操作抽象为一个个的OpenGL的指令。主要针对的是在PC 端解决图像渲染1.2、OpenGL ES(OpenGL for Embedded Systems)是Ope...

2020-07-03 23:28:30 290

转载 25、Flutter - Packages和插件常用命令

开发Packages和插件常用命令Flutter三方的工具有两种。一种是插件(Plugin),一种是包(Package)。这两种差别在于Plugin不仅包含了Dart代码,还包含了iOS以及安卓的原生代码,比如常用的image_picker。那么Package就仅仅是Dart代码库。Package开发命令创建Dart包flutter create --template=package 'package_name'发布Dart包检查包flutter packages.

2020-07-01 20:58:28 443

转载 24、Flutter - FlutterEngine 引擎

FlutterEngine 引擎下载引擎代码工具准备Chromium提供的部署工具depot_toolsgit clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitgitHub配置SSH错误提示[email protected]: Permission denied (publickey).fatal: Could not read from remote repository.Pleas

2020-07-01 20:53:00 799

转载 23、Flutter - Dart中的异步编程——Future、async和await

首先Dart是一门单线程的语言,那么Dart对异步操作对支持,可以使我们在编写Dart程序时可以异步的来执行耗时操作。从而可以在等待一个操作完成的同时进行别的操作以下是一些常见的异步操作: 通过网络获取数据。 写入数据库。 从文件读取数据。 要在Dart中执行异步操作,可以使用Future类和async和await关键字。#Dart的事件循环(event loop)在Dart中,实际上有两种队列: 事件队列(event queue),包含所有的外来事件:I/O、.

2020-07-01 20:18:52 2629

原创 22、Flutter - 混合开发(三)iOS原生调用Flutter

混合开发(三)iOS原生调用FlutterFlutter 项目 调用一些原生的功能!用的比较多的就是第三方插件,因为比较简单官方 《Flutter实战》 原生项目中部分页面使用Flutter,这种也是比较常见的。FLutter本身定位的是开发一个完整的App应用。所以要是只让其做成一个页面的话有些功能是不支持的。Flutter本身有自己的渲染引擎,如果是小项目用Flutter就不划算,只有非常大型的项目将其部分或者全部页面用Flutter来实现。详细代码参见DemoDemo地.

2020-07-01 15:52:43 2898

原创 21、Flutter - 混合开发(二)Flutter使用第三方插件访问相册

Flutter - 混合开发(二)Flutter使用第三方插件访问相册详细代码参见DemoDemo地址 -> wechat_demo前面文章 9、Flutter - 项目实战 - 仿微信(三)我的页面 中最后提到头像从相册或拍照来实现变更的功能没有做,今天就来把项目实战中的 wechat_demo 中的调用相册变更头像实现一下使用一个Flutter第三方插件image_picker注意:当重新导入与原生相关的第三方插件时(例如访问相册、地图定位)...

2020-06-28 22:42:11 972 3

原创 20、Flutter - 混合开发(一)Flutter调用iOS原生相册功能选图片

混合开发详细代码参见DemoDemo地址 -> flutter_testdemo7混合开发总共两种1、Flutter 项目调用原生的某些功能2、原生项目里面包含 Flutter模块不建议Flutter 和 原生来回切换,1、性能损耗2、内存的泄露 开启了一个Flutter的页面!开辟了8M的内存空间,但是销毁的时候只销毁了2M,是很占内存的所以不要多开Flutter的页面Flutter 定义是一个单独的APP与原生的通讯交互需要通过通道 channe...

2020-06-27 22:24:44 990

原创 19、Flutter - Key & 局部渲染

Key & 局部渲染详细代码参见DemoDemo地址 -> flutter_testdemo6一、补充:17、Flutter - Flutter生命周期 & Widget 的生命周期 & Inherited数据传递生命周期生命周期就是处理数据没有监听生命周期的方法就是没有生命周期方法有状态的StatefuldidChangeDependencies 改变依赖关系在 init之后会调用一次然后就是在数据共享 Inherit ...

2020-06-27 17:48:32 437

原创 18、Flutter - Widget 的渲染原理

Widget 的渲染原理Widget 每次setState 都会重新构建,总是在变化,是不稳定的。渲染并不是渲染的Widget树Render 树 放的是是RenderObject,并不是所有的Widget都会变成RenderObject例如:StatefulWidget 是继承Widget 的,但是并不会进入到RenderObjectRow 继承自flex flex 里面有两个声明方法并没有实现,在子类中实现用的1、通过Row分析渲染流程Row 继承子Flexclass Row e.

2020-06-26 22:13:30 369 1

原创 17、Flutter - Flutter生命周期 & Widget 的生命周期 & Inherited数据传递

Flutter生命周期 & Widget 的生命周期& Inherited数据传递详细代码参见DemoDemo地址 -> flutter_testdemo51、Flutter生命周期1、什么是生命周期生命周期本质上就是回调方法(函数)这些方法就是生命周期方法是为了让你知道我封装好的widget 他处于什么样的状态!2、有什么用监听widget 的事件初始化数据 创建数据 发送网络请求内存管理 销毁数据、销毁监听...

2020-06-26 18:04:32 379

原创 16、Flutter - 网络请求 dio 及其他

Flutter - 网络请求 dio详细代码参见DemoDemo地址 -> flutter_isolatedemodio 是国人开发的一个网络请求的插件,对http 进行了封装 。同时有中文的文档可以查阅,是比较方便易用的。pub.dev 地址:https://github.com/flutterchina/dio/blob/master/README-ZH.md1、导入 dio 插件2、导入头http 里面有get post 请求dio 也有get..

2020-06-26 12:03:44 2840

原创 15、Flutter - 多线程(二)

Flutter - 多线程(二)详细代码参见DemoDemo地址 -> flutter_isolatedemoimport 'dart:async';import 'dart:io';import 'dart:isolate';import 'package:dio/dio.dart';import 'package:flutter/foundation.dart';void main() { tesIsolateDemo();// testThenDe..

2020-06-25 22:55:30 452

原创 14、Flutter - 多线程(一)

Flutter - 多线程代码详细代码参见DemoDemo地址 -> flutter_testdemo4import 'dart:io';import 'dart:isolate';import 'package:flutter/foundation.dart';//多线程void main() {// test1();// test2();// test3();// test4();// test5(); test6();}void fu.

2020-06-25 19:11:28 917

原创 13、Flutter - Future 异步

Flutter 异步编程Dart 是单线程,就不会存在资源抢到的问题,比较方便管理资源。单线程比多线程性能要低,但是Flutter 有实现异步的方案异步是多个任务的来回切换,并不等于多线程。而且在指向任务的时候,可以将这个任务,先放到其他地方不影响正常线程的执行,在合适的时候再去执行这个任务。参考文章: Dart中的异步编程——Future、async和await代码详细代码参见DemoDemo地址 -> flutter_testdemo3import 'dart..

2020-06-25 17:12:21 288

原创 12、Flutter - 项目实战 - 仿微信(六)聊天页面

Flutter - 项目实战 - 仿微信(六)聊天页面接上篇:11、Flutter - 项目实战 - 仿微信(五)通讯录代码详细代码参见DemoDemo地址 -> wachat_demo其他相关联文章7、Flutter - 项目实战 - 仿微信(一)BottomNavigationBar 4个主页面显示8、Flutter - 项目实战 - 仿微信(二)发现页面9、Flutter - 项目实战 - 仿微信(三)我的页面10、Flutter - 项目实战 ...

2020-06-23 22:54:46 1272

原创 11、Flutter - 项目实战 - 仿微信(五)通讯录

Flutter - 项目实战 - 仿微信(五)通讯录接上篇:10、Flutter - 项目实战 - 仿微信(四)数据准备代码详细代码参见DemoDemo地址 -> wachat_demo其他相关联文章7、Flutter - 项目实战 - 仿微信(一)BottomNavigationBar 4个主页面显示8、Flutter - 项目实战 - 仿微信(二)发现页面9、Flutter - 项目实战 - 仿微信(三)我的页面10、Flutter - 项目实战 ...

2020-06-21 21:13:00 1572

原创 10、Flutter - 项目实战 - 仿微信(四)数据准备

Flutter - 项目实战 - 仿微信(四)数据准备接上篇:9、Flutter - 项目实战 - 仿微信(三)我的页面代码详细代码参见DemoDemo地址 -> wachat_demo其他相关联文章7、Flutter - 项目实战 - 仿微信(一)BottomNavigationBar 4个主页面显示8、Flutter - 项目实战 - 仿微信(二)发现页面9、Flutter - 项目实战 - 仿微信(三)我的页面项目实战之后会用到的例如会话列表页面...

2020-06-21 16:00:21 500

原创 9、Flutter - 项目实战 - 仿微信(三)我的页面

Flutter - 项目实战 - 仿微信(三)我的页面接上篇:8、Flutter - 项目实战 - 仿微信(二)发现页面代码详细代码参见DemoDemo地址 -> wachat_demo其他相关联文章7、Flutter - 项目实战 - 仿微信(一)BottomNavigationBar 4个主页面显示效果:点击右上角的照相机进行相册或拍照功能暂未实现,后面有时间的话在demo中补上。可以自行上网查阅资料实现该功能我的页面,并不是很复杂。尤其是下面...

2020-06-20 23:28:15 1570

原创 8、Flutter - 项目实战 - 仿微信(二)发现页面

8、Flutter - 项目实战 - 仿微信(二)发现页面接上篇:7、Flutter - 项目实战 - 仿微信(一)BottomNavigationBar 4个主页面显示代码详细代码参见DemoDemo地址 -> wachat_demo效果:创建文件夹discover把前面创建的 discover_page 放进去。如上图分析,这种在iOS中做的话应该用一个UITableView来实现,在Flutter 里面有一个列表的显示是ListView,里面可以放我...

2020-06-20 16:59:44 864

原创 7、Flutter - 项目实战 - 仿微信(一)BottomNavigationBar 4个主页面显示

项目实战 - 仿微信(一)BottomNavigationBar 4个主页面显示要实现的效果就是如下图的 BottomNavigationBar 能点击并切换页面代码详细代码参见Demo(目前还有点小问题,不影响本片文章所诉内容的功能。后面写文章的时候会处理掉)Demo地址 -> wachat_demo创建工程和创建文件就不在说明,同时为了后面优化和修改将 BottomNavigationBar 功能抽取到一个类中实现,其他实现方式不再讲解1、main...

2020-06-20 00:20:58 1322 1

原创 6、Flutter - 状态管理 StatelessWidget 和 StatefulWidget

状态管理 StatelessWidget 和 StatefulWidget代码详细代码参见DemoDemo地址 -> flutter_testdemo2创建一个state_mag_demo.dart 的文件import 'package:flutter/material.dart';widget 继承自 StatelessWidget 或 StatefulWidgetStatelessWidget 无状态 里面的数据是静态的,也就是创建出来之后是不能改...

2020-06-14 18:12:12 211

原创 5、Flutter - 控件基础(三)布局

Flutter - 控件基础(三)布局上篇补充final 是运行时赋值之后不可变 const 是常量布局代码详细代码参见DemoDemo地址 -> flutter_testdemo11、控件显示对应Demo中 base_widget.dart1.1、纯文本显示import 'package:flutter/material.dart';// ----------------- 文本 -----------------class TextDemo e..

2020-06-14 16:30:03 277

原创 4、Flutter - 控件基础 (二)ListView 列表展示数据、布局

ListView 列表展示数据、布局接上篇,几点注意事项与说明1、创建工程项目的时候,存放路径不要有中文,有中文会有警告,而且后面可能会有一些未知的问题。如果有中文路径,创建完工程移动工程位置的时候,用AS 直接运行编辑是没有问题的,因为AS会自动修改,但是如果直接用xcode 打开的话是有问题的。可以用AS打开运行之后再去用xcode 打开,这样配置的路径就会修改了。2、Dart 中没有析构函数,有自己的垃圾回收机制不同于OC 需要些 dealloc3、MaterialApp(.

2020-06-14 09:32:37 543

原创 3、Flutter - 入门 及 控件基础(一)

Flutter 入门Flutter 使用的是 Dart 语言Dart 单线程语言Flutter 都是单线程执行的1、基础知识1.1、AS 简单界面介绍1.2、命令行打卡Flutter 并选择运行设备如果是iOS真机的话需要用xcode 打开 工程,然后配置证书。(跟正常iOS的配置一样)1.3、被锁在使用iOS模拟的时候,有可能会出现闪退,如果出现闪退报错提示被锁的时候。去倒Flutter 的bin -> cache 目录下删除lockfile 文件重新运行即..

2020-06-13 18:22:30 229

原创 2、Flutter - Android Studio 常用的快捷方式

Android Studio 常用的快捷方式总结一下在Flutter开发中,AS(Android Studio一下简称AS)常用的快捷方式1、代码块lutter 有两种状态控件:StatelessWidget StatefulWidget对于有可变状态控件的管理,官方文档是写了有3种模式:控件自己管理状态、交给父控件管理状态以及混合管理。我个人初学对于自己管理比较好理解,对于父控件管理理解起来有点困难,所以只能多看多学。这里写一下两种状态管理的方式和代码,加深自己的印象,尤其是父控.

2020-06-13 11:21:42 364

原创 1、Flutter - 环境搭建ForMac

关于Flutter的介绍我这里就不多说(看官网),如果你已经了解过了,那么这篇文章正好针对iOS开发者,开启Flutter之旅。本次版本:Mac OS X 10.15.2FlutterSDK 1.12.13Xcode 11.3.1Android Studio 3.6.1Flutter的配置其实越来越简单了。尤其刚出来的时候,需要配置的东西太多,。这里使用 Android Studio 作为开发Flutter的工具,毕竟都是微软开发的的。1、安装Fluter这里...

2020-06-12 23:30:28 2285

原创 32、数据结构与算法 - 排序 (四)总结

排序冒泡排序 初级冒泡排序: 冒泡排序: 冒泡排序(优化): 选择排序: 直接插入排序: 希尔排序: 堆排序: 归并排序 归并排序(递归): 归并排序(非递归): 快速排序: 快速排序: 快速排序(优化): Program ended with exit code: 0#include <stdio.h>#include <string.h>#include <ctype.h>#include <.

2020-06-09 23:12:57 119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除