嘿所以我的java pogram不画广场? 它可以精细画一条线但是当我试图画一个正方形时它只画了一半。
以下是它的外观:http://gyazo.com/1f44d59d478537199a51d3d57ccc63e4
这是我的代码:
package data;
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import static org.lwjgl.opengl.GL11.*;
public class Boot {
public Boot() {
Display.setTitle("Game");
try {
Display.setDisplayMode( new DisplayMode(600, 400));
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
}
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, 600, 400, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
while(!Display.isCloseRequested()) {
// glBegin(GL_LINES);
// glVertex2f(10, 10);
// glVertex2f(100, 100);
// glEnd();
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.25f, 0.75f, 0.5f);
glBegin(GL_LINES);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(100, 150);
glVertex2f(100, 100);
glEnd();
Display.update();
Display.sync(60);
}
Display.destroy();
}
public static void main(String[] args) {
new Boot();
}
}
答案 0 :(得分:0)
使用GL_LINES
时,您必须为每个线段明确指定两个顶点:
glBegin(GL_LINES);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(150, 150);
glVertex2f(100, 150);
glVertex2f(100, 150);
glVertex2f(100, 100);
glEnd();
如果您想绘制连线,也可以使用GL_LINE_STRIP
:
glBegin(GL_LINE_STRIP);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(100, 150);
glVertex2f(100, 100);
glEnd();
在这种情况下,您甚至可以使用GL_LINE_LOOP
,它会自动连接最后一个和第一个顶点:
glBegin(GL_LINE_LOOP);
glVertex2f(100, 100);
glVertex2f(150, 100);
glVertex2f(150, 150);
glVertex2f(100, 150);
glEnd();