2013-05-06 71 views
0

我正在使用Tao Framework與OpenGl一起工作。我試圖加載紋理並在窗體上顯示它。圖像似乎加載正確(紋理ID生成,沒有錯誤發生),但它沒有正確顯示。顯示紋理的麻煩Tao-framework/OpenGl

這裏是我的裝載質地

public static class TextureManager 
{ 
    static TextureManager() 
    { 
     Il.ilInit(); 
     Il.ilEnable(Il.IL_ORIGIN_SET); 
    } 

    public static int LoadTexture(string url) 
    { 
     int texObject = -1; 

     int imageId; 
     Il.ilGenImages(1, out imageId); 
     Il.ilBindImage(imageId); 

     if (Il.ilLoadImage(url)) 
     { 


      int width = Il.ilGetInteger(Il.IL_IMAGE_WIDTH); 
      int height = Il.ilGetInteger(Il.IL_IMAGE_HEIGHT); 


      Gl.glGenTextures(1, out texObject); 


      Gl.glPixelStorei(Gl.GL_UNPACK_ALIGNMENT, 1); 


      Gl.glBindTexture(Gl.GL_TEXTURE_2D, texObject); 


      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_REPEAT); 
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_REPEAT); 
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR); 
      Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR); 
      Gl.glTexEnvf(Gl.GL_TEXTURE_ENV, Gl.GL_TEXTURE_ENV_MODE, Gl.GL_REPLACE); 


      Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGB, width, height, 0, Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, Il.ilGetData()); 

      Il.ilDeleteImages(1, ref imageId); 
     } 
     return texObject; 
    } 
} 

和代碼代碼繪製它:

Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); 
      Gl.glClearColor(255, 255, 255, 1); 

      Gl.glLoadIdentity(); 


      Gl.glEnable(Gl.GL_TEXTURE_2D); 

      Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject); 


      Gl.glPushMatrix(); 


      Gl.glTranslated(0, -1, -10); 

      Gl.glRotated(rot, 0, 1, 0); 


      Gl.glBegin(Gl.GL_QUADS); 


      Gl.glNormal3f(0, 0, 1); 
      Gl.glTexCoord2f(0, 0); Gl.glVertex3d(0, 0, 0); 

      Gl.glTexCoord2f(1, 0); Gl.glVertex3d(1, 0, 0); 

      Gl.glTexCoord2f(1, 1); Gl.glVertex3d(1, 1, 0); 

      Gl.glTexCoord2f(0, 1); Gl.glVertex3d(0, 1, 0); 



      Gl.glEnd(); 


      Gl.glPopMatrix(); 

      Gl.glDisable(Gl.GL_TEXTURE_2D); 


      AnT.Invalidate(); 

形式僅僅是空白的。但是,如果我能閃電那麼這裏是什麼結果顯示:

enter image description here

我加載的圖片是在塗料中創建了一個簡單BMP圖像的100×100。

回答

0

出現該問題是因爲圖像尺寸不正確。圖像的大小應該是64x64,128x128或256x256。 更改大小爲128x128,一切正常。