Hi Hadrien 0(3) : error C1008: undefined variable "glPosition" 0(3) : error C1008: undefined variable "glProjectionMatrix" 0(3) : error C1008: undefined variable "glModelViewMatrix" 0(3) : error C1008: undefined variable "glVertex"
GLSL functions all have the prefix gl_ not gl. i.e. glPosition should be gl_Position. Kim. 2009/8/4 Hadrien Thomas <[email protected]>: > Hi, > > > I found this tutorial which was very convenient: > > http://www.openscenegraph.org/documentation/NPSTutorials/osgGL2ShaderIntro.htm > > But the problem was the path of my shader files. > > Now I have solved that, it compiles but there is still a problem remaining: > > > Code: > VERTEX glCompileShader "" FAILED > VERTEX Shader "" infolog: > 0(3) : error C1008: undefined variable "glPosition" > 0(3) : error C1008: undefined variable "glProjectionMatrix" > 0(3) : error C1008: undefined variable "glModelViewMatrix" > 0(3) : error C1008: undefined variable "glVertex" > > glLinkProgram "" FAILED > Program "" infolog: > Vertex info > ----------- > 0(3) : error C1008: undefined variable "glPosition" > 0(3) : error C1008: undefined variable "glProjectionMatrix" > 0(3) : error C1008: undefined variable "glModelViewMatrix" > 0(3) : error C1008: undefined variable "glVertex" > > > > > I give you my new code: > > > > Code: > > #include <osgViewer/Viewer> > #include <osgViewer/ViewerEventHandlers> > #include <osgGA/StateSetManipulator> > #include <osgDB/ReadFile> > #include <osg/Uniform> > #include <osg/Geode> > #include <osg/Node> > #include <osg/Group> > #include <osg/Vec3> > #include <osg/Vec4> > #include <osg/ShapeDrawable> > #include <osg/Shader> > #include <osg/Program> > #include <osg/ref_ptr> > > int main(int ac, char **av) > { > osg::Vec4 red(1.0, 0.0, 0.0, 1.0); > osg::setNotifyLevel(osg::NOTICE); > > // Viewer init > osgViewer::Viewer viewer; > > viewer.addEventHandler(new > osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet())); > viewer.addEventHandler(new osgViewer::StatsHandler()); > //viewer.addEventHandler(new osgViewer::ThreadingHandler); > viewer.addEventHandler(new osgViewer::WindowSizeHandler); > viewer.setUpViewInWindow(100, 100, 800, 600); > > //root > osg::Group* rootNode = new osg::Group(); > > //objet de la scene > osg::Geode* MaGeode = new osg::Geode(); > rootNode->addChild(MaGeode); > // Sphere > osg::ShapeDrawable* sd = new osg::ShapeDrawable; > osg::Sphere* mySphere = new osg::Sphere(osg::Vec3(0.0f, 0.0f, 0.0f), > 1.5f); > sd->setShape(mySphere); > sd->setColor(red); > MaGeode->addDrawable(sd); > > //code to load and apply basic shader > > osg::StateSet* rootState = rootNode->getOrCreateStateSet(); > osg::ref_ptr<osg::Program> defaultProgramObject = new osg::Program; > > //Read and attach the FRAGMENT shader > osg::Shader* shaderFrag = osgDB::readShaderFile(osg::Shader::FRAGMENT, > "C:\\hadrien\\point.frag"); > > if (shaderFrag == NULL) > { > osg::notify(osg::NOTICE) << "Effect(frag) Not Supported !" << std::endl; > return -1; > } > defaultProgramObject->addShader(shaderFrag); > > //Read and attach the VERTEX shader > osg::Shader* shaderVert = osgDB::readShaderFile(osg::Shader::VERTEX, > "C:\\hadrien\\vertshader.vert"); > > if (shaderVert == NULL) > { > osg::notify(osg::NOTICE) << "Effect(vert) Not Supported !" << std::endl; > return -1; > } > defaultProgramObject->addShader(shaderVert); > > > //rootState->addUniform( new osg::Uniform( "x", 50 )); > //rootState->addUniform( new osg::Uniform( "y", 50 )); > //widgetState->addUniform(new osg::Uniform("drawWidth", 1)); > //widgetState->addUniform(new osg::Uniform("drawColor", > osg::Vec4(255,0,0,255))); > > rootState->setAttributeAndModes(defaultProgramObject, > osg::StateAttribute::ON); > > viewer.setSceneData(rootNode); > viewer.run(); > > return (0); > } > > > > > vertshader.vert file: > > > Code: > void main ( ) > { > glPosition=glProjectionMatrix*glModelViewMatrix*glVertex ; > } > > > > point.frag file: > > > Code: > #version 110 > > uniform vec4 drawColor; > uniform int drawWidth; > uniform int x; > uniform int y; > > void main(void) > { > gl_FragColor = gl_Color; > gl_FragColor.w = 1.0; > if (x >= int(gl_FragCoord.x)-drawWidth && x <= > int(gl_FragCoord.x)+drawWidth && > y >= int(gl_FragCoord.y)-drawWidth && y <= > int(gl_FragCoord.y)+drawWidth) > { > gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); > } > } > > > > Is there something missing? > > ------------------ > Read this topic online here: > http://forum.openscenegraph.org/viewtopic.php?p=15766#15766 > > > > > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

