private static void KeyDown(IKeyboard arg1, Key arg2, int arg3) { if (arg2 == Key.Escape) { GlWindow.Close(); } }
public Form1() { InitializeComponent(); GlWindow.InitializeContexts(); GlWindow.MouseWheel += GlWindow_MouseWheel; }
/// <summary> /// 简单的服务定位器 /// </summary> static ServiceLocator() { // 添加全局日志 LogManager.AddLoggerAdapter(new Log4NetLoggerAdapter()); GlobalLogger = LogManager.GetLogger(typeof(ServiceLocator)); try { // 添加服务 需要注意服务的依赖顺序 DebuggerContainer = new DebuggerContainer(); ScheduleService = new ScheduleService(); ProfileService = new ProfileService(Global.ProfilePath); ConfigManager = new ConfigManager(Global.ConfigPath); MapManager = new MapManager(Global.MapPath); WasManager = new WasManager(Global.WdfPath); DrawingService = new DrawingService(); ClientEngine = new ClientEngine(); Window = new GlWindow(); } catch (Exception e) { GlobalLogger.Error(e); MessageBox.Show(Resources.ServiceLocator_Load_Error); Environment.Exit(0); } }
private static void OnLoad() { IInputContext input = GlWindow.CreateInput(); foreach (IKeyboard t in input.Keyboards) { t.KeyDown += KeyDown; } TextureManager.Init(); tex = new Texture("Assets/Textures/BlockTexture-2-Cobblestone-Front.png"); tex2 = new Texture("Assets/Textures/BlockTexture-1-Dirt-Front.png"); renderer = new ChunkRenderer(); testChunk = new Chunk(new(0.0f, 0.0f)); for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { for (int k = 0; k < 16; k++) { testChunk[i, j, k].Type = BlockType.Cobblestone; } } } }
private void Draw() { // очистка буфера цвета и буфера глубины Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glClearColor(0, 0, 0, 1); Gl.glLoadIdentity(); Gl.glPushMatrix(); Gl.glTranslated(_moveX, _moveY, _moveZ); Gl.glRotated(_rotateAngle, _osX, _osY, _osZ); Gl.glColor3ub(color.R, color.G, color.B); // если текстура загружена if (textureIsLoad) { // увеличиваем угол поворота rot++; // корректируем угол if (rot > 360) { rot = 0; } // очистка буфера цвета и буфера глубины Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT); Gl.glClearColor(255, 255, 255, 1); // очищение текущей матрицы Gl.glLoadIdentity(); // включаем режим текстурирования Gl.glEnable(Gl.GL_TEXTURE_2D); // включаем режим текстурирования, указывая идентификатор Gl.glBindTexture(Gl.GL_TEXTURE_2D, mGlTextureObject); // сохраняем состояние матрицы Gl.glPushMatrix(); // выполняем перемещение для более наглядного представления сцены Gl.glTranslated(0, -1, -5); // реализуем поворот объекта Gl.glRotated(rot, 0, 1, 0); // отрисовываем полигон Gl.glBegin(Gl.GL_QUADS); // указываем поочередно вершины и текстурные координаты Gl.glVertex3d(1, 1, 0); Gl.glTexCoord2f(0, 0); Gl.glVertex3d(1, 0, 0); Gl.glTexCoord2f(1, 0); Gl.glVertex3d(0, 0, 0); Gl.glTexCoord2f(1, 1); Gl.glVertex3d(0, 1, 0); Gl.glTexCoord2f(0, 1); // завершаем отрисовку Gl.glEnd(); // возвращаем матрицу Gl.glPopMatrix(); // отключаем режим текстурирования Gl.glDisable(Gl.GL_TEXTURE_2D); // обновляем элемент со сценой GlWindow.Invalidate(); Gl.glPopMatrix(); // завершаем рисование Gl.glFlush(); // обновляем элемент GlWindow.Invalidate(); } }