본문 바로가기
3D웹 프로그래밍/WebGl

[WebGL] 웹지엘 오류 처리 방법 및 오류 코드 종류

by 디찌s 2020. 11. 14.
728x90
반응형

웹지엘이 오류 발생을 감지하면 ,내장된 오류 코드를 생성한다.

 

오류가 생성되면 다음과 같은 메소드를 호출할때까지 다른 오류는 더이상 생성되지 않는다.

 

gl.getErros()

 

위의 메소드는 내장된 오류를 조회하는 쿼리이다. 이것은 현재 오류코드를 반환하여 오류 상태를 gl.NO_ERROR로 재설정한다.

 

이후에는 새로운 오류가 생성될수 있다.

 

 

 

 

웹지엘 오류 코드 설명
gl.NO_ERROR 마지막 gl.getError() 호출 후에 어떤 새로운 오류도 생성되지 않음
gl.INVALID_ENUM GLenum 인자값의 범위를 초과함. gl.drawArrays()는 원래 gl.TRIANGLES와 같은 적합한 enum 값을 인자로 해야하는데 gl.COLOR_BUFFER_BIT와 같이 다른 타입의 값을 인자로 해 호출하는 경우 발생한다.
gl.INVALID_OPERATION 현재 웹지엘 상태에서 허용하지 않는 메소드를 호출했을 때 발생, 특정 메소드 실행 전에 선행 메소드를 먼저 호출할 필요가 있는 경우에 발생할수있다. 예를 들어 gl.bufferData()를 실행하지 않고
gl.bindbuffer()를 호출하면 이오류가 발생한다.
gl.OUT_OUF_MEMORY 특정 메소드를 실행에 필요한 메모리가 부족할 때 발생

 

gl.getError()를 활용할때는 방어적인 코드로 매 코드 작성시마다 gl.getError()를 포함하는것, 그리고 디버깅 목적으로 gl.getError()를 사용하는것이다.

 

하지만 이런 방법은 매우 번거롭고 코드의 가독성을 떨어뜨린다. 다른 방법으로는 WebGlRenderingContext와 gl.getError()를 감싸는 라이버러리를 만들고 매 호출 시마다 내부적으로 작동하게 만드는것이다.

 

이를 위해 크로미움의 제작자는 오직 한개의 파일을 구성된 유용햔 자바스크립트 라이브러리를 만들었다.

 

아래 git코드에서 받으면된다.

 

오류처리 쉽게하는 코드

https://github.com/KhronosGroup/WebGLDeveloperTools

 

KhronosGroup/WebGLDeveloperTools

Contribute to KhronosGroup/WebGLDeveloperTools development by creating an account on GitHub.

github.com

 

 

 

 

www.khronos.org/webgl/wiki/Debugging

 

Debugging - WebGL Public Wiki

Interactive Debugging of WebGL applications The WebGL Inspector provides an interactive set of tools for debugging and diagnosing advanced WebGL applications. It provides the ability to capture entire frames' rendering calls and interactively step through

www.khronos.org

이렇게 사용하면 크롬 개발자 도구의 콘솔패너에 웹지엘 오류를 볼수있다.

728x90
반응형

댓글