我使用OpenTK创建图形引擎,但它并不想绘制任何东西。 清除屏幕工作,也交换缓冲区,但当我尝试使用顶点数组或传统OpenGL绘制矩形时,它不会工作。
我在这个小测试程序中重现了这个问题:
private static GameWindow window;
private static int vao;
private static int vbo;
static void Main(string[] args)
{
window = new GameWindow();
window.Load += Window_Load;
window.RenderFrame += Window_RenderFrame;
window.Run();
}
private static void Window_Load(object sender, EventArgs e)
{
vao = GL.GenVertexArray();
GL.BindVertexArray(vao);
vbo = GL.GenBuffer();
GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);
GL.BufferData(BufferTarget.ArrayBuffer, new IntPtr(3), new float[] {
-0.5f, -0.5f, 0f,
0.5f, -0.5f, 0f,
0.5f, 0.5f, 0f,
0.5f, 0.5f, 0f,
-0.5f, 0.5f, 0f,
-0.5f, -0.5f, 0f
}, BufferUsageHint.StaticDraw);
GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, 0, 0);
}
private static void Window_RenderFrame(object sender, FrameEventArgs e)
{
GL.ClearColor(1, 0, 0, 1);
GL.Clear(ClearBufferMask.ColorBufferBit);
GL.DrawArrays(PrimitiveType.Triangles, 0, 6);
window.SwapBuffers();
}
任何人都可以给我一些关于我做错的提示吗?
答案 0 :(得分:2)
解决方案是使上下文向前兼容。
答案 1 :(得分:0)
简单的渲染管道需要一些基本信息来绘制顶点:
除顶点位置外,您的代码并未指定任何内容。您的三角形可能不可见的原因有很多: