Пример #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            Glut.glutInit();
            Glut.glutInitDisplayMode(Glut.GLUT_RGB | Glut.GLUT_DOUBLE | Glut.GLUT_DEPTH);
            Il.ilInit();

            Il.ilEnable(Il.IL_ORIGIN_SET);

            Gl.glClearColor(0, 0, 0, 1);

            Gl.glViewport(0, 0, AnT.Width, AnT.Height);

            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();

            Glu.gluPerspective(45, (float)AnT.Width / (float)AnT.Height, 0.1, 200);

            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();

            Gl.glEnable(Gl.GL_DEPTH_TEST);
            Gl.glEnable(Gl.GL_NORMALIZE);
            Gl.glEnable(Gl.GL_LIGHTING);
            Gl.glEnable(Gl.GL_LIGHT0);

            float[] ambience = { 0.3f, 0.3f, 0.3f, 1.0f };    // Цвет мирового света
            float[] diffuse = { 0.5f, 0.5f, 0.5f, 1.0f }; // Цвет позиционного света

            // Чтобы установить мировое освещене, нужно передать OpenGL наши массивы.
            // OpenGL даёт нам возможность использовать несколько источников света. Общее количество
            // источников зависит от переменной GL_MAX_LIGHTS. Для первого используемого источника будем
            // использовать дефайн OpenGL GL_LIGHT0. После указания используемого источника передаём
            // OpenGL флаг говорящий, что мы устанавливаем значение ambience, и массив ambience-цветов.
            // Точно то же делаем с diffuse и GL_DIFFUSE.

            // Устанавливаем цвет рассеянного цвета (без направленного света)
            Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_AMBIENT, ambience);
            // И диффузный цвет (цвет света)
            Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_DIFFUSE, diffuse);

            Gl.glLightfv(Gl.GL_LIGHT0, Gl.GL_POSITION, _lightPos);

            Gl.glEnable(Gl.GL_COLOR_MATERIAL);

            var texture = new TexturesForObjects();
            texture.LoadTextureForModel(@"face.jpg");
            texIdFace = texture.GetTextureObj();
            texture.LoadTextureForModel(@"grass.jpg");
            texIdGround = texture.GetTextureObj();
            texture.LoadTextureForModel(@"material.jpg");
            texIdMaterial = texture.GetTextureObj();
            texture.LoadTextureForModel(@"chest.jpg");
            texIdChest = texture.GetTextureObj();
            texture.LoadTextureForModel(@"torso.jpg");
            texIdTorso = texture.GetTextureObj();
            texture.LoadTextureForModel(@"metal.jpg");
            texIdPress = texture.GetTextureObj();
            RenderTimer.Start();
        }