WebGL 기초( 3 - 삼각형 그리기 )
모든 준비가 완료되었으니 마지막으로 렌더링을 시작하겠습니다.
1 | // 클리어 색상을 녹색으로 설정 |
초기화시 클리어 색상값(R,G,B,A)을 정하고 클리어하게되면
작성자가 정한 색으로 캔버스의 배경색이 칠해지게 됩니다.
그 후 WebGL이 앞서 만든 프로그램을 사용가능 하도록 해줍니다.
1 | // 앞장에서 glProgram 이라는 프로그램을 만듬 |
1 | // 참조한 위치 애트리뷰트를 사용할 것임을 알려줍니다. |
이제 마지막으로 WebGL 에게 만든 GLSL 프로그램을 실행하라고 요청을 해봅시다.1
2
3
4
5//GLSL 프로그램을 실행하도록 요청
var primitiveType = gl.TRIANGLES;
var offset = 0;
var count = 3;
gl.drawArrays(primitiveType, offset, count);
이제는 아래와 같이 두개의 삼각형이 보이게 될 것입니다.
마지막으로 drawArrays에 사용되는 원시타입에 대해 설명을 하자면
원시 타입(primitiveType)
원시 타입은 특정 그래픽 언어에서
모델을 개발할 때 사용하는 그래픽 구성 요소입니다.
웹지엘에는 7개의 원시타입이 있는데좌측 상단부터 우측 하단 순서
POINTS, LINES, LINE_STRIP, LINE_LOOP,
TRIANGLES, TRIANGLE_STRIP, TRIANFLE_FAN 이 있습니다.
POINTS
POINTS는 한번에 하나씩 렌더링되는 정점(공간좌표)입니다.
(총 정점 : 4개)LINES
정점의 쌍을 따라 형태를 이룹니다.
두개의 선이 같은 정점을 공유하고 있찌만, 각선은 별로도 정의 되어있습니다.
(총 정점 : 6개)LINE_STRIP
첫번째 선을 제외하고 각 선의 시작점이 이전 선의 끝점인 정점 컬렉션으로 이뤄집니다.
LINE_STRIP에서는 여러 선에서 일부 정점을 재사용합니다.
(총 정점 : 5개)LINE_LOOP
첫번째 정점과 마지막 정점이 다시 연결돼 닫힌 고리를 형성한다는 점 을 제외하곤 LINE_STRIP과 유사합니다.
(총 정점 : 5개)TRIANGLES
삼각형당 정점 3개로 이뤄집니다.
위 그림에서 삼각형 3개를 그리는데 삼각형별로 정점 3개씩 필요하며,
LINES와 마찬가지로 공유된 정점은 우연히 겹쳐 있을 뿐입니다.
(총 정점 : 9개)TRIANGLE_STRIP
ABC, (BC)D, (CD)E, (DE)F, (EF)G, (FG)H, (GH)I 정점을 통해 형성됩니다.
여러 삼각형에서 정점을 재사용 하여 삼각형을 렌더링 합니다.
(총 정점 : 9개)TRIANFLE_FAN
삼각형의 일부로 지정한 첫번쨰 정점을 사용합니다.
첫번째 정점 A는 7번 사용 나머지 정점은 2번씩 사용됩니다.
(총 정점 : 8개)