Archive for the ‘未分类’ category

《古月》发布LR-49.RC2版

9 5 月, 2012

 

 

重要特性:

  • 跨CPU化,全线支持x86-64bit
  • 增加Intel C/C++系列支持

 

基础:

  1. 增加模板函数hgl_abs,内联函数hgl_rad2ang/hgl_ang2rad
  2. 将淡入淡出影响器Fade改为模型板
  3. RectScope模板增加与Vertex2模板数据的+/-/+=/-=计算处理
  4. 增加第三方库:APR(Apache Portable Runtime)
  5. 增加内存池类MemoryPool,使用apache内存池底层
  6. 增加WaitTime函数
  7. Microsoft编译器增加Microsoft C/C++ 17/Visual C++ 11支持
  8. 改进模板List的重设数据量以及整列表复制性能
  9. 删除memex.h以及其下所有函数,将所有调用改为标准mem函数调用。
  10. 增加CML数学库为数学处理基础库
  11. AnsiToUnicode/UnicodeToAnsi改为AnsiToWide/WideToAnsi
  12. WideString类增加FillChar函数,用于填充字符到字符串
  13. 计时函数改为APR跨平台版本
  14. 增加Visual C++ 2010 Service Pack 1提示
  15. 增强Affector/AffectorTrackTimer安全性
  16. SAFE_CLEAR_OBJECT_ARRAY等宏改进,更安全
  17. 改进任务管理器TaskManager
  18. 修复按键映射类
  19. 修正Vertex2::Length()计算没有sqrt问题
  20. 编译/库连接宏增加对VC/CB未知版本支持
  21. 删除废弃的Coll2D
  22. 删除没有实现的FlowTransition
  23. 删除非原始光盘检测函数
  24. 实现影响器版本矢量追踪
  25. 系统路径检测增加公共应用程序路径和本地应用程序路径
  26. 增加非Win32平台下插件再增加平台名称后缀标识
  27. 提供部分Win64平台插件
  28. 全新的智能指针系列,仿c++11标准设计
  29. 修订WideString/StringList,使之处理数据更为严谨.
  30. FileInfo::directory改名为is_directory
  31. 统一ansi<->wide转换处理代码为一处、增强wide_to_utf8/utf8_to_wide
  32. 增加utf16/32至wchar_t的转换功能
  33. Stream及派生类增加CanSeek,CanRead,CanWrite属性
  34. 完善StringList,增加对utf32以及对CPU大小头的支持
  35. 字符串函数返回值由int改为size_t,保持和标准crt库一样。
  36. 清除旧有MD5算法实现,增加新的md5类,归属UnilityTools,头文件为ut/md5.h,源代码为UtilityTools/Hash/md5.cpp,md5util.cpp,新的使用apr实现。
  37. 操作系统识别增加BeOS/Haiku,QNX
  38. 操作系统识别将BSD分裂为FreeBSD,NetBSD,OpenBSD
  39. CPU识别将MIPS分裂为MIPS,MIPSel
  40. 编译器识别增加PGI,TI,LLVM Clang
  41. 字符串函数全部提为模板实现,以方便未来支持任何类型的字符串。
  42. 修正gnu c/c++与linux操作系统头文件配置不正确问题
  43. 所有Stream长度单位改为int64
  44. 增加Endian转换处理
  45. 更改日志输出目录,以及处理机制。(Windows UAC兼容性提升)
  46. 增加对库的大头小头检测,以避免宏错误识别

 

多线程、多进程:

  1. 删除原本的模拟RWLock,改为Win2008 R2/Win 7专有SRWLock,其它情况使用APR实现。(注:原本模拟RWLock即采用APR代码实现)
  2. ThreadMutex删除不曾被任何工程使用的WaitLock函数
  3. ThreadMutex增加APR跨平台实现版本
  4. 删除Thread::Sleep函数,请改用WaitTime函数,以免造成与Windows api冲突
  5. 删除CircleStream,增加RingBuffer,功能基本替代,但更强大
  6. 添加多进程共享内存模块,使用APR实现
  7. 增加进程排斥模块
  8. 增加CondVar,包含Win2008/Vista专用版和APR跨平台版
  9. Thread::Execute改为循环执行,以返回值区分是否继续执行
  10. Atomic增加volatile修饰,并改用APR实现
  11. Thread类删除Pause/Resume函数
  12. 增加Thread类的posix thread实现
  13. 增加Semaphore类的posix thread实现

 

脚本部分:

  1. 删除AngelScript支持
  2. DevilScript/DevilVM增加x86-64位函数呼叫支持

 

网络部分:

  1. 增加network名字空间,将所有网络模块移置network名字空间
  2. TCPServer发送数据从自有多线程阻塞模式发送改为IOCP多线程发送
  3. 修正TCPServer在WindowsXP操作系统下运行错误的问题
  4. 将网络处理代码中的各种错误和数值全部抽调并定义宏集中放置于Socket.H,以增加开发者查看源代码时的易读性
  5. TCPSocket将部分设置改为宏在Socket.H中标记
  6. TCPSocket默认提供的封包类型和封包长度数据类型改为可自定义
  7. 重构TCPServer,增设TCPAcceptManage,分离TCPServer本身与接入者管理。分离原有IOCP支持为IOCPAcceptManage,并增加多Select模式的MSAcceptManage。
  8. Socket增加SetNodelay函数
  9. TCP部分增加全新的封包自动分发机制,自动分发机制并不是直接简单的按表分发,而是减少了一次内存拷贝,比手动模式更有效率
  10. IOCPAcceptManage/MSAcceptManage改为池管理连接
  11. TCPSocket::UseSock改名为UseSocket
  12. 修正TCPMultiAccept模式下第一次通信会等待的问题
  13. 砍掉TCPClient::Disconnect等待线程自动退出设计
  14. 解决TCPClinet退出需要等待过久问题
  15. MTBAccept增加发送处理的安全锁处理
  16. 为各TCPAccept派生类增加CloseSocket重载,以处理各类需要特别处理的部分。
  17. 增加Multi Thread Block模式
  18. 增加MSAccept::RecvData/SendData的安全性

 

图形部分:

  1. 升级GLEW到1.7.0
  2. HTP增加自定义绘制方法
  3. 改进截图程序处理流程,提升代码易读性、美观性与执行效能
  4. 删去DrawArray中的double数据类型支持
  5. 优化hgpuiButton加载图层代码

 

音频、视频部分:

  1. 修正音源距离描述注释,并修改变量名称以更为清晰表达意思
  2. AudioPlayer增加淡入淡出处理
  3. 修正TheoraMovie无音频时无法播放问题
  4. 修正AudioPlayer自动音量调整时间记录不能为半秒的问题

《古月》新版重大变更说明

4 4 月, 2012

原本计划在一周年期发布新的R49版本的,现在看来要大幅延后了。最主要的原因是Server模块以及跨平台设计的影响。

1.商业级的合作伙伴们可能都清楚,在过去的一年里,《古月》的r49开发版的网络模块发生了巨大的变化,从追求极致的高性能,变成了追求易于高效开发。而这引发的不仅仅是网络模块的巨大变动,多线程,多进程模块也产生了很大的变动,幸运的是这部分的变动多在增加新特性和增加新平台支持,在使用上变化较小。

2.另一个方面同样是源自各位商业级的合作伙伴。那就是跨平台:不但要跨Linux/BSD等操作系统,还要跨CPU体系,最先被引入支持的是IBM/Motorola/SONY的PowerPC/Cell处理器。由于PowerPC与X86体系的数据编码大小头不一样。为此,我们彻底重写了Stream与String代码,并且绝大部分的String代码以模板方式存在。对开发者来讲,最大的麻烦就是以后在保存数据和读取数据时,就必须明确指定编码形式了。

3.同时,我们进一步扩大了模板的使用范围,首先是大量的str/string代码,由封闭的状态变成了模板函数。将不再有ansi/wide之分。
4.最后,由于我们将进一步加强在服务器领域的开发,所以安全性在这一版里将得到放大,大量的不安全函数如strcpy,strlen将得到删除和替换。以及ansi->unicode等不明确转换也变成了必须进行明确指定转换体系等等。

Linux版开发中,所以暂时QQ无法通信

29 3 月, 2012

联系请使用ICQ或MSN。

ICQ:54170422

MSN:HYZBOY@HOTMAIL。COM

 

全新流式数据访问模块

25 3 月, 2012

最近Java用的有点多,又开始了解了一下C#和WinRT,充分了解了一下他们在Stream上的设计。

外加上最近要将引擎移植到Linux/UNIX上,还需要支持PowerPC、ARM、mips等非x86处理器,各种需求开始大量暴露出来。比如大小头支持、不同编码及长度的wchar_t以及字符串支持、跨语言支持等等。

所以此次终于举起勇气开始重构和编写全新的stream式设计,已知的各种问题将在此次一举全部消灭,并带来全新的特性。更加的严格、更加的易用,更加的广泛。更加的易于学习。

  • 在绝大多数情况下,输入与输出将使用分开的流进行访问。以明确有些流式访问无法同时提供输入输出的问题。
  • 提供CanRead,CanWrite,CanSeek,CanRestart,CanSize等属性,以方便简测有些流式访问无法提供此类功能的问题。
  • 原始数据访问与格式数据访问分离,即类似Java的InputStream/DataInputStream设计。为支持不同数据格式处理提供功能。
  • 使用DataInputStream/DataOutputStream数据时,必须强制指定大小头,以保证在任何编码的处理器上,均可以正常访问数据。
  • 删去原本的ReadString/WriteString,改提供新的ReadUTF16LEChars/ReadUTF16BEChars、ReadUTF8String、ReadUTF16LEString/ReadUTF16BEString等函数。全面自适应任意wchar_t类型(UTF-16LE、UTF-16BE、UTF-32LE、UTF-32BE)。
  • 提供JavaInputStream/JavaOutputStream,基本对应java.io.DataInputStream/java.io.DataOutputStream,方便与Java程序交互。
  • 提供DecompressInputStream/CompressOutputStream、CryptInputStream/CryptOutputStream、MD5CheckInputStream/MD5CheckOutputStream、MergeOutputStream/SplitInputStream等辅助类。可使加密、压缩、校验、合并等各种功能无缝对接,随意组合。访问压缩加密数据同访问未加密压缩数据完全一致。

1024线程同时运作

11 3 月, 2012

这个示例存在很多年了,但这是第一次放视频出来,感谢现在的互联网啊!

下面视频中的每一个球的运动都由一个独立的线程控制,在一台Core 2 Quad 9300处理器上运行,使用Windows 8 CP操作系统,任务管理器显示cpu占用0%。

InputStream/DataInputStream

29 2 月, 2012

Java.io的InputStream/DataInputStream系列是个非常优秀的设计,以此引发的各种连锁设计大大简化了开发人员所需学习API的内容。新版的《古月》将参考这一设计,重构Stream以及各种IO接口。

《古月》R49完成,待所有示例测试完成即公布

16 1 月, 2012

《古月游戏开发库》的第R49版已经完成,现正待所有示例程序全部重新编译测试完成后即可发布。

此次版本更新除修正部分BUG外,重要增强跨平台性、多线程、网络服务器部分,并首次提供了Win64平台版本。同时也首次不再提供C++Builder版本。

 

同时,后续版本开发计划公告:

R50:修正未来所有得知BUG。

NG:以R49/R50版本为基础,尽可能删去所有陈旧设计,并做出重大重构。

  1. 引入GLFW为操作系统图形部分和设备输入部分的接口API。
  2. 引入CML做为数学库
  3. 删除陈旧的OpenGL 兼容模式绘制机制,使用新的纯VBO+VAO机制,使用OpenGL Core前向兼容模式

矢量追踪示例更新

7 1 月, 2012

在新版本中,矢量追踪从独立的杂项中移除,做为影响器的一个新组件出现,并严格按时间执行,不再受帧数率影响。
新的示例增加了直线显示要追踪的目标,更加形像的展示了矢量追踪的效果优势。

TheoraMovie解码器新版本提供

29 12 月, 2011

这是一款基于Theora解码器的影片解码SDK,它集成了自动丢帧丢包、YUV转换等各种功能,并在Theora官方MMX优化的基础上再次针对其它函数进行了汇编级优化。大幅提升了效能表现以及减化了开发者的开发过程。

此次更新将各核心库升级到最新版本:

LibTheora 1.1.1
LibOGG 1.3.0
LibVorbis 1.3.2

下载页面

《古月》for MinGW C/C++版将开始提供

10 12 月, 2011

《古月》针对Linux/BSD/Solaris平台的Server专用版真的是许多年没有更新了,早已不能编译的代码再次被启动更新。

今天,终于完成了最重要的多线程相关类的跨平台实现。

然而下一步并不是提供for Linux/BSD/Solaris版本,而是试做MinGW C/C++ for Windows版本,以减少代码在GNU编译器上的警告和错误。

之后再移植到Cygwin平台,进一步减少Linux平台下可能会出现的问题,最后就是正式的Linux/BSD/Solaris版本开发。

鄂ICP备09027626号