void UiRenderer::render(Renderer &renderer) { glDepthMask(GL_FALSE); renderHand(renderer); int vpWidth, vpHeight; renderer.getViewport()->getSize(&vpWidth, &vpHeight); Camera camera; camera.setOrthographic(); camera.setBounds(0, vpWidth, 0, vpHeight); Matrix4f crosshairMtx; crosshairMtx.translate(Vector3f(vpWidth/2, vpHeight/2, -10)); crosshairMtx.scale(Vector3f(80, 80, 1)); Matrix4f widget; widget.translate(Vector3f(vpWidth/2+12, vpHeight-20, -2)); widget.scale(Vector3f(380, 80, 1)); const Mesh &mesh = MeshLoader::getMesh("GUIElement.obj"); const Material &mat = MaterialLoader::fromTexture("Reticle.png"); Shader &sh = ShaderLoader::getShader("unshaded.frag"); renderer.renderMesh(camera, sh, crosshairMtx, mesh, mat); // Title renderer.setFont("Pacaya", 1.5f); renderer.renderText(camera, "GlPortal", Vector3f(25, vpHeight - 75, -20)); // FPS counter renderer.setFont("Pacaya", 0.5f); renderer.renderText(camera, std::string("FPS: ") + std::to_string(Game::fps.getFps()), Vector3f(10, vpHeight - 25, -20)); if (renderer.getScene()->screen->enabled) { renderScreen(renderer); } glDepthMask(GL_TRUE); }
void ViveControllerManager::updateRendering(RenderArgs* args, render::ScenePointer scene, render::PendingChanges pendingChanges) { PerformanceTimer perfTimer("ViveControllerManager::updateRendering"); if (_modelLoaded) { //auto controllerPayload = new render::Payload<ViveControllerManager>(this); //auto controllerPayloadPointer = ViveControllerManager::PayloadPointer(controllerPayload); //if (_leftHandRenderID == 0) { // _leftHandRenderID = scene->allocateID(); // pendingChanges.resetItem(_leftHandRenderID, controllerPayloadPointer); //} //pendingChanges.updateItem(_leftHandRenderID, ); UserInputMapper::PoseValue leftHand = _poseStateMap[makeInput(JointChannel::LEFT_HAND).getChannel()]; UserInputMapper::PoseValue rightHand = _poseStateMap[makeInput(JointChannel::RIGHT_HAND).getChannel()]; gpu::Batch batch; auto geometryCache = DependencyManager::get<GeometryCache>(); geometryCache->useSimpleDrawPipeline(batch); DependencyManager::get<DeferredLightingEffect>()->bindSimpleProgram(batch, true); auto mesh = _modelGeometry.getMesh(); batch.setInputFormat(mesh->getVertexFormat()); //batch._glBindTexture(GL_TEXTURE_2D, _uexture); if (leftHand.isValid()) { renderHand(leftHand, batch, LEFT_HAND); } if (rightHand.isValid()) { renderHand(rightHand, batch, RIGHT_HAND); } args->_context->syncCache(); args->_context->render(batch); } }