public void Initialize(OpenGL gl) { gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f); gl.Color(0.5f, 0.5f, 0.5f); // Model sencenja na flat (konstantno) gl.ShadeModel(OpenGL.GL_FLAT); gl.Enable(OpenGL.GL_DEPTH_TEST); gl.Enable(OpenGL.GLU_CULLING); gl.FrontFace(OpenGL.GL_CCW); gl.LoadIdentity(); gl.Enable(OpenGL.GL_COLOR_MATERIAL); gl.ColorMaterial(OpenGL.GL_FRONT, OpenGL.GL_AMBIENT_AND_DIFFUSE); gl.Enable(OpenGL.GL_LIGHTING); SetupLighting(gl); gl.Enable(OpenGL.GL_TEXTURE_2D); gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD); gl.GenTextures(m_textureCount, m_textures); for (int i = 0; i < m_textureCount; ++i) { //Pridruzuje se tekstura odredjenom identifikatoru gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[i]); // Ucitaj sliku i podesi parametre teksture Bitmap image = new Bitmap(m_textureFiles[i]); // rotiramo sliku zbog koordinantog sistema opengl-a image.RotateFlip(RotateFlipType.RotateNoneFlipY); Rectangle rect = new Rectangle(0, 0, image.Width, image.Height); // RGBA format (dozvoljena providnost slike tj. alfa kanal) BitmapData imageData = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); gl.Build2DMipmaps(OpenGL.GL_TEXTURE_2D, (int)OpenGL.GL_RGBA8, image.Width, image.Height, OpenGL.GL_BGRA, OpenGL.GL_UNSIGNED_BYTE, imageData.Scan0); gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_NEAREST); // Nearest Neighbour Filtering gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, OpenGL.GL_NEAREST); // Nearest Neighbour Filtering gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_S, OpenGL.GL_REPEAT); gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_T, OpenGL.GL_REPEAT); //gl.Enable(OpenGL.GL_TEXTURE_GEN_S); //gl.Enable(OpenGL.GL_TEXTURE_GEN_T); image.UnlockBits(imageData); image.Dispose(); } m_scene.LoadScene(); m_scene.Initialize(); m_bullet.LoadScene(); m_bullet.Initialize(); }
public void Initialize(OpenGL gl) { gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f); //pozadina gl.ShadeModel(OpenGL.GL_FLAT); // Model sencenja na flat (konstantno) gl.Enable(OpenGL.GL_DEPTH_TEST); //ukljucivanje testiranja dubine gl.Enable(OpenGL.GL_CULL_FACE); //skrivanje nevidjivih povrsina //teksture za cube disk i quad, način stapanja teksture sa materijalom postaviti da bude GL_ADD. gl.Enable(OpenGL.GL_TEXTURE_2D); gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD); //tackastiIzvor(gl); //reflektorskiIzvor(gl); //TODO 1 Uključiti color tracking mehanizam i podesiti da se pozivom metode glColor definiše ambijentalna i difuzna komponenta materijala. gl.Enable(OpenGL.GL_COLOR_MATERIAL); gl.ColorMaterial(OpenGL.GL_FRONT, OpenGL.GL_AMBIENT_AND_DIFFUSE); //TODO 3 Ucitavanje textura // Ucitaj slike i kreiraj teksture gl.GenTextures(m_textureCount, m_textures); for (int i = 0; i < m_textureCount; ++i) { // Pridruzi teksturu odgovarajucem identifikatoru gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[i]); // Ucitaj sliku i podesi parametre teksture Bitmap image = new Bitmap(m_textureFiles[i]); // rotiramo sliku zbog koordinantog sistema opengl-a image.RotateFlip(RotateFlipType.RotateNoneFlipY); Rectangle rect = new Rectangle(0, 0, image.Width, image.Height); // RGBA format (dozvoljena providnost slike tj. alfa kanal) BitmapData imageData = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); gl.Build2DMipmaps(OpenGL.GL_TEXTURE_2D, (int)OpenGL.GL_RGBA8, image.Width, image.Height, OpenGL.GL_BGRA, OpenGL.GL_UNSIGNED_BYTE, imageData.Scan0); gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_LINEAR); // Linear Filtering gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, OpenGL.GL_LINEAR); // Linear Filtering gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_S, OpenGL.GL_REPEAT); gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_T, OpenGL.GL_REPEAT); image.UnlockBits(imageData); image.Dispose(); } //TODO 6 Kamera lookAtCam = new LookAtCamera(); lookAtCam.Position = new Vertex(0, 180, 2000); lookAtCam.Target = new Vertex(0f, 150f, 0); lookAtCam.UpVector = new Vertex(0f, 1f, 0f); lookAtCam.AspectRatio = width / height; lookAtCam.Near = 1.0f; lookAtCam.Far = 20000f; gl.LookAt(0.0f, 180.0f, 2000, 0.0f, 150.0f, 0, 0.0f, 1.0f, 0.0f); ////gl.Perspective(60f, (double)width / height, 1.0f, 20000f); scene.LoadScene(); scene.Initialize(); }
public void Initialize(OpenGL gl) { gl.Enable(OpenGL.GL_DEPTH_TEST); gl.Enable(OpenGL.GL_CULL_FACE); gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f); // podesi boju za brisanje ekrana na crnu gl.FrontFace(OpenGL.GL_CCW); // Osvetljenje SetupLighting(gl); gl.Enable(OpenGL.GL_NORMALIZE); // Model sencenja na flat (konstantno) gl.ShadeModel(OpenGL.GL_SMOOTH); // Ukljucivanje ColorTracking mehanizma gl.Enable(OpenGL.GL_COLOR_MATERIAL); // Pozivom glColor se definise ambijenta i difuzijalna komponenta gl.ColorMaterial(OpenGL.GL_FRONT, OpenGL.GL_AMBIENT_AND_DIFFUSE); //float[] whiteLight = { 1.0f, 1.0f, 1.0f, 1.0f }; //gl.LightModel(LightModelParameter.Ambient, whiteLight); // Ukljuci automatsku normalizaciju nad normalama gl.Enable(OpenGL.GL_NORMALIZE); formula1.LoadScene(); formula1.Initialize(); formula2.LoadScene(); formula2.Initialize(); timer1 = new DispatcherTimer(); timer1.Interval = TimeSpan.FromMilliseconds(1); timer1.Tick += new EventHandler(UpdateAnimation1); // Teksture se primenjuju sa parametrom decal gl.Enable(OpenGL.GL_TEXTURE_2D); gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_DECAL); // GL_DECAL // Ucitaj slike i kreiraj teksture gl.GenTextures(m_textureCount, m_textures); for (int i = 0; i < m_textureCount; ++i) { // Pridruzi teksturu odgovarajucem identifikatoru gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[i]); // Ucitaj sliku i podesi parametre teksture Bitmap image = new Bitmap(m_textureFiles[i]); // rotiramo sliku zbog koordinantog sistema opengl-a image.RotateFlip(RotateFlipType.RotateNoneFlipY); Rectangle rect = new Rectangle(0, 0, image.Width, image.Height); // RGBA format (dozvoljena providnost slike tj. alfa kanal) BitmapData imageData = image.LockBits(rect, System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppArgb); gl.Build2DMipmaps(OpenGL.GL_TEXTURE_2D, (int)OpenGL.GL_RGBA8, image.Width, image.Height, OpenGL.GL_BGRA, OpenGL.GL_UNSIGNED_BYTE, imageData.Scan0); gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_LINEAR); // Linear Filtering gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MAG_FILTER, OpenGL.GL_LINEAR); // Linear Filtering gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_S, OpenGL.GL_REPEAT); // wrapping gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_WRAP_T, OpenGL.GL_REPEAT); // wrapping image.UnlockBits(imageData); image.Dispose(); } }