当前位置: 首页>>代码示例>>C++>>正文


C++ VertexFormat::addRHW方法代码示例

本文整理汇总了C++中VertexFormat::addRHW方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexFormat::addRHW方法的具体用法?C++ VertexFormat::addRHW怎么用?C++ VertexFormat::addRHW使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VertexFormat的用法示例。


在下文中一共展示了VertexFormat::addRHW方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: WinMain


//.........这里部分代码省略.........
		anim->setKeys( keys );
		for ( int i = 0 ; i < keys ; ++i )
		{
			float f = (float)i / (keys-1);
			float ang = f * Math::PI*2.f;
			Quaternion quat( Vector3(0,1,0), ang );
			float v[] = {quat.x, quat.y, quat.z, quat.w};
			anim->setKeyValue( i, v, 4 );
			anim->setKeyTime( i, f * 3.f );
		}
		anim->sortKeys();
		mesh->setRotationController( anim );}

		// mesh scale animation
		/*{P(VectorInterpolator) anim = new VectorInterpolator(3);
		anim->setKeys( keys );
		for ( int i = 0 ; i < keys ; ++i )
		{
			float f = (float)i / (keys-1);
			float v[3] = { Math::abs(Math::sin(f*Math::PI*2.f))+.5f, 1.f, 1.f };
			anim->setKeyValue( i, v, 3 );
			anim->setKeyTime( i, f * 5.f );
		}
		anim->sortKeys();
		mesh->setScaleController( anim );}*/

		// shadow volume
		P(ShadowVolume) shadow = new ShadowVolume( model, lt->worldDirection(), 20.f );
		shadow->setShader( new ShadowShader );
		mesh->addPrimitive( shadow );

		// shadow filler
		VertexFormat fillvf;
		fillvf.addRHW().addDiffuse();
		P(Material) fillmat = new Material;
		fillmat->setDepthEnabled( false );
		fillmat->setDepthWrite( false );
		fillmat->setBlend( Material::BLEND_SRCALPHA, Material::BLEND_INVSRCALPHA );
		fillmat->setTextureColorCombine( 0, Material::TA_DIFFUSE, Material::TOP_SELECTARG1, Material::TextureArgument() );
		fillmat->setTextureAlphaCombine( 0, Material::TA_DIFFUSE, Material::TOP_SELECTARG1, Material::TextureArgument() );
		fillmat->setLighting( false );
		fillmat->setVertexColor( true );
		fillmat->setStencil( true );
		fillmat->setStencilRef( 1 );
		fillmat->setStencilFunc( Material::CMP_LESSEQUAL );
		fillmat->setStencilPass( Material::STENCILOP_KEEP );
		fillmat->setPass( ShadowShader::DEFAULT_SHADOW_FILL_PASS );
		fillmat->setVertexFormat( fillvf );

		// shadow filler geometry
		P(Model) fillgeom = new Model( 4, 6, fillvf );
		{VertexAndIndexLock<Model> lock( fillgeom, Model::LOCK_WRITE );
		Vector4 fillpos[4] = { Vector4(0,0,0,0), Vector4(sw,0,0,0), Vector4(sw,sh,0,0), Vector4(0,sh,0,0) };
		Color fillcolr[4] = { Color(0,0,0,80), Color(0,0,0,80), Color(0,0,0,80), Color(0,0,0,80) };
		int fillind[6] = { 0,1,2, 0,2,3 };
		fillgeom->setVertexPositionsRHW( 0, fillpos, 4 );
		fillgeom->setVertexDiffuseColors( 0, fillcolr, 4 );
		fillgeom->setIndices( 0, fillind, 6 );}

		fillgeom->setShader( fillmat );
		mesh->addPrimitive( fillgeom );

		// mainloop
		long prevTime = System::currentTimeMillis();
		float time = 0.f;
		while ( Window::flushWindowMessages() )
开发者ID:TheRyaz,项目名称:c_reading,代码行数:67,代码来源:WinMain.cpp


注:本文中的VertexFormat::addRHW方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。