2013-10-24 44 views
0

我用Java編寫一個簡單的3D引擎,我想使用JOGL或類似libaries要切換到OpenGL。目前我使用BufferedImage和Java.awt.Graphics渲染我的圖形。OpenGL - 從Java.awt.Graphics切換到OpenGL的簡單方法?

private BufferedImage img; 
public final int[] pixels = ((DataBufferInt) img.getRaster().getDataBuffer()).getData(); 

private void render() { 
BufferStrategy bs = this.getBufferStrategy(); 
Graphics g = bs.getDrawGraphics(); 
g.drawImage(img, 0, 0, WIDTH, HEIGHT, null); 
... 
} 

有沒有簡單的方法將我的項目移植到OpenGL或者我需要從頭開始?

回答

0

確實沒有任何簡單的開關,因爲有這麼多的事情中學習的OpenGL着色器一樣(GLSL),VAO,VBO,IBO,狀態改變,緩衝裝訂等

但不是唯一的你還需要學習和理解矩陣和矢量數學,其中矩陣數學肯定是非常困難的。在正確使用OpenGL之前,基本上有很多數學需要學習。

有沒有簡單的方法將我的項目移植到OpenGL或者我需要從頭開始?

不是不是真的,因爲Graphics/Graphics2D和OpenGL之間存在巨大差異。在Graphics,你可以簡單地調用drawImage然後繪製已加載任何BufferedImage。在OpenGL中,您需要加載圖像數據,創建句柄,將圖像數據綁定到緩衝區,更改影響紋理的某些狀態。不僅如此,你還需要創建頂點數據以及創建和綁定到一個VAO和/或VBO。然後是渲染,如Graphics,你可以簡單地調用一個方法,在OpenGL中你需要調用多個方法。

底線,如果你真的想學習的OpenGL,則不要勉強「買賬」,閱讀所有關於多個吊環和學習瞭解他們,之前,你甚至開始使用它進行編程。相信我你會爲自己做一個忙!

所以,如果你還彌補了任務,那麼你可以嘗試使用無論是LWJGLJOGL

此外,如果你開始學習OpenGL的,然後學習如何使用新的方法,而不是過時且不適用一次,這裏是其中的一些glMatrixMode()glLoadIdentity()glTranslate()glRotate()glBegin()glEnd()glVertex()glTexCoord()glNormal()glColor(),當然,當我說glTranslate()它也適用於所有的人glTranslatef()glTranslated()的等

+0

謝謝你的回答。我沒有意識到他們之間的巨大差異。我想我會用JOGL開始一個新的OpenGL項目。 – Pixelbrei

0

嘗試Slick2D。它具有與Java2D非常相似的API,並且是OpenGL加速的。

+0

我用Slick2D一次,但它似乎是2D遊戲和3D不Acceloration。它有OpenGL,因爲它使用LWJGL。 – Pixelbrei