- 博客(41)
- 资源 (3)
- 收藏
- 关注
原创 Fbx文件的加载与渲染:一个DirectX11小项目开源啦,主要用来演示fbx文件的加载与渲染
这个小项目最初是用来学习DirectX11的,后来尝试实现一个名为GGUI的UI库,后来尝试fbx文件的解析。我有个缺点,就是浅尝辄止。一件事,只要学会了一点皮毛,初步达到了目标,就搁置不做了。去年初步实现了fbx文件的加载与渲染,然后就热情骤减,裹足不前了。最近热情又来了,就把这个小项目鼓捣了一下,把代码放出来,给大家提供一些思路。源码托管在github上: 项目链接 https
2017-09-02 22:44:13
5156
7
原创 [Unity3D 版本5.X]实现一个跟随摄像机,聚焦到客户端主角身上
游戏中的摄像机,都是聚焦到客户端主角身上。为了实现这个功能,我写了两个脚本,第一个脚本用来控制客户端主角的位置和旋转,使用WSAD键控制主角的前后左右移动,使用鼠标右键控制主角的旋转。第二个脚本是根据客户端主角的transform,设置摄像机的transform,使得摄像机聚焦在主角身上。这两个脚本都是设置成客户端主角的组件。第一个脚本 FiMainPlayerMove
2017-05-29 23:35:17
1721
原创 [Unity3D 版本5.X]实现一个自由漫游的摄像机
我学习Unity3D一小段时间了,第一个制作目标就是实现一个自由漫游的摄像机。使用WSAD键控制摄像机的上下左右移动,使用鼠标右键控制摄像机的旋转。这个功能比较简单,代码也一目了然,不做过多解释了,直接上代码。//-----------------------------------------------------------------//1,把本类作为一个组件,包含在 Gam
2017-05-29 20:46:05
13189
1
转载 编程知识汇总--抓包工具Wireshark,Fiddler
Wireshark和Fiddler都是在Windows平台下的抓包工具。TCPDump是Linux平台下的抓包工具。Wireshark用来抓取TCP和DUP网络包;Fiddler用来抓取HTTP网络包。Wireshark相关的帖子:一站式学习Wireshark(一):Wireshark基本用法wireshark基本用法及过虑规则Fiddler相关的帖子:
2017-05-21 14:56:07
671
原创 编程知识汇总--捕获dump,生成dump
windows 应用程序崩溃时的内存转储及dump文件的分析 [传送门]http://blog.csdn.net/sp_daiyq/article/details/7965608vc++程序崩溃后不生成dump文件 [传送门]http://blog.csdn.net/lixiangminghate/article/details/50413924写
2016-11-01 12:12:22
584
原创 使用GPU计算骨骼动画(二)我的实践总结
DX11,创建动态贴图,贴图的最大分辨率是 8192*16384 (或者16384*8192),并且,宽高的最大值就是 16384 。创建贴图时,宽高的值不要求是2的整数幂。
2016-10-18 10:16:17
1385
原创 Unity3D 5.x 启动过程中 License Error 解决办法
新安装了Unity3D的最新版本5.4 ,启动过程中执行"Check License"步骤的时候报错,"License Error" ,说我没有License。Unity3D不是对普通用户免费吗?干嘛不让我用啊?这让我郁闷了好久。我是按照“注册帐号--下载--安装--启动”这样的步骤来做的,一般用户都会这样做,不应该有错才对。肯定是我遗漏了某个操作步骤,但Unity没有任何提示。这个新
2016-10-09 18:42:15
20415
1
转载 使用GPU计算骨骼动画(一)从网络上收集的资料
假设场景中有一个角色,带有骨骼动画,面数在3W左右。角色右上方有一个平行光源,光源会实时生成阴影贴图(shadow mapping)。1、使用GPU更新骨骼动画。GPU很快,但是如果场景中带有会生成阴影贴图的光源时GPU就不得不多次计算同一个数据。 也就是说从灯光方向看场景,生成depth map时需要把模型上的顶点更新到指定帧; 在实际把场景显示到屏幕时也需要把模型上的顶点更
2016-09-27 20:01:42
3289
原创 FbxSDK使用总结
Fbx文件结构太复杂!FbxSDK太难理解!Fbx官网文档功能介绍太不清晰!FbxSDK中的示例程序太冷门,太不解决问题!网络上找不到能够解决我的痛点的方法。有相同烦恼的不只我一个人,一个叫 Tianyu Lang 的歪果仁也发出抱怨,并怒喊:I have searched almost all the corners on the Internet to clarify things
2016-09-19 16:01:31
18117
5
原创 FbxSDK官网文档阅读总结
FbxSDK官网文档地址 :传送门原文Normally, an FBX application needs only one SDK manager object.Most FBX applications need only one scene. But if, for example, you wish to load (i.e., import) several FBX fi
2016-09-09 21:12:55
4334
原创 dll工程中如何生成lib文件
新建了一个dll工程,除了生成dll文件外,你还想生成相应的lib文件,怎么搞?解决办法:为工程添加一个def文件即可。注意:添加def文件后,默认情况下,生成的lib文件的名字与工程名字相同;如果你想使用自定义的lib文件名,修改def的文件内容即可。
2016-08-23 19:58:13
1287
原创 3D编程知识--收集的帖子
FlagShipEngine,对多线程渲染讲的比较多。传送门http://www.cppblog.com/flagship/category/9250.html《The Complete Effect and HLSL Guide》翻译连载,传送门http://blog.csdn.net/soilwork/article/details/1402960修改E
2016-07-24 12:35:51
570
原创 3D编程知识--矩阵变换
为了对一个顶点进行变换(旋转、平移等),可以把它与一个4*4的的变换矩阵来相乘。变换思路如下:设置一个4*4的矩阵,使其表示某一具体的变换。然后将顶点的坐标或者向量的分量放入一个1*4的行向量v中。乘积vX就生成了经过变换的顶点或者向量v'。例如,如果X表示沿着x轴平移10个单位,v=[2,6,−3,1],则乘积vX=v'=[12,6,−3,1]。前面提到了将顶点的坐标或者向量的分量放入一
2016-07-22 15:15:59
981
原创 如何保护一个代码模块,使其只能在主线程中使用
开发过程中可能会遇到这样的情况,写了一个代码模块,它是非线程安全的,所以只能在某个线程(例如主线程)中使用。如何防止在其他线程中误用该模块呢?(例如,刚入职的同事可能不熟悉代码,很有可能会误用)有一个办法可以从底层把该代码模块保护起来,一旦在其他线程中被调用,就弾框报错。每个线程都有一个线程ID。在指定的线程中对“非线程安全的代码模块”做初始化操作,“非线程安全的代码模块”把当前线
2016-07-04 20:53:55
774
原创 “鼠标拖动游戏窗口,消息循环会卡住,导致游戏不能更新不能渲染”,解决办法在这里
开发端游的同学都知道,鼠标按在窗口标题栏上进行拖动,游戏就会卡住不能更新不能渲染。还有另外一种情况也会导致游戏卡住,就是弹出窗口的系统菜单时,例如下图:“弹出系统菜单导致游戏卡住”,这种情况比较容易解决,我先讨论这种情况。有两种操作会弹出系统菜单:1,鼠标左击标题栏左侧的图标2,鼠标右击标题栏当用户发生上面两种操作时,我们拦截掉Windows消息,不要通知给
2016-06-05 14:32:27
3547
原创 我要使用TcMalloc
TcMalloc(Thread-CachingMalloc)是google-perftools工具中的一个内存管理库。TcMalloc在内存分配的效率和速度上要高很多,而且支持多线程。1,介绍和初步使用的帖子推荐一个跨平台内存分配器tcmalloc用在3D游戏上Gperftools中tcmalloc的简介和使用TcMalloc的介绍以及Windows下安装使用2,当你的
2016-04-21 17:48:16
8985
原创 64位CPU,64位操作系统,和64位应用程序三者之间的关系
64位CPU目前市面上的CPU都是64位且兼容32位的CPU,既支持64位指令集,也支持32位指令集。在这样的CPU上面,既能安装64位操作系统,也能安装32位操作系统。64位操作系统目前主流操作系统都是64位操作系统。只有64位操作系统才能发挥CPU中的64位指令集的功效。如果是32位操作系统,它只能发挥CPU中的32位指令集的功效。目前的64位操作系统都做了兼容,既能运
2016-04-17 19:30:47
2104
原创 编程知识汇总--3D模型文件的通用格式:FBX
1,FBX、DAE模型的格式、导入与骨骼动画本文来源于 ZwqXin (http://www.zwqxin.com/), 转载请注明原文地址:http://www.zwqxin.com/archives/opengl/model-fbx-dae-format-import-animation.html2,基于FBX SDK的FBX模型解析与加载http://blog
2016-04-12 12:25:11
11523
原创 云风的博文《Lua C API 的正确用法》读后总结
云风的博文《Lua C API 的正确用法》(http://blog.codingnow.com/2015/05/lua_c_api.html)该文章是一年前写的,不好意思在原文下面写心得体会了,就把想说的写在这里。1,在你的程序中嵌入lua时,最好使用由你的编译器编译lua源代码得到的库文件(lua.lib)。这是因为,在lua的异常处理机制里面会使用一些宏,在不同的编译环境
2016-04-07 18:22:20
1943
原创 C语言知识点回顾
1,C99标准是指1999年诞生的C语言标准;C11标准是指2011年诞生的C语言标准。2,常见的标准类型有: int8_t int16_t int32_t int64_t uint8_t uint16_t uint32_t uint64_t float double3,尽量不要使用int。虽然大部分情况下int等同于int32_
2016-03-23 23:39:07
793
原创 编程知识汇总--OpenAL
1,OpenAL源码编译 (http://blog.csdn.net/oilcode/article/details/50748568)2,声音衰减,以及alDistanceModel函数使用详解 (http://blog.csdn.net/jianingshow/article/details/50609365)3,OpenAL同时播放的声音数目,有一个上限。(换而言之,最大的sourc
2016-02-26 22:07:00
1557
原创 OpenAL源码编译
OpenAL源码下载网站是 http://kcat.strangesoft.net/openal.htmlOpenAL官网是 https://www.openal.org/ ,在官网上可以下载用户手册等文档。
2016-02-26 11:39:18
6913
原创 使用LoadLibrary函数装载一个DLL文件,没有指定文件路径,那么操作系统搜索DLL文件的策略如下
程序中调用LoadLibrary函数装载一个DLL文件,没有指定文件路径,那么Windows操作系统搜索DLL文件的顺序如下:MSDN中说得很明白:1.The directory where the executable module for the current process is located. 进程的所在目录2.The current directory.
2016-02-17 15:36:47
2220
转载 从国外网站找到的 DirectX XAudio2 编程教程
从国外网站找到的 DirectX XAudio2 编程教程http://www.win32developer.com/tutorial/xaudio/xaudio_tutorial_1.shtm
2016-01-22 21:46:15
597
原创 使用nvDXT.exe把图片转换成dds图片
从nvidia官网下载工具包DDS Utilities 【https://developer.nvidia.com/legacy-texture-tools】转换图片格式需要的工具是 nvdxt.exe ,使用说明见文档 nvDXT.pdf 。为了方便在cmd命令行中使用这个工具,我把 nvdxt.exe 放在了C盘根目录下。把 D:\bg.jpg 文件转换成dds格式文件,转换后的文
2015-12-16 12:51:56
6565
1
原创 在c++代码中执行bat文件
我想在c++代码中执行磁盘上的一个bat文件。这个bat文件的完整路径是:E:\\7z\\my7z.bat。方法一:system("E:\\7z\\my7z.bat");system是C标准库中的函数。方法二:WinExec("E:\\7z\\my7z.bat", SW_HIDE);WinExec是 Windows.h 中的函数。方法三: P
2015-12-15 20:28:55
25143
3
原创 用命令行的方式来执行7z压缩和解压缩
我在研究怎样使用7z,以及7z的极限压缩(把文件压缩到最小size)。7z官网是 http://www.7-zip.org/从官网下载软件安装包。安装完毕后,安装目录里面有一个 7-zip.chm 帮助文件,可以了解7z的详细的使用说明。用命令行来执行7z的极限压缩,就是如下的命令:C:\01_MyApp\7-Zip\7z.exe a -t7znewPack.7z"
2015-11-26 23:55:51
52054
4
原创 [cocos2d-x 3.6]如何实现“侦听触摸事件和侦听按键事件”,触摸回调函数分别在什么情况下执行
在以往的版本中,侦听触摸事件是这样写代码的:class A : public CCLayer{ virtual bool init(); virtual bool onTouchBegan(Touch *touch, Event *unused_event); virtual void onTouchMoved(Touch *touch, Event *unused_
2015-09-21 00:02:26
1307
原创 NodeJS 常用函数
var object = JSON.parse(string)把一句符合JSON格式规范的字符串转换成object对象。var string = JSON.stringify(object)把一个object对象转换成一句JSON字符串。Math.random()返回0和1之间的伪随机数。可能为0,但总是小于1,取值范围[0, 1)获取属于[n, m)范围内
2015-09-16 20:13:34
971
原创 在项目中使用libcurl,解决编译链接错误
从官网下载libcurl之后,它内部已经包含了各个VC版本的工程文件(sln文件和vcproj文件)。我们能够很方便的编译出静态库和动态库。 在使用动态库的时候,一路顺风,没遇到编译问题;在使用静态库时,却遇到了编译链接错误:1>testcurl.obj : error LNK2001: unresolved external symbol __imp__curl_easy_i
2015-04-20 20:34:12
3977
转载 自己编译lua源码
对于一个开源工程,开始学习它的第一步自然是编译工程。使用vc编译lua,在网上已有许多介绍,但“纸上得来终觉浅”,自己走一遍还是有必要的。步骤如下:1.下载源代码,从lua.org下载最新源代码包lua-5.2.2,解压到本地2.打开vc建立一个solution,就叫lua.sln3.创建一个名为liblua的project(lua库),添加除lua.c和luac.c以外的所有
2015-02-03 15:58:24
3670
转载 lua userdata 汇总
========================================================================================原网址:Lua中的userdata (http://www.jellythink.com/archives/587)轻量级userdata怎么又有了一个轻量级userdata了?这货又是什么?专业点,叫做“l
2015-02-02 19:22:46
3314
转载 Lua的function、closure和upvalue
Lua的function、closure和upvalueLua 中的函数是一阶类型值(first-class value),定义函数就象创建普通类型值一样(只不过函数类型值的数据主要是一条条指令而已),所以在函数体中仍然可以定义函数。假设函数f2定义在函数f1中,那么就称f2为f1的内嵌(inner)函数,f1为f2的外包(enclosing)函数,外包和内嵌都具有传递性,即f2的内嵌
2015-02-02 14:39:42
1887
原创 ENet特性简介
国庆假期了,翻译了ENet官网对ENet特性的简介。翻译的不好,能看懂大概意思。/************************************Features and Architecture************************************/ENet evolved specifically as a UDP networking layer
2013-10-06 16:29:35
2894
原创 控制台程序输入CTRL+C后弹出异常的原因
今天在写一个控制台程序。按照以前的经验,输入CTRL+C后,程序应该正常结束,但是今天却每次都弹出一个异常提示框,“0x40010005: Control-C”。排查了很长时间,终于找到原因了。实际上这不是什么错误,只要在Debug模式下,输入CTRL+C或者CTRL+BREAK等命令都会导致系统内部抛出一个异常;在非Debug模式下,系统内部不会抛出这个异常。参考资料在这里:
2013-05-05 14:50:23
7205
3
多线程输出log到磁盘
2013-04-27
多线程把log写入磁盘文件源码
2013-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人