摘要: 1.每帧评估周围MapArea的可见度,对即将可见的区域送入预加载线程逻辑,对必须可见的区域送入即时加载模块.2.必须加载2*2,进入3/4距离处开始预加载,退出1距离处卸载,保证最大加载量为3*3.a.DX是有多线程支持,OpenGL渲染RC与线程相关,跨线程加载使用图形资源,如何解决?b.遇到更复杂的逻辑时,如何处理.c.是否要预加载全部,还是分Terrain,Model,Wmo加载.But it is just a design question. 阅读全文
posted @ 2011-04-20 11:04 oayx 阅读(689) 评论(0) 推荐(0) 编辑
摘要: 今天想通一个问题,如何异步地加载3D资源,进而实现整个地图块的后台异步加载机制,进而实现无缝大地图加载.3D资源(纹理,顶点缓冲等)的加载分两个阶段,首先是数据加载,而后是根据读入的内存进行3D资源构造.发现,IO操作的耗时远比3D资源构造多得多,3D资源构造,如glTexImage,glBufferData,Lock,Unlock速度相对还是很快的,而如果把整个加载放入一个线程导致跨线程3D资源的构造和使用上的问题.理论上在一个线程创建的3D资源不能在另一个线程内使用(如OpenGL),即使可以做到(如DirectX的CREATE_MULTITHREADED),也会出现很多需要同步的3D资源 阅读全文
posted @ 2011-04-20 10:47 oayx 阅读(1028) 评论(0) 推荐(0) 编辑
摘要: 1.镜头不对: 物体不在镜头范围内,检查视图矩阵,世界矩阵,投影矩阵.2.颜色全黑: 打开光照情况下,MATERIAL全为0, 或,在没有打开光照情况下,颜色值为0,造成全黑.检查当前Material和顶点颜色和纹理颜色.3.深度不对: 被已有的深度遮住了.检查当前深度,直接在此渲染前加Clear深度为1.0作测试.4.CullMode设置不对: 所有三角形被当作背面剔除了,设为CULL_NONE测试. 5.3D物件的纹理坐标统统大于1.0,且此时纹理寻址方式为BORDER, 且BORDER被设为黑色,画面全黑.6.深度被Clear为0.0,且打开深度测试,绝对什么都画不上,上述3的特例.7. 阅读全文
posted @ 2011-04-20 09:08 oayx 阅读(1449) 评论(0) 推荐(0) 编辑
摘要: 低级编程错误的根由是粗心造成的,而这里所谓高级编程错误源自各版本驱动程序的Bug和一些不合理的API接口,此类错误通常令人吐血,出现一个都要耗费数小时甚至数天来解决,这是个实际经验累计的过程,痛苦而又必要.1.要求D3DXCreateTexture创建D3DFMT_A8R8G8B8格式纹理,在某些显卡(MX4000,Intel82815,FX5200)的某些驱动程序环境下,会意外地返回D3DFMT_A4R4G4B4,导致程序写内存错误,系统崩溃,蓝屏报告显卡驱动程序DLL错误,文字呈现白色方块等一系列错误现象.切记,不能相信D3DXCreateTexture.2.表象上,单句g_D3DDevi 阅读全文
posted @ 2011-04-20 08:52 oayx 阅读(1319) 评论(0) 推荐(1) 编辑