Я немного повозился с 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, но, похоже, это не работает … Что я сделал не так? Это моя обработка окон?
Задача ещё не решена.