Infinity 無(wú)限星辰,無(wú)限強(qiáng)大的科幻游戲啊,不過(guò)還遠(yuǎn)遠(yuǎn)沒(méi)有完成
如果SmallObject最大大小并不是很大的話~~也許可以根據(jù)對(duì)象大小弄成多個(gè)SmallObjectHeap。
比如對(duì)象大小是2,就放在SmallObjectHeap2,
對(duì)象大小是4,就放在SmallObjectHeap4,
對(duì)象大小是8,就放在SmallObjectHeap8.......
這樣就可以省去內(nèi)存縮并的工作。只有當(dāng)Heap不夠大時(shí),才擴(kuò)大內(nèi)存。
不用執(zhí)行碎片的方法(參考python的實(shí)現(xiàn)):
struct BlockN
{
BlockN* m_Free;
char data[N];//大小為N的對(duì)象數(shù)據(jù)
};
class SmallObjectHeapN
{
BlockN m_Blocks[size];
BlockN* m_NextFree;
};
SmallObjectHeapN的類(lèi)里面有一個(gè)指向空閑地址的指針m_NextFree,每個(gè)BlockN也有一個(gè)指向空閑地址的指針m_Free(初始化成0),
在一開(kāi)始的時(shí)候SmallObjectHeapN的m_NextFree肯定指向m_Blocks的地址;
添加的時(shí)候,發(fā)現(xiàn)m_NextFree所在的block里面的m_Free是0,于是++m_NextFree;
某個(gè)block刪除的時(shí)候,m_Free=m_NextFree,而m_NextFree指向這個(gè)被刪除的block;
再次添加對(duì)象時(shí),發(fā)現(xiàn)m_NextFree指向的block里面的m_Free不是0,則添加完成后,m_NextFree=block->m_Free就行了。
re: 稚嫩版垃圾收集器 之 工作機(jī)制 陳昱(CY) 2010-05-14 14:50
學(xué)習(xí)了。
內(nèi)存池整理時(shí)機(jī)的那個(gè)“閾值”弄成動(dòng)態(tài)的,和“年老的對(duì)象”的數(shù)量成比例,效率應(yīng)該比較好,純猜測(cè)....
不過(guò)感覺(jué)仍然有不足,兩個(gè)食物里面都要定義一個(gè)typedef
還是模板特化比函數(shù)容易想到~~
#include<iostream>
#include<string>
using namespace std;
struct Gooood{};
struct Baaaad{};
template<typename T>
class TasteFood
{
public:
static void Test()
{
cout<<"er...I don't know this smell,taste fail........"<<endl;
}
};
template<>
class TasteFood<Gooood>
{
public:
static void Test()
{
cout<<"this food tasted goooooooooood~~~~~"<<endl;
}
};
template<>
class TasteFood<Baaaad>
{
public:
static void Test()
{
cout<<"this food tasted baaaaaaad........."<<endl;
}
};
class Pizzzzzza
{
public:
typedef Gooood T_Tasted;
};
class FoodInSchool
{
public:
typedef Baaaad T_Tasted;
};
template<typename T>
void AfterEat(T&food)
{
TasteFood<typename T::T_Tasted>::Test();
}
int main()
{
Pizzzzzza food1;
FoodInSchool food2;
AfterEat(food1);
AfterEat(food2);
int a;
cin>>a;
return 0;
}
看不明白,RenderToTexture 是個(gè)負(fù)責(zé)干什么的對(duì)象。。。。
re: 無(wú)鎖線程通信(1) 陳昱(CY) 2010-05-06 12:21
那個(gè)通道狀態(tài)“是否有貨”實(shí)際就是鎖,確實(shí)沒(méi)有同步起來(lái)
還真的不明白,這里說(shuō)的物體的顯示是指服務(wù)端上要通知給客戶端顯示的物體?還有你說(shuō)的單足物體和多足物體,還不明白是什么內(nèi)容?
還是boost python、boost luabind強(qiáng)大啊,,,
re: 碩士論文致謝 陳昱(CY) 2010-04-29 17:47
致謝并且封神~~~
位移只有float3,應(yīng)該能又節(jié)約一些吧?
uniform vec4 g_allBonesQuaRot[50];
uniform vec3 g_allBonesTran[50];
期待下一篇,掛在材質(zhì)上的人學(xué)習(xí)了
最近發(fā)現(xiàn)一個(gè)強(qiáng)大的大學(xué)生團(tuán)隊(duì)的游戲
http://planetbad.cn/
蘋(píng)果的xcode也有一個(gè)叫Instrument的東西,橫向時(shí)間軸,豎向一些內(nèi)存使用量、泄漏位置、函數(shù)調(diào)用開(kāi)銷(xiāo)等等。。。總之看起來(lái)確實(shí)像Instrument
不過(guò)在蘋(píng)果上弄開(kāi)發(fā)仍然是煎熬,效率低,svn垃圾........
re: 美帝出差第一天 陳昱(CY) 2010-04-10 18:54
坐等圖片
這個(gè)沒(méi)辦法解開(kāi)的,邏輯復(fù)雜時(shí),不可能 既完全沒(méi)有重復(fù)代碼,又效率最高(思路最清晰)的
覺(jué)得1、2種都可以
World TM是相對(duì)于整個(gè)場(chǎng)景的變換矩陣,Local TM是相對(duì)于父物體的,Object TM是相對(duì)于自身的。
還不太明白的是Object TM有什么用,難道除了單位矩陣還有其它值?
想起當(dāng)年玩單機(jī)版的勁樂(lè)團(tuán).....
物理用10年,生命學(xué)用20年........
"應(yīng)該先有應(yīng)用,再提煉出庫(kù)。而不是先造庫(kù),然后尋求應(yīng)用。"
應(yīng)該先有游戲,再提煉出引擎,而不是先造引擎,然后尋求游戲
看來(lái)我找到失敗的原因了
是不是沒(méi)有做文件系統(tǒng)的話,以后資源打包的問(wèn)題上就杯具了?
在開(kāi)發(fā)時(shí),一般都是直接使用文件目錄下的資源,但到發(fā)布產(chǎn)品時(shí),都要把這些資源文件夾打包成zip之類(lèi)的,然后保持代碼改動(dòng)最小。因此文件系統(tǒng)統(tǒng)一負(fù)責(zé)所有硬盤(pán)讀寫(xiě)的操作,文件系統(tǒng)更主要的是這個(gè)功能吧?
培養(yǎng)興趣還是要靠環(huán)境啊,“學(xué)校只需要保證一個(gè)幾乎把自己所有的時(shí)間投入到代碼中去的人能夠找到合理的工作就好了”---學(xué)校保證這個(gè)不難,難的是如何幫助轉(zhuǎn)變?cè)絹?lái)越多這樣的人,學(xué)校對(duì)這方面的貢獻(xiàn)還是太小了...
當(dāng)然這個(gè)和學(xué)生自己也有關(guān)系,比如我,讓博主白感化了幾年-_-!
今天弄蘋(píng)果開(kāi)發(fā),發(fā)現(xiàn)蘋(píng)果XCode的界面庫(kù)開(kāi)發(fā)的內(nèi)部機(jī)制和你這個(gè)是一樣的~~
re: 終于成功導(dǎo)出蒙皮了 陳昱(CY) 2010-01-21 17:31
厄...
先理解骨骼系統(tǒng),實(shí)際是一棵(多棵?)層次樹(shù),樹(shù)結(jié)點(diǎn)包含著變換矩陣,變換矩陣要建立在父節(jié)點(diǎn)的矩陣空間中
然后,蒙皮過(guò)程就是對(duì)那些受影響的頂點(diǎn)進(jìn)行矩陣變換的操作....
還是先看書(shū)吧,我只是大概總結(jié)一下~
re: 終于成功導(dǎo)出蒙皮了 陳昱(CY) 2010-01-19 12:59
覺(jué)得有些步驟還寫(xiě)得含糊欠妥,盡量改正....
re: 希望GOOGLE挺住。 陳昱(CY) 2010-01-13 13:42
“谷歌離開(kāi)中國(guó)會(huì)讓我們的**與朝鮮、剛果金等被google拒絕服務(wù)的國(guó)家為伍”
.........
re: 判斷點(diǎn)在凸四邊形中 陳昱(CY) 2010-01-08 20:57
凸n邊型知道各頂點(diǎn)圍繞順序的話,向量叉乘最容易
@zll
你說(shuō)的初始化已經(jīng)定義了視景體應(yīng)該是指定義透視投影矩陣吧,opengl內(nèi)設(shè)的裁剪只是面級(jí)別的裁剪,并以次剔除多余頂點(diǎn)。我們渲染時(shí)肯定要做更高一層的剔除,那些空間分割樹(shù)就是為了這方面優(yōu)化而來(lái)的,上面那個(gè)LOD地形是4叉樹(shù)結(jié)構(gòu),當(dāng)然能做“子物體級(jí)別”的裁剪,上面代碼373行就是。
學(xué)習(xí)了,目前在嘗試休閑的小游戲,按文章所說(shuō)的用LCT,但仍然不時(shí)會(huì)小小延遲,于是也加了點(diǎn)慣性,這樣一來(lái)游戲是平滑了,但是操作反應(yīng)和手感.....
以無(wú)架構(gòu)為架構(gòu),乃構(gòu)架的最高境界;以無(wú)pattern為pattern,乃設(shè)計(jì)模式的最高境界....哈哈
re: C++引用優(yōu)于指針 陳昱(CY) 2009-10-26 16:03
Effective c++還是more Effective c++就有說(shuō)到這個(gè)
re: shader的小奏鳴曲 陳昱(CY) 2009-10-18 12:34
@陳梓瀚(vczh)
是啊,空閑時(shí)間學(xué)習(xí)學(xué)習(xí),體驗(yàn)體驗(yàn),有什么建議嗎?
re: 很傻很天真之Array——解決方法 陳昱(CY) 2009-10-13 20:11
很強(qiáng)大,接下來(lái)應(yīng)該實(shí)現(xiàn)tuple了
樹(shù)的資源我也沒(méi)有,目前收集了不少太空飛船模型,可惜也是高模的,沒(méi)有美工確實(shí)是一個(gè)人學(xué)習(xí)時(shí)的大問(wèn)題...
不過(guò)樹(shù)能不能用分型來(lái)實(shí)現(xiàn)呢,這樣算法可能很難,不過(guò)性能和效果應(yīng)該很不錯(cuò),還可以LOD
整顆樹(shù)都是billboard也太節(jié)約資源了吧,一般都是一個(gè)樹(shù)枝上的葉子用一個(gè)四邊形
粒子混合還是不要用疊加好,很難控制亮度,也沒(méi)有了立體感
已更正,另外還有一處提示寫(xiě)錯(cuò):
主鍵盤(pán)上0控制坐標(biāo)X,1控制坐標(biāo)Y,2控制坐標(biāo)Z,3控制坐標(biāo)W,以此類(lèi)推
@mybios
等我完成面的顯示吧,目前只是顯示線,效果有限
是不是VL_BEGIN_BASE_CLASS的話,VL_ADD_CLASS_MEMBER里面的內(nèi)容類(lèi)型一定要C++的基本類(lèi)型?這樣對(duì)所有基本類(lèi)型都進(jìn)行特化?