- 博客(113)
- 资源 (9)
- 收藏
- 关注
原创 filament中systrace的使用
systrace是android提供性能检测工具,介绍和用法参考https://blog.youkuaiyun.com/vicwudi/article/details/100191529。这里主要记录filament渲染引擎底层使用systrace进行检测的用法。filament/libs/utils/include/utils/Systrace.h中定义了systrace 的宏用法。SYSTRACE_ENABLE,启用systrace功能;SYSTRACE_DISABLE禁用systrace功能。...
2021-02-22 15:55:04
345
原创 2021-01-07
HDR效果就是超亮的光照与超暗的黑暗的某种结合,这个效果是光照产生的,强度、颜色等方面是游戏程序可动态控制的;bloom效果则是物体本身发出的光照,仅仅是将光照范围调高到过饱和,是游戏程序无法动态控制的。HDR特效是这样:bloom特效左:实现方式:1.渲染场景高亮部分,阈值颜色为02.步骤1生成的图形高斯模糊3.生成场景图片和步骤2图片加权融合。...
2021-01-07 11:26:25
194
原创 Gamma空间精简讲解
在查找相关资料的过程中,看到了很多人争论,出现Gamma Correction到底是人对自然亮度的感知原因,还是由于早期的 CRT 显示器存在非线性输出的问题。在研究了一些Gamma Correction资料后,个人认为早期Gamma Correction的出现是由于原来的 CRT 显示器存在非线性输出的问题,而在显示器完全可以解决非线性输出的问题的今天,Gamma Correction的存在更多的是由于人对自然亮度的感知。人眼对环境光的不是随着光的强度线性增加的,越暗的地方,变化感受越明显,设1为白色
2021-01-07 11:24:20
785
1
原创 Filament在C++中创建渲简单染体
为查找新引擎锯齿严重的问题,在C++端重写了简单DEMO,摸索阶段有点费事,记录下,以免后续需要。int floatSize = 4;int shortSize = 2;int vertexCount = 4;int byteStride = 7*4;auto vertexBuffer = VertexBuffer::Builder().vertexCount(vertexCount).bufferCount(1).attribute(VertexAttribute::POSITION,
2021-01-07 11:21:35
592
原创 配置SSH
设置用户名和密码: git config --globaluser.name"xxx" git config --global user.email "xxx@xxx.com" 配置ssh,不每次输入密码 首先,命令行输入 cd ~/.ssh ,如果有.pub文件 rm -rf *删除,没有不用处理。 然后ssh-keygen -t rsa -C "xxx@xxx.com,后续全部按enter,包括输入密码部分。 最后vim ~/.ssh/id_rsa.pub,复制到git中的ssh中..
2021-01-07 11:19:04
210
原创 Jni学习(六)-------vector和jbyteArray转
vector转jbyteArray:std::vector<byte> ins = ((CIAILogic*)addr)->getReuestMahsIns(); int size = ins.size(); jbyteArray jarray = env->NewByteArray(size); jbyte *jnum = new jbyte[size]...
2020-04-15 10:47:42
2390
1
原创 JNI使用(五)-------JAVA(IDEA)使用调用DLL注意事项
以前基于JNI使用C++的项目,都是安卓项目,jni和C++源码部分通过androidstudio提供的cmakelist直接编译使用。这次项目是使用IDEA的JAVA服务端项目(IDEA使用起来跟androidstudio一样比eclipse舒服多了,,外行浅见),有几点不同点记录一下。1.使用VS生成dll的过程中,java和c++的桥接代码部分,也就是根据javah生成的文件,...
2020-04-15 09:48:53
2331
原创 jni使用(四)-----IDEA中javah生成.h文件
好久不写JNI,再写的时候最简单的生成.h折腾十几分钟,记录一下这些最基本的操作。免得后面再用又忘记,在idea编译生成.class 文件后在项目\src\在或者项目\bin\classe\下执行 javah 包名.类名的命令如下:javah com.wangyufeng.ai.JniCallC.java...
2020-04-13 16:32:55
657
转载 u3D深度信息空间线性化
https://blog.youkuaiyun.com/wodownload2/article/details/95043746
2020-04-02 19:12:57
394
原创 JNI使用(三)-------char*(byte*)和jbyteArray(byte[])x相互转换
c++ 中的char*转java中的byte[],代码如下: char *result = addr->getReadData();//字符串 int length =addr->getAvailableSize();//字符串长度 jbyteArray data =env->NewByteArray(length); env->SetByteArrayRe...
2020-03-05 12:32:30
6070
3
原创 TcpConnect connect failed ACCES网络无权限
第一次用android原生写网络,TcpConnect connect failed ACCES,碰到这个问题,查到是网络权限的问题,改动如下:
2019-06-03 09:13:48
1593
原创 JNI使用(二)--------String转char*和char * 转String
c++ 中的char*转java中的String,代码如下:char * charResult; jstring result = (env)->NewStringUTF( charResult);return result; java中的String转c++ 中的char*,代码如下: const char *nativeString...
2019-05-22 16:18:46
1381
原创 JNI使用(一)--------java生成C++类
首先,写好一份桥接C++的java代码TcpConnectionJni.java如下:package com.example.wangyufeng.myapplication;public class TcpConnectionJni { long nativeProtocolBios; private native void close(); priv...
2019-05-21 20:46:08
556
原创 cocos渲染引擎分析(七)-----shader渲染流程之StateBlock
cocos引擎底层渲染场景时,会根据状态设置(混合函数,深度写入,深度测试,背面裁剪,透明)渲染场景,StateBlock就是控制整个场景状态变换的类。cocos设计的为每个材质保持一个StateBlock,通过_pMaterial->getStateBlock()获取,状态设置包括以下:enum{ RS_BLEND = (1 << 0)...
2019-05-16 13:51:01
738
原创 UE4学习(一)--------Unreal4源码编译
unreal源码的获取安装编译参考这编文章: https://www.cnblogs.com/sundayofit/p/8448786.html 我的编译环境是VS2017,win7系统,编译时,提示如下错误问题: 错误 MSB3644 未找到框架“.NETFramework,Version=v4.6.2”的引用程序集 的解决方法。...
2019-05-16 13:46:50
1153
转载 JNI调用C++自定义类
文章地址:https://blog.youkuaiyun.com/chaoqiangscu/article/details/83023762
2019-05-15 10:08:37
571
转载 配置reactNative(RN)过程中 出现react-native:command not found 和 zsh: command not found: react-native
问题链接https://www.jianshu.com/p/2940f98e142a
2019-05-09 15:41:28
1954
原创 lua require DLL动态库,传入callback
上个Demo主要写了C++类的各种参数传入,然而这些参数并不包括函数,后面又改了部分,加入callback:#include <iostream>#include <functional>using namespace std;extern "C" {#include <lua.h>#include <lauxlib.h>#in...
2019-05-05 14:18:45
883
原创 lua require自定义DLL
一直使用cocos自带的LUA绑定C++流程,项目服务器需求脱离cocos使用lua require C++的dll,研究了下,C++代码实现如下:#include <iostream>using namespace std;extern "C" {#include <lua.h>#include <lauxlib.h>#include <...
2019-04-28 17:44:46
2123
原创 cocos的物理碰撞系统使用方式,适应用2D,3D捕鱼
首先设置整体场景的物体世界 self =display.newScene("MainScene",{physics=true})--创建物体世界 local physicsWord = self:getPhysicsWorld() physicsWord:setGravity(cc.p(0, 0)) physicsWord:setUpdateRate(3);--设置频率 if ...
2019-04-23 15:46:13
950
原创 cocos渲染引擎分析(六)-----shader渲染流程之内置shader构建
u单纯使用OPENGl写一个场景渲染时,可以很容易的看出OEPNGL整个渲染流程,cocos引擎将整个渲染流程进行了封装分类,各司其职。虽然很多人说cocos渲染底层是学生写的,不少问题,然而cocos这个小巧的引擎,确是一个很好的学习引擎渲染架构的方式,本篇主要讲,引擎底层怎么组织shader,读取模型,材质,创建生成渲染指令的过程进行剖析,本章记录内置shader的构建过程。内置shade...
2019-04-12 10:06:53
987
原创 cocos渲染引擎分析(五)-----FBO实现多分辨率渲染
上章讲了RenderTexture的流程,然而有些需求cocos提供的并不能实现。在PC上玩游戏的时候,我们可以在设置选项里设置游戏分辨率,模糊,清晰,高清,然而cocos引擎只支持一种渲染分辨率,手机分辨率多少,就会渲染出同样分辨率的图片,这样对某些消耗大3D游戏,在低端手机就会很卡。因此,本章主要讲怎么实现基于FBO的多分辨率渲染。多分辨率渲染的思路如下:首先创建FBO,然后渲染场景时,设...
2019-04-03 17:08:04
844
原创 cocos渲染引擎分析(四)-----渲染到纹理(RenderTexture)分析和渲染3D 错乱问题
渲染到纹理,顾名思义就是将原本需要渲染到系统屏幕上的图像渲染到纹理,cocos引擎也提供了渲染到纹理(Render Texture)的功能。当然,跟其他3D功能一样,它的渲染到纹理一样有自己的局限性,只能等比例渲染,场景为1280*720,你如果想要渲染全景,只能渲染1280*720的纹理上,如果创建的纹理是640*360,渲染出来的纹理就是原来场景的一半,下一章写出自己的自适应渲染。渲染到纹...
2019-04-03 16:52:40
2482
原创 cocos渲染引擎分析(三)-----渲染命令之MeshCommand
cocos的3D部分是在2D部分的基础上加上去,虽然经历很多版本迭代,然而3D部分,只是一个简单架子搭了起来,如果想要譬如高光,阴影,批次渲染等功能,都是需要自己添加的。这里简单讲下3D渲染命令MeshCommand,MeshCommand主要用于渲染Sprite3D 和3D粒子,这里以Sprite3D 的绘制流程为例,记录MeshCommand的渲染流程。引擎渲染3D场景时,首先遍历场景节点...
2019-04-03 16:18:56
735
4
原创 cocos渲染引擎分析(二)-----渲染命令之TrianglesCommand批次合并渲染
从上一章cocos启动流程中知道,cocos的渲染队列中,总共有TRIANGLES_COMMAND,GROUP _COMMAND等七种,其中GROUP_COMMAND是命令集合,QUAD_COMMAND是TRIANGLES_COMMAND的扩展类,真正的渲染命令只有5种:CUSTOM_COMMAND用于自定义绘制,BATCH_COMMAND批次渲染图集,MESH_COMMAND网格渲染,主要用于...
2019-04-03 14:20:29
1529
原创 unity使用Protobuf小结
使用方式可以使用生产potobuf-lite.dll的方式引入到unity插件。 直接拖到protobuf的csharp源码到unity插件中,中间需要删除测试代码,有时编译不通过,可采用以下方式:在Assets目录下面新建smcs.rsp文件,并在其中写入 -unsafe字符串,前后不加空格。 根据.proto生成C#语言,生成语句类似下面的语法(protoc以及lib的生成使...
2019-03-28 08:41:35
344
转载 Unity3D 入门小技巧——克隆游戏对象与创建预制
一、克隆游戏对象与创建预制的区别在Unity3D当中,为了快速复制出游戏对象,主要有克隆游戏对象与创建预制两种方法。两者区别在于:1、克隆游戏对象需要场景中有被克隆对象,而创建预制只需事先创建预制即可,允许场景中一开始并不存在该游戏对象。2、克隆出来的游戏对象并不会随着被克隆体的变化而发生变化,但是使用预制创建出来的对象会随着预制的改变而发生改变。...
2019-03-27 18:37:53
2667
原创 cocos渲染引擎分析(一)-----渲染启动流程
做了两年的cocos引擎底3D层优化和特效,以及对应的编辑器开发。原本的计划中,参考Unity3D引擎,优化cocos渲染流程,实现批次渲染,BRDF渲染,卡通渲染,多材质渲染,延迟渲染,模型阴影,以及HDR,次表面散射,中国风特效,砖石特效等,并制作对应的编辑器。而今只实现了底层优化,批次渲染,BRDF渲染,卡通渲染,多材质渲以及对应编辑器制作。自感部门危险,这几天整理下做过的工作,记录下来,也...
2019-03-26 19:21:12
2399
原创 cocos 3D的的透明问题,模型中存在两个透明物体时透明混乱
公司3D项目反馈cocos3d模型问题,正常情况,我们的模型如下图,模型的毛发使用透明贴图:当整体改变透明度改为为 小于100时出现下面情况: 分析后,感觉应该是两个透明物体绘制顺序出错,并且绘制透明物体时,cocos并没有关闭深度写入功能,更改mesh::draw函数如下: _material->getStat...
2019-03-20 10:34:25
1923
原创 cocos项目3.13升级到3.17
升级公司项目到3.17,PC编译通过后,android编译还希望使用原先的语句编译,记录一个困扰了不少的坑,不是专业的android开发人员,知其然,不知其所以然。报下面的错误时:Android NDK: Trying to define local module 'cocos2dx_static' in jni/../../cocos2d/cocos/./Android.mk.Andr...
2019-03-15 14:22:24
1477
原创 error LNK2005 _inflateEnd 已经在 libzlib.lib定义
最近给公司的引擎升级,新项目中出现error LNK2005 _inflateEnd 已经在 libzlib.lib定义,错误很明显,重复定义。但是项目中又同时需要这两个LIB库。解决方式如下在命令行中/Force:MulTiple引用于https://msdn.microsoft.com/en-us/library/70abkas3.aspx和https://blog.youkuaiyun.com/...
2019-03-12 14:14:02
748
原创 cocos中Vs项目的路径宏和库引入
这几天升级公司项目3.1,0到3.17,新老项目,库路径输出路径,以及公司的库,路径不太一样,记录下VS项目中常用的一些路径宏。$(EngineRoot) cocos项目自定义的路径,可以修改。点击视图-----》属性管理器-------》点击项目下的props文件---》点击用户宏编辑。$(PlatformName)当前项目平台的名称$(OutDir)输出文件目录的路径,...
2019-03-12 10:25:13
389
原创 XP支持
公司项目在XP系统提供支持,改动如下:1.平台工具集设置为Visual Studio 2013 - Windows XP (v120_xp)2.配置属性->C/C++->预处理器->预处理器定义添加WIN32_WINNT=0x05013.配置属性->链接器->引用->是 (/OPT:REF)(有时需要,保险起还是设置)4.GetUserPrefe...
2019-03-08 14:59:09
550
原创 设置"从父级或项目默认设置继承"
首先点击解决方案,然后视图------属性管理器(VS2017以前的为 视图----其他窗口---属性管理器),进入下面选项红色部分代表你继承值的文件,如果不需要某些继承的值,可以手动删除对应的Props文件,或者重新编辑,删除后,点击项目右键或者直接编辑props文件...
2019-03-05 12:41:40
4396
1
原创 头文件中用static定义全局变量的问题
cocos3.13前的版本中,一些全局变量使用static 定义,研究了static定义全局变量的优缺点。例如定义下面的头文件//cocos.h#pragma oncestatic int globle= 0;static int image =[............... ...............//省略];在其他源文件中,引用cocos.h头文件后,每个源文件都...
2019-03-05 09:49:08
2263
1
原创 cocos实现PC端鼠标指针更换功能
预打算使用windows中的鼠标指针功能,发现效果不佳,和COCOS不是很匹配,最终和cocos使用同一个glfw库的,代码如下: std::string strCur = "../../res/bg_d.png"; auto image = new (std::nothrow)Image(); image->initWithImageFile(st...
2019-02-26 10:07:27
1437
原创 cocos屏幕自适应的一些概念
屏幕自适应因情况不同,方法不同,这里记录几个概念,懂了这几个概念,cocos屏幕自适应问题应该容易解决。屏幕的的实际尺寸大小使用getFrameSize()获取,代表屏幕大小,游戏开发过程中,坐标与屏幕实际尺寸并不对应,而是对应于设计辨率,这样针对不同的屏幕,程序根据适配模式(固定宽,固定高,无边框)统一自适应到屏幕上。display.width和diplay代表虚拟分辨率(或者设计分辨率...
2018-11-14 19:10:22
834
1
原创 cococs在Windows下全屏实现和窗口最大化
项目需要在windows下实现全屏功能,本人版本3.14,参考https://blog.youkuaiyun.com/wiyun_beijing/article/details/23423785代码发现,发现并不是能满足自己的要求,虽然可以实现全屏,然而上半部分有一条黑色边框,如下图:且多次全屏切换后,屏幕会慢慢变小。分析代码发现,每次屏幕改变代码后,cocos 会调用void onGLFWWindo...
2018-11-14 18:35:32
1187
原创 cocos实现WebView缓存策略
cocos打开WEBView时,每次都会重新从网络加载网页数据,有一定的时间延迟,对于没有更新的网页,可以采取缓存策略,在需要更新的时候,才使用从网络加载数据的方式,而cocos底层3.13版本,还不支持缓存策略,如果需要缓存策略需要做如下修改: UIWebView-ini.h添加如下代码 void WebView::setLocalCacheElseNet(...
2018-11-12 09:28:43
2011
次表面散射玉石
2018-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人