本文整理汇总了C++中gl::GlslProg类的典型用法代码示例。如果您正苦于以下问题:C++ GlslProg类的具体用法?C++ GlslProg怎么用?C++ GlslProg使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了GlslProg类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: 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++;
}
}
示例2: 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 );
}
示例3: 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());
}
示例4: getWindowSize
void PixarDemo2012::renderGradientFBO()
{
gl::enableAlphaBlending();
gl::SaveFramebufferBinding bindingSaver;
mGradientFBO.bindFramebuffer();
gl::setViewport( mGradientFBO.getBounds() );
gl::setMatricesWindow( getWindowSize(), true );
gl::clear( ColorA(0.0f,0.0f,0.0f,1.0f) );
glDisable( GL_TEXTURE_2D );
// mGradientFBO.bindTexture(0);
mGradientShader.bind();
float what = mTime;
mGradientShader.uniform("mTime", what);
mGradientShader.uniform("resolution", Vec2f((float)getWindowWidth(),(float)getWindowHeight()));
gl::drawSolidRect( getWindowBounds() );
mGradientShader.unbind();
// mGradientFBO.unbindTexture();
gl::popMatrices();
}
示例5: draw
void AudioVisualizerApp::draw()
{
gl::clear();
// use camera
gl::pushMatrices();
gl::setMatrices(mCamera);
{
// bind shader
mShader.bind();
mShader.uniform("uTexOffset", mOffset / float(kHistory));
mShader.uniform("uLeftTex", 0);
mShader.uniform("uRightTex", 1);
// create textures from our channels and bind them
mTextureLeft = gl::Texture(mChannelLeft, mTextureFormat);
mTextureRight = gl::Texture(mChannelRight, mTextureFormat);
mTextureLeft.enableAndBind();
mTextureRight.bind(1);
// draw mesh using additive blending
gl::enableAdditiveBlending();
gl::color( Color(1, 1, 1) );
gl::draw( mMesh );
gl::disableAlphaBlending();
// unbind textures and shader
mTextureRight.unbind();
mTextureLeft.unbind();
mShader.unbind();
}
gl::popMatrices();
}
示例6: 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();
}
示例7: 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();
}
示例8: generateNormalMap
void HiKinectApp::generateNormalMap() {
// bind the Fbo
mFbo.bindFramebuffer();
// match the viewport to the Fbo dimensions
gl::setViewport( mFbo.getBounds() );
// setup an ortho projection
gl::setMatricesWindow( mFbo.getWidth(), mFbo.getHeight() );
// clear the Fbo
gl::clear( Color( 0, 0, 0 ) );
// bind the shader, set its variables
mNormalShader.bind();
mNormalShader.uniform( "normalStrength", mNormalStrength);
mNormalShader.uniform( "texelWidth", 1.0f / (float)CAPTURE_WIDTH );
if ( mDepthTexture ) {
gl::pushModelView();
// gl::translate( Vec3f( 0, mDepthTexture.getHeight(), 0 ) );
// gl::scale( Vec3f( 1, -1, 1 ) );
gl::draw( mDepthTexture );
gl::popModelView();
}
// unbind the shader
mNormalShader.unbind();
// unbind the Fbo
mFbo.unbindFramebuffer();
}
示例9: 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();
}
示例10: drawIntoRoomFbo
void TerrainApp::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() );
mCubeMap.bind();
mRoomShader.bind();
mRoomShader.uniform( "cubeMap", 0 );
mRoomShader.uniform( "mvpMatrix", mSpringCam.mMvpMatrix );
mRoomShader.uniform( "mMatrix", m );
mRoomShader.uniform( "eyePos", mSpringCam.mEye );
mRoomShader.uniform( "roomDims", mRoom.getDims() );
mRoomShader.uniform( "power", mRoom.getPower() );
mRoomShader.uniform( "lightPower", mRoom.getLightPower() );
mRoomShader.uniform( "timePer", mRoom.getTimePer() * 1.5f + 0.5f );
mRoom.draw();
mRoomShader.unbind();
mRoomFbo.unbindFramebuffer();
glDisable( GL_CULL_FACE );
}
示例11: 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();
}
示例12: 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;
}
示例13: 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();
}
}
示例14: renderAnaglyph
void StereoscopicRenderingApp::renderAnaglyph( const Vec2i &size, const ColorA &left, const ColorA &right )
{
// bind the FBO and clear its buffer
mFbo.bindFramebuffer();
gl::clear( mColorBackground );
// render the scene using the side-by-side technique
renderSideBySide( mFbo.getSize() );
// unbind the FBO
mFbo.unbindFramebuffer();
// enable the anaglyph shader
mShaderAnaglyph.bind();
mShaderAnaglyph.uniform( "tex0", 0 );
mShaderAnaglyph.uniform( "clr_left", left );
mShaderAnaglyph.uniform( "clr_right", right );
// 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 anaglyph shader
mShaderAnaglyph.unbind();
}
示例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();
}