App::App(const GApp::Settings& settings, const std::string& file) : GApp(settings), viewer(NULL), filename(file) { m_debugTextColor = Color3::black(); m_debugTextOutlineColor = Color3::white(); shadowMap = ShadowMap::create("Shadow Map", 2048); shadowMap->setPolygonOffset(2.0, 2.0); setDesiredFrameRate(60); catchCommonExceptions = false; }
//-------------------------------------------------------------- bool ofxCLEye::initGrabber(int w, int h, int deviceID, int frameRate, bool useTexture, bool useGrayscale, bool useThread){ setDeviceID(deviceID); setDesiredFrameRate(frameRate); setUseThread(useThread); setUseGrayscale(useGrayscale); setUseTexture(useTexture); if(w == 640 && h == 480){ resolution = CLEYE_VGA; } else if(w == 320 && h == 240){ resolution = CLEYE_QVGA; } else{ ofLogWarning(OFX_CLEYE_MODULE_NAME) << "initGrabber(): selected resolution " + ofToString(w) + "x" + ofToString(h) + " is not available with ofxCLEye"; ofLogWarning(OFX_CLEYE_MODULE_NAME) << "initGrabber(): using 640x480 instead"; resolution = CLEYE_VGA; } if(desiredFrameRate < 0){ ofLogWarning(OFX_CLEYE_MODULE_NAME) << "initGrabber(): selected framerate" + ofToString(desiredFrameRate) + "is not available with ofxCLeye"; ofLogWarning(OFX_CLEYE_MODULE_NAME) << "initGrabber(): using 60fps instead"; desiredFrameRate = 60; } GUID guid = getDeviceGUID(requestedDeviceID); cam = CLEyeCreateCamera(guid, colorMode, resolution, desiredFrameRate); if(cam == NULL){ ofLogError(OFX_CLEYE_MODULE_NAME) << "initGrabber(): error when creating instance of CLEyeCamera."; return false; } initialized = CLEyeCameraStart(cam); if(!initialized){ ofLogError(OFX_CLEYE_MODULE_NAME) << "initGrabber(): can't start the CLEye camera."; return false; } CLEyeCameraGetFrameDimensions(cam, width, height); // oF code style says to not use ternary operators, but sometimes they are really convenient. // Native color image from camera is RGBA (4 channels) viPixels = new unsigned char[width * height * ((colorMode == CLEYE_MONO_PROCESSED) ? 1 : 4)]; pixels.allocate(width, height, (colorMode == CLEYE_MONO_PROCESSED) ? 1 : 3); pixels.set(0); if(usingTexture){ int glFormat = (colorMode == CLEYE_MONO_PROCESSED) ? GL_LUMINANCE : GL_RGB; texture.allocate(width, height, glFormat); texture.loadData((unsigned char *)pixels.getPixels(), width, height, glFormat); } if(usingThread){ startThread(true); ofLogVerbose(OFX_CLEYE_MODULE_NAME) << "initGrabber(): thread started."; } return true; }