public void Update(MaterialBlock materialBlock) { GL.UseProgram(programNumber); GL.Uniform4(diffuseColorUnif, materialBlock.diffuseColor); GL.Uniform4(specularColorUnif, materialBlock.specularColor); GL.Uniform1(specularShininessUnif, materialBlock.specularShininess); GL.UseProgram(0); }
//Called after the window and OpenGL are initialized. Called exactly once, before the main loop. protected override void init() { g_fzNear = 1.0f; g_fzFar = 1000.0f; InitializeGInitialViewData(); InitializeGViewScale(); g_viewPole = new ViewPole(g_initialViewData, g_viewScale, MouseButtons.MB_LEFT_BTN); g_objtPole = new ObjectPole(g_initialObjectData, (float)(90.0f / 250.0f), MouseButtons.MB_RIGHT_BTN, g_viewPole); InitializePrograms(); try { string XmlFilesDirectory = GlsTutorialsClass.ProjectDirectory + @"/XmlFilesForMeshes"; Stream Infinity = File.OpenRead(XmlFilesDirectory + @"/infinity.xml"); g_pObjectMesh = new Mesh(Infinity); Stream UnitCube = File.OpenRead(XmlFilesDirectory + @"/unitcubebasictexture.xml"); g_pCubeMesh = new Mesh(UnitCube); } catch(Exception ex) { MessageBox.Show("Error creating meshes " + ex.ToString()); throw; } SetupDepthAndCull(); MatrixStack.rightMultiply = false; reshape(); GL.Enable(EnableCap.Texture1D); //Setup our Uniform Buffers MaterialBlock mtl = new MaterialBlock(); mtl.diffuseColor = new Vector4(1.0f, 0.673f, 0.043f, 1.0f); mtl.specularColor = new Vector4(1.0f, 0.673f, 0.043f, 1.0f) * 0.4f; mtl.specularShininess = g_specularShininess; g_litShaderProg.materialBlock.Update(mtl); g_litTextureProg.materialBlock.Update(mtl); CreateGaussianTextures(); }
private void updateProgram() { ballProgram = Programs.AddProgram(VertexShaders.HDR_PCN2, FragmentShaders.DiffuseSpecularHDR); ball.SetProgram(ballProgram); Programs.SetUpLightBlock(ballProgram, numberOfLights); LightBlock lightBlock = new LightBlock(numberOfLights); lightBlock.ambientIntensity = new Vector4(0.1f, 0.1f, 0.1f, 1.0f); lightBlock.lightAttenuation = 0.1f; lightBlock.maxIntensity = 0.5f; lightBlock.lights[0].cameraSpaceLightPos = new Vector4(0.5f, 0.0f, 0.0f, 1f); lightBlock.lights[0].lightIntensity = new Vector4(0.0f, 0.0f, 0.6f, 1.0f); lightBlock.lights[1].cameraSpaceLightPos = new Vector4(0.0f, 0.5f, 1.0f, 1f); lightBlock.lights[1].lightIntensity = new Vector4(0.4f, 0.0f, 0.0f, 1.0f); Programs.UpdateLightBlock(ballProgram, lightBlock); MaterialBlock materialBlock = new MaterialBlock(); materialBlock.diffuseColor = new Vector4(1.0f, 0.673f, 0.043f, 1.0f); materialBlock.specularColor = new Vector4(1.0f, 0.673f, 0.043f, 1.0f) * 0.4f; materialBlock.specularShininess = 0.2f; Programs.SetUpMaterialBlock(ballProgram); Programs.UpdateMaterialBlock(ballProgram, materialBlock); Programs.SetNormalModelToCameraMatrix(ballProgram, Matrix3.Identity); }
public override String keyboard(Keys keyCode, int x, int y) { StringBuilder result = new StringBuilder(); result.AppendLine(keyCode.ToString()); if (displayOptions) { SetDisplayOptions(keyCode); } else { switch (keyCode) { case Keys.Enter: displayOptions = true; break; case Keys.D1: break; case Keys.D2: break; case Keys.D3: break; case Keys.D4: break; case Keys.D5: break; case Keys.D6: break; case Keys.D7: break; case Keys.D8: break; case Keys.D9: break; case Keys.D0: break; case Keys.A: ballProgram = Programs.AddProgram(VertexShaders.HDR_PCN2, FragmentShaders.DiffuseSpecularHDR); ball.SetProgram(ballProgram); Programs.SetUpLightBlock(ballProgram, numberOfLights); LightBlock lightBlock = new LightBlock(numberOfLights); lightBlock.ambientIntensity = new Vector4(0.1f, 0.1f, 0.1f, 1.0f); lightBlock.lightAttenuation = 0.1f; lightBlock.maxIntensity = 0.5f; lightBlock.lights[0].cameraSpaceLightPos = new Vector4(0.5f, 0.0f, 0.0f, 1f); lightBlock.lights[0].lightIntensity = new Vector4(0.0f, 0.0f, 0.6f, 1.0f); lightBlock.lights[1].cameraSpaceLightPos = new Vector4(0.0f, 0.5f, 1.0f, 1f); lightBlock.lights[1].lightIntensity = new Vector4(0.4f, 0.0f, 0.0f, 1.0f); Programs.UpdateLightBlock(ballProgram, lightBlock); MaterialBlock materialBlock = new MaterialBlock(); materialBlock.diffuseColor = new Vector4(1.0f, 0.673f, 0.043f, 1.0f); materialBlock.specularColor = new Vector4(1.0f, 0.673f, 0.043f, 1.0f) * 0.4f; materialBlock.specularShininess = 0.2f; Programs.SetUpMaterialBlock(ballProgram); Programs.UpdateMaterialBlock(ballProgram, materialBlock); Programs.SetNormalModelToCameraMatrix(ballProgram, Matrix3.Identity); break; case Keys.B: break; case Keys.C: break; case Keys.D: break; case Keys.F: break; case Keys.I: result.AppendLine("g_fzNear = " + g_fzNear.ToString()); result.AppendLine("g_fzFar = " + g_fzFar.ToString()); result.AppendLine("perspectiveAngle = " + perspectiveAngle.ToString()); result.AppendLine("textureRotation = " + textureRotation.ToString()); result.AppendLine("BallPosition = " + ball.GetOffset().ToString()); result.AppendLine("BallLimits = " + ball.GetLimits()); break; case Keys.P: newPerspectiveAngle = perspectiveAngle + 5f; if (newPerspectiveAngle > 170f) { newPerspectiveAngle = 30f; } result.AppendLine("newPerspectiveAngle = " + newPerspectiveAngle.ToString()); break; case Keys.R: if (rotateWorld) { rotateWorld = false; result.AppendLine("rotateWorld disabled"); } else { rotateWorld = true; result.AppendLine("rotateWorld enabled"); } break; } } return result.ToString(); }
public static void UpdateMaterialBlock(int program, MaterialBlock mb) { ActivePrograms[program].UpdateMaterialBlock(mb); }