手工实现字节对齐 及 代码质量思考

在游戏编程中,我们经常听到序列化这个词汇。在一些网络通讯和数据处理时,我们便会用到序列化。这里先不具体说明序列化。这里只说序列化过程中可能用到的字节对齐的问题: 我们首先是定义了这样一个宏: #define ALIGN( __size, __bits ) ( ( ( ( __size ...

2009-03-26 12:16:00

阅读数 5

评论数 0

C++中使用属性(property)

在C++中也可以使用像C#中的属性。在某些特定的环境我们可以使用这一方法,虽然在效率上会比直接访问要来得慢。但是这点效率基本可以忽略的。。代码大致如下: #include <iostream> using namespace std; c...

2009-03-25 12:23:00

阅读数 14

评论数 0

new操作符内部原理(二) 及 delete和free

前面我们说了new在分配空间的一些细节,这里作一些补充。其实我们在调用new时,在他的地层重载运算符里面是这样实现的: void *p;while ((p = malloc(size)) == 0)if (_callnewh(size) == 0)_STD _Nomemory();return ...

2009-03-24 09:17:00

阅读数 14

评论数 0

new操作符内部原理(一)

写了这样一段代码,我们来做分析: #include <iostream> int main( void ){ int* ptr = new int[ 5 ]; for ( int i = 0; i < 5; i++ ) { pt...

2009-03-23 18:25:00

阅读数 14

评论数 0

C++ 数组负数下标 - 反向寻址

#include <iostream> int main() { int a[ 5 ] = { 0, 1, 2, 3, 4 }; int* p = &a[ 4 ]; for ( i...

2009-03-23 15:39:00

阅读数 16

评论数 0

对类似COM和C++派生的一些理解

整理了下思路,大概就是根据全局的const变量来进行this指针定位,起到了转换的作用。这样一来增加了安全性。大致代码如下: #include <iostream> const unsigned __int32 IID_PERSON = 0x1...

2009-03-22 11:37:00

阅读数 9

评论数 0

InterLockedIncrement 和 InterLockedDecrement处理线程访问

前面已经讲过volatile关键字,当我们在处理多线程或者模拟一个类似COM的引用计数时,我们为了防止多个线程同时访问一个变量,导致不可预料的结果时。我们便可以方便的使用InterLockedIncrement 和 InterLockedDecrement 来对这个变量进行锁定访问: lo...

2009-03-20 10:44:00

阅读数 28

评论数 0

volatile关键字

将一个变量说明为volatile表示这个变量是“易变的”。如果一个变量会被其它引用改变,或在其它并行的任务中会被改变(例如中断服务程序),都要显式地说明为“volatile”,否则在编译器优化阶段会作出错误的判断,例如将这个变量读入寄存器以后,在没有对这个变量赋值以前,会一直使用寄存器中的值,而...

2009-03-20 10:09:00

阅读数 11

评论数 0

在WPF页面中用Popup模拟模态对话框

在WPF的页面中我们肯定会遇到这样的需求:弹出一个对话框让用户进行一些选择和输入,当用户在该对话框上的操作结束并关闭对话框后再返回到主页面进行其他操作。这其实就是一个很典型的模态对话框的应用。在WPF的Window中我们可以创建一个Window并调用它的ShowDialog()方法来满足上面的需...

2009-03-17 09:50:00

阅读数 10

评论数 0

基本完成山寨汇编IDE环境

最近一直加班,回家基本就累得不想写东西了。一直就拖到现在,本来几天就能完成主体功能的,结果一直拖到现在。。。惭愧啊! 嘿嘿! 写到这里,我也暂时搁下了。。能基本的工程管理和编译就可以了。。得抓紧写ALGA。。。。...

2009-03-17 09:19:00

阅读数 6

评论数 0

XNA基础(03) —— 动画与帧率

我们要做的2D和3D游戏离不开动画,那么在XNA中如何实现动画了? 首先,我们来看最简单的动画—— 移动。 要移动一个Sprite非常简单,我们只需要在Game1.Update()方法中改变Sprite的位置坐标,在下次Game1.Draw()方法被调用时,屏幕上显示的Sprite就被移动了。...

2009-03-14 10:51:00

阅读数 12

评论数 0

XNA基础(02) —— 绘制基础

在所有的图形引擎中,绘制都是最基础的部分,本文将介绍在XNA框架中与绘制相关的基础知识。 在XNA中,我们使用SpriteBatch来进行绘制。首先,我们需要使用SpriteBatch来绘制什么了?是精灵Sprite,对。 那么Sprite通过什么来表现了?是纹理,比如2D纹理Textu...

2009-03-13 15:51:00

阅读数 16

评论数 0

解决SecurityError: Error #2060: Security sandbox violation: ExternalInterface caller的异常问题...

前面用Ant build出来flex application的flash文件,但直接在嵌入html中,如果本地访问的化,则会弹出错误窗口,报告: SecurityError: Error #2060: Security sandbox violation: ExternalInterface...

2009-03-05 23:41:00

阅读数 26

评论数 0

使用ant编译flex的mxml application

在现实应用中,如果使用未购买license的(或破解版的)FlexBuidler去编译flash文件,是要付法律责任的,特别是企业开发。所以,你必须利用Flex SDK自己手工编译。 Adobe提供了一个FlexTasks这个Ant扩展来辅助进行编译操作,在我的另一篇博客中简要介绍了如何通过...

2009-03-05 22:41:00

阅读数 7

评论数 0

XNA基础(01) —— 游戏循环

当安装好了VS 2008和XNA GameStudio 3.0后,我们就可以开始学习XNA了。 首先,在VS 2008中新建一个XNA GameStudio 3.0项目(选择Windows Game类型),会生成一个最简单的、可运行的游戏模板。 接下来我们将注意力转移到我们要剖析的重点—— 从...

2009-03-04 18:51:00

阅读数 75

评论数 0

打算写一个ASM集成开发环境

最近使用汇编编译器的时候,感觉太麻烦了。。控制台编译链接。。网上下载的两个稍微集成的。一个不用说了,最基本的吧。另一个好一点,不过在语法着色方面和项目文件统一管理方面还有所欠缺。 自己也想用自己写的东西。。嘿嘿。。现在基础框架已经搭成。。。就差写功能逻辑了。。。。加油。。。...

2009-03-04 08:58:00

阅读数 10

评论数 0

我的3D Engine ( ALGA )目前进展情况

目前我的3D引擎大致已经把文件处理相关的功能完成, 上面一个是日志文件管理. 暂时写成HTML的吧,想换再加. 下面是两张我的打包工具的截图.写完了打包功能,就顺便把工具一起给写了.采用了压缩及相关的结构存储处理.以后资源这些封装会好一点了.加油! 此工具可以批量导出导入.Engine...

2009-03-01 17:38:00

阅读数 9

评论数 0

去年国庆写的个台球

这个台球DEMO,用的D3D+C++写成的,大概集中写了一周多一点时间。也算是那个时候对D3D的一定认识的结果吧。还有很多不足。 1。里面的素材全部是从网上搜集。 2。AI只实现了一个难度,本来打算再写下去的,哎。。。貌似有心而力不足。没那么多时间去完善了。 就这么个东西,老婆居然...

2009-03-01 17:16:00

阅读数 12

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭