摘要:
四年前失足误入游戏圈。得遇高人授以dx,更坠入悬崖谷底,忽有一日,发现一个问题 ,为什么3D高手总在国外?拔剑四顾心茫然。默然回首,原来高手躲在linux深处。在windows下看mesa有不少日子了,可惜只有软件模拟版本。但在linux下,mesa-opengl从显卡驱动到hardware渲染都是开源的,怪不得国人知其然,老外知其所以然了。 mesa依赖:sudo apt-get install xorg-dev编译完mesa后,需要配置路径1 cd lib/ (转到了Mesa-X.Y.Z/lib/目录下)2 export LD_LIBRARY_PATH=${PWD}3 export LI 阅读全文
摘要:
FileMapping貌似是Windows唯一提供的跨进程共享数据的方法。如果将客户端的资源文件单独创建一个资源进程,则本机开启的多个客户端都可以使用该资源进程获取资源,这样,很容易使大型3D游戏支持多开并且有效控制内存占用。当然FileMapping也在服务端有所使用。本文不准备基于资源进程的客户端架构进行讨论,仅举个最简单的例子说明如何使用FileMapping。首先在一个进程中创建FileMapping,这里仅仅在共享内存中写入"Blizzard."来测试。#include <Windows.h>#include <iostream>#incl 阅读全文
摘要:
关于Lua源码的基础型别、内存分配、字符串存储、垃圾回收机制、table原理等部分,我发现有位仁兄写得相当之好,强烈推荐大家认真阅读下面这篇文章,链接如下:
http://simohayha.iteye.com/blog/517748
本文将只对Lua的字节码和虚拟机的运行相关内容做重点分析 阅读全文
摘要:
最近正在阅读lua源码,遇到座灯塔,转载如下:我个人的习惯是带着问题去研究一个新题目,比如这次阅读Lua代码,暂列下面这些问题。1)什么是基于栈、基于寄存器的虚拟机(VM)设计?Lua如何实现基于寄存器的设计?2)Lua如何解析一段代码,生成中间代码?3)Lua如何使用VM运行中间代码?4)Lua如何实现GC机制?5)ipairs与pairs的不同(这是前几天写代码时发现的)?6)Lua如何实现闭包功能?7)Lua如何实现协程功能?8)Lua与c语言交互时栈的变化?9)如何为Lua增加一个continue关键字?10)Lua代码中常用的C语言编程技巧有那些?11)table如何实现的?12)如 阅读全文
摘要:
这次优化一反常规做法,不是减少单次资源加载量,而是增大之,却收到了无论怎么细分都无法实现的流畅效果。
如果游戏30fps,即平均每frame可以加载近2MB资源。在几太不同硬盘速率的机器测试发现,2MB/per frame并不如20MB/per 10 frame。也就是硬盘的一次大量读取效果要优于多次小量读取。
根据这个原则,虽然是动态资源加载,也要控制每次的最小加载量,尽可能减少硬盘读取次数。 阅读全文
摘要:
好文需要备忘,转载自:http://www.cnitblog.com/linghuye/archive/2009/11/29/62870.html要带着引擎系统所共有的问题去阅读,不要被具体引擎的实现思路牵着走,要思考这个引擎如何实现或绕过(如不考虑低端机)这些必然要面临的问题.首先,最重要的必须,在Debug模式下调试起来一个主场景程序,然后沿着代码流走几遍,在代码里闲逛,生成第一印象,留意基础工具设施类(如字符串内存管理),大约3小时.然后带着如下每一个问题(不分先后)去走流程,走逻辑,弄清引擎的业务处理方法.1.SetStreamSource,SetIndices,DrawIndexed 阅读全文
摘要:
GPU性能调试:
通常来说,使用CPU时间事件来调试GPU是低效并且是不准确的。D3D API在多数命令下会阻塞,甚至是Draw函数。它会在一些时间片上做一些真正的工作,而这往往是不可预知的。因此,GPU的性能调试只能用PIX或者是其他专用产品,例如NVIDIA’s NVPerfHUD来进行。 阅读全文