我无法弄清楚为什么:
glPushMatrix();
GL11.glBindTexture(this.target, this.textureID);
glColor3f(1, 1, 1);
glTranslated(posX, posY, 0);
glBegin(GL_QUADS);
{
glTexCoord2d(posXLeft, posYTop);
glVertex2d(0, 0);
glTexCoord2d(posXLeft, posYBottom);
glVertex2d(0, verH);
glTexCoord2d(posXRight, posYBottom);
glVertex2d(verW, verH);
glTexCoord2d(posXRight, posYTop);
glVertex2d(verW, 0);
}
glEnd();
glPopMatrix();
工作得很好,其中posX和posY显然是像素的位置,posXLeft等是纹理的比例。
但是这个:
glPushMatrix();
GL11.glBindTexture(this.target, this.textureID);
glColor3f(1, 1, 1);
glTranslated(posX, posY, 0);
glBegin(GL_LINES);
{
glVertex2d(10, 10);
glVertex2d(800, 600);
}
glEnd();
glPopMatrix();
是没有的。而且绘制线条而不是一块纹理应该更容易。
我想要达到的是在纹理上添加一些曲折线以模拟裂缝,因为它已经损坏或破碎,但我甚至无法绘制一条线,所以我被困在这里。
有什么建议吗?
答案 0 :(得分:2)
您的线条图代码中仍然启用了纹理。但是您没有指定纹理坐标,因此您将使用当前设置的纹理坐标处的纹理定义的纯色绘制线条。
我的建议:禁用纹理以绘制该线。
答案 1 :(得分:0)
正如datenwolf所说,你必须禁用纹理,事情就是你必须重新启用它,尽管如果没有正确设置该属性,下一轮绘制将会出现问题。
解决方案是:
glPushMatrix();
GL11.glBindTexture(this.target, this.textureID);
glColor3f(1, 1, 1);
glDisable(GL_TEXTURE_2D);
glTranslated(posX, posY, 0);
glBegin(GL_LINES);
{
glVertex2d(10, 10);
glVertex2d(800, 600);
}
glEnd();
glEnable(GL_TEXTURE_2D);
glPopMatrix();
这应该可以解决你的问题。