2014-05-09 55 views
0

我想在基於Java AWT的應用程序中使用JOGL。可編譯和可運行的JOGL應用程序不繪製三角形

我是OpenGL的新手,所以我從一個經典的繪製三角形例子開始。

我正在使用OpenGL ES 2.0。

說完看了幾個教程在線&花費很多時間澆在&在我的代碼,我不知所措,爲什麼我的,否則編譯&執行的程序(即無例外被拋出,直接)不抽比其他任何清晰的顏色。

頂點數據,着色器代碼和gl設置過程全部來自教程。

頂點着色器代碼:

#version 100 
attribute vec3 vPosition; 
void main() 
{ 
    gl_Position = vec4(vPosition,1.0); 
} 

片段着色器代碼:

#version 100 
precision mediump float; 
void main() 
{ 
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); 
} 

頂點數據:

float[] vertexPositions = 
{ 
    0.0f, 0.5f, 0.0f, 
    -0.5f, -0.5f, 0.0f, 
    0.5f, -0.5f, 0.0f 
}; 

FloatBuffer lBuffer = CommonFuncs.getFloatBuffer(1024); 
lBuffer.put(vertexPositions); 

我設置 'vPosition' 像這樣:

初始時爲

ISE:

theRenderer.glBindAttribLocation(theProgram, 0, "vPosition"); 

上顯示:

theRenderer.glUseProgram(theProgram); 
theRenderer.glVertexAttribPointer(0, 3, GL.GL_FLOAT, false, 0, lBuffer); 
theRenderer.glEnableVertexAttribArray(0); 
theRenderer.glDrawArrays(GL.GL_TRIANGLES, 0, 3); 
theRenderer.glDisableVertexAttribArray(0); 
theRenderer.glUseProgram(0); 

然而,我在屏幕上看到什麼,除了青色藍色鮮明的色彩我指定&在「顯示」以前叫。

我試過各種不同的配置,試圖指定一個模型視圖&投影矩陣,並乘以這些vPosition。但我正在看的教程沒有做任何與任何矩陣&仍然畫一個三角形。我只是沒有得到我想要的東西&希望有更多經驗的新鮮眼睛可以提供幫助。

謝謝。

+0

後的伎倆發佈更多代碼。只是一個猜測 - 也許你在繪製三角形後清除顯示(glClear在OpenGL中,不確定JOGL是否使用相同的調用)。 – hoefling

+3

您可能需要在將頂點數據添加到緩衝區後重置緩衝區位置。在'lBuffer.put(...)'之後嘗試'lBuffer.flip()'。 –

+1

也許這個簡單的例子可以幫助:https://github.com/sgothel/jogl/blob/master/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/RedSquareES2.java – gouessej

回答

0

這的確引起不調用lBuffer.flip()的問題 - 禍哉:S謝謝@Reto Koradi爲察覺我的簡單的錯誤 - 一雙嶄新的眼睛都:)