Esempio n. 1
0
        protected override void RenderWithShader(int width, int height, Light light, FigureShaderProgram shaderProgram)
        {
            shaderProgram.Use();

            Matrix4x4 matrix = _camera.GetViewMatrix();

            Gl.UniformMatrix4f(shaderProgram.UView, 1, false, ref matrix);
            matrix = Matrix4x4.CreatePerspectiveFieldOfView(_camera.Zoom.ToRadians(), (float)width / (float)height, 0.1f, 100f);
            Gl.UniformMatrix4f(shaderProgram.UProjection, 1, false, ref matrix);
            matrix = _figure.Matrix;
            Gl.UniformMatrix4f(shaderProgram.UModel, 1, false, ref matrix);

            shaderProgram.SetMaterial(MaterialBuilder.Create(_figure.Material));

            var lightDirection = light.Type == LightType.Directional ? light.Direction : _camera.Front;

            shaderProgram.SetLight(light, _camera.Position, lightDirection);

            Gl.Uniform3(shaderProgram.UCameraPosition, _camera.Position.X, _camera.Position.Y, _camera.Position.Z);

            _figure.Draw();
        }
Esempio n. 2
0
 protected abstract void RenderWithShader(int width, int height, Light light, FigureShaderProgram shaderProgram);