public void SetTextureUniform(string name, Texture2D tex) { if (_samplers.ContainsKey(name)) { int sampler = _samplers[name]; GL.ActiveTexture(TextureUnit.Texture0 + sampler); tex.BindAsTexture2D(); GL.Uniform1(GetUniformLocation(name), sampler); } }
//Load resources private bool Load() { _camera = new FreeLookCamera(Width, Height); _camera.Position = new Vector3(0, 1, 0); string data = Path.Combine(System.Windows.Forms.Application.StartupPath, "Data") + @"\"; GL.Enable(EnableCap.CullFace); _crate = new Texture2D(data + "crate001.jpg"); _blub = new Texture2D(data + "blub.png"); _gbuffer = new GBuffer(); _gbuffer.Init(Width, Height); _cube = new Cube(); _sphere = new Sphere(1f, 25, 25); _quad = new Quad(); _fsQuad = new FullscreenQuad(); _geomShader = new GeomShader(data); _pointShader = new PointLightShader(data); _flatShader = new FlatShader(data); _finalCombine = new FinalCombineShader(data); _boxes = new List<Box>(); //Setup scene boxes _boxes.Add(new Box(new Vector3(0, 1f, 0), new Vector3(0, 0, 0), new Vector3(1, 1f, 1))); _boxes.Add(new Box(new Vector3(0, -1f, 0), new Vector3(0, 0, 0), new Vector3(10, 1f, 10))); //Setup lights _pointLights = new List<PointLight>(); _pointLights.Add(new PointLight(new Vector3(0, 2.5f, 0), 10, new Vector3(1, 1, 1), 1)); _pointLights.Add(new PointLight(new Vector3(3, 2.5f, 3), 5, new Vector3(0, 0, 1), 2)); return true; }