
OpenTK and material
Posted Friday, 6 January, 2012 - 08:28 by StMarkI was puzzled some time why I did not see any material and I experimented a little
bit, so the whole issue was the lack of light, so "Fiat lux" and alas there was it.
I just used the example of the opentk with these nices quads spinning around (display list)
so instead of
GL.Color3(0.3 + 0.7 * c * c, 0.3 + 1.4 * c * c, 0.7 - 0.7 * c * c);
just use
GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Ambient,new Color4(0.3f + 0.7f * c * c, 0.3f + 1.4f * c * c, 0.7f - 0.7f * c * c, 1.0f)); GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Diffuse, new Color4(0.3f + 0.7f * c * c, 0.3f + 1.4f * c * c, 0.7f - 0.7f * c * c, 1.0f)); GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Specular, new Color4(0.3f + 0.7f * c * c, 0.3f + 1.4f * c * c, 0.7f - 0.7f * c * c, 1.0f)); GL.Material(MaterialFace.FrontAndBack, MaterialParameter.Emission, new Color4(0.3f + 0.7f * c * c, 0.3f + 1.4f * c * c, 0.7f - 0.7f * c * c, 1.0f));
But the color of the quads is now yellow instead of blue which was the sample code. That's the next issue to solve
Here's the light
float diffuseLight = 0.6f; float ambientLight = 1.0f; float specularLight = 0.7f; float[] lightKa = { ambientLight, ambientLight, ambientLight, 1.0f }; float[] lightKd = { diffuseLight, diffuseLight, diffuseLight, 1.0f }; float[] lightKs = { specularLight, specularLight, specularLight, 1.0f }; GL.Light(LightName.Light0, LightParameter.Ambient, lightKa); GL.Light(LightName.Light0, LightParameter.Diffuse, lightKd); GL.Light(LightName.Light0, LightParameter.Specular, lightKs); float[] lightPos = { 0.0f, 10.0f, -10.0f, 1.0f }; GL.Light(LightName.Light0, LightParameter.Position, lightPos); GL.Enable(EnableCap.Light0); GL.Enable(EnableCap.Lighting);
- StMark's blog
- Login or register to post comments

