Преобразование кода C ++ OpenGL в C # OpenTK

Я немного повозился с OpenGL в c ++, но я бы хотел протестировать его на языке, который мне более знаком.

Я взял пример из Красной книги OpenGL (самой первой, насколько мне известно), который выглядит следующим образом:

#include <whateverYouNeed.h>

main() {

InitializeAWindowPlease();

glClearColor (0.0, 0.0, 0.0, 0.0);
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();
glFlush();

UpdateTheWindowAndCheckForEvents();
}

Я пытаюсь сделать то же самое, используя оболочку OpenTK для C #, вот что я придумал:

using OpenTK;
using OpenTK.Graphics;
using OpenTK.Graphics.OpenGL;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TEST2
{
class Program
{
static void Main(string[] args)
{
using (GameWindow gameWindow = new GameWindow())
{
gameWindow.Load += (sender, e) =>
{
gameWindow.VSync = VSyncMode.On;
gameWindow.Title = "Test";
};

gameWindow.Resize += (sender, e) =>
{
GL.Viewport(0, 0, gameWindow.Width, gameWindow.Height);
};

gameWindow.UpdateFrame += (sender, e) =>
{

};

gameWindow.RenderFrame += (sender, e) =>
{
//Here's the main content of the 'converted' code
GL.ClearColor(0.0f,0.0f,0.0f,0.0f);
GL.Clear(ClearBufferMask.ColorBufferBit);
GL.Color3(1.0f, 1.0f, 1.0f);
GL.Ortho(0.0f, 1.0f, 0.0f, 1.0f, -1.0f, 1.0f);
GL.Begin(PrimitiveType.Polygon);
GL.Vertex3(0.25f, 0.25f, 0.0f);
GL.Vertex3(0.75f, 0.25f, 0.0f);
GL.Vertex3(0.75f, 0.75f, 0.0f);
GL.Vertex3(0.25f, 0.75f, 0.0f);
GL.End();
GL.Flush();
gameWindow.SwapBuffers();
};

gameWindow.Run(10);
}
}
}
}

Теперь, что я предполагается, это бы выглядело как отображение белого поля на черном фоне, как это делает пример OpenGL, но, похоже, это не работает … Что я сделал не так? Это моя обработка окон?

0

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]