shader 文件打不开
int main( int argc, char **argv ) { osgViewer::Viewer viewer; osg::Group* pRoot = new osg::Group; viewer.setCameraManipulator(new osgGA::TrackballManipulator()); viewer.setSceneData(pRoot); osgWidget::WindowManager* pMgr=new osgWidget::WindowManager(&viewer,1024.f,768.f,MASK_2D,osgWidget::WindowManager::WM_USE_RENDERBINS); CreateExample(viewer, pMgr, pRoot); osg::Geode* pGeode=new osg::Geode; pRoot->addChild(pGeode); pGeode->addDrawable(createPlane(5,5)); osg::StateSet* stateset = pGeode->getOrCreateStateSet(); osg::Shader* vertexShader = new osg::Shader( osg::Shader::VERTEX ); osg::Shader* fragmentShader = new osg::Shader( osg::Shader::FRAGMENT ); vertexShader->loadShaderSourceFromFile("shaders/temp.vert"); fragmentShader->loadShaderSourceFromFile("shaders/temp.frag"); // loadShaderSource(vertexShader,"shaders\temp.vert"); //loadShaderSource(fragmentShader,"shaders\temp.frag"); osg::Program* program = new osg::Program; program->addShader( vertexShader ); program->addShader( fragmentShader ); stateset->setAttributeAndModes( program, osg::StateAttribute::ON ); float time=0.0; osg::Uniform* param = new osg::Uniform("Time", time ); stateset->addUniform( param ); osg::Uniform* param0 = new osg::Uniform( "texMap", 0 ); stateset->addUniform( param0 ); //BindTexture("tex1.jpg",stateset,0); BindTexture("Images/skymap.jpg",stateset,0); osg::Uniform* param1 = new osg::Uniform( "mixMap", 1 ); stateset->addUniform( param1 ); //BindTexture("texture.png",stateset,1); BindTexture("Images/blueFlowers.png",stateset,1); while( !viewer.done() ) { time+=0.0002; param->set(time); viewer.frame(); } return 0; }为什么老说我那两个shader文件打不开呢?请多帮忙,谢谢! int main( int argc, char **argv )
{
osgViewer::Viewer viewer;
osg::Group* pRoot = new osg::Group;
viewer.setCameraManipulator(new osgGA::TrackballManipulator());
viewer.setSceneData(pRoot);
osgWidget::WindowManager* pMgr=new osgWidget::WindowManager(&viewer,1024.f,768.f,MASK_2D,osgWidget::WindowManager::WM_USE_RENDERBINS);
CreateExample(viewer, pMgr, pRoot);
osg::Geode* pGeode=new osg::Geode;
pRoot->addChild(pGeode);
pGeode->addDrawable(createPlane(5,5));
osg::StateSet* stateset = pGeode->getOrCreateStateSet();
osg::Shader* vertexShader = new osg::Shader( osg::Shader::VERTEX );
osg::Shader* fragmentShader = new osg::Shader( osg::Shader::FRAGMENT );
vertexShader->loadShaderSourceFromFile("shaders/temp.vert");
fragmentShader->loadShaderSourceFromFile("shaders/temp.frag");
// loadShaderSource(vertexShader,"shaders\temp.vert");
//loadShaderSource(fragmentShader,"shaders\temp.frag");
osg::Program* program = new osg::Program;
program->addShader( vertexShader );
program->addShader( fragmentShader );
stateset->setAttributeAndModes( program, osg::StateAttribute::ON );
float time=0.0;
osg::Uniform* param = new osg::Uniform("Time", time );
stateset->addUniform( param );
osg::Uniform* param0 = new osg::Uniform( "texMap", 0 );
stateset->addUniform( param0 );
//BindTexture("tex1.jpg",stateset,0);
BindTexture("Images/skymap.jpg",stateset,0);
osg::Uniform* param1 = new osg::Uniform( "mixMap", 1 );
stateset->addUniform( param1 );
//BindTexture("texture.png",stateset,1);
BindTexture("Images/blueFlowers.png",stateset,1);
while( !viewer.done() )
{
time+=0.0002;
param->set(time);
viewer.frame();
}
return 0;
} "shaders/temp.frag" 3# aya_daxiang
("shaders/temp.frag");
对呀我是这样用的呀 file:///D:/我的文档/桌面/未命名.bmp array 版主,难道是必须用绝对路径吗? 没有规定一定要使用绝对路径~~相对路径也没问题的~~~~~关键是您是否设置正确的路径~~ “shaders\\temp.frag”
两个斜线哦 c或c++路径是要双斜线的 你能不能先用绝对路径试试来出来问
页:
[1]