본문 바로가기

연구생각/Volume Rendering

VTKEdge은 볼륨랜더링할때 ATI사의 그래픽 카드는 지원하지 않는다.



이게 사실이냐..
내 눈을 믿을 수가 없다 ㅠㅠㅠㅠㅠ

프로젝트 하면서 VTK Library가 제대로 돌아가지 않아 죽쑨게 한 한주 반은 되는 것 같은데, 어느덧 보니까 ATI 사의 그래픽카드가 감지되면 로드하지 않고, IsGPUsupport( ) 함수의 리턴값을 0으로 리턴해 버리는 코드를 발견했다.....

하필 연구실컴퓨터와 내컴퓨터가 둘다 ATI Radeon 그래픽 카드라...


아 정말 이유없이 왜 안되나 했는데 이런 이유가 잡히니 어이가 없네..



문제의 소스코드. gl_vendor는 그래픽 카드의 제조사를 받게 되는데, 그 아래 소스

strstr(gl_vendor,"ATI")!=0

를 보면

gl_vendor에 "ATI"라는 글자가 있으면, 그 해당글자가 몇번째에 있는 것인지 리턴하는 것이다. 만약 "ATI"라는 글자가 없으면 0을 리턴해서 해당 문자열이 인풋 케릭터 포인터에 존재하지 않는다는걸 얘기하게 되는 것이다.

그리고 다시한번보면
strstr(gl_vendor,"ATI")!=0
이라는 자체가 gl_vendor, 즉 그래픽카드 제조사 이름중 어딘가에 ATI가 들어있으면
LoadExtensionSucceeded를 false, 즉 0으로 만들어버리고 함수를 나가게 해버린다.

이결과는 계속 흘러가서 isGPUsupport( ) 함수에 리턴값을 false, 0으로 만들어버리고, 그건 결국 GPU를 사용해서 랜더링 할수 없다는 결론으로 되서 GPU를 사용한, glsl 코드를 사용한 랜더링을 불가능하게 만들었다..




아놔... 내일 지포스 그래픽카드로 바꿔서 한번 해봐야겠네.