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

Reply via email to