本文整理汇总了C++中gl::Light类的典型用法代码示例。如果您正苦于以下问题:C++ Light类的具体用法?C++ Light怎么用?C++ Light使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Light类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: keyDown
void ShadowMapSample::keyDown( ci::app::KeyEvent event )
{
switch( event.getChar() ) {
case ' ' :
mPaused = ! mPaused;
break;
case 'r': { // create a random camera position
vec3 eyeVec = Rand::randVec3f().normalized() * 6.0f;
if( eyeVec.y < 0 ) eyeVec.y = -eyeVec.y;
mCamera->lookAt( eyeVec, vec3(0,-2.5,0) );
mLight->update( *mCamera );
}
break;
case 'f':
setFullScreen( ! isFullScreen() );
break;
case 'l': { // create a random light position
vec3 lightPos = Rand::randVec3f().normalized() * 4.0f;
if( lightPos.y < 0 ) lightPos.y = -lightPos.y;
mLight->lookAt( lightPos, vec3::zero() );
mLight->update( *mCamera );
}
break;
case 'c':
mLookThroughCamera = ! mLookThroughCamera;
break;
case 'd':
mDrawDepthMap = ! mDrawDepthMap;
break;
}
}
开发者ID:ChristophPacher,项目名称:Cinder,代码行数:31,代码来源:main.cpp
示例2: renderSceneToFBO
/*
* @Description: render scene to FBO texture
* @param: none
* @return: none
*/
void Base_ThreeD_ProjectApp::renderSceneToFBO()
{
mScreenSpace1.bindFramebuffer();
glClearColor( 0.5f, 0.5f, 0.5f, 1 );
glClearDepth(1.0f);
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
if (mLightingOn)
glDisable(GL_LIGHTING);
glColor3f( 1.0f, 1.0f, 0.1f );
gl::drawFrustum( mLightRef->getShadowCamera() );
glColor3f( 1.0f, 1.0f, 1.0f );
if (mLightingOn)
glEnable(GL_LIGHTING);
mEye = mCam->getEyePoint();
mEye.normalize();
mEye = mEye * abs(mCameraDistance);
mCam->lookAt( mEye, mCenter, mUp );
gl::setMatrices( *mCam );
mLight->update( *mCam );
drawTestObjects();
mScreenSpace1.unbindFramebuffer();
glDisable(GL_LIGHTING);
}
开发者ID:PlumCantaloupe,项目名称:SSAO-Shader,代码行数:34,代码来源:Base_ThreeD_ProjectApp.cpp
示例3: Color
void BrainbowApp::scene2(){
// cout << "x: " << scaledX << endl;
// cout << "y: " << scaledY << endl;
// cout << "z: " << scaledZ << endl;
if (!newLight){
mCloud.clear();
mLight->setAmbient( Color( 0.0f, 0.0f, 0.0f ) );
mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) );
mLight->setSpecular( Color( 1.0f, 1.0f, 1.0f ) );
mLight->setShadowParams( 60.0f, 0.5f, 8.0f );
newLight = true;
cubeTimer.start();
}
if (scaledZ < 350 && targets.size() < 5 && cubeTimer.getSeconds() > 2){
addTarget(Vec3f (scaledX, scaledY, scaledZ));
cubeTimer = 0;
cubeTimer.start();
}
if (cubes.size() >= 45){
if ( !newCloud){
mCloud = SphereCloud(0, 500);
newCloud = true;
}
if (newCloud && mCloud.getNumber() < 300 && gongTimer.getSeconds() > .5){
gongTimer = 0;
gongTimer.start();
mCloud.addSphere();
mAudio.playTraz("bubble");
}
}
}
开发者ID:JAGormley,项目名称:Brainbow,代码行数:34,代码来源:BrainbowApp.cpp
示例4: CameraPersp
void triMeshApp::setup(){
// cam, lights material
mCam = new CameraPersp(getWindowWidth(), getWindowHeight(), 45.0f);
mCam->lookAt( Vec3f(300, 700, -600), Vec3f(0,0,0) );
mCam->setPerspective( 60.0f, getWindowAspectRatio(), 0.1f, 5000.0f );
yrot = 0;
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHTING);
glEnable(GL_NORMALIZE);
mLight = new gl::Light(gl::Light::DIRECTIONAL, 0);
mLight->setDirection( Vec3f(0,0.1,0.3).normalized());
mLight->setAmbient( Color( 0.2f, 0.2f, 0.2f ) );
mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) );
mLight->update( *mCam );
mLight->enable();
mMaterial1.setSpecular( Color(0.5,0.5,0.5) );
mMaterial1.setDiffuse( Color( 0.0f, 1.0f, 0.0f ) );
mMaterial1.setAmbient( Color( 0.1f, 0.1f, 0.1f ) );
mMaterial1.setShininess( 20.0f );
mMaterial1.apply();
mMaterial2.setSpecular( Color(0,0,0) );
mMaterial2.setDiffuse( Color(1,0,0) );
mMaterial2.setAmbient( Color( 0.4f, 0.0f, 0.0f ) );
mMaterial2.setEmission(Color(1,0,0));
initPhysics();
ObjLoader loader( loadResource( RES_LOSPHERE )->createStream() );
loader.load( &mConvex );
mVBO = gl::VboMesh( mConvex );
ObjLoader loader2( loadResource( RES_TORUS )->createStream() );
loader2.load( &mConcave );
mVBOTerrain = gl::VboMesh( mConcave );
btConvexHullShape* shape = bullet::createConvexHullShape(mConvex, Vec3f(CONVEX_SCALE, CONVEX_SCALE, CONVEX_SCALE));
m_convexRigidBody = bullet::createConvexHullBody(m_dynamicsWorld, shape, Vec3f(0,500,0), 10000);
btBvhTriangleMeshShape* concaveShape = bullet::createStaticConcaveMeshShape(mConcave, Vec3f(CONCAVE_SCALE, CONCAVE_SCALE, CONCAVE_SCALE), 5.0f);
m_concaveRigidBody = bullet::createStaticRigidBody(m_dynamicsWorld, concaveShape, Vec3f(0,255,0));
m_hfImage = loadImage(loadResource(RES_HEIGHTMAP));
m_hfChannel = new Channel32f(m_hfImage);
// note that HF_HEIGHTSCALE is ignored since we are using float data. we adjust the y-scale with the local scaling parameter only!
btHeightfieldTerrainShape* hfShape = bullet::createHeightfieldTerrainShape(m_hfChannel, 64, 64, HF_HEIGHTSCALE, -500, 500, 1, Vec3f(HF_SCALE,HF_SCALEY,HF_SCALE));
m_hfRigidBody = bullet::createStaticRigidBody(m_dynamicsWorld, hfShape, Vec3f(0,0,0));
gl::VboMesh::Layout layout;
layout.setDynamicColorsRGB();
layout.setDynamicPositions();
mVBOHeightfield = gl::VboMesh( m_hfImage.getWidth() * m_hfImage.getHeight(), 0, layout, GL_POINTS );
updateData( );
}
开发者ID:jdduke,项目名称:Cinder,代码行数:60,代码来源:triMeshApp.cpp
示例5: updateShadowMap
void ShadowMapSample::updateShadowMap()
{
mDepthFbo.bindFramebuffer();
glPolygonOffset( 1.0f, 1.0f );
glEnable( GL_POLYGON_OFFSET_FILL );
glClear( GL_DEPTH_BUFFER_BIT );
glPushAttrib( GL_VIEWPORT_BIT );
glViewport( 0, 0, SHADOW_MAP_RESOLUTION, SHADOW_MAP_RESOLUTION );
gl::pushMatrices();
mLight->setShadowRenderMatrices();
mBackboard.draw();
mTorus.draw();
gl::drawCube( vec3::zero(), vec3( 1, 1, 1 ) );
gl::popMatrices();
glPopAttrib();
glDisable( GL_POLYGON_OFFSET_FILL );
mDepthFbo.unbindFramebuffer();
}
开发者ID:ChristophPacher,项目名称:Cinder,代码行数:26,代码来源:main.cpp
示例6: updateShadowMap
void BrainbowApp::updateShadowMap()
{
mDepthFbo.bindFramebuffer();
glPolygonOffset( 1.0f, 1.0f );
glEnable( GL_POLYGON_OFFSET_FILL );
glClear( GL_DEPTH_BUFFER_BIT );
glPushAttrib( GL_VIEWPORT_BIT );
glViewport( 0, 0, SHADOW_MAP_RESOLUTION, SHADOW_MAP_RESOLUTION );
gl::pushMatrices();
mLight->setShadowRenderMatrices();
mDisc.draw();
// mCyl.draw();
// mCur.draw();
mDiamond.draw();
gl::popMatrices();
glPopAttrib();
glDisable( GL_POLYGON_OFFSET_FILL );
mDepthFbo.unbindFramebuffer();
}
开发者ID:JAGormley,项目名称:Brainbow,代码行数:28,代码来源:BrainbowApp.cpp
示例7: draw
void ShadowMapSample::draw()
{
gl::clear();
gl::enableDepthWrite();
glEnable( GL_LIGHTING );
updateShadowMap();
gl::enableDepthRead();
glEnable( GL_TEXTURE_2D );
mDepthFbo.bindDepthTexture();
mShader.bind();
mShader.uniform( "shadowTransMatrix", mLight->getShadowTransformationMatrix( *mCamera ) );
if( mLookThroughCamera )
gl::setMatrices( *mCamera );
else
gl::setMatrices( mLight->getShadowCamera() );
mLight->update( *mCamera );
glPushMatrix();
mBackboard.draw();
mTorus.draw();
gl::drawCube( vec3::zero(), vec3( 1, 1, 1 ) );
glPopMatrix();
mShader.unbind();
mDepthFbo.unbindTexture();
// Draw the lighting frustum unless we're looking through it
if( mLookThroughCamera ) {
glDisable( GL_LIGHTING );
glColor3f( 1.0f, 1.0f, 0.1f );
gl::drawFrustum( mLight->getShadowCamera() );
}
if( mDrawDepthMap ) { // there are faster ways to achieve this, but this is a handy way to see the depth map
gl::setMatricesWindow( getWindowSize() );
Surface32f shadowMapSurface( mDepthFbo.getDepthTexture() );
ip::hdrNormalize( &shadowMapSurface );
gl::color( Color::white() );
gl::draw( gl::Texture( shadowMapSurface ), Rectf( 0, 0, 128, 128 ) );
}
}
开发者ID:ChristophPacher,项目名称:Cinder,代码行数:44,代码来源:main.cpp
示例8: draw
void LocationApp::draw()
{
// Clear the screen
gl::enableDepthRead();
gl::enableDepthWrite();
gl::clear( Color::gray( 0.843f ) );
CameraPersp camera;
camera.setPerspective( 60.0f, getWindowAspectRatio(), 0.01f, 10.0f );
camera.lookAt( Vec3f( 0.0f, 0.0f, 3.0f ), Vec3f::zero() );
gl::setMatrices( camera );
mLight->update( camera );
// Rotate the globe
gl::multModelView( Quatf(Vec3f::yAxis(), mRotationAngle ).normalized() );
// Draw the globe with shading. Rotate it 90 degrees on
// its Y axis to line up the texture with the location
gl::color( ColorAf::white() );
gl::enable( GL_LIGHTING );
mTexture.bind( 0 );
gl::pushMatrices();
gl::rotate( Vec3f( 0.0f, 90.0f, 0.0f ) );
gl::drawSphere( Vec3f::zero(), 1.0f, 32 );
gl::popMatrices();
mTexture.unbind();
gl::disable( GL_LIGHTING );
// Draw location
gl::color( ColorAf( 1.0f, 0.2f, 0.18f, 0.667f ) );
gl::drawSphere( mLocation, mDotRadius, 32 );
////////////////////////////////////////////////////
#if defined( CINDER_COCOA_TOUCH )
gl::setMatricesWindow( getWindowSize() );
gl::enableDepthRead( false );
gl::enableDepthWrite( false );
// Plot arrow position
float radius = 256.0f;
float rotation = toRadians( mHeading ) - (float)M_PI * 0.5f;
float x = math<float>::cos( rotation );
float y = math<float>::sin( rotation );
Vec2f position = getWindowCenter() + Vec2f( x, y ) * radius;
gl::translate( position );
gl::rotate( Vec3f( 0.0f, 0.0f, -mHeading ) );
gl::translate( position * -1.0f );
gl::translate( position );
gl::color( Colorf( 0, 0, 1 ) );
gl::drawSolid( mArrow );
#endif
}
开发者ID:asdlei00,项目名称:Cinder,代码行数:54,代码来源:LocationManagerApp.cpp
示例9: getAssetPath
void SpawnObjectApp::setup()
{
mFixtures = Fixture::loadFixtures( getAssetPath("fixtures_001.csv") ); // load CSV fixtures file
mFixtureMesh = Fixture::loadObj( getAssetPath("sphere.obj") ); // load fixture mesh
mVenueMesh = Fixture::loadObj( getAssetPath("piano2.obj") ); // load venue mesh
mFadeIn = 0.5f;
mFadeOut = 0.1f;
mSpeed = 0.2f;
mRadius = 1.5f;
mPointsN = 8;
mDeg = 3;
mModule = SpawnModule::create(); // create module
mParams = params::InterfaceGl::create( "Params", Vec2i( 200, 240 ) ); // Gui
mParams->addParam( "Fade IN", &mFadeIn , "min=0.001 max=1.0 step=0.001" );
mParams->addParam( "Fade OUT", &mFadeOut , "min=0.001 max=1.0 step=0.001" );
mParams->addSeparator();
mParams->addParam( "Speed", &mSpeed , "min=0.001 max=10.0 step=0.001" );
mParams->addParam( "Radius", &mRadius , "min=0.1 max=15.0 step=0.1" );
mParams->addParam( "Points N", &mPointsN , "min=2 max=100 step=1" );
mParams->addParam( "Deg", &mDeg , "min=1 max=10 step=1" );
ci::CameraPersp initialCam; // Initialise camera
initialCam.setPerspective( 45.0f, ci::app::getWindowAspectRatio(), 0.1, 3000 );
mMayaCam = MayaCamUI( initialCam );
// Set up light
mLight = new gl::Light( gl::Light::DIRECTIONAL, 0 );
mLight->setDirection( Vec3f( 0.0f, 0.1f, 0.3f ).normalized() );
mLight->setAmbient( ColorAf::gray( 0.843f ) );
mLight->setDiffuse( ColorAf( 1.0f, 1.0f, 1.0f, 1.0f ) );
mLight->enable();
// create a path
mModule->createPath( mPointsN, mDeg, mRadius );
}
开发者ID:q-depot,项目名称:CircleOfLightWorkshop,代码行数:41,代码来源:SpawnObjectApp.cpp
示例10: timeline
void LocationApp::setup()
{
// Define properties
mHeading = 0.0f;
timeline().apply( &mRotationAngle, 0.0f, (float)(2 * M_PI), 8.0f ).loop();
timeline().apply( &mDotRadius, 0.0f, 0.1f, 0.5f ).loop();
LocationManager::enable();
LocationManager::getSignalLocationChanged().connect(
std::bind( &LocationApp::locationChanged, this, std::_1 ) );
#if defined( CINDER_COCOA_TOUCH )
LocationManager::getSignalHeadingChanged().connect(
std::bind( &LocationApp::headingChanged, this, std::_1 ) );
#endif
// Load globe texture,
setFrameRate( 60.0f );
mTexture = gl::Texture( loadImage( loadResource( RES_EARTH_JPG ) ) );
mTexture.setFlipped( true );
// Set up view
gl::enable( GL_TEXTURE_2D );
gl::enableAlphaBlending();
// Set up light
mLight = new gl::Light( gl::Light::DIRECTIONAL, 0 );
mLight->setDirection( Vec3f( 0.0f, 0.1f, 0.3f ).normalized() );
mLight->setAmbient( ColorAf::gray( 0.843f ) );
mLight->setDiffuse( ColorAf( 1.0f, 1.0f, 1.0f, 1.0f ) );
mLight->enable();
// Build the heading arrow
float size = 80.0f;
mArrow.moveTo( Vec2f( 0.0f, -size * 0.5f ) );
mArrow.lineTo( Vec2f( size * 0.5f, size * 0.5f ) );
mArrow.lineTo( Vec2f( 0.0f, size * 0.25f ) );
mArrow.lineTo( Vec2f( -size * 0.5f, size * 0.5f ) );
mArrow.close();
}
开发者ID:asdlei00,项目名称:Cinder,代码行数:39,代码来源:LocationManagerApp.cpp
示例11:
unsigned int GL::LightHandler::AddLight(const GL::Light& light) {
if (light.GetTTL() == 0 || light.GetRadius() <= 0.0f) { return -1U; }
if (light.GetIntensityWeight().SqLength() <= 0.01f) { return -1U; }
if (lights.size() >= maxLights || lightIDs.empty()) {
unsigned int minPriorityValue = light.GetPriority();
unsigned int minPriorityHandle = -1U;
for (std::map<unsigned int, GL::Light>::const_iterator it = lights.begin(); it != lights.end(); ++it) {
const GL::Light& lgt = it->second;
if (lgt.GetPriority() < minPriorityValue) {
minPriorityValue = lgt.GetPriority();
minPriorityHandle = it->first;
}
}
if (minPriorityHandle != -1U) {
lightIntensityWeight -= lights[minPriorityHandle].GetIntensityWeight();
lightIDs.push_back(lights[minPriorityHandle].GetID());
lights.erase(minPriorityHandle);
} else {
// no available light to replace
return -1U;
}
}
lights[lightHandle] = light;
lights[lightHandle].SetID(lightIDs.front());
lights[lightHandle].SetRelativeTime(0);
lights[lightHandle].SetAbsoluteTime(gs->frameNum);
lightIntensityWeight += light.GetIntensityWeight();
lightIDs.pop_front();
return (lightHandle++);
}
开发者ID:304471720,项目名称:spring,代码行数:37,代码来源:LightHandler.cpp
示例12: glPolygonOffset
void ShadowMapSample::setup()
{
glPolygonOffset( 1.0f, 1.0f );
glEnable( GL_LIGHTING );
glEnable( GL_DEPTH_TEST );
mPaused = false;
mLookThroughCamera = true;
mDrawDepthMap = false;
mCamera = new CameraPersp( getWindowWidth(), getWindowHeight(), 45.0f );
mCamera->lookAt( vec3( 5, 5, 5 ), vec3( 0, 0, 0 ) );
mCamera->setPerspective( 45.0f, getWindowAspectRatio(), 0.1f, 100.0f );
mLight = new gl::Light( gl::Light::POINT, 0 );
mLight->lookAt( vec3( 1, 5, 1 ), vec3( 0, 0, 0 ) );
mLight->setAmbient( Color( 0.3f, 0.3f, 0.3f ) );
mLight->setDiffuse( Color( 0.5f, 0.5f, 0.5f ) );
mLight->setSpecular( Color( 0.5f, 0.5f, 0.5f ) );
mLight->setShadowParams( 60.0f, 0.5f, 8.0f );
mLight->update( *mCamera );
mLight->enable();
gl::Material torusMaterial;
torusMaterial.setSpecular( BLUE );
torusMaterial.setDiffuse( BLUE );
torusMaterial.setAmbient( Color( 0.1f, 0.1f, 0.1f ) );
torusMaterial.setShininess( 25.0f );
gl::Material backboardMaterial;
backboardMaterial.setAmbient( RED );
backboardMaterial.setDiffuse( RED );
backboardMaterial.setShininess( 1.0f );
initShadowMap();
mTorus = gl::DisplayList( GL_COMPILE );
mTorus.newList();
gl::drawTorus( 1.0f, 0.3f, 32, 64 );
mTorus.endList();
mTorus.setMaterial( torusMaterial );
mBackboard = gl::DisplayList( GL_COMPILE );
mBackboard.newList();
gl::drawCube( vec3( 0.0f, -2.5f, 0.0f ), vec3( 5.0f, 0.1f, 5.0f ) );
mBackboard.endList();
mBackboard.setMaterial( backboardMaterial );
mShader = gl::GlslProg( loadResource( RES_SHADOWMAP_VERT ), loadResource( RES_SHADOWMAP_FRAG ) );
mShader.bind();
mShader.uniform( "depthTexture", 0 );
}
开发者ID:ChristophPacher,项目名称:Cinder,代码行数:52,代码来源:main.cpp
示例13: CameraPersp
void winBodiesApp::setup(){
// cam, lights material
mCam = new CameraPersp(getWindowWidth(), getWindowHeight(), 45.0f);
mCam->lookAt( Vec3f(100, 400, -400), Vec3f(0,0,0) );
mCam->setPerspective( 60.0f, getWindowAspectRatio(), 0.1f, 5000.0f );
glEnable(GL_DEPTH_TEST);
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHTING);
mLight = new gl::Light(gl::Light::DIRECTIONAL, 0);
mLight->setDirection( Vec3f(0,0.1,0.3));
mLight->setAmbient( Color( 0.2f, 0.2f, 0.2f ) );
mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) );
mLight->update( *mCam );
mLight->enable();
mMaterial1.setSpecular( Color(0.5,0.5,0.5) );
mMaterial1.setDiffuse( Color( 0.33f, 0.24f, 1.0f ) );
mMaterial1.setAmbient( Color( 0.1f, 0.1f, 0.1f ) );
mMaterial1.setShininess( 20.0f );
mMaterial1.apply();
mMaterial2.setSpecular( Color(0,0,0) );
mMaterial2.setDiffuse( Color(1,0,0) );
mMaterial2.setAmbient( Color( 0.4f, 0.0f, 0.0f ) );
mMaterial2.setEmission(Color(1,0,0));
mMaterialG.setSpecular(Color(0,0,0));
mMaterialG.setDiffuse(Color(0,0,0.03));
mMaterialG.setAmbient(Color(0.1,0.1,0.1));
initPhysics();
lastTime = getElapsedSeconds();
}
开发者ID:jdduke,项目名称:Cinder,代码行数:36,代码来源:winBodiesApp.cpp
示例14: loadConfig
void MeshViewApp::setup()
{
loadConfig("configs/gaztank.ini");
setupCamera();
// Create lights
m_light1 = new gl::Light(gl::Light::DIRECTIONAL, 0);
m_light1->setDirection(Vec3f(0, 0, 1).normalized());
m_light1->setAmbient(Color(0.0f, 0.0f, 0.1f));
m_light1->setDiffuse(Color(0.9f, 0.6f, 0.3f));
m_light1->setSpecular(Color(0.9f, 0.6f, 0.3f));
m_light2 = new gl::Light(gl::Light::DIRECTIONAL, 1);
m_light2->setDirection(Vec3f(0, 0, -1).normalized());
m_light2->setAmbient(Color(0.0f, 0.0f, 0.0f));
m_light2->setDiffuse(Color(0.2f, 0.6f, 1.0f));
m_light2->setSpecular(Color(0.2f, 0.2f, 0.2f));
// Setup matrix
m_matrix.setToIdentity();
m_matrix.translate(Vec3f::zero());
m_matrix.rotate(Vec3f::zero());
m_matrix.scale(Vec3f::one());
m_rotateMesh = false;
// Create a parameter window
m_params = params::InterfaceGl::create(getWindow(), "Properties", Vec2i(180, 240));
m_params->addText("LMB + drag - rotate");
m_params->addText("RMB + drag - zoom");
m_params->addSeparator();
m_params->addButton("Full screen", [&] { setFullScreen(!isFullScreen()); });
m_params->addParam("Auto rotate", &m_rotateMesh);
m_params->addSeparator();
m_params->addParam("Diffuse", &m_diffuseEnabled);
m_params->addParam("Normal", &m_normalEnabled);
m_params->addParam("Specular", &m_specularEnabled);
m_params->addParam("AO", &m_aoEnabled);
m_params->addParam("Emissive", &m_emissiveEnabled);
m_params->addSeparator();
m_params->addParam("Gamma", &m_gamma, "min=0.0 max=10.0 step=0.1");
m_time = (float)getElapsedSeconds();
}
开发者ID:zulis,项目名称:Imrod,代码行数:45,代码来源:MeshViewApp.cpp
示例15: update
void BrainbowApp::update()
{
//LEAP
if ( mLeap && mLeap->isConnected() ) {
mLeap->update();
}
//GET HAND
for ( LeapSdk::HandMap::const_iterator handIter = mHands.begin(); handIter != mHands.end(); ++handIter ) {
const LeapSdk::Hand& hand = handIter->second;
// cout << hand.getPosition().x << endl;
// cout << hand.getDirection();
scaledX = (hand.getPosition().x *(getWindowWidth()/400))+(getWindowWidth()/2);
scaledY = (-hand.getPosition().y*(getWindowHeight()/400) + getWindowHeight())*2.5 - 400;
scaledZ = hand.getPosition().z*2+300;
handPos = Vec3f(scaledX, scaledY, scaledZ);
}
//AUDIO
// mAudio.update();
//SCENES
if (sceneOne)
scene1();
if (sceneTwo)
scene2();
//LIGHT
mLight->lookAt( handPos, Vec3f::zero() );
//ROTATE DIAMOND
if (gong)
mDiamond.getModelMatrix().rotate( Vec3f( 0.0f, 0.5f, 0), 0.01f );
}
开发者ID:JAGormley,项目名称:Brainbow,代码行数:39,代码来源:BrainbowApp.cpp
示例16: glEnable
/*
* @Description: setup function ( more aesthetic as could be in constructor here )
* @param: none
* @return: none
*/
void Base_ThreeD_ProjectApp::setup()
{
RENDER_MODE = 3;
glEnable( GL_LIGHTING );
glEnable( GL_DEPTH_TEST );
glEnable(GL_RESCALE_NORMAL); //important if things are being scaled as OpenGL also scales normals ( for proper lighting they need to be normalized )
mParams = params::InterfaceGl( "3D_Scene_Base", Vec2i( 225, 125 ) );
mParams.addParam( "Framerate", &mCurrFramerate, "", true );
mParams.addParam( "Eye Distance", &mCameraDistance, "min=-100.0 max=-5.0 step=1.0 keyIncr== keyDecr=-");
mParams.addParam( "Lighting On", &mLightingOn, "key=l");
mParams.addParam( "Show/Hide Params", &mShowParams, "key=x");
mParams.addSeparator();
mCurrFramerate = 0.0f;
mLightingOn = true;
mViewFromLight = false;
mShowParams = true;
//create camera
mCameraDistance = CAM_POSITION_INIT.z;
mEye = Vec3f(CAM_POSITION_INIT.x, CAM_POSITION_INIT.y, CAM_POSITION_INIT.z);
mCenter = Vec3f::zero();
mUp = Vec3f::yAxis();
mCam = new CameraPersp( getWindowWidth(), getWindowHeight(), 180.0f );
mCam->lookAt(mEye, mCenter, mUp);
mCam->setPerspective( 45.0f, getWindowAspectRatio(), 1.0f, 50.0f );
gl::setMatrices( *mCam );
//create light
mLight = new gl::Light( gl::Light::DIRECTIONAL, 0 );
mLight->lookAt( Vec3f(LIGHT_POSITION_INIT.x, LIGHT_POSITION_INIT.y * -1, LIGHT_POSITION_INIT.z), Vec3f( 0, 0, 0 ) );
mLight->setAmbient( Color( 1.0f, 1.0f, 1.0f ) );
mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) );
mLight->setSpecular( Color( 1.0f, 1.0f, 1.0f ) );
mLight->setShadowParams( 100.0f, 1.0f, 20.0f );
mLight->update( *mCam );
mLight->enable();
//create light ref
mLightRef = new gl::Light( gl::Light::DIRECTIONAL, 0 );
mLightRef->lookAt( LIGHT_POSITION_INIT, Vec3f( 0, 0, 0 ) );
mLightRef->setShadowParams( 100.0f, 1.0f, 20.0f );
//DEBUG Test objects
ci::ColorA pink( CM_RGB, 0.84f, 0.49f, 0.50f, 1.0f );
ci::ColorA green( CM_RGB, 0.39f, 0.78f, 0.64f, 1.0f );
ci::ColorA blue( CM_RGB, 0.32f, 0.59f, 0.81f, 1.0f );
ci::ColorA orange( CM_RGB, 0.77f, 0.35f, 0.35f, 1.0f );
gl::Material torusMaterial;
torusMaterial.setSpecular( ColorA( 1.0, 1.0, 1.0, 1.0 ) );
torusMaterial.setDiffuse( pink );
torusMaterial.setAmbient( ColorA( 0.3, 0.3, 0.3, 1.0 ) );
torusMaterial.setShininess( 25.0f );
gl::Material boardMaterial;
boardMaterial.setSpecular( ColorA( 0.0, 0.0, 0.0, 0.0 ) );
boardMaterial.setAmbient( ColorA( 0.3, 0.3, 0.3, 1.0 ) );
boardMaterial.setDiffuse( green );
boardMaterial.setShininess( 0.0f );
gl::Material boxMaterial;
boxMaterial.setSpecular( ColorA( 0.0, 0.0, 0.0, 0.0 ) );
boxMaterial.setAmbient( ColorA( 0.3, 0.3, 0.3, 1.0 ) );
boxMaterial.setDiffuse( blue );
boxMaterial.setShininess( 0.0f );
gl::Material sphereMaterial;
sphereMaterial.setSpecular( ColorA( 1.0, 1.0, 1.0, 1.0 ) );
sphereMaterial.setAmbient( ColorA( 0.3, 0.3, 0.3, 1.0 ) );
sphereMaterial.setDiffuse( orange ) ;
sphereMaterial.setShininess( 35.0f );
//using DisplayLists for simplicity but highly recommend to use VBO's for serious work ( as DisplayLists will be deprecated soon ... and speed difference in now negligible )
mTorus = gl::DisplayList( GL_COMPILE );
mTorus.newList();
gl::drawTorus( 1.0f, 0.3f, 32, 64 );
mTorus.endList();
mTorus.setMaterial( torusMaterial );
mBoard = gl::DisplayList( GL_COMPILE );
mBoard.newList();
gl::drawCube( Vec3f( 0.0f, 0.0f, 0.0f ), Vec3f( 10.0f, 0.1f, 10.0f ) );
mBoard.endList();
mBoard.setMaterial( boardMaterial );
mBox = gl::DisplayList( GL_COMPILE );
mBox.newList();
gl::drawCube( Vec3f( 0.0f, 0.0f, 0.0f ), Vec3f( 1.0f, 1.0f, 1.0f ) );
mBox.endList();
mBox.setMaterial( boxMaterial );
//.........这里部分代码省略.........
开发者ID:PlumCantaloupe,项目名称:SSAO-Shader,代码行数:101,代码来源:Base_ThreeD_ProjectApp.cpp
示例17: draw
void BrainbowApp::draw()
{
gl::setViewport( getWindowBounds() );
// SCREENPULSE
// changes every 12.5 seconds
float gray = (cos(getElapsedSeconds()/4)*.3)/2 ;
float otherCol = (sin(getElapsedSeconds()/4)*.2)/2;
screenCol = Vec3f (lightFade+gray, lightFade, (lightFade*2)-otherCol);
if (sceneOne)
gl::clear( Color(lightFade+gray, lightFade, (lightFade*2)-otherCol) );
if (sceneTwo)
gl::clear( Color(1, 1, 1) );
// FADE IN INTRO
if (lightFade < .5){
lightFade += .0005;
}
if (mHands.empty())
mLight->disable();
updateShadowMap();
gl::enableDepthRead();
gl::enableDepthWrite();
mShader.bind();
glEnable( GL_TEXTURE_2D );
mDepthFbo.bindDepthTexture();
mShader.bind();
// FIRST SCENE
if (sceneOne){
// disc
if (zshift > 0){
glPushMatrix();
glTranslated( 640, 400, zshift - 200);
if (shift2 && discOp > 1)
glScalef(discOp, discOp, 0);
// cout << discOp << endl;
mDisc.draw();
glPopMatrix();
}
//cloud
glPushMatrix();
glTranslated( getWindowWidth() * 0.5f, getWindowHeight() * 0.5f, zshift );
// if (lightFade > .45f)
mCloud.update(scaledX, scaledY, scaledZ, diamondFade, 1);
glPopMatrix();
if (drawDiamond){
glPushMatrix();
glTranslated( getWindowWidth() * 0.5f, getWindowHeight() * 0.5f, zshift);
mDiamond.draw();
glPopMatrix();
}
}
// SECOND SCENE
if (sceneTwo){
mLight->lookAt( Vec3f(scaledX, scaledY, scaledZ +200), Vec3f (getWindowWidth()*.05, getWindowHeight() * 0.5f, 0.0f ));
// cursor
glPushMatrix();
glTranslated( scaledX, scaledY, scaledZ );
mCur.draw();
if (scaledZ < 375 && scaledZ > 350)
gl::drawSphere(Vec3f(0,0,0), (scaledZ-350)*.4);
if (scaledZ >= 375)
gl::drawSphere(Vec3f(0,0,0), 25*.4);
glPopMatrix();
// rotate whole scene; implement this later:
// if (targetFilled){
// glPushMatrix();
// glRotatef(getElapsedSeconds()*10, Vec3f (640, 400, 350) );
// }
for (int i = 0; i < cubes.size() ; i++){
glPushMatrix();
glTranslatef(cubes[i].getLocation());
cubes[i].update(.01f, screenCol);
glPopMatrix();
}
offCounter = 0;
for (int i = 0; i < targets.size() ; i++){
glPushMatrix();
glTranslatef(targets[i].getLocation());
targets[i].update(.01f, handPos, screenCol);
if (targets[i].getBoxed() && targets[i].getBoxNumber() < 15 ){
addCube(targets[i].getLocation().x, targets[i].getLocation().y, targets[i].getLocation().z);
//.........这里部分代码省略.........
开发者ID:JAGormley,项目名称:Brainbow,代码行数:101,代码来源:BrainbowApp.cpp
示例18: AudioCont
void BrainbowApp::setup()
{
// LOAD AUDIO
mAudio = AudioCont();
mAudio.setUp();
// START SCENE 1
sceneOne = true;
sceneTwo = false;
// Set up OpenGL
gl::enableAlphaBlending();
gl::enableDepthRead();
gl::enableDepthWrite();
gongTimer.start();
ballTimer.start();
// LIGHTING
//here
glPolygonOffset( 1.0f, 1.0f );
glEnable( GL_LIGHTING );
glEnable( GL_DEPTH_TEST );
mLight = new gl::Light( gl::Light::POINT, 0 );
mLight->lookAt( Vec3f( 1, 5, 1 ), Vec3f (getWindowWidth(), getWindowHeight() * 0.5f, 0.0f ));
mLight->setAmbient( Color( 0.3f, 0.3f, 0.3f ) );
mLight->setDiffuse( Color( 1.0f, 1.0f, 1.0f ) );
mLight->setSpecular( Color( 1.0f, 1.0f, 1.0f ) );
mLight->setShadowParams( 60.0f, 0.5f, 8.0f );
// mLight->update( *mCamera );
mLight->enable();
//LOAD SHAPES
colorSat = 1.0f;
sphereMaterial.setSpecular( ColorA(colorSat-0.3f, colorSat, colorSat, .4f ) );
sphereMaterial.setDiffuse( ColorA(colorSat-0.3f, colorSat, colorSat, .4f ) );
sphereMaterial.setAmbient( ColorA(colorSat-0.3f, colorSat, colorSat, .05f ) );
sphereMaterial.setShininess( 1.0f );
sphereMaterial.setEmission(ColorA(1, 1, 1, 1 ));
gl::Material cylMaterial;
cylMaterial.setSpecular( ColorA(0, 1.0f, 1.0f, .2f ));
cylMaterial.setDiffuse( ColorA(0, 1.0f, 1.0f, .2f ) );
cylMaterial.setAmbient( ColorA(0, 1.0f, 1.0f, .2f ) );
cylMaterial.setShininess( 600.0f );
cylMaterial.setEmission(ColorA(1, 1, 1, 1 ));
gl::Material curMaterial;
curMaterial.setSpecular( ColorA(1, .5, 0, .5f ));
curMaterial.setDiffuse( ColorA(1, .5, 0, .5f ) );
curMaterial.setAmbient( ColorA(1, 1.0f, 1.0f, .05f ) );
curMaterial.setShininess( 600.0f );
curMaterial.setEmission(ColorA(1, 1, 1, 1 ));
discMaterial.setSpecular( ColorA(colorSat-0.3f, colorSat, colorSat, .4f ) );
discMaterial.setDiffuse( ColorA(colorSat-0.3f, colorSat, colorSat, .4f ) );
discMaterial.setAmbient( ColorA(colorSat-0.3f, colorSat, colorSat, .05f ) );
discMaterial.setShininess( 600.0f );
discMaterial.setEmission(ColorA(1, 1, 1, 1 ));
initShadowMap();
mCloud = SphereCloud(0, 70);
mDiamond = gl::DisplayList( GL_COMPILE );
mDiamond.newList();
gl::drawSphere(Vec3f(0, 0, 0), 300, 4);
mDiamond.endList();
mDiamond.setMaterial( sphereMaterial );
mCyl = gl::DisplayList( GL_COMPILE );
mCyl.newList();
// gl::drawCylinder(200, 200, 200);
gl::drawColorCube(Vec3f(0, 0, 0), Vec3f(300, 300, 300));
mCyl.endList();
mCyl.setMaterial(cylMaterial);
mCur = gl::DisplayList( GL_COMPILE );
mCur.newList();
gl::drawSphere(Vec3f(0, 0, 0), 5);
mCur.endList();
mCur.setMaterial(curMaterial);
mDisc = gl::DisplayList( GL_COMPILE );
mDisc.newList();
gl::drawSolidCircle(Vec2f(0, 0), 60, 6);
mDisc.endList();
mDisc.setMaterial( discMaterial );
// START LEAP
mLeap = LeapSdk::Device::create();
mCallbackId = mLeap->addCallback( &BrainbowApp::onFrame, this );
//.........这里部分代码省略.........
开发者ID:JAGormley,项目名称:Brainbow,代码行数:101,代码来源:BrainbowApp.cpp
示例19: setWindowSize
void PopGameApp::setup()
{
speed2 =3.5;
setWindowSize(1920,1080);
//setWindowSize(1080/2,1920/2);
setWindowPos(0, 0);
mCamera = new CameraPersp( getWindowWidth(), getWindowHeight(), 45.0f );
mCamera->lookAt( Vec3f( 0, -300, -400 ), Vec3f( 0, 0, 50 ) );
mCamera->setPerspective( 80.0f, getWindowAspectRatio(),200.0f, 4000.0f );
mLight = new gl::Light( gl::Light::POINT, 0 );
mLight->lookAt( Vec3f(1000,-1000, -2000 ), Vec3f( 0, 1000, 0 ) );
mLight->setShadowParams(60.0f,2000.f, 3500.0f );
mLight->update( *mCamera );
mLight->enable();
mShader = gl::GlslProg( loadAsset("shadowMap_vert.glsl"),loadAsset("shadowMap_frag.glsl") );
mShader.bind();
mShader.uniform( "depthTexture", 1 );
mShader.uniform( "difTexture", 0 );
mShader.unbind();
initShadowMap();
groundHolder.setup();
stage.addChild(&groundHolder);
enemyHandler.setup();
stage.addChild(&enemyHandler);
BulletHandler::getInstance()->enemyHandler =&enemyHandler;
plane =new Hero();
plane->load("plane.png","planeh.png");
plane->setAlign(neuro::ALIGN_CENTER);
plane->z = 0;
stage.addChild(plane);
prevTime = cinder::app::getElapsedSeconds();
BulletHandler::getInstance()->stage =&stage;
logo =new Image();
logo->load("logo.png");
// logo->rotationX =-3.1415;
logo->setAlign(neuro::ALIGN_BOTTOM_LEFT);
logo->x =0;
logo->y =1080*2;
//logo->scaleX =logo->scaleY =logo->scaleZ =4;
stage2D.scaleX=stage2D.scaleY =0.5;
stage2D.addChild(logo);
}
开发者ID:neuroprod,项目名称:PopupGame,代码行数:72,代码来源:PopGameApp.cpp
示例20: draw
void PopGameApp::draw()
{
if(getElapsedFrames()>200)return;
gl::pushMatrices();
gl::setMatrices( *mCamera );
gl::enable(GL_DEPTH_TEST);
gl::clear(ColorA(0.5,0.5,0.5,1));
gl::enableDepthWrite();
glEnable( GL_LIGHTING );
updateShadowMap();
gl::enableDepthRead();
// clear out the window with black
glEnable( GL_TEXTURE_2D );
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.5);
mShader.bind();
mDepthFbo.bindDepthTexture(1);
mShader.uniform( "shadowTransMatrix", mLight->getShadowTransformationMatrix( *mCamera ) );
//gl::enable(GL_BLEND);
mLight->update( *mCamera );
gl::pushMatrices();
stage.int_draw();
gl::popMatrices();
gl::popMatrices();
// gl::setMatrices( *mCamera );
mShader.unbind();
gl::disable (GL_DEPTH_TEST);
glDisable( GL_LIGHTING );
glDisable (GL_ALPHA_TEST);
glEnable(GL_BLEND);
gl::enableAlphaBlending();
stage2D.int_draw();
glDisable(GL_BLEND);
gl::disableAlphaBlending();
/*
glDisable( GL_LIGHTING );
gl::setMatricesWindow( getWindowSize() );
Surface32f shadowMapSurface( mDepthFbo.getDepthTexture() );
ip::hdrNormalize( &shadowMapSurface );
gl::color( Color::white() );
gl::draw( gl::Texture( shadowMapSurface ), Rectf( 0, 0, 128*2, 128*2 ) );
*/
}
开发者ID:neuroprod,项目名称:PopupGame,代码行数:63,代码来源:PopGameApp.cpp
注:本文中的gl::Light类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论