2013-02-08 62 views
0

我正在製作一個簡單的3D程序,現在我需要插入一個2D圖像作爲背景。我需要使用tao框架來上大學。這是代碼的一部分。如何將圖像加載到int陣列中?如何從jpg圖像加載紋理並將其作爲背景顯示?

Gl.glEnable(Gl.GL_TEXTURE_2D); 

int texture;  // storage for texture for one picture 
texture = ????? ; 
Gl.glGenTextures(1, texture); ?????? 

           // Create The Texture 

    // Typical Texture Generation Using Data From The Bitmap 
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture); 
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);  // Linear Filtering 
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR); 

回答

2

紋理本身不是int數組。 int texture只是紋理的不可識別標識符 - 通常第一個創建的紋理具有id = 0,第二個id = 1等(其驅動程序依賴 - 您的系統上的id可以完全不同)

指定二維紋理圖像,你必須使用Gl.glTexImage2D(...)

Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture); 

// some random data 
Random r = new Random(); 
byte[] image = new byte[512 * 512 * 3]; 
for (int i = 0; i < 512 * 512; i++) 
{ 
     image[i * 3 + 0] = (byte)r.Next(0, 255); 
     image[i * 3 + 1] = (byte)r.Next(0, 255); 
     image[i * 3 + 2] = (byte)r.Next(0, 255); 
} 

Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGB, 512, 512, 0, 
       Gl.GL_BGR_EXT, Gl.GL_UNSIGNED_BYTE, image); 

而不是使用隨機數據,你也可以將圖像描述here

+0

這是偉大的工作轉換爲字節數組。你能告訴我在哪裏改變背景顏色?現在我改變模型顏色。謝謝 – WildWorld

+0

1.使用Gl.glOrtho(-5.0,5.0,-5.0,-5.0,-1.0,1.0);建立正交投影。 2.畫一個全屏四邊形並使用背景紋理。 – Vertexwahn

相關問題