예제 #1
0
        public void TestSetModelViewMatrix()
        {
            var pixels = new[] { new Pixel(), new Pixel(), new Pixel(), new Pixel() };

            _window = new GameWindow {
                Width = 200, Height = 200
            };
            _window.RenderFrame += (caller, args) =>
            {
                IGL gl = new GLWrapper();
                gl.MatrixMode(MatrixMode.Projection);
                gl.LoadIdentity();
                gl.Ortho(0.0, 2.0, 0.0, 2.0, 0.0, 4.0);
                gl.Viewport(0, 0, 200, 200);
                gl.MatrixMode(MatrixMode.Modelview);
                gl.ReadBuffer(ReadBufferMode.Front);
                gl.Clear(ClearBufferMask.ColorBufferBit);
                gl.Color3(1.0f, 1.0f, 1.0f);
                DrawQuad();
                gl.PushMatrix();
                gl.Translate(0.0f, 1.0f, 0.0f);
                gl.Color3(1.0f, 0.0f, 0.0f);
                DrawQuad();
                gl.PopMatrix();
                gl.PushMatrix();
                gl.Translate(1.0f, 1.0f, 0.0f);
                gl.Color3(0.0f, 1.0f, 0.0f);
                DrawQuad();
                gl.PopMatrix();
                gl.PushMatrix();
                gl.Translate(1.0f, 0.0f, 0.0f);
                gl.Color3(0.0f, 0.0f, 1.0f);
                DrawQuad();
                gl.PopMatrix();
                _window.SwapBuffers();
                pixels[0].ReadBuffer(99, 99);
                pixels[1].ReadBuffer(99, 100);
                pixels[2].ReadBuffer(100, 100);
                pixels[3].ReadBuffer(100, 99);
                _window.Close();
            };
            _window.Run();
            Assert.AreEqual(new Pixel(1.0f, 1.0f, 1.0f), pixels[0]);
            Assert.AreEqual(new Pixel(1.0f, 0.0f, 0.0f), pixels[1]);
            Assert.AreEqual(new Pixel(0.0f, 1.0f, 0.0f), pixels[2]);
            Assert.AreEqual(new Pixel(0.0f, 0.0f, 1.0f), pixels[3]);
        }