2011-08-14 11 views
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)); 
    } 

答えて

1

DevILはOpenGLのAPIと一般的な構造に基づいていますが、無意味です。したがって、エラーが報告される典型的な方法はilGetErrorです。関数が成功したかどうかを確認するには、その関数を使用する必要があります。

+0

どうすればいいですか? ilLoadImage呼び出しがtrueを返しているので、エラーが発生していないことを示していませんか?コールが実行された後のすべての行はアサートされません。 – Pat

+0

'ilLoadImage'を呼び出した後、' ilGetError'を呼び出します。 'IL_NO_ERROR'以外のものを返すと、エラーが発生します。悲しいことに、Devilのドキュメントは、 'ilLoadImage'の返り値が何を意味するのか、むしろ無意味です。 –

+0

私はそれを理解しました。私が使用していたTaoフレームワークのバージョンは、DevIlの最新バージョンをダウンロードしたdllと互換性がありませんでした。コマンドは私が見ていないエラーを投げていました。どうもありがとうございます! – Pat

関連する問題