BLOG main image
분류 전체보기 (22)
00. 문득 생각 (1)
01. 개발 (9)
02. 관심&유익 정보 (6)
03. 취미 (6)
Bolsos Michael Kors
Bolsos Michael Kors
christian louboutin espadrilles
christian louboutin espadrilles
Botas Ugg Australia Baratas
Botas Ugg Australia Baratas
Bolsos Longchamp
Bolsos Longchamp
botas christian louboutin
botas christian louboutin
155,639 Visitors up to today!
Today 18 hit, Yesterday 25 hit
daisy rss
tistory 티스토리 가입하기!
2011.07.21 03:05
얼마전 문득 든 생각에 구글링으로 GLSL 을 디버깅하는 툴이 있을까 검색을 해봤는데, GLSLDevil 이라는 툴이 나의 그물에 걸려들었다. ChangeLog 를 보니 2008년 2월 7일이 Linux 용 첫 배포 버전(1.0)이었는데, 이제야 찾았다니 그간 너무 관성으로 회사일만 하지않았나 싶다.

2011/07/21 현재 최신 버전은 1.1.5 이고, 사실 완벽하리라 기대하지는 않았다. GLSL 디버깅이 가능한 공개 무료툴이 어디 있어야 말이지... 단, 이 툴은 윈도우 버전은 32 bit 만 가능하고, Linux 버전은 32 bit, 64 bit 두가지 가능하다. Windows7 과 Windows XP 에서 설치해봤는데 둘 다 동작. 뭐 많이 안써봤으니 문제가 발생하면 추후 포스팅하겠다.

설치는 사실 너무 간단하다(사실 사용법도 너무 간단하다. 내가 몇 번의 클릭으로 실행했을 정도이니...).
http://cumbia.informatik.uni-stuttgart.de/glsldevil/ 링크로 이동해 보면 Screenshot 과 사용법이 있는데 사실 난 자세히 읽어보지는 않고 무작정 설치하고 써봤다. 백문이 불여일견이니까...
(다운로드 : http://www.vis.uni-stuttgart.de/glsldevil/index.html#downloads)


처음 실행하면 다음과 같은 윈도우가 열린다.



File > Open Program 을 누르면 다음과 같은 창이 뜨는데, 여기서 디버깅 하고자 하는 OpenGL 예제의 실행파일을 선택하면된다. Argument 들이 필요하다면 적으면된다. 졸자는 필요없어서 안적은 것임. 작업 디렉터리도 원하는 디렉터리를 선택하면 된다.



실행준비가 된 상태는 아래 그림과 같은데 여기서 빨간 원으로 표시한 부분을 누르면 실행파일이 실행된다.



아래 그림과 같은 상태가 되면 파란색 버튼은 그냥 실행하는 것이니 디버깅과는 다소 관련이 적어 참고만 하고, 빨간색 버튼을 누르면 다음 draw 함수까지 이동한다.

OpenGL 은 State Machine 이므로 Draw 에서의 상태가 최종 상태로 Draw 에 적용이 된다.
그러므로 Draw 함수까지 이동하는 이 버튼이 디버깅에 많이 쓰일 것으로 생각된다.
물론 그 우측에 다음 Shader 까지 이동하는 버튼이 있는데, 이는 여러개의 Shader Program Object 를 사용할 경우 유효할 것이다. 일단 여기서는 빨간 버튼을 누른다. (매트릭스가 떠오른다는... ㅋ)




이제 아래 GL Trace 창을 보면 GL API 들을 Trace 해주고 있고, glDrawArrays 에 멈춰있다. 우측 Shader Source 창에는 Shader Code 들이 표시된다. 
여기서는 Vertex Shader 를 디버깅하기 위해 아래 노란색 박스의 탭을 선택한다. 빨간색 동그라미에 위치한 버튼을 누르면 Vertex Shader Debugging 이 시작된다.

물론 당신의 GL 컨텐츠가 다른 glDraw 함수를 사용한다면 그 함수가 표시되겠다.
Vertex, Geometry, Fragment Shader 3개만 있는 것을 보니 OpenGL 3.2 이상 지원인듯 한데, 어디까지 지원되는지는 안찾아봐서 모르겠다.




아래 Shader Source 창의 초록색 화살표 부분이 Step 으로 진행하는 버튼이다. 노란색 하이라이트 된 부분이 현재 PROGRAM COUNT 가 가르키는 위치이다. 우측의 Shader Variables 의 빨간화살표가 가리키는 빨간 글자 gl_Position 는 방금 진행된 uniformPMVMat * vec4(attribPos, 1.0) 이 연산된 결과가 저장되었다.



위에서 빨간 글자 gl_Position 을 더블 클릭하면 Watch 창에 gl_Position 라는 built-in 변수가 아래처럼 추가된다. Watch 창의 변수를 선택하면 아래 빨간 동그라미 안의 버튼 하나가 활성화되고 이를 누르면 파란색 네모 안의 창이 띄워진다. 여기 변수의 각 component 값들이 표시된다.



Fragment Shader 의 디버깅은 좀 다르다. 기회가 되면 다음에 포스팅 하겠다.

'01. 개발 > 01. OpenGL' 카테고리의 다른 글

GLSL 디버거 발견  (2) 2011.07.21
MS Window에서 X Window OpenGL 개발하기  (0) 2010.08.25
GLX_WGL_AGL 함수 비교  (0) 2010.08.16
OpenGL on Linux X Window  (0) 2010.08.16
MS Windows 에서의 OpenGL  (0) 2010.08.15
Ronaldoi | 2015.01.09 03:43 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
불.꽃.남.자 | 2017.02.21 11:22 신고 | PERMALINK | EDIT/DEL | REPLY
Source code in https://github.com/GLSL-Debugger/GLSL-Debugger
Name
Password
Homepage
Secret