Пример #1
0
		void setupGL ()
		{
			EAGLContext.SetCurrentContext (context);

			effect = new GLKReflectionMapEffect ();
			effect.LightingType = GLKLightingType.PerPixel;

			skyboxEffect = new GLKSkyboxEffect ();

			effect.Light0.Enabled = true;
			effect.Light0.DiffuseColor = new Vector4 (1f, 1f, 1f, 1f);
			effect.Light0.Position = new Vector4 (-1f, -1f, 2f, 1f);
			effect.Light0.SpecularColor = new Vector4 (1f, 1f, 1f, 1f);
			effect.Light0.AmbientColor = new Vector4 (0.2f, 0.2f, 0.2f, 1f);

			effect.Light1.Enabled = true;
			effect.Light1.DiffuseColor = new Vector4 (0.4f, 0.4f, 0.4f, 1f);
			effect.Light1.Position = new Vector4 (15f, 15f, 15f, 1f);
			effect.Light1.SpecularColor = new Vector4 (1f, 0f, 0f, 1f);

			effect.Material.DiffuseColor = new Vector4 (1f, 1f, 1f, 1f);
			effect.Material.AmbientColor = new Vector4 (1f, 1f, 1f, 1f);
			effect.Material.SpecularColor = new Vector4 (1f, 0f, 0f, 1f);
			effect.Material.Shininess = 320f;
			effect.Material.EmissiveColor = new Vector4 (0.4f, 4f, 0.4f, 1f);

			GL.Enable (EnableCap.DepthTest);

			GL.Oes.GenVertexArrays (1, out vertexArray);
			GL.Oes.BindVertexArray (vertexArray);

			GL.GenBuffers (1, out vertexBuffer);
			GL.BindBuffer (BufferTarget.ArrayBuffer, vertexBuffer);
			GL.BufferData (BufferTarget.ArrayBuffer, (IntPtr) (Monkey.MeshVertexData.Length * sizeof (float)), 
			               Monkey.MeshVertexData, BufferUsage.StaticDraw);

			GL.EnableVertexAttribArray ((int) GLKVertexAttrib.Position);
			GL.VertexAttribPointer ((int) GLKVertexAttrib.Position, 3, VertexAttribPointerType.Float,
			                        false, 6 * sizeof (float), 0);

			GL.EnableVertexAttribArray ((int) GLKVertexAttrib.Normal);
			GL.VertexAttribPointer ((int) GLKVertexAttrib.Normal, 3, VertexAttribPointerType.Float,
			                        false, 6 * sizeof(float), 12);

			string[] cubeMapFiles = { 
				NSBundle.MainBundle.PathForResource ("cubemap1", "png"),
				NSBundle.MainBundle.PathForResource ("cubemap2", "png"),
				NSBundle.MainBundle.PathForResource ("cubemap3", "png"),
				NSBundle.MainBundle.PathForResource ("cubemap4", "png"),
				NSBundle.MainBundle.PathForResource ("cubemap5", "png"),
				NSBundle.MainBundle.PathForResource ("cubemap6", "png")
			};

			NSError error;
			NSDictionary options = NSDictionary.FromObjectAndKey (NSNumber.FromBoolean (false),
			                                                      GLKTextureLoader.OriginBottomLeft);

			cubemap = GLKTextureLoader.CubeMapFromFiles (cubeMapFiles, options, out error);

			effect.TextureCubeMap.GLName = cubemap.Name;
			skyboxEffect.TextureCubeMap.GLName = cubemap.Name;

			GL.Oes.BindVertexArray (0);
		}
Пример #2
0
        void setupGL()
        {
            EAGLContext.SetCurrentContext(context);

            effect = new GLKReflectionMapEffect();
            effect.LightingType = GLKLightingType.PerPixel;

            skyboxEffect = new GLKSkyboxEffect();

            effect.Light0.Enabled       = true;
            effect.Light0.DiffuseColor  = new Vector4(1f, 1f, 1f, 1f);
            effect.Light0.Position      = new Vector4(-1f, -1f, 2f, 1f);
            effect.Light0.SpecularColor = new Vector4(1f, 1f, 1f, 1f);
            effect.Light0.AmbientColor  = new Vector4(0.2f, 0.2f, 0.2f, 1f);

            effect.Light1.Enabled       = true;
            effect.Light1.DiffuseColor  = new Vector4(0.4f, 0.4f, 0.4f, 1f);
            effect.Light1.Position      = new Vector4(15f, 15f, 15f, 1f);
            effect.Light1.SpecularColor = new Vector4(1f, 0f, 0f, 1f);

            effect.Material.DiffuseColor  = new Vector4(1f, 1f, 1f, 1f);
            effect.Material.AmbientColor  = new Vector4(1f, 1f, 1f, 1f);
            effect.Material.SpecularColor = new Vector4(1f, 0f, 0f, 1f);
            effect.Material.Shininess     = 320f;
            effect.Material.EmissiveColor = new Vector4(0.4f, 4f, 0.4f, 1f);

            GL.Enable(EnableCap.DepthTest);

            GL.Oes.GenVertexArrays(1, out vertexArray);
            GL.Oes.BindVertexArray(vertexArray);

            GL.GenBuffers(1, out vertexBuffer);
            GL.BindBuffer(BufferTarget.ArrayBuffer, vertexBuffer);
            GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(Monkey.MeshVertexData.Length * sizeof(float)),
                          Monkey.MeshVertexData, BufferUsage.StaticDraw);

            GL.EnableVertexAttribArray((int)GLKVertexAttrib.Position);
            GL.VertexAttribPointer((int)GLKVertexAttrib.Position, 3, VertexAttribPointerType.Float,
                                   false, 6 * sizeof(float), 0);

            GL.EnableVertexAttribArray((int)GLKVertexAttrib.Normal);
            GL.VertexAttribPointer((int)GLKVertexAttrib.Normal, 3, VertexAttribPointerType.Float,
                                   false, 6 * sizeof(float), 12);

            string[] cubeMapFiles =
            {
                NSBundle.MainBundle.PathForResource("cubemap1", "png"),
                NSBundle.MainBundle.PathForResource("cubemap2", "png"),
                NSBundle.MainBundle.PathForResource("cubemap3", "png"),
                NSBundle.MainBundle.PathForResource("cubemap4", "png"),
                NSBundle.MainBundle.PathForResource("cubemap5", "png"),
                NSBundle.MainBundle.PathForResource("cubemap6", "png")
            };

            NSError      error;
            NSDictionary options = new NSDictionary(GLKTextureLoader.OriginBottomLeft, false);

            cubemap = GLKTextureLoader.CubeMapFromFiles(cubeMapFiles, options, out error);

            effect.TextureCubeMap.GLName       = cubemap.Name;
            skyboxEffect.TextureCubeMap.GLName = cubemap.Name;

            GL.Oes.BindVertexArray(0);
        }