2012-11-05 50 views
0

哪些參數對於特別是s和t我將用於文本映射球體?我嘗試了各種不同的選項,但總是有一小部分被扭曲,無論我選擇什麼值爲float [] s和t。我可以做飛機和汽缸,但我不確定球體。任何幫助,將不勝感激。我將如何自動紋理在OpenGL中映射一個球體?

gl.glTexGeni(GL2.GL_T, GL2.GL_TEXTURE_GEN_MODE, GL2.GL_OBJECT_LINEAR); 
    float[] s = {1f, 0f, 0f, 0}; 
    gl.glTexGenfv(GL2.GL_S, GL2.GL_OBJECT_PLANE, s, 0); 
    float[] t = {0f, 1f, 0f, 0}; 
    gl.glTexGenfv(GL2.GL_T, GL2.GL_OBJECT_PLANE, s, 0); 

回答

0

無法使用單個矩形紋理紋理貼圖而不會在某處產生嚴重失真。這在數學上是不可能的。這就是說,你不應該使用glTexGen這個功能,因爲a)它已被棄用,並且b)僅創建線性平面映射,而爲紋理化一個球體需要曲線座標。 使用頂點着色器從頂點位置生成紋理座標。

+0

手動紋理工作還是那樣?例如: darkRockTexture.bind(); \t gl.glTexCoord2f(3f,2f); ... – John

+0

@Ali:手動紋理座標生成與否,在數學上不可能**將連接的扁平空間映射到球形拓撲上而不會產生嚴重的扭曲或切割。你絕對沒有辦法做到這一點。 – datenwolf