2014-09-06 33 views
0

我想在自己的類中繪製一個多邊形作爲自己的對象,而不是顯示方法的一部分。我對此沒有多少發現,希望有人能幫助我。jogl,多邊形作爲自己的對象/類

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(); 
} 

一個遊戲物體包含在場景圖/樹

我在這(編程和圖形)相當新的,所以如果有人得到了一些很好的教程,請張貼那麼幾個polygonalGameObjects!

非常感謝!

回答

0

你需要一個當前的OpenGL上下文來繪製OpenGL的東西,這就是爲什麼你需要在GLEventListener.display(GLAutoDrawable)中調用你的繪圖方法,OpenGL上下文保證在這個方法調用期間在這個線程上是最新的。可以使用沒有GLEventListener的JOGL,但它更危險,特別是如果你是初學者,並且浪費時間,因爲它沒有給出任何靈活性,但它迫使你自己處理drawable的生命週期。使用GLEventListener不會阻止您創建自己的類,您只需在display()中直接或間接調用繪圖方法。

如果您對JOGL有任何疑問,請致電the official forum。你也可以看看the wiki。你需要學習簡單的OpenGL來使用JOGL,你可以閱讀OpenGL紅皮書。如果您在編程方面很新穎,我認爲您不應該從圖形開始,您應該先從簡單得多的事情入手,以便在學習2D之前瞭解Java編程的基本原理以及3D計算機圖形的原理。