2012-05-29 64 views
2

我與三角形扇了半圈,這裏是代碼:GL_TRIANGLE_FAN和紋理問題

marco.bind(); 
    gl.glPushMatrix(); 
    gl.glTranslated(-3.5,2,10.51); 
    gl.glBegin(gl.GL_TRIANGLE_FAN); 
    for(int i = 1; i <= 9; i++){ 
     double x = 0.7 * Math.cos(angulo); 
     double y = 0.7 * Math.sin(angulo); 
     System.out.println ("Valor de X:" + x + " Valor de Y:" + y); 
     gl.glTexCoord2d(x, y);gl.glVertex3d(x, y, -0.5); 
    angulo += inc_angle; 

但我還沒有達到我想要的視覺效果,我真正的質地看起來是這樣的:

Door Texture

相反,我得到了這樣的事情:

Real TExture

現在,我得到這個

enter image description here

難道有什麼錯我的形象?我認爲需要削減角落。

回答

4

紋理座標在範圍內(0,0) - (1,1)您的對象座標在範圍(-0.7,-0.7) - (0.7,0.7)。您需要將對象座標轉換爲正確的紋理座標。

例如:

double x = Math.cos(angulo); 
double y = Math.sin(angulo); 
gl.glTexCoord2d(x*0.5+0.5, 1.0-y); 
gl.glVertex3d(x*0.7, y*0.7, -0.5); 
+0

我上傳我的文章,你覺得呢?我是否必須剪切圖像的角落? –