ºìÁªLinuxÃÅ»§
Linux°ïÖú

»ùÓÚͼÏñCSGµÄ¿â OpenCSG

·¢²¼Ê±¼ä:2012-12-06 15:10:38À´Ô´:ºìÁª×÷Õß:empast
OpenCSGÊÇÒ»¸ö»ùÓÚͼÏñCSGµÄ¿â£¬CSGʹÓÃOpenGLäÖȾ¡£OpenCSGʹÓÃc++±àд£¬²¢Ö§³ÖMicrosoft Windows»òLinux²Ù×÷ϵͳÏÂ×îÏȽøµÄͼÐÎÓ²¼þ¡£

ʲôÊÇCSGÄØ£¿CSGÊÇConstructive Solid Geometry£¨¹¹ÔìʵÌ弸ºÎ£©µÄËõд£¬ËüʹÓüòµ¥µÄ3DͼÐÎÀ´¹¹Ô츴ÔÓͼÐΡ£Ò²¾ÍÊÇ˵£¬Í¨¹ý¸½¼Ó»òÇó²îµÄ·½·¨¿ÉÒÔ½øÐÐͼÐεÄ×éºÏ£¬ÄÇЩ²»ÊÇÓÉCSG²Ù ×÷²úÉúµÄ×î»ù±¾µÄͼÐγÆÖ®Îªprimitives£¨»ùÔª£©£¬»ùÔª±ØÐëÊÇʵÌ壬¼´»ùÔª±ØÐëÒªÓÐÃ÷È·µÄÄÚ²¿»òÕßÍⲿ¶¨Ò塣ͨ¹ý¹¹½¨£¬Ò»¸öCSGÒ²Ò»¶¨ÊÇʵÌå¡£

»ùÓÚͼÏñµÄCSGäÖȾ£¨Éî¶È»º³åÇøCSGäÖȾ£©ÊÇÒ»¸öרÓÃÃû´Ê£¬ËüΪ¼¸ºÎ±ß½çδ¾­¹ýÃ÷È·¼ÆËãµÄ CSGÐÎ×´Ö¸¶¨äÖȾËã·¨£¬ÕâÖÖË㷨ʹÓÃͼÐÎÓ²¼þµÄÖ¡»º³åÇøÉèÖã¬ÈçÉî¶È»º´æ»òÄ£°å»º´æ£¬À´¹¹½¨CSGÐÎ×´¡£OpenCSGʵÏÖ¶àÖÖËã·¨½áºÏ£¬ÆäÖоÍÓÐ goldfeatherËã·¨ºÍSCSËã·¨¡£

Óŵ㣺

CSGÊǾ­³£±»ÓÃ×÷ÔÚCAD/CAMÓ¦ÓóÌÐòÖеĻù±¾½¨Ä£¼¼Êõ¡£ÕâÀ»ùÓÚͼÏñµÄCSGÊǽ»»¥²Ù×÷CSGÐÎ×´µÄ¹Ø¼ü¡£ÓÉÓÚOpenCSG¶Ô¸ü¸´ÔÓµÄͼÏñäÖȾ½ÏΪ¿ìËÙ£¬ËùÒÔËüÄÜÓÐЧµØÔÚÕâЩӦÓÃÖÐʹÓá£

ºÜ¾ÃÒÔǰÖîÈçPovRayÕâÑùµÄ»æÍ¼¹¤¾ß¾ÍÒѾ­Ê¹ÓÃCSG½øÐÐͼÏñ½¨Ä£ÁË¡£¾¡¹ÜÕâÖÖ»æÍ¼¹¤¾ßµÄ»¥¶¯½¨Ä£¹¤¾ß°üǡǡºöÂÔCSGÃüÁµ«OpenCSG´ú±íÁËÕâÖÖÓ¦ÓÃÈí¼þµÄÒ»ÖÖÓмÛÖµµÄ¸½¼ÓÆ·¡£

×ܵÄÀ´Ëµ£¬µ½Ä¿Ç°ÎªÖ¹CSGäÖȾÒѾ­¼¸ºõûÓÐÔÙÓÃÓÚ½»»¥Ê½Ó¦ÓóÌÐò£¬ÒòΪËùÐèµÄËã·¨¸´ÔÓÇÒÈÝÒ׳ö´í¡£ÎÒÃÇÏ£Íûͨ¹ýÌṩһ¸öÃâ·ÑµÄ¿â£¬Õâ¸ö¿âÊÇÒ×ÓÚʹÓᢿìËÙÁé»îµÄ£¬Õ⽫ʹËü±ÈĿǰ¸üΪÖ÷Á÷¡£

ÏȾöÌõ¼þ£º

OpenCSGµÄ¿âÒªÇóÔÚOpenGLÖÐÒ²Ö§³ÖPBuffer»òÖ¡»º³å¶ÔÏóµÄͼÐÎÓ²¼þ¡£ÔÚPBuffersÌõ¼þÏ£¬Èç¹ûäÖȾµ½ÎÆÀíµÄÏà¹ØÉ豸Ҳ±»Ö§³ÖÕ⽫ÊÇÓÐÀûµÄ£¬Èç½ñOpenCSGʹÓÃRenderTextureÀà×÷ΪPBuffer¿â¡£

Ò»Ö±ÒÔÀ´£¬PBuffersÒѱ»¹ã·ºÖ§³Ö¡£NVidiaÖÁÉÙ×Ô Radeon ϵÁоͿªÊ¼Ö§³ÖPBuffers£¬ËæºóÊÇRiva TNT ºÍ ATI£»ÆäËû¹©Ó¦ÉÌÉú²úµÄͼÐÎÓ²¼þËÆºõ²¢²»Ö§³ÖPBuffers¡£Òò´Ë£¬Èç¹ûÄú²»ÊìϤͼÐÎÓ²¼þ²¢ÇÒÔËÆø½Ï²îµÄ»°¿ÉÄܾÍÎÞ·¨Ê¹ÓÃOpenCSGÀ´ÔËÐгÌÐò¡£ ÔÚLinuxÌõ¼þÏ£¬Äú¿ÉÄÜÐèҪѡÔñͬʱ֧³ÖOpenGLÈí¼þäÖȾÓëPBuffers¡£

Ö¡»º³å¶ÔÏóÊÇOpenGLµÄÒ»¸ö½ÏеÄÀ©Õ¹¡£ËüÃǸüÒ×ÓÚÓÃ×÷¿ª·¢£¬ÏÖÔÚ£¨2010Ä꣩ÒѾ­³ÉÊì¡£ËüÃÇÒ²ÊÇOpenGL3.0µÄÒ»²¿·Ö¡¢´Ó1.2.0OpenCSG¿ªÊ¼ÔÚĬÈÏÇé¿öÏÂʹÓÃOpenCSG£¬ÔڽϾɵİ汾ÖÐĬÈÏʹÓÃPBuffers¡£

¶ÔÓÚOpenGLÀ©Õ¹¼ì²é£¬OpenCSGʹÓÃOpenGLÀ©Õ¹¼×µÈ¿âGLEW¡£

OpenCSGдÔÚc++ÖУ¬Ê¹ÓÃÃüÃû¿Õ¼ä£¬²¢ÐèÒªSTL¡£ÔÚWindowsÏÂÎÒ²»Ï£ÍûÖ÷Òª±à ÒëÆ÷²»¼æÈÝ¡£MSVC6, VC2003 .netºÍDev-C++ 5 beta¶¼ÌṩÏàÓ¦µÄ¹¤×÷Çø¡£ÔÚLinux»·¾³Ï£¬ÄúÓ¦¸ÃʹÓÃgcc3»òÕ߸ü¸ß°æ±¾¡£ÓÉÓڸñàÒëÆ÷²¢²»ÄÜ´¦Àí±ØÐëÔÚÄÚ²¿Ê¹ÓõÄstd::mapʵÏÖ£¬ÖÂʹ gcc 2.95.x²»ÔÙÓÐЧ¡£

ÒªÔËÐкÃOpenCSG£¬ÄúÓ¦¸ÃÓиßÌî³äÂʵÄͼÐÎÓ²¼þ¡£NVidia ͼÐÎÓ²¼þ×Ô´Ó GeForce ºÍ ATI Radeon ÒÔºóÂú×ãÁËÒÔÉÏÒªÇó¡£ÔÚOpenCSG::OcclusionQueryÑ¡ÏîÏÔÈ»ÐèÒª·â±Õ²éѯ£¬Õâ¸öÑ¡ÏÄÜÊÇ´ÓRadeon 9x00£¨x>= 5£©ºÍGeForce3£¨×¢Ò⣬GeForce4MXµÄÊýÁ¿ÎªGeForce2£¡£©ÏÔ¿¨Ð¾Æ¬³öÏÖÒÔºó²Å¿ªÊ¼Ö§³ÖµÄ¡£

OpenCSG Òѳɹ¦µØÔÚÓ¢ÌØ¶ûºÍAMDµÄÓ²¼þÉÏʹÓà Radeon HD 4670¡¢ GeForce 8 x 00¡¢GeForceFX 6800¡¢5600 GeForceFX£¬Radeon 9700¡¢ GeForce3¡¢GeForce4MX ºÍ TNT2ͼÐÎÓ²¼þÔËÐУ¨Ô½ÍùºóÔ½Âý£©¡£

ÔÚRadeon9000ÉÏ£¬OpenCSG»áÔÚ³ýÁ˱ê×¼GoldfeatheräÖȾ·¾¶ÒÔÍâµÄÆäËûÈκεط½²úÉúäÖȾ´íÎó£¬ÕâÒ»Çé¿öÔø¹ãΪÈËÖª£¬ÕâÊÇ·ñÊÇÇý¶¯Æ÷µÄÎÊÌâ²¢²»ºÜÇå³þ¡£ÎÒûÓÐÔÚNVidia»òATI/AMDÒÔÍâµÄͼÐÎÓ²¼þÉÏÔËÐÐOpenCSGµÄ¾­Ñé¡£

ʹÓÃÇé¿ö£º

OpenCSGµÄ½Ó¿Ú·Ç³£ÈÝÒ×ʹÓá£Ö»ÓÐÒ»¸ö½Ð×öOpenCSG::PrimitiveµÄ³éÏóÀà¡£A»ùÔª¶ÔÏó°üº¬Ò»¸ö±íʾÊǸ½¼Ó»¹ÊÇÇó²îµÄÊôÐÔ²Ù×÷¡£Ê¹ÓÃOpenCSG¿ÉÒÔͨ¹ýÖ´ÐÐrender()·½·¨À´´´½¨Ò»¸öÅÉÉú×Ô¾ßÌå»ùÔªµÄÀà¡£

Èç½ñʵÏÖCSGäÖȾ£¬ÓÐÒ»¸ö½«std::vector ×÷Ϊ²ÎÊýµÄº¯ÊýOpenCSG::render()¡£äÖȾº¯ÊýÇóÓÉ»ùÔª×éµÃ³öµÄCSG±í´ïʽµÄÖµ²¢Ê¹ÓÃCSGµÄ¹ÌÓÐÖµÀ´³õʼ»¯Éî¶È»º³åÇø¡£ÑÕÉ«»º³åÇøÈÔÈ» ûÓиı䣬´ËºóÄú±ØÐëʹÓÃÒ»¸öÒÔGL_EQUALΪ²ÎÊýµÄÉî¶Èº¯ÊýÀ´Òþ²ØÊý×éÖеĻùÔª¡£

Ö÷Ò³£ºhttp://www.opencsg.org/

ÏÂÔØ£ºhttp://www.opencsg.org/OpenCSG-1.3.2.tar.gz

À´×Ô:¿ªÔ´ÖйúÉçÇø
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ