ogre shader usage

来源:互联网 发布:怎样自学plc编程 编辑:程序博客网 时间:2024/05/17 17:59

ogre shader 使用可以参考这两个说明:

http://www.ogre3d.org/forums/viewtopic.php?f=2&t=76580#p483996

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=RT+Shader+System

 

自己试了一把

 

 //create scenemanager and camera
  Ogre::SceneManager* sm=rt->createSceneManager(Ogre::ST_GENERIC,"testScence");
  
  //shader
  if(Ogre::RTShader::ShaderGenerator::initialize()){

  Ogre::RTShader::ShaderGenerator* mShaderGenerator = Ogre::RTShader::ShaderGenerator::getSingletonPtr();
  mShaderGenerator->setShaderCachePath("C:\\download\\OgreSDK_vc10_v1-8-1\\media\\RTShaderLib\\cache");   
  mShaderGenerator->addSceneManager(sm);
}

 

然后将shader材质设置

 Ogre::Entity* et=sm->createEntity("robot.mesh");
  //Ogre::ResourceGroupManager::getSingleton().create
  et->setMaterial(Ogre::MaterialManager::getSingleton().getByName("RTSS/LayeredBlending"));// 这里在材质脚本中定义,文件在ogre media下shaderlib文件夹中
  Ogre::SceneNode* node=sm->getRootSceneNode()->createChildSceneNode(Ogre::Vector3(0,0,0));
  node->attachObject(et);
  node->roll(Ogre::Radian(0.9));
  node->scale(1,1,3);

运行出错,发现resource没有添加进去

 Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
   "C:\\download\\OgreSDK_vc10_v1-8-1\\media\\RTShaderLib"
   ,"FileSystem"
   ,"RTShaderLib");

     Ogre::ResourceGroupManager::getSingleton().addResourceLocation(
   "C:\\download\\OgreSDK_vc10_v1-8-1\\media\\RTShaderLib\\materials"
   ,"FileSystem"
   ,"RTShaderLib");

加入之后运行成功,robot以前是全黄色的,现在有了条纹出来

 

 

脚本的定义

// This material demonstrates the texture blending extension.
material RTSS/LayeredBlending
{
 technique
 {
  pass
  {  
   lighting off 
   texture_unit
   {
    scale 0.1 0.1
    texture rockwall.tga
   }

   texture_unit
   {
    // RT Shader system section - required by the layered blend extension.
    rtshader_system
    {
     layered_blend luminosity
     source_modifier src1_inverse_modulate custom 2
    }
    texture ogrelogo.png
   }      
  }
 }
}

 

原创粉丝点击