SceneKit下关于修改SCNNode 的Shader展示自定义图形
由于某些需求,需要在苹果OS x系统下展示一组点云,准备使用苹果官方的三维显示控件来完成这一功能。场景点云作为离散的点,
如果每个点以SCNnode的形式加入场景中,则回造成过大的内存消耗,笔者电脑下,单个场景展示到1w点时内存就崩溃了。所以准备通过
修改单个node的shader属性,实现自定义的形状,这样可以节省内存,还可以同时展示多个场景。查询了苹果的官方api文档,https://developer.apple.com/documentation/scenekit/scnshadable/1523348-shadermodifiers
说实话,的确没怎么看懂,以为看懂了写出来还是不对。搜索了一下傻瓜视频。才实现了基本颜色的功能。
(原本手册是非常管用的,只是不适合我这种英文不太好的菜鸟)
SCNProgram
通过使用GLSL(OpenGL Shading Language )或者Metal shading language进行重写。当你希望完全替换Scene Kit的原来的变换处理的时候,如果仅仅是简单的修该和替换的话,官方建议使用shaderModifiers属性,插入需要修改的属性,同样使用上面提到的两种方式。
修改vertexFunctionName和fragmentFunctionName定义预编译用的shader function,修改vertexShader和fragmentShader属性,提供OpenGL或者OpenGLES源码。
总之使用SCNProgram的权限比较大,但是需要定义的东西比较多。听从官方的建议,准备尝试下shaderModifiers属性
shaderModifiers
深度可以形成较复杂的几何形状,模拟出较为复杂的真实表面效果,增加较为艺术的光照效果,通过对每个像素的后续处理形成特殊效果。
这里定义的属性不同于SCNProgram,是额外追加到SceneKit的shader上的,完好保留原来的系统。
你可以将属性附加到SCNGeometry 或者SCNMaterial对象上,然后链接到shaderModifiers上。
SceneKit下关于修改SCNNode 的Shader展示自定义图形的更多相关文章
- windows下如何修改远程登录端口
windows下如何修改远程登录端口 windows远程桌面默认端口为3389,修改 方法如下:在"开始>运行"中输入"regedit" 点击“确定”,打 ...
- Ubuntu(16.04) 下如何修改(安装)arm-linux-gcc编译器
ubuntu下如何修改(安装)arm-linux-gcc编译器 将gcc解压到根目录 sudo tar xjf arm-linux-gcc-4.3.2.tar.bz2 -C / 查看原来的环境变量 e ...
- [Android]Button按下后修改背景图
Button按下后修改背景图 错误做法:为Button添加OnTouch事件监听,根据ACTION_UP和ACTION_DOWN动作来修改Button的背景图 错误原因:从理论上讲,按钮按下修改背景色 ...
- linux下如何修改iptables开启80端口
linux下如何修改iptables开启80端口 最近在做本地服务器的环境,发现网站localhost能正常访问,用ip访问就访问不了,经常使用CentOS的朋友,可能会遇到和我一样的问题.开启了 ...
- 浅谈Linux下如何修改IP
linux 下命令之浅谈//cd .. //返回上一级//创建文件夹touch test.txt//Linux不区分大小写//往一个文件中追加内容echo "****" > ...
- %appdata%目录下配置文件修改
%appdata%目录下配置文件修改 1.假设%appdata%\leez Program目录下有Cache子目录和配置文件Config.ini内容为: [Version] Version=1.0.0 ...
- ubunut在系统恢复模式下无法修改root密码的分析和解决
前些日子本猫的ubuntu 14.10貌似出了点问题,想修改下root密码,但是无奈原系统有错正常情况下无法修改啊,这是逼我重装的节奏吗? 在ubuntu开机后立即按住left_shift不放,调出g ...
- 记录下本地修改php版本的过程, 本地PHP目录位置,PHP-FPM目录位置
由于我在Cellar下安装了多个PHP版本,所以这里记录下如何修改本地的PHP版本 cd /usr/local/bin cp php71 php cp php71-fpm php-fpm vscode ...
- LINUX的DNS怎么设置?linux下如何修改DNS地址
LINUX的DNS怎么设置?linux下如何修改DNS地址 https://jingyan.baidu.com/article/870c6fc32c028eb03fe4be30.html Linux下 ...
随机推荐
- windows如何查看nvidia显卡(GPU)的利用率和温度
windows如何查看nvidia显卡(GPU)的利用率和温度 nvidia-smi 只要在文件夹C:\Program Files\NVIDIA Corporation\NVSMI里找到文件nvidi ...
- android--Git上克隆项目遇到的坑
直接上图,首先你得有你得GitHub项目地址,如下: 然后打开android studio,选择新建项目时从Git上克隆: 点击clone等待完成,新窗口打开. 打开之后可能.或许.大概.也许会出现下 ...
- eclipse安装Android插件
1.首先下载Eclipse for android,点击进入.下载这个版本可以省去ADT配置() 2.下载符合你电脑的版本 2.现在Android SDK,地址:http://tools.androi ...
- vmware虚拟机挂载Windows磁盘的两种方法
第一种 vmware虚拟机通过ntfs-3g挂接windows盘 1.共享windows盘虚拟机设置——>添加硬盘——>选择IDE——>使用物理磁盘——>选择本地盘(单分区)— ...
- word 排版用到双直线、波浪线、虚线 、直线、隔行线等技巧
在办公或毕业设计时,有时排版需要插入双直线.波浪线.虚线 .直线.隔行线等而烦恼, 今天小白与大家分享技巧如下: 感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮.本文欢迎各位转载,但 ...
- IE漏洞的调试心得
在调试漏洞的过程中,个人感觉最棘手的就是ie浏览器的漏洞和flash player的漏洞了.这里打算记录一下学习过程中的心得(主要是基于uaf类),以方便新人学习. 首先,ie漏洞与众不同的是,程序的 ...
- Office 365实现单点登录系列(4)—安装AD FS
单一登录 (Single Sign-On)简而言之,就是让用户使用一套ID和密码,就可以登录一个或多个系统的授权机制.用户只需要通过其中一个应用的安全认证之后,再访问同一服务器其他应用的资源时不需要再 ...
- java中常用Redis操作
stringRedisTemplate.opsForValue().set("test", "100",60*10,TimeUnit.SECONDS);//向 ...
- Z :彻底了解指针数组,数组指针以及函数指针 [复
原创 :彻底了解指针数组,数组指针以及函数指针 [复制链接] 00 roking 白手起家 帖子 60 主题 16 精华 0 可用积分 74 专家积分 0 在线时间 0 小时 注册时间 2003-10 ...
- bin/hdfs dfs命令
appendToFile Usage: hdfs dfs -appendToFile <localsrc> ... <dst> 追加一个或者多个文件到hdfs制定文件中.也可以 ...