OpenGL不能绘制线条,但四边形工作正常

时间:2013-11-15 11:24:48

标签: java opengl

我无法弄清楚为什么:

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();

是没有的。而且绘制​​线条而不是一块纹理应该更容易。

我想要达到的是在纹理上添加一些曲折线以模拟裂缝,因为它已经损坏或破碎,但我甚至无法绘制一条线,所以我被困在这里。

有什么建议吗?

2 个答案:

答案 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();

这应该可以解决你的问题。