本文整理汇总了C++中gl::GlslProg::unbind方法的典型用法代码示例。如果您正苦于以下问题:C++ GlslProg::unbind方法的具体用法?C++ GlslProg::unbind怎么用?C++ GlslProg::unbind使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gl::GlslProg
的用法示例。
在下文中一共展示了GlslProg::unbind方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: helix
void Simulacra::helix()
{
glDisable(GL_LIGHTING);
glDisable(GL_LIGHT0);
// render a simple scene into mFboScene
helixShader.bind();
gl::translate(0,0,0);
helixFBO.bindFramebuffer();
helixShader.uniform("time",Vec2f(sin(rotation),1-sin(rotation*0.71)));
gl::clear(ColorA(0,0,0,1));
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
gl::drawSolidRect(cinder::Rectf(0,0,getWindowWidth(),getWindowHeight()));
helixFBO.unbindFramebuffer();
helixShader.unbind();
//Revert back to screen
gl::color(cinder::ColorA(1,1,1,1));
applyHelixShader.bind();
finalFBO.bindTexture(0);
applyHelixShader.uniform("qt_Texture0",0);
helixFBO.bindTexture(1);
applyHelixShader.uniform("qt_Texture1",1);
gl::drawSolidRect(cinder::Rectf(0,getWindowHeight(),getWindowWidth(),0));
applyHelixShader.unbind();
helixFBO.unbindTexture();
finalFBO.unbindTexture();
gl::color(ColorA(1,1,1,1));
}
示例2: glClearColor
void EarthquakeApp::draw()
{
glClearColor( 1.0f, 0.0f, 0.0f, 1.0f );
gl::enableAlphaBlending();
gl::enableDepthRead( true );
gl::enableDepthWrite( true );
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glEnable( GL_TEXTURE_2D );
glDisable( GL_TEXTURE_RECTANGLE_ARB );
gl::GlslProg::unbind();
glColor4f( 1, 1, 1, 1 );
mStars.enableAndBind();
gl::drawSphere( Vec3f( 0, 0, 0 ), 15000.0f, 64 );
//gl::rotate( Quatf( Vec3f::zAxis(), -0.2f ) );
//gl::rotate( Quatf( Vec3f::yAxis(), mCounter*0.1f ) );
if( mShowEarth ){
mEarthShader.bind();
mEarthShader.uniform( "texDiffuse", 0 );
mEarthShader.uniform( "texNormal", 1 );
mEarthShader.uniform( "texMask", 2 );
mEarthShader.uniform( "counter", mCounter );
mEarthShader.uniform( "lightDir", mLightDir );
mEarth.draw();
mEarthShader.unbind();
}
glDisable( GL_TEXTURE_2D );
glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
if( mShowQuakes ){
mQuakeShader.bind();
mQuakeShader.uniform( "lightDir", mLightDir );
mEarth.drawQuakeVectors();
mQuakeShader.unbind();
}
if( mShowText ){
gl::enableDepthWrite( false );
glEnable( GL_TEXTURE_2D );
//mEarth.drawQuakeLabelsOnBillboard( sBillboardRight, sBillboardUp );
mEarth.drawQuakeLabelsOnSphere( mPov.mEyeNormal, mPov.mDist );
glDisable( GL_TEXTURE_2D );
}
if( mSaveFrames ){
//writeImage( getHomeDirectory() / "CinderScreengrabs" / "Highoutput_" + toString( mCurrentFrame ) + ".png", copyWindowSurface() );
mCurrentFrame++;
}
}
示例3: drawTerrain
void TerrainApp::drawTerrain()
{
mRd.getHeightsTexture().bind( 0 );
mRd.getNormalsTexture().bind( 1 );
mGradientTex.bind( 2 );
mSandNormalTex.bind( 3 );
mTerrainShader.bind();
mTerrainShader.uniform( "heightsTex", 0 );
mTerrainShader.uniform( "normalsTex", 1 );
mTerrainShader.uniform( "gradientTex", 2 );
mTerrainShader.uniform( "sandNormalTex", 3 );
mTerrainShader.uniform( "mvpMatrix", mSpringCam.mMvpMatrix );
mTerrainShader.uniform( "terrainScale", mTerrainScale );
mTerrainShader.uniform( "roomDims", mRoom.getDims() );
mTerrainShader.uniform( "zoomMulti", mZoomMulti );//lerp( mZoomMulti, 1.0f, mRoom.getPower() ) );
mTerrainShader.uniform( "power", mRoom.getPower() );
mTerrainShader.uniform( "eyePos", mSpringCam.getEye() );
mTerrainShader.uniform( "lightPos", mLightPos );
mTerrainShader.uniform( "fogColor", mFogColor );
mTerrainShader.uniform( "sandColor", mSandColor );
mTerrainShader.uniform( "mousePosNorm", -( mMousePosNorm - Vec2f( 0.5f, 0.5f ) ) * getElapsedSeconds() * 2.0f );
mTerrainShader.uniform( "spherePos", mSphere.getCenter() );
mTerrainShader.uniform( "sphereRadius", mSphere.getRadius() );
mTerrain.draw();
mTerrainShader.unbind();
}
示例4: renderDisplacementMap
void SmoothDisplacementMappingApp::renderDisplacementMap()
{
if( mDispMapShader && mDispMapFbo )
{
mDispMapFbo.bindFramebuffer();
{
// clear the color buffer
gl::clear();
// setup viewport and matrices
glPushAttrib( GL_VIEWPORT_BIT );
gl::setViewport( mDispMapFbo.getBounds() );
gl::pushMatrices();
gl::setMatricesWindow( mDispMapFbo.getSize(), false );
// render the displacement map
mDispMapShader.bind();
mDispMapShader.uniform( "time", float( getElapsedSeconds() ) );
mDispMapShader.uniform( "amplitude", mAmplitude );
gl::drawSolidRect( mDispMapFbo.getBounds() );
mDispMapShader.unbind();
// clean up after ourselves
gl::popMatrices();
glPopAttrib();
}
mDispMapFbo.unbindFramebuffer();
}
}
示例5: update
void gpuPSApp::update()
{
gl::setMatricesWindow( mFBO[0].getSize(), false ); // false to prevent vertical flipping
gl::setViewport( mFBO[0].getBounds() );
mFBO[ mCurrentFBO ].bindFramebuffer();
GLenum buf[2] = {GL_COLOR_ATTACHMENT0_EXT, GL_COLOR_ATTACHMENT1_EXT};
glDrawBuffers(2, buf);
mFBO[ mOtherFBO ].bindTexture(0, 0);
mFBO[ mOtherFBO ].bindTexture(1, 1);
mPosShader.bind();
mPosShader.uniform( "posArray", 0 );
mPosShader.uniform( "velArray", 1 );
glBegin(GL_QUADS);
glTexCoord2f( 0.0f, 0.0f); glVertex2f( 0.0f, 0.0f);
glTexCoord2f( 0.0f, 1.0f); glVertex2f( 0.0f, SIDE);
glTexCoord2f( 1.0f, 1.0f); glVertex2f( SIDE, SIDE);
glTexCoord2f( 1.0f, 0.0f); glVertex2f( SIDE, 0.0f);
glEnd();
mPosShader.unbind();
mFBO[ mOtherFBO ].unbindTexture();
mFBO[ mCurrentFBO ].unbindFramebuffer();
mCurrentFBO = ( mCurrentFBO + 1 ) % 2;
mOtherFBO = ( mCurrentFBO + 1 ) % 2;
}
示例6: renderInterlacedHorizontal
void StereoscopicRenderingApp::renderInterlacedHorizontal( const Vec2i &size )
{
// bind the FBO and clear its buffer
mFbo.bindFramebuffer();
gl::clear( mColorBackground );
// render the scene using the over-under technique
renderOverUnder( mFbo.getSize() );
// unbind the FBO
mFbo.unbindFramebuffer();
// enable the interlace shader
mShaderInterlaced.bind();
mShaderInterlaced.uniform( "tex0", 0 );
mShaderInterlaced.uniform( "window_origin", Vec2f( getWindowPos() ) );
mShaderInterlaced.uniform( "window_size", Vec2f( getWindowSize() ) );
// bind the FBO texture and draw a full screen rectangle,
// which conveniently is exactly what the following line does
gl::draw( mFbo.getTexture(), Rectf(0, float(size.y), float(size.x), 0) );
// disable the interlace shader
mShaderInterlaced.unbind();
}
示例7: render
void BloomingNeonApp::render()
{
// get the current viewport
Area viewport = gl::getViewport();
// adjust the aspect ratio of the camera
mCamera.setAspectRatio( viewport.getWidth() / (float) viewport.getHeight() );
// render our scene (see the Picking3D sample for more info)
gl::pushMatrices();
gl::setMatrices( mCamera );
gl::enableDepthRead();
gl::enableDepthWrite();
mShaderPhong.bind();
mShaderPhong.uniform("tex_diffuse", 0);
mShaderPhong.uniform("tex_specular", 1);
gl::pushModelView();
gl::multModelView( mTransform );
gl::color( Color::white() );
gl::draw( mMesh );
gl::popModelView();
mShaderPhong.unbind();
gl::disableDepthWrite();
gl::disableDepthRead();
gl::popMatrices();
}
示例8: drawIntoRoomFbo
void ShadedSphereApp::drawIntoRoomFbo()
{
mRoomFbo.bindFramebuffer();
gl::clear( ColorA( 0.0f, 0.0f, 0.0f, 0.0f ), true );
gl::setMatricesWindow( mRoomFbo.getSize(), false );
gl::setViewport( mRoomFbo.getBounds() );
gl::disableAlphaBlending();
gl::enable( GL_TEXTURE_2D );
glEnable( GL_CULL_FACE );
glCullFace( GL_BACK );
Matrix44f m;
m.setToIdentity();
m.scale( mRoom.getDims() );
// mLightsTex.bind( 0 );
mRoomShader.bind();
mRoomShader.uniform( "mvpMatrix", mSpringCam.mMvpMatrix );
mRoomShader.uniform( "mMatrix", m );
mRoomShader.uniform( "eyePos", mSpringCam.getEye() );
mRoomShader.uniform( "roomDims", mRoom.getDims() );
mRoomShader.uniform( "mainPower", mRoom.getPower() );
mRoomShader.uniform( "lightPower", mRoom.getLightPower() );
mRoom.draw();
mRoomShader.unbind();
mRoomFbo.unbindFramebuffer();
glDisable( GL_CULL_FACE );
}
示例9: draw
void LEDCamApp::draw()
{
// clear out the window with black
gl::clear( kClearColor );
if( !mTexture ) return;
mFbo.bindFramebuffer();
mTexture.enableAndBind();
mShader.bind();
float aspect = kWindowHeight/kWindowWidth;
cout << "Aspect: " << aspect << " \n";
mShader.uniform( "aspect", aspect );
mShader.uniform( "tex", 0 );
mShader.uniform( "bright", 3.0f );
mShader.uniform( "spacing", 3 );
mShader.uniform( "ledCount", 100.0f );
gl::drawSolidRect( getWindowBounds() );
mTexture.unbind();
mShader.unbind();
mFbo.unbindFramebuffer();
gl::Texture fboTexture = mFbo.getTexture();
fboTexture.setFlipped();
gl::draw( fboTexture );
}
示例10: draw
void GeometryShaderTest::draw()
{
gl::clear(Color(0,0,0));
gl::color(Color(1,1,1));
shader.bind();
glLineWidth(2.0);
glBegin(GL_LINES);
glVertex2f(mouse.x, mouse.y);
glVertex2f(mouse.x + 100, mouse.y);
glEnd();
t += 0.1;
glLineWidth(0.5);
glBegin(GL_LINES);
int numLines = 10000;
for(int i=0; i<numLines; i++) {
float w = getWindowWidth() / (float)numLines;
float h = getWindowHeight() / (float)numLines;
float x = t + i * w;
float y = getWindowHeight() / 2.0;
y += (i % 2 == 0) ? 100 : -100;
glVertex2f(x, y);
glVertex2f(x, y + 50);
}
glEnd();
shader.unbind();
printf("FPS %f\n", getAverageFps());
}
示例11: flockToBody
void EpicMonsterApp::flockToBody() {
if(timer.getSeconds() > mTimerSlower) {
timer.stop();
timer.start();
gl::setMatricesWindow( mPPFbo.getSize(), false ); // false to prevent vertical flipping;
mPPFbo.updateBind();
mBakeShader.bind();
mBakeShader.uniform( "positions", 0 );
mBakeShader.uniform( "scale", mNormalScale );
mBakeShader.uniform( "velocities", 1 );
mBakeShader.uniform( "n", n);
mBakeShader.uniform( "attractorPos", mAttractor);
mBakeShader.uniform( "offset", Vec3f(mParTexOffset.x, mParTexOffset.y, mParIteration));
glDisable(GL_CULL_FACE);
mAssimpLoader.draw();
mBakeShader.unbind();
mPPFbo.updateUnbind();
mPPFbo.swap();
mParIteration+= triangles;
if(mParIteration > (6*n.x*n.x))
mParIteration = 0;
// TODO: baketuksessa overflowaa tyylikkäästi takaisin alkuun, jos menee yli
}
}
示例12: draw
void MemExploreApp::draw()
{
mTexture = gl::Texture(mDataPointer, GL_RGBA, mVolumeDim * mTilesDim, mVolumeDim * mTilesDim);
mTexture.setWrap(GL_REPEAT, GL_REPEAT);
mTexture.setMinFilter(GL_NEAREST);
mTexture.setMagFilter(GL_NEAREST);
float frustum[6];
mCamera.getFrustum(&frustum[0], &frustum[1], &frustum[2], &frustum[3], &frustum[4], &frustum[5]);
mFbo.bindFramebuffer();
gl::setMatricesWindow(mFbo.getSize(), false);
mProgram.bind();
mProgram.uniform("uTexture", 0);
mProgram.uniform("uVolumeDim", mVolumeDim);
mProgram.uniform("uTilesDim", mTilesDim);
mProgram.uniform("uTime", (float)getElapsedSeconds());
mProgram.uniform("uEyePoint", mCamera.getEyePoint());
mProgram.uniform("uXAxis", mCamera.getOrientation() * Vec3f::xAxis());
mProgram.uniform("uYAxis", mCamera.getOrientation() * Vec3f::yAxis());
mProgram.uniform("uViewDistance", mCamera.getAspectRatio() / abs(frustum[2] - frustum[0]) * mCamera.getNearClip());
mProgram.uniform("uNegViewDir", -mCamera.getViewDirection().normalized());
mProgram.uniform("uAspectRatio", mCamera.getAspectRatio());
mTexture.enableAndBind();
gl::drawSolidRect(mFbo.getBounds());
mTexture.unbind();
mProgram.unbind();
mFbo.unbindFramebuffer();
gl::setMatricesWindow(getWindowSize());
gl::draw(mFbo.getTexture(), getWindowBounds());
}
示例13: drawIntoVelocityFbo
void RepulsionApp::drawIntoVelocityFbo()
{
gl::setMatricesWindow( mFboSize, false );
gl::setViewport( mFboBounds );
gl::disableAlphaBlending();
mVelocityFbos[ mThisFbo ].bindFramebuffer();
gl::clear( ColorA( 0, 0, 0, 0 ) );
mPositionFbos[ mPrevFbo ].bindTexture( 0 );
mVelocityFbos[ mPrevFbo ].bindTexture( 1 );
mVelocityShader.bind();
mVelocityShader.uniform( "position", 0 );
mVelocityShader.uniform( "velocity", 1 );
mVelocityShader.uniform( "roomBounds", mRoom.getDims() );
mVelocityShader.uniform( "w", FBO_WIDTH );
mVelocityShader.uniform( "h", FBO_HEIGHT );
mVelocityShader.uniform( "invWidth", 1.0f/(float)FBO_WIDTH );
mVelocityShader.uniform( "invHeight", 1.0f/(float)FBO_HEIGHT );
mVelocityShader.uniform( "dt", mRoom.getTimeDelta() );
mVelocityShader.uniform( "mainPower", mRoom.getPower() );
mVelocityShader.uniform( "gravity", mRoom.getGravity() );
gl::drawSolidRect( mFboBounds );
mVelocityShader.unbind();
mVelocityFbos[ mThisFbo ].unbindFramebuffer();
}
示例14: setFboVelocities
void RepulsionApp::setFboVelocities( gl::Fbo &fbo )
{
Surface32f vel( fbo.getTexture() );
Surface32f::Iter it = vel.getIter();
while( it.line() ){
while( it.pixel() ){
Vec3f r = Rand::randVec3f() * 0.1f;
it.r() = 0.0f;//r.x;
it.g() = 0.0f;//r.y;
it.b() = 0.0f;//r.z;
it.a() = 0.0f;
}
}
gl::Texture velTexture( vel );
velTexture.bind();
gl::setMatricesWindow( mFboSize, false );
gl::setViewport( mFboBounds );
fbo.bindFramebuffer();
mVelInitShader.bind();
mVelInitShader.uniform( "initTex", 0 );
gl::drawSolidRect( mFboBounds );
mVelInitShader.unbind();
fbo.unbindFramebuffer();
}
示例15: draw
void BasicShaderIIApp::draw()
{
gl::clear( Color::black() );
// Draw FPS
gl::color( Color::white() );
mTextureFont->drawString( toString( floor(getAverageFps()) ) + " FPS", Vec2f( 100, getWindowHeight() - mTextureFont->getDescent() ) );
gl::pushMatrices();
gl::setMatrices( mCam );
gl::enableAlphaBlending();
// draw interface
params::InterfaceGl::draw();
if( mDoSave )
{ // save non-conflicting image
// includes interface to record parameters
saveFrame();
mDoSave = false;
}
mShader.bind();
mShader.uniform("lightDir", mLightDir );
gl::pushMatrices();
gl::rotate( mArcball.getQuat() );
gl::draw( mVBO );
gl::popMatrices();
mShader.unbind();
gl::popMatrices();
}