DirectX Graphics ·¹ÆÛ·±½º Direct3D C/C++ ·¹ÆÛ·±½º ÀÎÅÍÆäÀ̽º IDirect3DDevice9 CreateVertexBuffer [¸ñÂ÷¿¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
|
| Microsoft DirectX 9.0 |
Á¤Á¡ ¹öÆÛ¸¦ »ý¼º ÇÑ´Ù.
±¸¹®
HRESULT CreateVertexBuffer(
UINT Length, DWORD Usage, DWORD FVF, D3DPOOL Pool, IDirect3DVertexBuffer9** ppVertexBuffer, HANDLE* pHandle );
ÆÄ¶ó¹ÌÅÍ
- Length
- [in] Á¤Á¡ ¹öÆÛÀÇ »çÀÌÁî (¹ÙÀÌÆ® ´ÜÀ§). À¯¿¬ÇÑ Á¤Á¡ Æ÷¸Ë (FVF) Á¤Á¡ ¹öÆÛÀÇ °æ¿ì´Â,Length ´Â Àû¾îµµ 1 °³ÀÇ Á¤Á¡À» ÀúÀå ÇÒ ¼ö ÀÖ´Â Å©±â°¡ ¾Æ´Ï¸é ¾ÈµÇÁö¸¸, Á¤Á¡ »çÀÌÁîÀÇ ¹è¼öÀÏ ÇÊ¿ä´Â ¾ø´Ù. Length ´Â ºñ FVF ¹öÆÛ¿¡ ´ëÇØ¼´Â °ËÁõµÇÁö ¾Ê´Â´Ù. ¡¸ÁÖÀÇ¡¹¸¦ ÂüÁ¶ÇÒ°Í.
- Usage
- [in] »ç¿ë¹ýÀº 0 À¸·Î ÇÒ ¼ö ÀÖ´Ù. ÀÌ °æ¿ì »ç¿ë¹ýÀÇ °ªÀº ¼³Á¤µÇÁö ¾Ê´Â´Ù. ´Ù¸¸, »ç¿ë¹ýÀÌ ÇÊ¿äÇÑ °æ¿ì´Â, 1 °³ ¶Ç´Â º¹¼öÀÇ D3DUSAGE Á¤¼öÀÇ Æí¼ºÀ» »ç¿ëÇÑ´Ù. CreateVertexBuffer ³»ÀÇ »ç¿ë¹ýÆÄ¶ó¹ÌÅÍ¿ÍIDirect3D9::CreateDevice ÀÇ µ¿ÀÛ Ç÷¡±×¸¦ ÇÕÄ¡½ÃÄÑ »ç¿ëÇÏ´Â °ÍÀ» ÃßõÇÑ´Ù. »ó¼¼ Á¤º¸´Â ¡¸ÁÖÀÇ¡¹¸¦ ÂüÁ¶ÇÒ°Í.
- FVF
- [in] D3DFVF ÀÇ Æí¼º. ¹öÆÛ³»ÀÇ Á¤Á¡ÀÇ Á¤Á¡ Æ÷¸ËÀ» ±â¼úÇÏ´Â »ç¿ë ¹æ¹ýÀÇ ÁöÁ¤ÀÚ. ÀÌ ÆÄ¶ó¹ÌÅ͸¦ À¯È¿ÇÑ FVF ÄÚµå·Î ¼³Á¤ Çϸé, »ý¼º µÇ´Â Á¤Á¡ ¹öÆÛ´Â FVF Á¤Á¡ ¹öÆÛ°¡ µÈ´Ù ( ¡¸ÁÖÀÇ¡¹¸¦ ÂüÁ¶). ÀÌ ÆÄ¶ó¹ÌÅ͸¦ 0 (Á¦·Î)À¸·Î ¼³Á¤ Çϸé, Á¤Á¡ ¹öÆÛ´Â ºñ FVF Á¤Á¡ ¹öÆÛ°¡ µÈ´Ù.
- Pool
- [in] D3DPOOL ¿°ÅÇüÀÇ ¸â¹ö. ¸®¼Ò½º°¡ ¹èÄ¡µÇ´Â À¯È¿ÇÑ ¸Þ¸ð¸® Ŭ·¡½º¸¦ ±â¼úÇÑ´Ù.
- ppVertexBuffer
- [out, retval] »ý¼º µÈ Á¤Á¡ ¹öÆÛ ¸®¼Ò½º¸¦ ³ªÅ¸³»´Â IDirect3DVertexBuffer9 ÀÎÅÍÆäÀ̽ºÀÇ Æ÷ÀÎÅÍ ÁÖ¼Ò.
- pHandle
- [in] ¿¹¾àÀÌ ³¡³ »óÅÂ. ÀÌ ÆÄ¶ó¹ÌÅÍ´Â NULL ·Î ¼³Á¤ÇÑ´Ù.
¹Ýȯ°ª
¼º°øÇßÀ» °æ¿ì´Â,D3D_OK ¸¦ µ¹·ÁÁØ´Ù.
½ÇÆÐÇßÀ» °æ¿ì´Â, ´ÙÀ½ÀÇ ¸î°³ÀÇ °ªÀ» µ¹·ÁÁØ´Ù.
D3DERR_INVALIDCALL ¸Þ¼µåÀÇ È£ÃâÀÌ ¹«È¿ÀÌ´Ù. ¿¹¸¦ µé¾î, ¸Þ¼µåÀÇ ÆÄ¶ó¹ÌÅÍ¿¡ ¹«È¿ÀÎ °ªÀÌ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì µîÀÌ´Ù. D3DERR_OUTOFVIDEOMEMORY Microsoft® Direct3D® °¡ 󸮸¦ ½Ç½ÃÇϴµ¥ ÃæºÐÇÑ µð½ºÇ÷¹ÀÌ ¸Þ¸ð¸®°¡ ¾ø´Ù. E_OUTOFMEMORY Direct3D °¡ È£ÃâÀ» ¿Ï·áÇϱâ À§ÇÑ ÃæºÐÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö°¡ ¾ø¾ú´Ù.
ÁÖÀÇ
Á¤Á¡ ¹öÆÛ´Â, Çϵå¿þ¾î Á¤Á¡ 󸮿¡¼µµ ¼ÒÇÁÆ®¿þ¾î Á¤Á¡ 󸮿¡¼µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù. À̰ÍÀº, ÀåÄ¡¿Í Á¤Á¡ ¹öÆÛÀÇ »ý¼º ¹æ¹ý¿¡ µû¶ó Á¤ÇØÁø´Ù.
ÀåÄ¡¸¦ »ý¼º ÇÒ ¶§CreateDevice ´Â µ¿ÀÛ Ç÷¡±×¸¦ »ç¿ëÇØ, Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾îÀÇ ¾îµð¿¡¼ Á¤Á¡À» ó¸®ÇÒ±î °áÁ¤ÇÑ´Ù. ¼³Á¤ ¹æ¹ý¹ýÀº 3 °³ ÀÖ´Ù.
- Çϵå¿þ¾î·Î Á¤Á¡À» ó¸®ÇÏ·Á¸é , D3DCREATE_HARDWARE_VERTEXPROCESSING ¸¦ ¼³Á¤ÇÑ´Ù.
- ¼ÒÇÁÆ®¿þ¾î·Î Á¤Á¡À» ó¸®ÇÏ·Á¸é , D3DCREATE_SOFTWARE_VERTEXPROCESSING ¸¦ ¼³Á¤ÇÑ´Ù.
- Çϵå¿þ¾î ¶Ç´Â ¼ÒÇÁÆ®¿þ¾î·Î Á¤Á¡À» ó¸®ÇÏ·Á¸é , D3DCREATE_MIXED_VERTEXPROCESSING ¸¦ ¼³Á¤ÇÑ´Ù.
¹Í½º ¸ðµåÀÇ ÀåÄ¡¿¡¼´Â, ÀåÄ¡ÀÇ »ý¼º ÈÄ¿¡, ¼ÒÇÁÆ®¿þ¾î¿Í Çϵå¿þ¾î ó¸®ÀÇ º¯È¯ÀÌ ÇÊ¿äÇÑ °æ¿ì°¡ ÀÖ´Ù. ±× °æ¿ì´Â,IDirect3DDevice9::SetRenderState ¸¦ »ç¿ëÇØ D3DRS_SOFTWAREVERTEXPROCESSING ·»´õ¸µ ½ºÅ×ÀÌÆ®¸¦ ¼³Á¤ÇÏ´Â °Í.
Á¤Á¡ ¹öÆÛ¸¦ »ý¼º ÇÒ ¶§CreateVertexBuffer ´Â »ç¿ë¹ýÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇØ, Çϵå¿þ¾î¿Í ¼ÒÇÁÆ®¿þ¾îÀÇ ¾îµð¿¡¼ Á¤Á¡À» ó¸®ÇÒ±î °áÁ¤ÇÑ´Ù.
- CreateDevice °¡ D3DCREATE_HARDWARE_VERTEXPROCESSING ¸¦ »ç¿ëÇÏ´Â °æ¿ì,CreateVertexBuffer ´Â 0 À» »ç¿ëÇÒ Çʿ䰡 ÀÖ´Ù.
- CreateDevice °¡ D3DCREATE_SOFTWARE_VERTEXPROCESSING ¸¦ »ç¿ëÇÏ´Â °æ¿ì,CreateVertexBuffer Àº 0 ¶Ç´Â D3DUSAGE_SOFTWAREPROCESSING ¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ´Ù. ¾î´À ÂÊÀÇ °ª¿¡¼µµ, Á¤Á¡Àº ¼ÒÇÁÆ®¿þ¾î·Î 󸮵ȴÙ.
- CreateDevice °¡ D3DCREATE_MIXED_VERTEXPROCESSING ¸¦ »ç¿ëÇÏ´Â °æ¿ì,CreateVertexBuffer Àº 0 ¶Ç´Â D3DUSAGE_SOFTWAREPROCESSING ¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
Á¤Á¡ ¹öÆÛ¸¦ ¹Í½º ¸ðµå ÀåÄ¡·Î »ç¿ëÇÏ·Á¸é , Çϵå¿þ¾î ó¸®¿Í ¼ÒÇÁÆ®¿þ¾î ó¸®ÀÇ ¾çÂÊ ¸ðµÎ·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ´ÜÀÏÀÇ Á¤Á¡ ¹öÆÛ¸¦ »ý¼º ÇÑ´Ù. ÇöÀçÀÇ Á¤Á¡ ¹öÆÛ¸¦ ¼³Á¤ÇÏ·Á¸é ,IDirect3DDevice9::SetStreamSource ¸¦ »ç¿ëÇØ, ÀåÄ¡ÀÇ µ¿ÀÛÀ» ÇÕÄ¡½Ã۱â À§Çؼ(¶§¹®¿¡) º¯°æÇÒ Çʿ䰡 ÀÖ´Â °æ¿ì´Â,IDirect3DDevice9::SetRenderState ¸¦ »ç¿ëÇÑ´Ù. Á¤Á¡ ¹öÆÛÀÇ »ç¿ë ¹æ¹ýÀº ÀåÄ¡ÀÇ µ¿ÀÛ°ú ÀÏÄ¡½ÃŰ´Â °ÍÀ» ÃßõÇÑ´Ù. ¼ÒÇÁÆ®¿þ¾î 󸮿ëÀ¸·Î »ý¼º ÇÑ Á¤Á¡ ¹öÆÛ´Â, ºñµð¿À ¸Þ¸ð¸®¿¡ µÑ ¼ö ¾ø´Ù.
IDirect3DDevice9 ÀÎÅÍÆäÀ̽º´Â, Á¤Á¡ ¹öÆÛ °³Ã¼¿¡ ÀúÀå ÇÑ Á¤Á¡ µ¥ÀÌÅ͸¦ »ç¿ëÇÏ´Â ±âº»µµÇüÀÇ ·»´õ¸µÀ» Áö¿ø Çϰí ÀÖ´Ù. Á¤Á¡ ¹öÆÛ´Â IDirect3DDevice9 ÀÎÅÍÆäÀ̽º·ÎºÎÅÍ »ý¼º µÇ¾î Á¤Á¡ ¹öÆÛÀÇ ±âº»À¸·Î µÇ¾î ÀÖ´Â IDirect3DDevice9 °³Ã¼¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
FVF ÆÄ¶ó¹ÌÅÍ¿¡ Á¦·Î ÀÌ¿ÜÀÇ °ªÀ» ¼³Á¤ ÇÒ ¶§´Â, À¯È¿ÇÑ FVF Äڵ尡 ¾Æ´Ï¸é ¾ÈµÇ¾î, À̰ÍÀº ¹öÆÛÀÇ ³»¿ëÀÌ FVF Äڵ忡 ÀÇÇØ Ư¡Áö¿ï ¼ö ÀÖ´Â °ÍÀ» ³ªÅ¸³»°í ÀÖ´Ù. FVF ÄÚµå·Î »ý¼º µÈ Á¤Á¡ ¹öÆÛ´Â, FVF Á¤Á¡ ¹öÆÛ¶ó°í ºÎ¸¥´Ù. ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â, ¡¸FVF Á¤Á¡ ¹öÆÛ¡¹¸¦ ÂüÁ¶ÇÒ°Í.
ºñ FVF ¹öÆÛ¸¦ »ç¿ëÇØ, ¸ÖƼ ÆÐ½º ·»´õ¸µ ¶Ç´Â ½Ì±Û ÆÐ½ºÀÇ ¸ÖƼ ÅØ½ºÃ³ ·»´õ¸µÀ¸·Î, µ¥ÀÌÅ͸¦ ÀÎÅ͸®ºê ÇÒ ¼ö°¡ ÀÖ´Ù. À̰ÍÀ» ½Ç½ÃÇÏ·Á¸é , 1 °³ÀÇ ¹öÆÛ¿¡´Â Áö¿À¸ÞÆ®¸® µ¥ÀÌÅ͸¦ ÀúÀå ÇØ, ÀÌÁ¦ 1 °³ÀÇ ¹öÆÛ¿¡´Â ·»´õ¸µ ÇÏ´Â °¢ ÅØ½ºÃ³ÀÇ ÅØ½ºÃ³ ÁÂÇ¥¸¦ ÀúÀå ÇÑ´Ù. ·»´õ¸µ½Ã¿¡´Â, ÅØ½ºÃ³ ÁÂÇ¥¸¦ ÀúÀå ÇÏ´Â °¢ ¹öÆÛ¿Í ÇÔ²², Áö¿À¸ÞÆ®¸® µ¥ÀÌÅ͸¦ ÀúÀå ÇÏ´Â ¹öÆÛ°¡ ÀÎÅ͸®ºê µÈ´Ù. ´ë½Å¿¡ FVF ¹öÆÛ¸¦ »ç¿ëÇßÀ» °æ¿ì, °¢ ¹öÆÛ¿¡, ·»´õ¸µ ÇÏ´Â °¢ ÅØ½ºÃ³¿¡ °íÀ¯ÀÇ ÅØ½ºÃ³ ÁÂÇ¥ µ¥ÀÌÅÍ¿¡ °¡¼¼ÇØ, °°Àº Áö¿À¸ÞÆ®¸® µ¥ÀÌÅ͸¦ ÀúÀå ÇÒ Çʿ䰡 ÀÖ´Ù. À̰ÍÀº, ½ºÆ®·¡ÅÍÁö¿¡µµ ¹ãÀÌ, ½ºÇÇµå ¶Ç´Â ¸Þ¸ð¸®ÀÇ ¸é¿¡¼ ¸¶À̳ʽº°¡ µÈ´Ù. ÅØ½ºÃ³ ÁÂÇ¥ÀÇ ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â, ¡¸ÅؽºÃ³ ÁÂÇ¥¡¹¸¦ ÂüÁ¶ÇÒ°Í.
ÂüÁ¶
IDirect3DVertexBuffer9::GetDesc ,IDirect3DDevice9::ProcessVertices