2011년 12월 12일 월요일

Python API 의 한계인가? vol.1

MPxLocatorNode를 만들때 OpenGL에 관한 내용이다. C style
GLuint txid;
glGenTextures(1, &txid);
python style의 경우 opengl 라이브러리를 사용
txid = glGenTextures(1)
Maya Python API에서는
glRenderer = MHardwareRenderer.theRenderer()
glFT = glRenderer.glFunctionTable()

txid = glFT.glGenTextures( 1 )
위의 경우 // Error: TypeError: MGLFunctionTable_glGenTextures expected 3 arguments, got 2 // 와 같은 에러를 출력한다. 해서 c-style로 수정하면 // Error: TypeError: in method 'MGLFunctionTable_glGenTextures', argument 3 of type 'MGLuint *' // 와 같은 에러를 출력한다. python을 경우 변수타입을 지정할수 없다. 일반적인 경우 MScriptUtil을 이용하여 변수타입을 정해서 포인터로 받는 형태를 취하는데 MGLuint로 변수타입을 정할수는 없다. 이와 같은 에러의 주 원인은 glFunctionTable를 사용하려 함이다. 이를 사용하지 않고 python opengl라이브러리를 바로 사용한다면 이와 같은 에러는 발생하지 않는다.

댓글 없음: