public override void SetUniform(ShaderProgram program) { if (glActiveTexture == null) { glActiveTexture = OpenGL.GetDelegateFor<OpenGL.glActiveTexture>(); } for (int i = 0; i < this.value.Length; i++) { glActiveTexture(this.value[i].ActiveTextureIndex); //OpenGL.BindTexture(OpenGL.GL_TEXTURE_2D, this.value[i].TextureId); OpenGL.BindTexture(this.value[i].target, this.value[i].TextureId); // TODO: assign the first location or last? this.Location = program.SetUniform(VarName, this.value[i].activeTextureIndex); } }
/// <summary> /// /// </summary> /// <param name="arg"></param> public void Render4Picking(RenderEventArgs arg) { if (!this.IsInitialized) { this.Initialize(); } UpdatePolygonMode(arg.PickingGeometryType); ShaderProgram program = this.Program; // 绑定shader program.Bind(); program.SetUniform("pickingBaseId", (int)this.PickingBaseId); UniformMat4 uniformmMVP4Picking = this.uniformmMVP4Picking; { mat4 projection = arg.Camera.GetProjectionMatrix(); mat4 view = arg.Camera.GetViewMatrix(); mat4 model = this.GetModelMatrix().Value; uniformmMVP4Picking.Value = projection * view * model; } uniformmMVP4Picking.SetUniform(program); PickingStateesOn(); this.vertexArrayObject.Render(arg, program); PickingStateesOff(); //if (mvpUpdated) { uniformmMVP4Picking.ResetUniform(program); } // 解绑shader program.Unbind(); }
/// <summary> /// /// </summary> /// <param name="program"></param> public override void SetUniform(ShaderProgram program) { this.Location = program.SetUniform(VarName, this.Value.Array); }
/// <summary> /// /// </summary> /// <param name="program"></param> public override void SetUniform(ShaderProgram program) { this.Location = program.SetUniform(VarName, value.x, value.y, value.z, value.w); }
public override void SetUniform(ShaderProgram program) { this.Location = program.SetUniform(VarName, value.x, value.y); }
public override void SetUniform(ShaderProgram program) { vec2 value = this.value; program.SetUniform(VarName, value.x, value.y); }
public override void SetUniform(ShaderProgram program) { program.SetUniform(VarName, value); }
/// <summary> /// /// </summary> /// <param name="program"></param> public override void SetUniform(ShaderProgram program) { this.Location = program.SetUniform(VarName, value.x ? 1 : 0, value.y ? 1 : 0, value.z ? 1 : 0); }