Я пытался нарисовать прозрачную текстуру в LWJGL. Однако код, который у меня есть, кажется, не работает. Всякий раз, когда я запускаю код, появляется прозрачное изображение, но фон полностью черный.Как нарисовать прозрачные текстуры в LWJGL?
Вот что я имею в виду полностью черным, но изображение отлично:
Я был в состоянии сделать непрозрачные текстуры, но до сих пор у меня не было никакой удачи с составлением этого один правильно.
Я хотел бы знать, что отсутствует/неверно в этом коде.
Код для текстуры чертежа:
//draw transparent texture
GL11.glMatrixMode(GL11.GL_TEXTURE);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glPushMatrix();
GL11.glColor4d(1,1,1,1);
texture.bind();
GL11.glTranslated(0.5,0.5,0.0);
GL11.glRotated(270-this.getAngle(),0.0,0.0,1.0);
GL11.glTranslated(-0.5,-0.5,0.0);
GL11.glBegin(GL11.GL_QUADS);
{
GL11.glTexCoord2f(0,0);
GL11.glVertex2d(this.getX(), this.getY());
GL11.glTexCoord2f(1,0);
GL11.glVertex2d(this.getX(),(this.getY()+this.getHeight()));
GL11.glTexCoord2f(1,1);
GL11.glVertex2d((this.getX()+this.getWidth()),(this.getY()+this.getHeight()));
GL11.glTexCoord2f(0,1);
GL11.glVertex2d((this.getX()+this.getWidth()), this.getY());
}
GL11.glEnd();
GL11.glPopMatrix();
GL11.glDisable(GL11.GL_BLEND);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
Вот код, который загружает текстуру из файла:
private Texture loadTexture(String key){
try {
//in this case, key refers to a valid power of 2, transparent png
return TextureLoader.getTexture("PNG", new FileInputStream(new File("res/"+key+".png")));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
Вы можете добавить код, который загружает текстуру из файла и загружает в него OpenGL? У вашего изображения есть альфа? –
Хорошо, у меня было подозрение, что это может быть важно, но я также не уверен в этом. –
Что возвращает 'texture.getFormat()'? –