资 源 简 介
应用背景
为了不误导别人,这里有必要补充一下:
HGE每次绘图都需要锁定一次缓冲区,只适合绘制大量相同的图片,如果是各种不同的图片,问题就出来了。如果绘制一百张图片就需要锁定和解锁各一百次。了
解D3DAPI编程的人明白这是个什么问题。所以现有的HGE绘图算法是完全不适合大型游戏的。 有些人看到HGE自带例子中绘制2000个sprite
FPS达200-300以上就以为是正确的,不要忘记绘制的图片都是同一张图片。这个问题是网上一位朋友首先发现的。 这里给出解决方案:
首先删除HGE原有的渲染函数,一个都不要留。 然后制作出一个添加数据..
关键技术
HGE的核心绘图算法真是问题多多 大家有没有发现HGE绘图的时候是很有问题的。
每画一张图片,就需要从系统内存复制一次数据,最关键的不是数据复制的问题,而是每一次都需要LOCK锁定一次顶点缓冲区进行数据更新。锁定的时候不使用
任何标记,那么就强制GPU和CPU同步,带来的是渲染延迟问题。
最要命的是每一帧都进行从系统内存——显卡内存的操作,如果是网络游戏,每一帧都画上千张以上的图片和阿尔法混合,结果会出现什么??本来顶点缓冲区里面
既然已经存在数据,那么在几帧之内,如果数据是不需要更新,就完全可以直接从顶点缓冲区里面读取数据进行绘图。那么这些是GPU的事情,而CPU只是做了
很短时间的操作
文 件 列 表
gdc第一次
Debug
Bacterium.cpp
Bacterium.h
bass.dll
cell.cpp
Cell.h
firstMain.cpp
gameInterfaceManager.cpp
gameInterfaceManager.h
gdc第一次.aps
gdc第一次.vcproj
gdc第一次.vcproj.YLMFWWW-G3M5332.Administrator.user
gdc第一次.vcxproj
gdc第一次.vcxproj.filters
gdc第一次.vcxproj.user
hge.dll
Manager.cpp
Manager.h
menu.wav
menuitem.cpp
menuitem.h
stdafx.h
Debug
bang.psi
bang2.psi
bass.dll
bg.png
bg1.png
BuildLog.htm
cell1.png
cell2.png
cursor.png
font1.fnt
font1.png
gdc第一次.exe
gdc第一次.exe.embed.manifest
gdc第一次.exe.embed.manifest.res
gdc第一次.ilk
gdc第一次.pdb
hge.dll
hge_tut03.log
hge_tut03.obj
J.W.L.ico
menu.wav
mt.dep
particles.png
trail.psi
trail1.psi
trail3.psi
vc90.idb
vc90.pdb
第一次.log
_UpgradeReport_Files
UpgradeReport.css
UpgradeReport.xslt
UpgradeReport_Minus.gif
UpgradeReport_Plus.gif
gdc第一次.sln
gdc第一次.suo
UpgradeLog.XML