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
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to