Пример #1
0
        /*
         * Creates a window, initializes OpenGl settings, and updates the current height and width of the window.
         */
        private void initializeOpenGL()
        {
            //Center the window
            Sdl.SDL_putenv("SDL_VIDEO_CENTERED=center");

            //Create the window
            Debug.WriteLine("SDL_SetVideoMode Called");
            vidSurface = Sdl.SDL_SetVideoMode(((fullscreen) ? 1 : windowWidth), ((fullscreen) ? 0 : windowHeight), 32, Sdl.SDL_OPENGL | Sdl.SDL_DOUBLEBUF | Sdl.SDL_HWSURFACE | ((fullscreen) ? Sdl.SDL_FULLSCREEN : 0));
            if (vidSurface == null)
            {
                throw new Exception("Error, could not set video mode.");
            }

            //Marshal in surface to obtain info
            Sdl.SDL_Surface managedSurface = (Sdl.SDL_Surface)Marshal.PtrToStructure(vidSurface, typeof(Sdl.SDL_Surface));
            pixFmt = managedSurface.format;

            //Current Dimensions of the window.
            this.width  = (short)managedSurface.w;
            this.height = (short)managedSurface.h;
            camera.setView();

            //Settings
            Sdl.SDL_GL_SetAttribute(Sdl.SDL_GL_DOUBLEBUFFER, 1);
            Gl.glEnable(Gl.GL_TEXTURE_2D);
            Gl.glClearColor(0, 0, 0, 1);
            Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
            Gl.glViewport(0, 0, width, height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            Gl.glOrtho(0.0f, width, height, 0.0f, -1.0f, 1.0f);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
            Gl.glEnable(Gl.GL_BLEND);
            Gl.glDisable(Gl.GL_DEPTH_TEST);
            Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
        }