Java openGL纹理绑定拉伸和扭曲
我正在尝试将纹理绑定到多边形像素完美(绘制纹理的一部分,但不比多边形本身大) 例如(编辑:图片中的多边形不是四边形) 我的代码如下Java openGL纹理绑定拉伸和扭曲,java,opengl,textures,Java,Opengl,Textures,我正在尝试将纹理绑定到多边形像素完美(绘制纹理的一部分,但不比多边形本身大) 例如(编辑:图片中的多边形不是四边形) 我的代码如下 //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 drawRect
//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..1]范围。您应该使tex坐标取决于多边形大小和tex大小,如下所示:
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();
}
宽度是图像宽度,高度是图像高度?@JohnM这取决于你如何设置渲染,可能是的。我在我的OP中预装了一些代码。你是说这个吗?关于设置rendering@JohnM是的,特克斯宽度和高度。