我无法确定要渲染的第二个方框。 所以我有一个用纹理绘制的对象,它似乎工作得很好,但是我附上了一些代码,所以如果我按下鼠标左键,它的第二个框就会向右移动。 取而代之的是第二个盒子无法完成,纹理盒子完全消失了。
我认为我错过了一些关于opengl的东西,就像我必须在绘制1件事之前或之后启用或禁用它。
继承了我对opengl的启动代码:
private static void glInit(){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, Display.getWidth(), Display.getHeight(), 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glClearColor(0, 0, 0, 1);
glDisable(GL_DEPTH_TEST);
}
表示绘制对象的代码:
public void render(){
if(myImage != null){
myImage.bind();
glBegin(GL_QUADS);
{
// upper left
glTexCoord2f(0, 0);
glVertex2f(x, y);
// upper right
glTexCoord2f(1, 0);
glVertex2f(x + size, y);
// bottom right
glTexCoord2f(1, 1);
glVertex2f(x + size, y + size);
// bottom left
glTexCoord2f(0, 1);
glVertex2f(x, y + size);
}
glEnd();
}
if(drawChoiceBox){
glColor3f(1, 0, 0);
glBegin(GL_QUADS);
{
glVertex2f(x + size, y - size);
glVertex2f(x + size*2, y - size);
glVertex2f(x + size*2, y + size*2);
glVertex2f(x + size, y + size*2);
}
glEnd();
}
}
我已经测试了第二个盒子的逻辑以及它的作用,所以我想我必须错过了与opengl绘制东西的方式。 知道我缺少什么吗?这就是我项目中的所有opengl代码。
答案 0 :(得分:3)
看起来你没有为第二个对象禁用纹理,所以它是用纹理绘制的。
同时你的第一个盒子没有指定glColor(),所以在绘制第二个盒子后,第一个盒子将是红色。这可能会使它消失,如果用红色调制产生黑色,则启用调制。
因此,您应该在绘制四边形时明确启用/禁用纹理,以及指定所有已更改的顶点属性,例如颜色。