본문 바로가기
GameMaker강좌[GMS2]/GMS2기초강좌

[게임메이커 강좌-기초][GMS2]프리미티브(Primitive) 종류 - 면

by 타락카얀 2019. 3. 27.
728x90

 

 

GAME MAKER 강좌

 

 

KAYAN

 

 

 

 

프리미티브의 면은 기본적으로 3개 이상의 점을 가지고 있을 때 삼각형 면으로 구성됩니다.
면으로 구성할 수 있는 프리미티브의 종류에 대해 알아보도록 합시다.


 

 

   ◈ pr_trianglelist 삼각형 면

 


pr_trianglelist 는 삼각형 면을 구성할 때 사용합니다.

 


(▲ pr_trianglelist)


이 타입은 3쌍의 버텍스를 통해 삼각형 면을 구성합니다.
처음 3개의 버텍스로 삼각형을 이룬 후, 3개의 버텍스를 새로 추가하면, 새로운 삼각형 면을 만듭니다.

 



   예)

   draw_primitive_begin(pr_trianglelist);
   draw_vertex_color(221,158,c_green,1);
   draw_vertex_color(205,274,c_green,1);
   draw_vertex_color(309,269,c_green,1);

   draw_vertex_color(361,237,c_green,1);
   draw_vertex_color(292,114,c_green,1);
   draw_vertex_color(422,139,c_green,1);
   draw_primitive_end( );

 

 

 

 

 

 

 

   ◈ pr_trianglestrip 다각형 면
 
 
pr_trianglestrip 는 다각형 면을 구성할 때 사용합니다. 면은 버텍스가 3개 이상일 때 표시됩니다.

 


(▲ pr_trianglestrip )


이 타입은 최초 3개의 버텍스로 삼각형 면을 구성하고, 처음 3개 버텍스로 삼각형을 이룬 후,
버텍스를 추가하면, [두번째] - [세번째] - [새로 추가한 버텍스]로 연결되어 새로운 삼각형을 이룹니다.
이후 버텍스를 추가할 때마다 같은 형식으로 삼각형 면으로 구성합니다.

다만, 면이 겹치지 않게 지그재그 형식으로 버텍스를 추가해주어야 면을 제대로 표시할 수 있습니다.

 



   예)

   draw_primitive_begin(pr_trianglestrip);
   draw_vertex_color(221,158,c_green,1);
   draw_vertex_color(205,274,c_green,1);
   draw_vertex_color(280,96,c_green,1);
   draw_vertex_color(311,193,c_green,1);
   draw_vertex_color(376,111,c_green,1);
   draw_vertex_color(430,165,c_green,1);
   draw_primitive_end( );

 

 

 

 

 

 

 

 

   ◈ pr_trianglefan 다각형 면
 
 
pr_trianglefan 는 다각형 면을 구성할 때 사용합니다.

처음 추가한 버텍스를 중심으로 버텍스를 추가할 때마다 면으로 이어지는 형태로, 면은

버텍스가 3개 이상일 때 표시됩니다.
이 타입은 처음 3개의 버텍스로 삼각형 면을 이룬 후, 버텍스를 추가하면,
[세번째] - [새로 추가한 버텍스] - [최초의 버텍스]로 연결되어 새로운 삼각형을 이룹니다.

 


(▲ pr_trianglefan)


pr_trianglestrip와 비슷한 점이 있는 타입이지만, 맨 처음 추가한 버텍스 중심으로 면을 구성한다는

것이 다릅니다.

모든 버텍스는 처음 추가한 버텍스와 삼각형으로 이루어지기 때문에 이것을 고려해서 버텍스를

추가하는 것이 좋습니다.

다만, 이 기능은 HTML5 대상 플랫폼에서는 사용할 수 없으며, 일부 플랫폼에서는 제대로 작동하지

않을 수 있습니다.

 



   예)

   draw_primitive_begin(pr_trianglefan);
   draw_vertex_color(187,127,c_green,1);
   draw_vertex_color(202,252,c_green,1);
   draw_vertex_color(302,267,c_green,1);
   draw_vertex_color(356,214,c_green,1);
   draw_vertex_color(375,124,c_green,1);
   draw_vertex_color(291,75,c_green,1);
   draw_primitive_end( );

 

 

 

 

 

 

 

 

300x250

댓글