void PlotCartesianWidget::initializeGL() { glcontext->makeCurrent(this); glf->glClearColor( 1, 1, 1, 1 ); glf->glDisable(GL_DEPTH_TEST); // this being a line graph, turn on line smoothing glf->glEnable( GL_LINE_SMOOTH ); glf->glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); glf->glEnable(GL_BLEND); glf->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); initializeText(); plotShader = new DGLShader( (getShaderTemplatesPath() + "Plots.vert").c_str(), (getShaderTemplatesPath() + "Plots.frag").c_str(), (getShaderTemplatesPath() + "Plots.geom").c_str()); glf->glGenVertexArrays(1,&axisVAO); glf->glGenBuffers(2, axisVBO); updateAxisVAO(); glf->glGenVertexArrays(1, &dataLineVAO); glf->glGenBuffers(1, &dataLineVBO); fWidth = float(width()*devicePixelRatio()); fHeight = float(height()*devicePixelRatio()); updateInputDataLineVAO(); }
void LikertHCI::initializeContextSpecificVars(int threadId,MinVR::WindowRef window) { //load in shaders std::map<std::string, std::string> args, dummyArgs; _shader.reset(new GLSLProgram()); _shader->compileShader(MinVR::DataFileUtils::findDataFile("tex.vert").c_str(), GLSLShader::VERTEX, dummyArgs); _shader->compileShader(MinVR::DataFileUtils::findDataFile("tex.frag").c_str(), GLSLShader::FRAGMENT, args); _shader->link(); initializeText(threadId, window); std::cout << "Likert initialization" << std::endl; }
int initialize_overlay(struct configuration *config) { int ret; text_config = initializeText(config); ret = loadFont(OVERLAY_FONT_FILENAME, &stats_font, OVERLAY_FONT_PIXEL_HEIGHT); if (ret) { log_error("Could not load overlay font %s, exiting", OVERLAY_FONT_FILENAME); return 1; } else log_info("Loaded overlay font %s", OVERLAY_FONT_FILENAME); return 0; }
void LetterHunter::initialize() { // Initizlie text objects initializeText(); initializeBullet(); }
void LikertHCI::initializeText(int threadId, MinVR::WindowRef window) { int fontNormal = FONS_INVALID; struct FONScontext* fs = nullptr; fs = glfonsCreate(512, 512, FONS_ZERO_TOPLEFT); if (fs == NULL) { BOOST_ASSERT_MSG(false, "Could not create stash."); } fontNormal = fonsAddFont(fs, "sans", MinVR::ConfigVal("RegularFontFile", "app/fonts/DroidSansMono.ttf", false).c_str()); if (fontNormal == FONS_INVALID) { BOOST_ASSERT_MSG(false, "Could not add font normal.\n"); } glUseProgram(0); glPushAttrib(GL_VIEWPORT_BIT | GL_ENABLE_BIT); GLuint textFBO; glGenFramebuffers(1, &textFBO); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, textFBO); glDrawBuffer(GL_COLOR_ATTACHMENT0); std::map<std::string, std::string> dummyArgs; std::shared_ptr<GLSLProgram> shader(new GLSLProgram()); shader->compileShader(MinVR::DataFileUtils::findDataFile("textRendering.vert").c_str(), GLSLShader::VERTEX, dummyArgs); shader->compileShader(MinVR::DataFileUtils::findDataFile("textRendering.frag").c_str(), GLSLShader::FRAGMENT, dummyArgs); shader->link(); shader->use(); glClearColor(1.0, 1.0, 1.0, 1.0); initializeText(threadId, fs, fontNormal, _maxNumLinesInQuestions, 20.0f, shader, 72.0f, _questions, "QuestionText_", _questionTextures, _questionSizes); initializeText(threadId, fs, fontNormal, _maxNumLinesInAnswers, 15.0f, shader, 35.0f, _answers, "AnswerText_", _answerTextures, _answerSizes); double windowHeight = window->getHeight(); double windowWidth = window->getWidth(); _padding = 0.05; double numAnswersPerQuestion = 7.0; _availableWidth = glm::length(offAxisCamera->getBottomRight() - offAxisCamera->getBottomLeft()) - (2*_padding); _individualSize = _availableWidth/ (numAnswersPerQuestion); glm::dvec3 start(offAxisCamera->getBottomLeft().x + _padding + _individualSize/2.0, 0.0, 0.5); glm::dvec3 spacing(_individualSize, 0.0, 0.0); for(int i=0; i < _answers.size(); i++) { double texHeight = _answerTextures[0][i]->getHeight(); // all answers are the same dimensions; double texWidth = _answerTextures[0][i]->getWidth(); double quadHeightScreen = texHeight/windowHeight; double quadWidthScreen = texWidth/windowWidth; glm::dvec3 quad = glm::abs(convertScreenToRoomCoordinates(glm::dvec2(quadWidthScreen+0.5, quadHeightScreen+0.5))); _answerHeights.push_back(quad.z); glm::dvec2 size = _answerSizes[threadId][i]; double halfWidth = _answerHeights[i] * size.x / size.y / 2.0f; double halfHeight = _answerHeights[i] / 2.0f; glm::dvec3 centerPt = start+ (double)i*spacing; glm::dvec3 low(-halfWidth, -0.001, -halfHeight); glm::dvec3 high(halfWidth, 0.001, halfHeight); AABox bounds(start + (double)i*spacing + low, start + (double)i*spacing +high); _answerBounds.push_back(bounds); } for(int i=0; i < _questions.size(); i++) { double texHeight = _questionTextures[0][i]->getHeight(); // all answers are the same dimensions; double texWidth = _questionTextures[0][i]->getWidth(); double quadHeightScreen = texHeight/windowHeight; double quadWidthScreen = texWidth/windowWidth; glm::dvec3 quad = glm::abs(convertScreenToRoomCoordinates(glm::dvec2(quadWidthScreen+0.5, quadHeightScreen+0.5))); _questionHeights.push_back(quad.z); } glfonsDelete(fs); glUseProgram(0); glBindFramebuffer(GL_DRAW_FRAMEBUFFER, 0); glDeleteFramebuffers(1, &textFBO); glPopAttrib(); // restore viewport and enabled bits glEnable(GL_TEXTURE_2D); // restore the clear color glm::dvec3 clearColor = MinVR::ConfigVal("ClearColor", glm::dvec3(0.1), false); glClearColor(clearColor.r, clearColor.g, clearColor.b, 1.0f); }