- 博客(43)
- 资源 (10)
- 收藏
- 关注
原创 如何给无法修改的类增加一个父类?mlir某机制
classpublicstructpublicboolconst可以看到Trait 继承自BackinferInterfaceTrait<ConcreteOp>。我们再看BackinferInterfaceTrait<ConcreteOp> 的定义。
2024-04-19 16:48:57
997
原创 第五章 开始Unity Shader学习之旅
一.简单顶点/片元着色器1.指定函数#pragma vertex vert#pragma fragment frag 2.POSITION & SV_POSITION & SV_Target 语义CG/HLSL语义,告诉系统,用户需要哪些输入值 ,以及用户输出是什么POSITION: float4 v:POSITION 把模型顶点坐标填充到输入参数v中。SV_P
2017-10-18 14:18:19
367
原创 第四章 学习Shader所需要的数学基础
一.坐标系与矢量1.左手座标系与右手座标系左手座标系使用左手法则,即旋转时顺时针旋转。右手坐标系使用右手法则,即旋转时逆时针旋转。Unity使用左手坐标系。这也竟未着在模型空间,一个物体的右侧,上侧,前侧分别对应x轴,y轴,z轴。但在观察空间,Unity使用右手坐标系。观察空间,就是指以摄像机为原点的坐标系。二.坐标系与矢量1
2017-10-17 17:05:47
576
原创 第三章 Unity Shader 基础
一. 材质和UnityShaderUnityShader 定义了渲染所需的各种代码,属性和指令,而材质允许我们调节这些属性,并将其最终赋给相应模型。二 Unity Shader2.1 Properties2.1.1 Properties形式{ Name("display name",PropertyType)=DefaultValue
2017-10-12 18:32:23
295
原创 第二章 渲染流水线(下)---Shader语言与Draw Call
一.HLSL,GLSL,CGGLSL: OpenGL支持的。跨平台,编译结果依赖于硬件供应商。HLSL: 微软控制着色器编译,仅支持微软自己的产品。CG: 跨平台,与HLSL的语法非常像。在unity shader 中,可以选择'CG/HLSL"或者"GLSL",但Unity shader语言并不是真正意义上的对应着色器语言,尽管它们的语
2017-10-12 16:23:56
366
原创 第二章 渲染流水线(上)---GPU流水线
一.概念性阶段应用阶段(Application Stage)->几何阶段(Geometry Stage)->光栅化阶段(Rasterizer Stage)1.1 应用阶段目标是输出渲染所需要的几何信息,即渲染图元(rendering primitives)。1.1.1 准备场景数据,例如摄像机位置,视锥体,场景中包含哪些模型,使用哪些光源等。1.1.2 粗粒
2017-10-11 18:35:27
848
原创 读Lua游戏开发实践指南
11月11日开读,到今天正好一个月。 起因是被裁员之后,发现很多公司都在使用lua编写cocos2d-x游戏,原因是上手快,技术人员比较便宜。 如果引擎封装比较好,几乎在lua里写写基本逻辑就行了,不需要懂cocos2d-x。其实lua也不需要懂太多。只要会if ,for等基本语句就行了。 加入新公司后,看了项目的代码。这份代码是从公司另外一款已经成功上线的
2016-12-31 09:53:10
359
原创 quick cocos2d-x 入门---井字棋
学习quick cocos2d-x 第二天 ,使用quick-x 做了一个井字棋游戏 。我假设读者已经 http://wiki.quick-x.com/doku.php?id=zh_cn阅读了这个链接下的内容 ,并学会了如何搭建环境和创建新的工程,并假高读者有一定cocos2d-x基础 建议读者多研究一下quick-x自带的例子coinflip。并阅读framework下的lua源码,尤其
2016-12-31 09:53:06
479
原创 Lua 栈的理解
提到C++与lua互调,不可不提栈。栈是C++和Lua相互通讯的一个地方。首先这个栈并不是传统意义上的栈(传统的栈需要放同一种数据类型,但在网上的某些资料说,每个栈元素是一个联合体)。栈从上向下分别是-1,-2,-3... ; 从下向上分别是1,2,3...这也就是lua_gettop为什么可以获得栈中总元素数的原因。因为lua_gettop()获得的是从下向上栈顶的索引,因为从1
2016-12-31 09:53:02
474
原创 Lua与C++互相调用(上)
int main1(int argc, const char * argv[]){ lua_State* L = luaL_newstate();//创建栈 luaopen_base(L); luaopen_io(L);//打开lua base,io两个库 int ret = luaL_loadfile(L,"tlua.lua");//加
2016-12-31 09:52:58
275
原创 C++类的内存分配
今天面试被问到一个类的内存问题,有些记不清楚了。用了 C++这么年,实在是不应该。于是上网查了一些资料,并做了实验,整理如下:所用测试环境为64位mac air,编译器为XCode1.最简单class Test{public: int a ;};printf("size=%d\n",sizeof(Test));这个相信大家都能猜得到。
2016-12-31 09:52:54
209
原创 cocos2d-x 将cocosbuilder输出文件映射成对象的原理
一。调用代码加载代码CCNode* GameOverScene::loadCCBI(const char * pCCBFileName, const char * pCCNodeName, CCNodeLoader * pCCNodeLoader){ CCNodeLoaderLibrary * ccNodeLoaderLibrary = CCNodeLoaderLibra
2016-12-31 09:52:50
203
原创 网络游戏剧情副本的一种实现方式(中)
这一节写客户端的具体实现方式。 为了演示,代码写的比较粗糙。 我们用一个EventCenter作为事件ID和事件的路由表,即根据某ID,即可定位到某处理事件的具体类,并根据参数处理这个事件。 前台应该有个类似这样的配置: .... 我简单处理成了直接赋值,关于数据结构的定义,都较简单的使用了map,实际
2016-12-31 09:52:46
432
原创 网络游戏剧情副本的一种实现方式(上)
在网络游戏中,常常出现一种剧情副本的情况。比如玩家进入游戏后,提示“少侠,欢迎来到新手村,最近野猪一直在骚扰村子,你去打几只吧”。然后镜头移向野猪,野猪做出暴怒的表情。玩家走过去杀死野猪后,将玩家传至主城。 这个剧情比较简单,实际情况可能要比这复杂的多。在程序中,如何做统一处理呢? 先写一下大体思路 我们采用配置的方法,简单来说,前台是基于事件组的节点,后台是调用场景的lu
2016-12-31 09:52:40
464
原创 2D游戏中的碰撞检测
近期做了一个类似坦克大战的android游戏。关于碰撞检测有一些收获,记录一下。 开始的思路是,将游戏分成行列组成的小块,当玩家或者怪物移动到某块时,就将此小块的id改为玩家或者怪物的id,子弹和怪物的碰撞,也是同样处理。但是这样造成的问题就是,每次玩家和怪物都必须行走一个整格子。玩家的移动,看起来有跳动感。 后来,我将玩家和普通障碍的碰撞和玩家与怪的碰撞分开处理。我原本是将玩家的图片
2016-12-31 09:52:37
1578
原创 linux下的一个网络服务器模型
介绍一个linux下的网络服务器模型。 系统架构将服务器程序分为两个服务器,即逻辑服务器和网络服务器(TcpServer)。逻辑服务器负责处理服务器需要处理的逻辑,而网络服务器仅处理网络的连接以及数据的收发。这两个服务程序是各自独立的,而不仅仅是属于不同进程。所以TcpServer的程序是可以直接应用于各个地方,而代码不需要改动。两个服务器之间,以共享内存或者管道等连接
2016-12-31 09:52:33
222
原创 读《算法与数据结构---c语言描述》
说来惭愧,这本书陆续读了很多很多次次了,却从来没有读完过。在学校的时候,多次下决心读完,2011年也有一次,这次总算把这本书看完了(从2011年11月开始的,虽然仍有很多页是翻过去的)。 这本书实在是一本特别枯燥又不知道有没有用的书,我多次强迫自己,却始终没有读完。在学校上这门课时,我实在觉得这门课没有什么意义,几乎没有认真上过一次。 读完此书,我得到了什么呢?我觉得,读书对我
2016-12-31 09:52:28
261
原创 排序二叉树的实现和我的一个数据结构设计
一。基本概念二叉排序树又称二叉搜索树,即在树的任何一个结点,都满足左子树小于根,根小于右子树。排序二叉树可以作为Map的关键码。主要的作用是快速的查找(相当于二分法) 二。基本算法1.查找查找时,首先和根结点对比,若相等,则查找成功。若大于根,则再向右子树查找;如果小于根,则向根的左子树查找;依次类推,直到查找成功或者遇到空结点。2.插入找到要插入的位置,类似于上面查找
2016-12-31 09:52:24
288
原创 《算法与数据结构---C语言描述》优先队列
所谓的优先队列,其实是一个二叉树,只是这个树比较特别,小数据的结点一定在大数据的结点之上,又称“小根堆”。 搞了几天,终于把优先队列搞定了,当然,也是这几天老是分神,QQ还是在白天设置成免打扰模式吧。 以下是代码 View Code 1 #ifndef PriorityLEAP_H 2 #define PriorityLEAP_H 3 4 temp
2016-12-31 09:52:21
368
原创 《算法与数据结构---C语言描述》里的农夫过河
题目: 一个农夫带着一只狼,一只羊和一些菜过河。河边只有一条船,由于船太小,只能装下农夫和他的一样东西。在无人看管的情况下,狼要吃羊,羊要吃菜,请问农夫如何才能使三样东西平安过河。 算法的实质:在满足一定条件下的,所有状态的遍历。 满足的条件:1.每次农夫必须移动2.农夫移动的东西与农夫必须在同一岸,但农夫可不带东西独自移动3.此种状态,必须在以往从来没有出现过
2016-12-31 09:52:17
1079
1
原创 《算法与数据结构---C语言描述》里的求多项达式值
在栈的应用里,作者写了将多项式值 ,但是描述的不是很清楚,露了一个说明 。从左到右读取中缀表达式,依次一个操作项.如果是操作数直接进入输出队列.读到左括号时总是将它压入栈中.读到右括号, 将最近栈顶的第一个左括号上面的操作符全部依次弹出, 送至输出队列后, 再丢弃左括号.当读到操作符时,将栈中所有优先级高于或等于当前操作符的操作符弹出,送到输出队列中.中缀表达式全部读完
2016-12-31 09:52:13
275
原创 关于命令模式的一点意见
1。如果invoker中不必保存命令集,而仅执行一条命令的情况下,invoker类可以被省略2。在命令类(Command中直接保存接收者(Receiver)的指针或者 引用的方式,并不可取,宜改为存储ID(前提是所有的receiver有统一的基类,并由全局管理)下面是代码的对比,由于是演示代码,写的比较粗糙。 保存指针方式 1 class Command;2 class
2016-12-31 09:52:05
177
原创 android设置横屏
要在android内设置横屏,只需要 在manifest.xml配置的activity写一句 android:screenOrientation="landscape" 但是一定要注意,此时oncreate会被调用两次,第二次是因为要转方向,要避免,可以加上一句android:configChanges="orientation"
2012-08-24 15:11:49
1271
原创 黑猫白猫----读《大话设计模式》
终于读完了《大话设计模式》,收到书的时间是2011-01-21,那时候,还在双安的数码大厦,现在公司已经搬到盘古大观了,转眼之间,已经一年的时间了。 趁着这段时间,工作比较清闲,两个星期的时间,看了接近一多半,也就是说从买到书有大段时间,是暂停状态。其实开篇计算器的例子,是给了我很大震动的,结合一年来的工作,终于算是一只脚迈进面向对象的大门了。 把代码设计好,是可以少加很多很多
2011-11-11 16:12:55
1867
转载 一些资料
android游戏开发学习 博客分类:androidandroid2d game相关资源2D中如何判断一点在另一个点的那个方位: http://blog.youkuaiyun.com/rabbit729/article/details/4424929游戏开发书籍推荐: http://rightmost.blog.163.com/blog/static/1805853
2011-11-05 15:20:14
616
转载 android开发环境搭建
——工欲善其事必先利其器引言本系列适合0基础的人员,因为我就是从0开始的,此系列记录我步入Android开发的一些经验分享,望与君共勉!作为Android队伍中的一个新人的我,如果有什么不对的地方,还望不吝赐教。在开始Android开发之旅启动之前,首先要搭建环境,然
2011-10-10 17:50:12
454
原创 关于vs下复杂的字符处理
从vc6.0转到vs2005及以上的同学,一定为vs2005复杂的字符处理,苦恼不已。vs2005下有 TCHAR, LPCSTR,CString 等等概念 一 如何通过编译最简单的方法是什么,就是在MFC程序中,使用MFC的CString ,另外在所
2011-09-26 14:28:53
748
原创 关于android游戏的分辨率
我用的是HTC G7,分辨率是480X800,但是只能显示320X480。因为我的游戏是40X40的地图格子。按理说应该能显示 12X20个格子,但是只能显示8X10个。其实在wvg800模拟器里,也是同样的情况。 这个问题困扰了我很长时间 。我估计是androi
2011-09-20 08:21:44
1928
原创 一次初学者的灾难--------runnable的run方法不被调用了
在学习 android 编程的菜鸟道路上,出现了 一次大灾难public void run() { while (gameloop) { Log.d("update", "free mem (Main)=" + Ru
2011-07-31 00:21:26
6286
原创 logcat 不能输出任何信息的原因及解决方法
LogCat无输出是因为DDMS中没有选中Device。JAVA和DDMS之间切换不是关闭DDMS,而是直接点击JAVA图标回到源码,点击DDMS回到DDMS,这种方式回到DDMS不会自动选中Device,LogCat无输出。这问题不是DDMS假死,也不是模拟器的问题,重启模拟器
2011-07-28 08:19:39
6231
转载 Android屏幕密度(Density)和分辨率的关系
Android主要有以下几种屏:QVGA和WQVGA屏density=120;HVGA屏density=160;WVGA屏density=240;下面以480dip*800dip的WVGA(density=240)为例,详细列出不同density下屏幕分辨率信息:当density
2011-07-12 08:44:01
929
原创 android 你不知道的事(一)android 程序的突然死掉
对于一个android 初学者来说,出现 这个窗口,是极郁闷的一件事 对于任何语言来说,出现这个问题的最大可能,都是引用了空资源 ,这个空资源包括空的图片,包括空的窗体,空的指针或者引用。 一。出错原因 对android 来说,我目前总结两条可能出现这种错误的情况1。添加了相应的类,而没有在AndroidManifest.xml中做相应的配置
2011-06-29 23:07:00
1626
原创 关于Android 的两天总结
周末,为上次发布的软件修改Bug和增加功能。1.增加多语言支持。增加与values 对应的values-zh-rCN目录即可。内部的xml与values的相同,但文件名少一个"s",如strings -----> string 系统会自动根据用户选的地区,选择使用哪个配置文件。同样,分辨率也是如此2.加入新浪微博分享及显示 基本流程是,用Requestcode得到AccessT
2011-06-26 23:49:00
3132
2
原创 读《C++ primar 》-------编程是什么
《C++ primar 》真的是一本大部头。翻开书的第一页,上面写着: 北京太月园地下室09.12.31 也就是说,这本书从买来,到读完,已经经历了一年半的时间。记得当时买到这本书后,在10年的1月3号,就在BW正式上班了。看这本书的过程和我到目前为止的工作生涯,是一致的。 在当时,面试的时候 ,当问起STL的时候,我还一片茫然。模板,几乎没有用过。C++的继承,封
2011-06-11 17:05:00
1623
原创 placement new, operator new and new operator (转)
<br />笔者觉得这3个new有点意思,有时候我也被搞懵了,这些创造者难不成觉得C++过于简单,所以搞一点含糊的术语出来。这次总结一下,以便再懵的时候有个参考。有错的地方请不吝赐教,多谢先!<br />简单点吧:<br />1. new operator,即熟悉的new操作符,用它从堆中分配一个对象,并且初始化。CHeapObject* p=new CHeapObject(name);<br />既然是操作符,那么它的行为就和其他+-*/操作符一样,是由C++语言定义的,不能改变,即使通过重载的方式也不能
2011-05-29 14:15:00
679
原创 Linux 下使用protobuf 几点细节
<br /><br /><br /><br /> <br />关于使用的说明,很多地方都有了,我也不再赘述,这里只说一些细节上的东西,也就是我出错的地方。<br />今天查了很多资料,也没解决问题,我现在写出来,帮助一下受困扰的人吧<br />1.关于库文件路径<br />/configure<br />make check<br />make install<br />三个命令以后,安装完成<br />安装之后,运行protoc,提示找不到两个库:libprotobuf.so,libprotoc.so。原
2010-12-22 19:23:00
9496
原创 关于填充void*buf的一次小总结
<br />要求是这样的:<br />void *是某个函数的指针(fun(void * result)).<br />result的格式是这样的,一个int值,若干个对象指针<br />假设是OBJ类型的对象<br />1,首先,我试了这种方法<br />OBJ * p = NULL;<br />memcpy(result,p)<br />这样是出问题的。因为memcpy并不是将p的指针内容拷到result,而是将p指向的内容(也就是NULL)拷过去<br />这也说明我在编程的时候,有个问题,想当然的做
2010-12-21 22:38:00
1632
c++实现简单内存池,维护可使用列表
2011-05-29
windows下g++
2011-01-09
VB+SQL Server的图书管理系统源码(用第三方控件进行了界面美化)
2009-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人