2
DevIl 라이브러리를 사용하여 스프라이트에 적용하기 위해 OpenGL에 텍스처를로드하는 데 사용하려고합니다. 이 코드는 C# Game Programming for Serious Game Design 책에서 직접 얻을 수 있습니다 (도움이되는 경우). 내가 가지고있는 문제는 Il.ilLoadImage 호출입니다. 심지어 null을 전달할 때도 이미지를 찾을 수없는 오류가 발생하지 않으며 양식이 튀어 나오면 스프라이트가 진회색을 나타냅니다 (흰색 대신).DevIl 라이브러리를 사용하여 텍스처를로드 할 때의 문제
public void LoadTexture(string textureId, string path)
{
int devilId = 0;
Il.ilGenImages(1, out devilId);
Il.ilBindImage(devilId);
if (!Il.ilLoadImage(path))
{
System.Diagnostics.Debug.Assert(false, "Could not open file [" + path + "].");
}
//Flip the files before passing them to OpenGl
Ilu.iluFlipImage();
int width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH);
int height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT);
int openGLId = Ilut.ilutGLBindTexImage();
System.Diagnostics.Debug.Assert(openGLId != 0);
Il.ilDeleteImages(1, ref devilId);
_textureDatabase.Add(textureId, new Texture(openGLId, width, height));
}
어떻게하면 좋을까요? ilLoadImage 호출이 true를 반환하고 있으므로 오류가 발생하지 않았 음을 나타내지는 않습니까? 호출이 끝난 후 모든 행이 실행되고 어설 션은 호출되지 않습니다. – Pat
'ilLoadImage'를 호출 한 후'ilGetError'를 호출합니다. 'IL_NO_ERROR' 이외의 것을 리턴하면, 에러가 발생했다. 안타깝게도, Devil의 문서는'ilLoadImage '의 반환 값이 의미하는 바에 대해 다소 모호합니다. –
내가 알아 낸 것은, 내가 사용하고있는 Tao 프레임 워크의 버전이 Devll의 최신 버전을 다운로드 할 때 얻은 dll과 호환되지 않는다는 것이 드러났습니다. 명령은 내가 보지 못했던 오류를 던지고있었습니다. (분명히 명령은 그 일이 발생할 때 false를 반환하지 않습니다). 정말 고맙습니다! – Pat