2012-05-22 31 views
0

適用於OpenGL三維物體的紋理我有一定的項目,其中包括從過剩命名空間中的許多3D對象,如不能找到一種方法,使用C#

Glut.glutSolidCone(0.75, 30, 4, 20); 

我找不到反正申請這些對象上的紋理,只有2d紋理處理2D對象。

我嘗試這個代碼,但我認爲這是錯誤的,它沒有工作,

Gl.glPushMatrix(); 
     Gl.glEnable(Gl.GL_TEXTURE_2D); 
     Try.Terrain.LoadGLTextures("Textures/Sitework.Paving - Surfacing.Riverstone.jpg"); 
     Gl.glTexCoord2d(0, 0); 
     Gl.glTexCoord2d(0, 1); 
     Gl.glTexCoord2d(1, 1); 
     Gl.glTexCoord2d(1, 1); 
     Gl.glRotated(90, 1, 0, 0); 
     Glut.glutSolidCone(5, 10, 30, 30); 
     Gl.glDisable(Gl.GL_TEXTURE_2D); 
     Gl.glPopMatrix(); 

的結果是,這個3D物體出現應用了紋理的基本顏色。

回答

1

glutSolidCone()不包含紋理座標。

您必須去generate them yourself

+0

這是否意味着我不能在不使用紋理座標的情況下應用任何紋理? –

+1

如果你不想複製'glutSolidCone()',你可以使用['glTexGen()'](http://www.opengl.org/sdk/docs/man/xhtml/glTexGen.xml)和朋友。或者是一個頂點着色器。 – genpfault

+1

@LunaAlRawas:從長遠來看,提供紋理座標是唯一可行的事情。沒有廚房水槽算法來自動生成任意幾何圖形的紋理座標。 (雖然有一些非常好的算法,但每個算法都有其侷限性)。 – datenwolf

0

舊功能gluCylinder()支持紋理。

gluCylinder()有兩個半徑參數:base和top,所以簡單地設置top = 0會生成一個圓錐體而不是圓柱體。

GLUquadricObj* quadobj = gluNewQuadric(); 
gluQuadricTexture(quadobj, GL_TRUE); 
glBindTexture(GL_TEXTURE_2D, *your_texture); 
gluCylinder(quadobj, 2.0, 0, 3.0, 10, 10); 

我不確定在C#中是否有gluCylinder()。

相關問題