
macOS
文章平均质量分 69
Niap.pr
邮箱:niap.pr@gmail.com
展开
-
opengl入门(6)纹理的渲染
再之前的文章中,我们最多也就只能使用opengl绘制一个纯色的图形,如何绘制一张图片,就是下一步的重点。再opengl中或者大多数显卡程序中,这个过程叫做贴图。Shader的原理vertexShader的原理很简单,第一步就是把定点坐标绘制出来,第二步就是把 贴图的坐标传输给fragmentShader,这里vertexShader的out就是fragmentShader的in,要注意的是,参数的名称都需要相同才行。fragmentShader的原理也很简单,就是通过texture函数从unifo.原创 2021-09-07 15:31:38 · 586 阅读 · 0 评论 -
opengl入门(一)OpenGL环境搭建
youtube博主The Cherno,播放列表在这 https://thecherno.com/opengl 。OpenGL环境搭建首先,opengl只是一个标准,每个显卡厂商都有自己的实现,而且,opengl的open并不是指开源。其次,本文使用GLFW,GLFW就是一个对各个平台api的一个封装,youtube教程上是在window上实现的,本文在macOS上实现下载GLFW,点击箭头位置就行,会根据你的系统版本下载对应的包目录介绍,include里面是头文件,因为在macOS上使用,.原创 2021-08-24 17:08:31 · 868 阅读 · 0 评论 -
opengl入门(三)使用shader绘制三角形
虽然在最开始的文章中可以直接画出一个三角形,但是并不是所有的平台和显卡都可以,为啥能画出来,主要是因为opengl会自带一个fragment shader和一个vertex shader,这就是为什么只设置几个位置就能画出一个三角形。本文将自己写两个shader来完成同样的工作,为了区别,我们用红色来填充三角形。概念Vertex Shader简单的说,vertex shader是管三角形的三个顶点的,这里说一个重要概念,任何二维图形都可以拆分成若干个三角形的,如下图。所以,我们第一步就是要画一个三.原创 2021-08-26 18:42:02 · 1198 阅读 · 0 评论 -
opengl入门(二)使用Glew
前一篇文章中提到了Glfw,这个是一套跨平台opengl环境与窗口管理的库。各个平台和显卡厂家的opengl的api都有区别,这时候又出了一个Glew,它就是把这些个api整合起来的库。生成libGLEW库这里只介绍再macOS上的情况,类unix平台的其实都一样,不一样的是windows,官网直接给了二进制库。下载glew源码包解压后,命令行进入文件夹,发现文件夹中有一个Makefile,果断敲入命了:make,等待一段时间后,根目录下的lib文件夹中出现四个文件libGLEW.2.1.0..原创 2021-08-26 13:50:48 · 1673 阅读 · 0 评论 -
使用iphone作为zoom会议的摄像头
如果你打开quick time,并且你把iphone通过数据线插到mac上,你会发现,quick time可以抓到iphone的画面!这时候,如果你打开摄像头,quick time就可以把iphone当成了摄像头来用了,其实,obs的虚拟摄像头就可以通过这样的方式来实现iphone的虚拟摄像头的。那么代码怎么写呢?CoreMediaIO如果你有兴趣,可以尝试用ffmpeg的设备列表命令(如下),你会发现,普通的列出设备的方法并不能找到iphone,但是quick time和obs都可以。这就要说到了.原创 2021-05-27 11:35:39 · 2368 阅读 · 0 评论 -
mac虚拟摄像头开发
OBS这个软件,在26.1的时候引入了 obs-mac-virtualcam 这个插件,实现了虚拟摄像头的功能,但是这个原理是什么,有没有办法做一个自己的虚拟摄像头程序。调研过程coremediaio-dal-minimal-example这个项目,下载后,直接运行,按照他的readme把生成的plguin放到文件夹/Library/CoreMediaIO/Plug-Ins/DAL/中后,打开quick time,选择CMIOMinimalSample Device摄像头,就能拿到这样的画面。.原创 2021-05-27 10:56:50 · 1426 阅读 · 0 评论 -
Swift的CoreAudio播放pcm文件
开发中会遇到在swift中播放内存中pcm音频的需求。常见的pcm格式有signed16bit,signed32bit,float32bit,在iOS和macOS中,有个avfundation下的core audio就是专门处理pcm格式音频的。从文件中读取pcm文件生成想要的pcm文件,参照我之前的文章生成三个文件,分别对应signed16bit,signed32bit,float32bit。开始一个swift项目,创建一个Controller,参照之前的文章把文件拉入到xcode项目中,.原创 2021-04-15 19:40:04 · 1232 阅读 · 0 评论 -
Swift调用Objective-c调用C++的方法
iOS项目中的核心用c++的库,例如ffmpeg,那么如何在Swift中调用c++库就是一个大问题了。因为Objective-c和c++都是c体系,他们两之间的调用还算是方便。所以,要首先要解决的是Swift和objective-c之间的调用问题。Swift中调用Objective-c创建一个工程点击 file->new->file 添加一个 Header File ,起名为 FunctionFromOC,如下图所示:添加以下代码#ifndef FunctionFromOC.原创 2021-04-09 15:18:34 · 788 阅读 · 0 评论 -
Metal开发入门(四) 绘制渐变色
本文需要在第三节的基础上,绘制一个渐变色,效果如下,首先需要恢复到第三节的代码,删除Constants,timer等。丰富Vertex结构体添加以下机构,一个字段存储位置信息,另一个字段存储颜色信息。struct Vertex { var position:float3 var color:float4}对应的,VertexBuffer也需要修改vetextBuffer = device.makeBuffer(bytes: vetices, length: vetices.原创 2021-03-29 18:58:59 · 271 阅读 · 0 评论 -
Metal开发入门(三) 绘制动画
上一节交代了如何使用gpu绘制一个三角形,这一届会利用gpu来绘制一个简单的动画#首先绘制一个矩形在上一节的基础上,如果需要绘制一个矩形,只需要在原来的verices里面多添加几个定点即可,如下图所示,第一个三角形的定点是,v0,v1,v2,第二个是v2,v3,v0。 var vetices : [Float] = [ -1,1,0, -1,-1,0, 1,-1,0, 1,-1,0, 1,1,0, -1,1,0]使用index来减少.原创 2021-03-29 16:02:22 · 657 阅读 · 0 评论 -
Metal开发入门(二)绘制三角形
GPU在绘制的时候,只会去绘制线和三角形。绘制线段比较好理解,但是为啥是三角形,因为,三角形是在二维平面中利用最少的点就能绘制出来的图形。而且,它可以很容易的切割成两个。本文就是使用Metal来绘制一个三角形Metal绘制的过程大体上分为两个部分,一个部分是在整体初始化的过程中,初始化的过程主要是编译metal文件,取得三角形定点和整体的着色函数shader,着色函数和颜色格式组成了一个叫做piplineDescriptor的对象,通过piplineDescriptor即可生成一个piplineSt.原创 2021-03-29 14:34:33 · 472 阅读 · 0 评论 -
Metal开发入门(一)Hello Metal
环境:macOS 11 iOS14 swift4 xcode12项目准备新建一个iOS项目,值得注意的是:life Cycle请选择 UIKit App Delegate,后续因为需要从UIView中集成,项目还需要做一些变化。删除 AppDelegate.swift中关于SceneDeleagete的相关函数,添加一个成员变量window类型为UIWindow。删除info.plist中关于Scene Manifest的配置,添加一个storyboard。命名为main.storyboard,.原创 2021-03-29 09:13:45 · 1470 阅读 · 1 评论 -
Breakpad在mac/ios上的跨平台的调用方式
在项目中,需要使用到Breakpad作为crash的coredump工具,希望breakpad能以静态或动态库的方式集成到项目中来,但是,在研究中发现,breakpad在每个平台上都有一个特有的工程,且生成出来的文件,每个平台都不一样。Breakpad Mac项目简介路径在:breakpad/src/client/mac ,使用xcode打开Breakpad.xcodeproj后,看到一下内容:可以看出,整个项目是的核心就是输出一个breakpad.framework。...原创 2020-12-28 14:14:07 · 1006 阅读 · 7 评论