2013-07-04 30 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