void CubeBlock::DrawWhiteBorders(GLRenderingContext *rc, bool whiteBorders) { if (whiteBorders) { borderAmbient = Color3f(0.8f); borderDiffuse = Color3f(0.85f); } else { borderAmbient = Color3f(0.0f); borderDiffuse = Color3f(0.35f); } ProgramObject *p = rc->GetCurProgram(); p->Uniform("BorderMaterial.ambient", 1, borderAmbient.data); p->Uniform("BorderMaterial.diffuse", 1, borderDiffuse.data); }
void GLRC_Text2DModule::Initialize(GLRenderingContext *rc) { if (GLEW_ARB_shader_objects) { prog = new ProgramObject(rc); Shader vshader(GL_VERTEX_SHADER); Shader fshader(GL_FRAGMENT_SHADER); vshader.CompileSource(shaderSource[0]); fshader.CompileSource(shaderSource[1]); prog->AttachShader(vshader); prog->AttachShader(fshader); prog->Link(); prog->Uniform("ColorMap", 0); } else prog = NULL; }
void CubeBlock::Render() { rc->PushModelView(); this->ApplyTransform(); if (!GLEW_ARB_shader_objects) { RenderFixed(); rc->PopModelView(); return; } ProgramObject *program = rc->GetCurProgram(); for (int i = 0; i < 6; i++) { if (!fRenderPickMode) { Color3f *c = GetSideColor(i); if (c == &borderDiffuse) program->Uniform("RenderBackSide", 1); program->Uniform("Mode", 0); program->Uniform("FrontMaterial.ambient", 1, Color3f(1).data); program->Uniform("FrontMaterial.diffuse", 1, c->data); program->Uniform("FrontMaterial.shininess", 70); rc->PushModelView(); rc->MultModelView(face_transform[i]); face->Draw(); rc->PopModelView(); if (c == &borderDiffuse) program->Uniform("RenderBackSide", 0); } else { int id = pickId | (1 << (i+10)); GLubyte r = id & 0xff; GLubyte g = id >> 8; program->Uniform("Mode", 2); program->Uniform("FrontMaterial.diffuse", r/255.0f, g/255.0f, 1/255.0f); rc->PushModelView(); rc->MultModelView(face_transform[i]); face_pickMode->Draw(); rc->PopModelView(); } } if (!fRenderPickMode) { program->Uniform("Mode", 1); program->Uniform("FrontMaterial.ambient", 1, borderAmbient.data); program->Uniform("FrontMaterial.diffuse", 1, borderDiffuse.data); if (fUseReducedModel) { program->Uniform("UseSpecularMap", 0); program->Uniform("FrontMaterial.shininess", 70); border_reduced->Draw(); } else { program->Uniform("UseSpecularMap", 1); program->Uniform("FrontMaterial.shininess", 200); border->Draw(); } } rc->PopModelView(); }