Exemple #1
0
 protected override void OnKeyDown(OpenTK.Input.KeyboardKeyEventArgs e)
 {
     if (e.Key == Key.Escape)
     {
         this.Exit();
     }
     else
     if (e.Key == Key.F)
     {
         GL.CullFace(CullFaceMode.Front);
     }
     if (e.Key == Key.B)
     {
         GL.CullFace(CullFaceMode.Back);
     }
     if (e.Key == Key.R)
     {
         translacao++;
         matrizTerra.AtribuirRotacaoY(translacao);
     }
     if (e.Key == Key.L)
     {
         translacaoLua++;
         matrizLua.AtribuirRotacaoY(translacaoLua);
     }
     if (e.Key == Key.A)
     {
         //FIXME: aqui deveria aplicar a textura no lado de fora e dentro, mas não aparece nada
         GL.CullFace(CullFaceMode.FrontAndBack);
     }
 }
Exemple #2
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            GL.ClearColor(Color.Black);
            GL.Enable(EnableCap.DepthTest);
            GL.Enable(EnableCap.CullFace);

            //TODO: o que faz está linha abaixo?
            GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
            GL.GenTextures(1, out texture);
            GL.BindTexture(TextureTarget.Texture2D, texture);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
            GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);

            BitmapData data = bitmap.LockBits(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height),
                                              ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, data.Width, data.Height, 0,
                          OpenTK.Graphics.OpenGL.PixelFormat.Bgra, PixelType.UnsignedByte, data.Scan0);

            bitmap.UnlockBits(data);

            // ___ parâmetros da câmera sintética
            eye = new Vector3(50, 50, 50);
            at  = new Vector3(0, 0, 0);
            far = 100.0f;

            // Matriz sol
            Transformacao4D matrizSolNova = new Transformacao4D();

            matrizSolNova.AtribuirTranslacao(40, 0, 0);
            matrizSol = matrizSolNova.MultiplicarMatriz(matrizSol);
            // Atribui filho terra ao sol
            matrizTerra = matrizSol.MultiplicarMatriz(matrizTerra);

            //cria terra
            Transformacao4D matrizTerraNova = new Transformacao4D();

            matrizTerraNova.AtribuirEscala(0.3, 0.3, 0.3);
            matrizTerra = matrizTerraNova.MultiplicarMatriz(matrizTerra);
            // Matriz atribui filho lua a terra
            matrizLua = matrizTerra.MultiplicarMatriz(matrizLua);

            //cria lua
            Transformacao4D matrizLuaNova = new Transformacao4D();

            matrizLuaNova.AtribuirEscala(0.1, 0.1, 0.1);
            matrizLuaNova.AtribuirRotacaoY(Transformacao4D.DEG_TO_RAD * 20);
            matrizLua = matrizLuaNova.MultiplicarMatriz(matrizLua);
        }