이번에는 WebGL에서 Geometry에 Texture를 입혀보는 예제를 소개하도록 하겠다. Local System에서 작동되는 OpenGL 프로그램에서의 Texture로딩은 Local Disk에 저장되어 있는 Image 파일을 읽어들여 사용함을 잘 알고 있을 것이다. 그렇다면, Web상에서 작동하는 WebGL은 어떻게 Texture를 로딩할 것인가? 답은 Local System에서의 방법과 큰 차이가 없다는 것이다. Local System에서, Image 파일을 읽기 위해서는 그 파일의 경로(Local Disk상에서의 경로)를 알고 있어야 한다. 비슷하게 WebGL에서는 Image 파일의 Web상의 경로(절대경로 혹은 상대경로)를 알고 있으면 된다. 그리고 JavaScript의 Image객체를 사용하여 Image Loading을 수행하면 된다. 아래의 예제를 보도록 하자.
위의 예제는 앞서 008. WebGL - Prac07 - JavaScript 파일에서 사용한 방법을 이용하여, Texture 객체를 정의한 코드이다.
new Image();를 이용하여, Image 객체의 인스턴스를 생성하고, loading이 성공했을 때의 이벤트 핸들러를 설정하며, img.src="..."로 이미지의 경로 설정 및 로딩을 시작한다.
만약 경로 "src"에 이미지가 존재하고, 로딩이 성공하면, onload 함수가 호출되고 텍스쳐 생성을 시작한다. 반대로 이미지 로딩에 실패하면, 아무런 동작을 하지 않는다.
이 간단한 몇줄의 코드로 이미지 로딩 및 텍스쳐 생성이 완료 되었다.
1. 텍스쳐좌표와 텍스쳐를 GLSL로 넘기기 위한, Vertex/Fragment Shader 작성.
2. GLSL에 Texture Coordinate와 Texture를 넘기기 위한 핸들 얻음.
3. Vertex Coordinate 데이터를 위한 버퍼 생성.
4. GLSL에 Vertex Coordinate 데이터 버퍼 넘겨줌.
5. Texture인스턴스 생성 및, GLSL에 텍스쳐 넘김.
이전 예제를 바탕으로, 위의 다섯 단계를 추가한 코드를 작성하면, 아래와 비슷한 코드 형태가 될 것이다.
위 코드의 결과는 아래와 같다.
사용한 텍스쳐는 아래와 같다.

위의 예제는 앞서 008. WebGL - Prac07 - JavaScript 파일에서 사용한 방법을 이용하여, Texture 객체를 정의한 코드이다.
new Image();를 이용하여, Image 객체의 인스턴스를 생성하고, loading이 성공했을 때의 이벤트 핸들러를 설정하며, img.src="..."로 이미지의 경로 설정 및 로딩을 시작한다.
만약 경로 "src"에 이미지가 존재하고, 로딩이 성공하면, onload 함수가 호출되고 텍스쳐 생성을 시작한다. 반대로 이미지 로딩에 실패하면, 아무런 동작을 하지 않는다.
이 간단한 몇줄의 코드로 이미지 로딩 및 텍스쳐 생성이 완료 되었다.
1. 텍스쳐좌표와 텍스쳐를 GLSL로 넘기기 위한, Vertex/Fragment Shader 작성.
2. GLSL에 Texture Coordinate와 Texture를 넘기기 위한 핸들 얻음.
3. Vertex Coordinate 데이터를 위한 버퍼 생성.
4. GLSL에 Vertex Coordinate 데이터 버퍼 넘겨줌.
5. Texture인스턴스 생성 및, GLSL에 텍스쳐 넘김.
이전 예제를 바탕으로, 위의 다섯 단계를 추가한 코드를 작성하면, 아래와 비슷한 코드 형태가 될 것이다.
위 코드의 결과는 아래와 같다.
사용한 텍스쳐는 아래와 같다.
'Computer > WebGL' 카테고리의 다른 글
011. WebGL - GwtGL - About GwtGL (0) | 2011.05.11 |
---|---|
010. WebGL - Prac09 - Text Rendering (0) | 2010.04.19 |
008. WebGL - Prac07 - JavaScript 파일 (0) | 2010.04.07 |
007. WebGL - Prac06 - Animation (0) | 2010.04.07 |
006. WebGL - Prac05 - DrawTriangleWithColor (0) | 2010.04.06 |