我试图在基于Java AWT的应用程序中使用JOGL。
我是OpenGL的新手,所以我从经典的绘制三角形示例开始。
我正在使用OpenGL ES 2.0。
在网上查看了几个教程&花了好几个小时倾盆而过在我的代码中,我不知道为什么我的其他可编辑的& runnable程序(即没有直接抛出异常)不会绘制除了清晰颜色以外的任何东西。
顶点数据,着色器代码和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'像这样:
初始化:
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 :(得分:0)
这确实是一个问题,因为没有调用lBuffer.flip() - 祸就是我:谢谢@Reto Koradi发现我的简单错误 - 一双新鲜的眼睛完成了这个伎俩:)