我想在自己的类中绘制一个多边形作为自己的对象,而不是作为显示方法的一部分。我没有发现太多关于它的事情,希望有人可以帮助我。
public PolygonalGameObject(GameObject parent, double points[],
double[] fillColour, double[] lineColour) {
super(parent);
myPoints = points;
myFillColour = fillColour;
myLineColour = lineColour;
}
public void drawSelf(GL2 gl) {
// TODO: Write this method
gl.glMatrixMode(GL2.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glBegin(GL2.GL_POLYGON);{
for (int i = 0; i < myPoints.length; i += 2) {
double x = myPoints[i];
double y = myPoints[i + 1];
gl.glVertex2d(x, y);
}
}gl.glEnd();
}
GameObject在场景图/树中包含几个polygonGameObjects
我对此非常陌生(包括编程和图形),所以如果有人得到一些好的教程请发帖!
非常感谢!
答案 0 :(得分:0)
您需要使用当前的OpenGL上下文来绘制OpenGL的内容,这就是您需要在GLEventListener.display(GLAutoDrawable)中调用绘图方法的原因,在调用此方法期间,OpenGL上下文保证在此线程上是最新的。可以在没有GLEventListener的情况下使用JOGL,但是它更危险,特别是如果你是初学者并且浪费时间,因为它不会给予任何灵活性,而它会迫使你自己处理绘图的生命周期。使用GLEventListener并不会阻止您创建自己的类,只需在display()中直接或间接调用绘图方法。
如果您对JOGL有任何疑问,请在the official forum上询问。您也可以查看the wiki。你需要学习普通的OpenGL来使用JOGL,你可以阅读OpenGL Red Book。如果你对编程非常陌生,我认为你不应该从图形开始,你应该先从更简单的东西开始,以便在学习2D和3D计算机图形学原理之前学习Java编程的基本原理。