Opentk показывает черный экран вместо треугольника

#c# #opentk

Вопрос:

Я создал простое приложение для отображения треугольника, но оно показывает только черное окно.

     class Program
    {
        static void Main(string[] args)
        {
            GameWindow window = new GameWindow(800,600);
            game game = new game(window);

            window.Run(1.0/60.0);
        }
    }

    class game
    {
        GameWindow window = new GameWindow();
        public game(GameWindow window)
        {
            this.window = window;

            window.Load  = Window_Load;
            window.UpdateFrame  = Window_UpdateFrame;
            window.RenderFrame  = Window_RenderFrame;
        }

        private void Window_RenderFrame(object sender, FrameEventArgs e)
        {
            GL.ClearColor(Color.CornflowerBlue);
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
            GL.Viewport(0, 0, 800, 600);


            GL.Begin(PrimitiveType.Triangles);
            GL.Color3(Color.OrangeRed);
            GL.Vertex2(0, 0);
            GL.Vertex2(1, 0);
            GL.Vertex2(0, 1);

            GL.End();

            window.SwapBuffers();
        }

        private void Window_UpdateFrame(object sender, FrameEventArgs e)
        {

        }

        private void Window_Load(object sender, EventArgs e)
        {

        }
    }
 

Ответ №1:

Вы случайно создали 2 GameWindow объекта. Просто создайте один GameWindow :

 class Program
{
    static void Main(string[] args)
    {
        GameWindow window = new GameWindow(800, 600);
        game game = new game(window);

        window.Run(1.0 / 60.0);
    }
} 

class game
{
    GameWindow window; // <--- remove: = new GameWindow();
        
    public game(GameWindow window)
    {
        this.window = window;

        window.Load  = Window_Load;
        window.UpdateFrame  = Window_UpdateFrame;
        window.RenderFrame  = Window_RenderFrame;
    }

    // [...]