SharpGL FBO/VBO绘制简单三角不工作
问题描述:
我试图在OpenGL中使用SharpGL中的FBO/VBO。用于此WPF应用程序。 问题是,示例三角形不呈现。SharpGL FBO/VBO绘制简单三角不工作
添加组件是与此代码:
glControl = new OpenGLControl();
glControl.RenderContextType = RenderContextType.FBO;
glControl.DrawFPS = true;
glControl.OpenGLDraw += OpenGLControl_OnOpenGLDrawNew;
而对于代码渲染和init:
private void OpenGLControl_OnOpenGLDrawNew(object sender, OpenGLEventArgs args)
{
OpenGL gl = args.OpenGL;
ShaderProgram shaderProgram = new ShaderProgram();
uint[] id = new uint[1];
gl.GenVertexArrays(1, id);
gl.BindVertexArray(id[0]);
gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
gl.LoadIdentity();
float[] vertex_data = new[]
{
-1.0f, -1.0f, 0.0f,
1.0f, -1.0f, 0.0f,
0.0f, 1.0f, 0.0f,
};
uint[] vertexBuffer = new uint[1];
gl.GenBuffers(1, vertexBuffer);
gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, vertexBuffer[0]);
IntPtr ptr1 = GCHandle.Alloc(vertex_data, GCHandleType.Pinned).AddrOfPinnedObject();
gl.BufferData(OpenGL.GL_ARRAY_BUFFER, vertex_data.Length * sizeof(float), ptr1, OpenGL.GL_STATIC_DRAW);
// loop? when its in do{} while(true) loop, program stop respond
gl.EnableVertexAttribArray(0);
gl.BindBuffer(OpenGL.GL_ARRAY_BUFFER, vertexBuffer[0]);
gl.VertexAttribPointer(0, 3, OpenGL.GL_FLOAT, false, 0, new IntPtr());
gl.DrawArrays(OpenGL.GL_TRIANGLES, 0, 3);
gl.DisableVertexAttribArray(0);
}
而且我不知道自己做错了什么即时通讯在做什么? 只出现FPS统计和绘制时间的黑色窗口。 请不要发送C++/C tuts becouse已经尝试过(很多),它在C#中有点不同。 试图按照下面的步骤:http://www.opengl-tutorial.org/beginners-tutorials/tutorial-2-the-first-triangle/
答
SharpGL(至少在我的设置上)不支持GPU上的VBO。我会尝试在try {} catch {}中包含这些语句,并且您应该得到一个异常并附带一条消息来达到此效果。 SharpGL支持非GPU端DrawArrays(VertexPointer())。