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。但我正在看的教程沒有做任何與任何矩陣&仍然畫一個三角形。我只是沒有得到我想要的東西&希望有更多經驗的新鮮眼睛可以提供幫助。
謝謝。
後的伎倆發佈更多代碼。只是一個猜測 - 也許你在繪製三角形後清除顯示(glClear在OpenGL中,不確定JOGL是否使用相同的調用)。 – hoefling
您可能需要在將頂點數據添加到緩衝區後重置緩衝區位置。在'lBuffer.put(...)'之後嘗試'lBuffer.flip()'。 –
也許這個簡單的例子可以幫助:https://github.com/sgothel/jogl/blob/master/src/test/com/jogamp/opengl/test/junit/jogl/demos/es2/RedSquareES2.java – gouessej