Exemplo n.º 1
0
 private static void KeyDown(IKeyboard arg1, Key arg2, int arg3)
 {
     if (arg2 == Key.Escape)
     {
         GlWindow.Close();
     }
 }
Exemplo n.º 2
0
        public Form1()
        {
            InitializeComponent();

            GlWindow.InitializeContexts();
            GlWindow.MouseWheel += GlWindow_MouseWheel;
        }
Exemplo n.º 3
0
 /// <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);
     }
 }
Exemplo n.º 4
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;
                    }
                }
            }
        }
Exemplo n.º 5
0
        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();
            }
        }