我正在尝试用LWJGL制作游戏。 所以我的相机设置正确,现在我想建一个有工作门的房子。 房子的前面是纹理的,但当我尝试将纹理放在门上时,它不起作用。
主要课程
Texture wall_2 = loadTexture("wall_2");
Texture door = loadTexture("door");
在Gameloop内部
glLoadIdentity();
cam.setView();
House_Test.drawHouse(wall_2,door);
Ground.drawGround(ground);
House_Test:
public static void drawHouse(Texture tex, Texture tür){
walls.draw(tex);
roof.draw(tex);
door.draw(tür);
}
门的绘制方法:
public static void draw(Texture door) {
glBegin(GL_QUADS);
GL11.glClear(GL_COLOR_BUFFER_BIT);
door.bind();
glTexCoord2f(0,0);glVertex3f(-2,2, -15);
glTexCoord2f(0,1);glVertex3f(-2,-3, -15);
glTexCoord2f(1,1);glVertex3f(2,-3, -15);
glTexCoord2f(1,0);glVertex3f(2,2, -15);
glEnd();
}
答案 0 :(得分:0)
您的纹理未正确绑定。我无法在glBindTexture()
和door.bind()
之间调用glBegin()
调用(我假设glEnd()
最终调用)。如果您调用glGetError()
,则在这种情况下应该返回无效的操作错误。在致电door.bind()
之前将通话移至glBegin()
。
此外,对glClear()
的调用也需要移到glBegin()
/ glEnd()
之外。虽然,如果你这样做,墙壁将被绘制,然后清除(擦除),然后门将被绘制。所以你可能想在所有绘图之前放置glClear()
。