ÎļþÖеÄË÷Òý½øÐжÁÈ¡¡£ 13
˶ʿѧλÂÛÎÄ »ùÓÚOGREµÄº£Á¿ÈýάģÐͶ¯Ì¬µ÷¶È¼¼ÊõµÄÑо¿ÓëʵÏÖ
(2)¼ÓÔØ×ӽڵ㣺Èç¹û³¡¾°ÌãÑ¡Æ÷Ñ¡³öµÄÊÇнڵ㣬²¢ÇÒ½ÚµãºÍÎļþÊý¾ÝûÓÐÔÚÄÚ´æ
ÖУ¬½«»áÌí¼ÓÒ»¸öÊý¾ÝÇëÇóÀ´¼Ç¼ÐÅÏ¢£¬È»ºóÓɺǫ́µÄÏß³ÌÀ´¼ÓÔØ¡£
(3)Ô¤±àÒëÊý¾Ý£º¼ÓÔØ½ø¶¯Ì¬Êý¾Ý¿âµÄÎļþÈç¹ûÐèÒªÔ¤±àÒëµÄ»°£¬¿ÉÒÔÌáǰ½øÐÐÔ¤±à
ÒëÀ´Ìá¸ßЧÂÊ¡£Ö®Ç°ÏÈËÍÈëµÈ´ý±àÒë¶ÓÁС£
(4)ºÏ²¢µ½³¡¾°Ê÷ÖУºÖ®Ç°×¼±¸ºÃµÄ¶ÔÏó»á·ÅÈëµÈ´ýºÏ²¢¶ÓÁУ¬ÓÉ
addLoadedDataToSceneGraphº¯ÊýÀ´°Ñ´øÓÐÎļþÊý¾ÝµÄ×Ó½Úµãaddchildµ½¶ÔÓ¦µÄ ¸¸½Úµã¡£
ÆúÐØÏóPÈË ÊͷŸýڵãÒÔ
Ñ¡:ÇÉ©‡ø, >ÁÐ ,¡µµÍϵͳ¿ªÏú
Êý¾ÝÇëÇó¶Ó ³¢ÊÔ_¡ª??
I/????.? =o ÁÐ ¡ö=>¼ÓÔØ½ÚµãµÄÎļþ _
¼ÓÔØºó£¬ÐèÒªÌáǰ^¡¢µÈ´ý±àÒë¶Ó ^¡¢Ö´ÐжÔÏóµÄÔ¤±à ±àÒëµÄÊý¾Ý >ÁÐ ¡® ^ÒëT×÷
±àÒëÍê±Ï£¬»òÕß²» µÈ´ýºÏ²¢¶Ó . -
1¡ª¡ª
ͼ 3-1 DatabasePager µÄÖ÷Òª[×÷
Fig.3-1 The Main Work Of The DatabasePager
ÔÚÉÏͼµÄÔÀíÖУ¬¶ÔÏóÀëÊÓµã̫ԶҲËã×÷ÊÇÀëŽÔ¡°µ±Ç°Ò³Ã桱¡£×ó±ß´ú±íÌṩµÄÊý¾Ý£¬
Ë͵½Öмä°×É«·½¿éµÄÏàÓ¦¶ÓÁÐÖУ¬Óұߴú±íµÃµ½µÄ×îÖյIJÙ×÷ºÍ½á¹û¡£Óɺǫ́Ïß³Ì
DatabaseThreadÀ´´¦ÀíµÄÊÇÓÃdzɫ·½¿é±íʾµÄ£¬ÓÉÆäËûº¯ÊýÀ´´¦ÀíµÄÊÇÓÃÉîÉ«·½¿éÀ´±í ʾµÄ¡£ 15
¿ÚÖÆ¹¤³Ì˶ʿѧλÂÛÎÄ »ùÓÚOGREµÄº£Á¿ÈýάģÐͶ¯Ì¬µ÷¶È¼¼ÊõµÄÑо¿ÓëʵÏÖ
µÚÈýÕ»ùÓÚOGREµÄDatabasePager¼¼ÊõµÄÑо¿ÓëʵÏÖ
OGREÔÚº£Á¿Ä£ÐÍÊý¾Ý´¦ÀíÄÜÁ¦·½Ãæ±È½Ï²»×㣬ֻÄÜÒÔ×ÊÔ´×éµÄÐÎʽͳһµÄ¼ÓÔØºÍ
Ð¶ÔØ³¡¾°ÖеÄÊý¾Ý£¬Ò²¾ÍÊÇ˵µ±Ç°³¡¾°ÖеÄÊý¾Ý±ØÐëÏȼÓÔØµ½ÄÚ´æÖУ¬Ê¹ÓÃʱ´ÓÄÚ´æÖÐ
Ö±½Óµ÷Ó㬲»Ê¹ÓÃʱͳһ½øÐÐÐ¶ÔØ£¬²»ÄܸܺßЧµÄ¶ÔÄÚ´æÖеÄÊý¾Ý½øÐйÜÀí£¬Ò²²»ÄܺÜ
ÓÐЧµÄ¶Ôµ¥¸öÄ£ÐÍÊý¾Ý½øÐд¦Àí¡£ËùÒÔʹÓÃÆðÀ´±È½ÏÓ·Ö×,²»ÊǺÜÁé»î¡£¶øDatabasePager
¶¯Ì¬Êý¾Ý¿â¼¼ÊõÄܺܺõĽâ¾öÕâ¸öÎÊÌ⣬Õâ¸ö¼¼ÊõÔÚOSGÖÐÓÐןܺõÄÓ¦Ó㬶ø±¾ÂÛ
ÎÄÖ÷ÒªÊÇ¿¼ÂÇÈçºÎ½«ËüÓ¦Óõ½OGREµ±ÖÐÈ¥¡£ÓÉÓÚÕâÒ»ÕµÄÖØµãÊÇÄ£Ð͵Ķ¯Ì¬¼ÓÔØÐ¶
ÔØ£¬»¹Ã»ÓÐÏêϸ½éÉÜPagedLOD¼¼Êõ£¬±¾ÕÂÖÐÓõÄPagedLOD½Úµã¶¼Ö»ÓÐÒ»¸ö×ӽڵ㣬
Ö»¿¼ÂǸÃ×Ó½ÚµãµÄ¼ÓÔØÐ¶ÔØ£¬²»¿¼ÂÇÆäËûϸ½Ú²ã´Î¡£¶øÏÂÒ»Õ½«¶ÔPagedLOD¼¼ÊõµÄÓ¦
ÓýøÐÐÏêϸ½²½â¡£
3.1 DatabasePager ÔÀí
3.1.1 DatabasePager¶¯Ì¬Êý¾Ý¿â¼ò½é
DatabasePager¶¯Ì¬Êý¾Ý¿âÊǰéËæ×ź£Á¿Êý¾Ý£¬Óý¶øÉúµÄ¡£Ëùν¶¯Ì¬£¬´óÖÂÒâ˼¿ÉÒÔ
×ܽáΪһ¾ä»°£¬¾ÍÊÇÐèÒªµÄÊý¾Ý¼ÓÔØ½øÄڴ棬²»ÐèÒªµÄÊý¾Ý´ÓÄÚ´æÐ¶ÔسöÈ¥¡£²»¹ý¿´ËÆ
¼òµ¥µÄÒ»¾ä»°£¬Ï¸½ÚʵÏÖÆðÀ´»¹ÐèÒª¿¼ÂǺܶàµÄÎÊÌ⣬±ÈÈçÔõÑù¼ÓÔØÐ¶ÔØ²ÅÄܲ»Ó°ÏìÖ÷
³ÌÐòµÄÔËÐУ¬ÔõÑùÄܱ£Ö¤ÐèÒªµÄÊý¾ÝÇ¡ºÃÔÚÊý¾Ý¿âÖУ¬ÔõÑùÅжÏÄÄЩÊDz»ÓõÄÊý¾Ý£¬²¢
ÇÒÇÄÇĵÄÐ¶ÔØµô£¬ÕâЩ¶¼ÊÇÐèÒª×ÐϸµÄ˼¿¼ºÍÑо¿µÄ¡£
3.1.2 DatabasePager µÄÖ÷Òª¹¤×÷
DatabasePagerµÄÖ÷Òª¹¤×÷¿ÉÒÔ·ÖΪÒÔϼ¸¸ö²¿·Ö£º
(1)ɾ³ýÄ£ÐÍÊý¾Ý£ºÔÚ³¡¾°¸üеĹý³ÌÖУ¬Èç¹ûµ±Ç°³¡¾°ÖеÄÄ£Ðͳ¬¹ý¹æ¶¨ÊýÁ¿»òÕß
³¬¹ý¹æ¶¨Ê±¼ä¹æ¶¨¶ÙÊý£¬½«»á¶ÔÄ£ÐÍ½Úµã½øÐÐɾ³ý£¬°ÑÎļþÊý¾ÝÐÅÏ¢´ÓÄÚ´æÊÍ·Å¡£
ÕâÑù½øÐÐɾ³ýÅжÏÄÜÓÐÒ»¶¨µÄ»º³å»úÖÆÊǷdz£ºÃµÄ£¬Èç¹ûÒ»µ©²»Ê¹ÓþÍɾ³ýµÄ»°
»á±È½ÏÂé·³£¬ÒòΪÓÐЩÊý¾ÝËäÈ»ÔÝʱ²»Ó㬵«ÊÇÂíÉÏ¿ÉÄÜÓÖÐèÒª£¬ÔÙÖØÐ¼ÓÔØµÄ
»°µÃ²»³¥Ê§¡£ 14
ÈÕÖÆ¹¤³Ì˶ʿѧλÂÛÎÄ »ùÓÚOGREµÄº£Á¿ÈýάģÐͶ¯Ì¬µ÷¶È¼¼ÊõµÄÑо¿ÓëʵÏÖ
ÐòÖн«ÒªÓõ½µÄ×ÊÔ´ÎļþÏÈ·ÅÖÃÔÚ×ÊÔ´×éÖУ¬È»ºó¼ÓÔØÊ±È«²¿¶¼·ÅÈëÄÚ´æÖУ¬°üÀ¨´Ö²Ú
³Ì¶È²»Í¬µÄ¶à¸öϸ½Ú²ã´ÎÄ£ÐÍÊý¾Ý£¬ºóÃæÔÚʹÓÃÄĸöÄ£ÐÍʱ¿ÉÒÔѸËÙ´ÓÄÚ´æÖÐÈ¡³ö½øÐÐ
äÖȾ£¬äÖȾЧÂʱȽϸߡ£µ«ÊÇÕâÑù×ö¶ÔÄÚ´æµÄѹÁ¦ºÜ´ó£¬×ÊÔ´×éÖÐËùÓеĶ«Î÷¶¼ÔÚÄÚ´æ
ÖУ¬¼º¾À뿪ÊÓÒ°µÄºÍûÓÐÏÔʾµÄϸ½Ú²ã´ÎÄ£ÐͶ¼»¹ÔÚÄÚ´æÖУ¬ÎÞ·¨½øÐÐÓÐЧµÄÐ¶ÔØ£¬
ÓÐʱ»áʹÄÚ´æ²»¿°Öظº¡£±¾ÂÛÎÄ»áÑо¿OSGÖеĶ¯Ì¬µ÷¶È¼¼Êõ£¬¼ÓÇ¿OGRE×ÊÔ´¹ÜÀí
µÄЧÂÊ£¬»º½âÄÚ´æÑ¹Á¦£¬ÊµÏִ󳡾°µÄ¶¯Ì¬µ÷¶È¡£
2.3 OSGÈýάÒýÇæ¼ò½é
OSGµÄÓ¢ÎÄÈ«³ÆÊÇ£¨Open Scene Graph)£¬Òâ˼ÊǎԷų¡¾°Í¼ÐΡ£Ö÷ÒªÓ¦ÓÃÓÚÐéÄâ·Â
Õæ¡¢¹¤³Ì¿ÉÊÓ»¯·½Ã棬»ùÓÚÐ޸ĵÄLGPL¿ªÔ´ÐÒé¡£OSGÒýÇæÖ»Ö§³ÖOpenGL£¬²»Ö§³Ö
DirectX¡£OSGµÄ»·¾³´î½¨ºÍOGRE¡ªÑù¸´ÔÓ£¬µ«ÊÇ·½·¨Ïà½ü£¬Ôڴ˲»ÔÙ׸Êö¡£
2. 3.1 OSGµÄ´úÂë½á¹¹
1¡¢osg¿â£ºÕâ¸ö¿â°üº¬OSGÈýάÒýÇæµÄ»ù±¾ÄÚÈÝ£¬±ÈÈçÓÐÖÇÄÜÖ¸Õë¡¢¹«¸æ°å¡¢Éã
Ïñ»ú¡¢²Ã¼õ¡¢½Úµã¡¢LOD¡¢PagedLODµÈµÈ¡£ÔÚ¹¹½¨³¡¾°Ê÷½á¹¹µÄʱºòÖØµãʹÓÃÕâ¸ö¿â£¬
ÒÔ¼°Ò»Ð©ÆäËû¿âËùÐèÒªµÄ¹«¹²²¿·Ö¡£
2¡¢osgDB¿â£º°üº¬Á˸÷ÖÖ¹ØÓÚÎļþ´¦ÀíºÍÊý¾Ý¿â²¿·Ö£¬±¾ÂÛÎÄÑо¿µÄÖØµã
DatabasePager¾ÍÔÚÕâ¸ö¿âÀïÃæ¡£ÆäËû»¹°üº¬ÓжÁдÎļþ¡¢¹²Ïí״̬¹ÜÀíµÈ¹¦ÄÜ¡£
3¡¢osgUtiؿ⣺OSGµÄʵÓù¤¾ß²¿·Ö£¬ÀïÃæ°üº¬OSGʹÓùý³ÌÖеÄËùÐèµÄ¸÷ÖÖ¹¤¾ß¡£
4¡¢osgGA¿â£º°üº¬ÁË´°¿ÚÊÓ¾°ÓëÓû§µÄ½»»¥µÄ¹ÜÀí¹¤¾ß£¬¹¹½¨³öÒ»¸öÉ豸³éÏó²ã£¬
²¢ÇÒÓëÆ½Ì¨Î޹ء£
5¡¢osgViewer¿â£ºÊÓ¾°Æ÷£¬OSGµÄß@Ⱦ²¿·ÖÖ÷ҪʹÓÃÕâ¸ö¿â£¬°üÀ¨³¡¾°¡¢ÊÓ¿Ú¡¢ÊÓ
¾°Æ÷¡¢Ö²È¾µÈµÈ²¿·Ö¡£
2.3.2 OSGµÄ³¡¾°½á¹¹
OSGÖÐÓÐÁ½¸öÊ÷£¬³¡¾°Ê÷ºÍäÖȾÊ÷¡£³¡¾°Ê÷²¿·ÖÊÇÓû§ÔÚʹÓõĹý³ÌÖÐ×Ô¼º´´½¨£¬
ֲȾÊ÷ÊÇOSG¸ù¾ÝÓû§ÌṩµÄÐÅÏ¢½øÐÐÉú³É¡£ 12
ÈÕÖÆ¹¤³Ì˶ʿѧλÂÛÎÄ »ùÓÚOGREµÄº£Á¿ÈýάģÐͶ¯Ì¬µ÷¶È¼¼ÊõµÄÑо¿ÓëʵÏÖ
3.1.3 DatabasePagerÖеÄɾ³ýÊý¾ÝµÄÅжÏÔÀí
Ò»¡¢³¬¹ýÊýÁ¿É¾³ýģʽ£¨_targetMaximmnNumberOfPageLOD>0)£º
1¡¢½øÈëÊÓÒ°µÄPagedLOD½ÚµãÌí¼Ó½ø»î¶¯PagedLOD½Úµã¡£
2¡¢Èç¹ûijһ¶ÙŽÔʼ²»Ê¹Óã¬Ôò½«PagedLOD½Úµã´Ó»î¶¯PagedLODÁбíÖÐÒÆµ½²»
»î¶¯PagedLODÁбíÖС£
3¡¢Èç¹ûÏÂÒ»¶ÙÓÖ¿ªÊ¼Ê¹Óã¬Ôò½«PagedLOD½Úµã´Ó²»»î¶¯PagedLODÁбíÖÐÔÙÒÆ»Ø
µ½»î¶¯PagedLODÁÐ±íµ±ÖС£
4¡¢Èç¹ûPagedLOD×ÜÊý<=PagedLODµÄ×î´óÖµ£¬Ö±½Óreturn
5¡¢É¾³ýµÄÊýÁ¿¶þ PagedLOD×ÜÊý-PagedLODÄ¿±ê×î´óÖµ
6¡¢Èç¹ûɾ³ýµÄÊýÁ¿
>²»»î¶¯PagedLODÊýÁ¿
ɾ³ýµÄÊýÁ¿=²»»î¶¯PagedLODÊýÁ¿
7¡¢¹ýÆÚʱ¼ä=µ±Ç°ÇãµÄÒýÓÃʱ¼ä-0.1
¹ýÆÚÌû=µ±Ç°¶Ù±àºÅ-1
8¡¢±éÀú²»»î¶¯½ÚµãÁбíŽÔÊ¼ÒÆ³ý×ӽڵ㡣
9¡¢°Ñ×Ó½ÚµãËÍÈëɾ³ý¶ÓÁУ¬µÈÏß³Ìɾ³ý¡£ 16
³Ì˶ʿѧλÂÛÎÄ »ùÓÚOGREµÄº£Á¿ÈýάģÐͶ¯Ì¬µ÷¶È¼¼ÊõµÄÑо¿ÓëʵÏÖ ¿ªÊ¼
^ X r Si
I PagedLOD ½Úµã 1 ·ñ
PagedLOD ½Úµã
\\^·ñ½øÈ볡
Ìí¼Óµ½»î¶¯
°Ù¶ÈËÑË÷¡°77cn¡±»ò¡°Ãâ·Ñ·¶ÎÄÍø¡±¼´¿ÉÕÒµ½±¾Õ¾Ãâ·ÑÔĶÁÈ«²¿·¶ÎÄ¡£Êղر¾Õ¾·½±ãÏ´ÎÔĶÁ£¬Ãâ·Ñ·¶ÎÄÍø£¬Ìṩ¾µäС˵×ÛºÏÎÄ¿â»ùÓÚOGREµÄº£Á¿ÈýάģÐͶ¯Ì¬µ÷¶È¼¼ÊõµÄÑо¿ÓëʵÏÖ - ÀîÀ×(6)ÔÚÏßÈ«ÎÄÔĶÁ¡£
Ïà¹ØÍÆ¼ö£º