В настоящее время я работаю над простым классом текстурированных прямоугольников, используя LWJGL (GL11). Это то, что у меня есть до сих пор в методе рисования.
glEnable(GL_TEXTURE_2D);
color.bind();
glBegin(GL_QUADS);
t.bind();
if (centered)
{
glTexCoord2d(0, 0);
glVertex2d(x - (width / 2), y - (height / 2));
glTexCoord2d(t.getWidth(), 0);
glVertex2d(x + (width / 2), y - (height / 2));
glTexCoord2d(t.getWidth(), t.getHeight());
glVertex2d(x + (width / 2), y + (height / 2));
glTexCoord2d(0, t.getHeight());
glVertex2d(x - (width / 2), y + (height / 2));
}
else
{
glTexCoord2d(0, 0);
glVertex2d(x, y);
glTexCoord2d(t.getWidth(), 0);
glVertex2d(x + width, y);
glTexCoord2d(t.getWidth(), t.getHeight());
glVertex2d(x + width, y + height);
glTexCoord2d(0, t.getHeight());
glVertex2d(x, y + height);
}
glEnd();
glBindTexture(GL_TEXTURE_2D, 0);
glDisable(GL_TEXTURE_2D);
Проблема со предпоследней строкой (glBindTexture(GL_TEXTURE_2D, 0)
). Если я оставлю это включенным, изображение будет отображаться в течение доли секунды (возможно, один кадр), а затем станет сплошным белым. Если я закомментирую это, он будет отображаться, но всегда будет отображать последнюю загруженную текстуру. Любые идеи?