vertex_submit 함수 설명
vertex_submit
함수는 정점 버퍼의 내용을 그래픽 파이프라인에 제출하여 셰이더와 함께 사용할 수 있도록 합니다. 이 함수는 정점 버퍼, 기본 프리미티브 타입(아래 상수 참조), 그리고 사용할 텍스처를 제공합니다. 기본 프리미티브 타입은 버퍼에 저장된 정점이 그려지고 연결되는 순서를 지정하는 데만 사용되며, 각 정점에 대한 실제 데이터는 정점 버퍼를 생성할 때 정의한 데이터입니다.
사용 주의 사항
- 이 함수는 Draw Events에서만 사용할 수 있습니다.
- 정점 버퍼의 정점 수는 사용 중인 프리미티브 타입에 따라야 합니다.
vertex_submit_ext
를 사용하여 정점 버퍼의 특정 범위만 제출할 수 있습니다.- 삼각형 팬(
pr_trianglefan
)은 이 함수를 호출할 때 지원하지 않는 플랫폼에서 내부적으로 삼각형 리스트(pr_trianglelist
)로 변환됩니다.
구문
vertex_submit(buffer, primitive, texture);
인수 설명
인수 | 타입 | 설명 |
---|---|---|
buffer | Vertex Buffer | 사용할 정점 버퍼 |
primitive | Primitive Type Constant | 기본 프리미티브 타입 |
texture | Texture | 사용할 텍스처 (텍스처 없음은 -1) |
반환 값
- N/A
예제
shader_set(shader_prim);
vertex_submit(buff, pr_trianglelist, sprite_get_texture(sprite_index, 0));
shader_reset();
위 코드는 변수 buff
에 있는 정점 버퍼를 셰이더 shader_prim
과 함께 사용하여 삼각형 리스트를 기본 프리미티브로 하고, 코드가 실행되는 인스턴스의 스프라이트 텍스처를 사용하여 그립니다.
활용 예제
- 정점 버퍼 생성 및 제출
gml var buff = vertex_create_buffer(); vertex_begin(buff, pr_trianglelist); vertex_position(buff, x1, y1); vertex_position(buff, x2, y2); vertex_position(buff, x3, y3); vertex_end(buff); vertex_submit(buff, pr_trianglelist, -1);
- 텍스처가 있는 정점 제출
gml var texture = sprite_get_texture(sprite_index, 0); vertex_submit(buff, pr_trianglelist, texture);
- 정점 버퍼의 특정 범위 제출
gml vertex_submit_ext(buff, 0, 3, pr_trianglelist, -1);
- 다양한 프리미티브 타입 사용
gml vertex_submit(buff, pr_line_strip, -1); vertex_submit(buff, pr_trianglefan, texture);
- 셰이더와 함께 사용
gml shader_set(shader_custom); vertex_submit(buff, pr_trianglelist, texture); shader_reset();