2013-07-04 26 views
0

我試圖綁定一個紋理多邊形像素完美(繪製質感的一部分,但無非是多邊形本身更大)openGL的質地結合拉伸和扭曲

例如(編輯:這些都是多邊形的中圖片不四邊形) example

我的代碼如下

//example usage 
// drawRectangle((1D * 100D) + 110D, 5, 0D, 25); 
//draws a 100px width, 20px height, 0px from left most screen and 5px from top most screen 
public static void drawRectangle(double par1, double par2, double par3, double par4) 
    { 
     //glRectd(par1, par2, par3, par4); 
     glBegin(GL_POLYGON); 
     { 
      glVertex2d(par1, par2); 
      glTexCoord2d(0, 0); 
      glVertex2d(par3, par2); 
      glTexCoord2d(1, 0); 
      glVertex2d(par3, par4); 
      glTexCoord2d(1, 1); 
      glVertex2d(par1, par4); 
      glTexCoord2d(0, 1); 
     } 
     glEnd(); 
    } 

openGL的啓動碼

glMatrixMode(GL_PROJECTION); 
     glLoadIdentity(); 
     glOrtho(0, finals.GAME_WIDTH, finals.GAME_HEIGHT, 0, 1, -1); 
     glMatrixMode(GL_MODELVIEW); 

回答

0

事情是紋理coordiantes歸一化到[0..1]的範圍內應該使TEX COORDS依賴於多邊形尺寸,和號數,這樣的:

public static void drawRectangle(double par1, double par2, double par3, double par4, 
    double width, double height) 
{ 
    //glRectd(par1, par2, par3, par4); 
    glBegin(GL_POLYGON); 
    { 
     glVertex2d(par1, par2); 
     glTexCoord2d(par1/width, par2/height); 
     glVertex2d(par3, par2); 
     glTexCoord2d(par2/width, par2/height); 
     glVertex2d(par3, par4); 
     glTexCoord2d(par3/width, par4/height); 
     glVertex2d(par1, par4); 
     glTexCoord2d(par1/width, par4/height); 
    } 
    glEnd(); 
} 
+0

寬度爲圖像的寬度和高度爲圖像高度? – JohnM

+0

@JohnM這取決於你如何設置渲染,可能是的。 – Vasaka

+0

我將一些代碼添加到我的OP中,你的意思是?關於設置渲染 – JohnM