Hi David,

I don't personally use Windows, it must a decade now since I last used
one for development... so I can't answer your question specifically.
Best I can do is say in general OpenGL releated features not working
across different systems is usually down to either a problem with the
driver/hardware or a problem in the portability of the OpenGL being
used.  Something shaders might be permitted by one driver but cause a
problem in an another, but the problem can be traced back to use of
OpenGL (shders in particular) in ways that are at edge of the official
GLSL spec.  This type of problem isn't usually affected by compilers
used.

I recall a tweak made to the OSG to address percularities in driver
implementations in the OSG-3.x era, but can't recall the specific
dates, perhaps this fix might address the problems you have.  Could
you try out the svn/trunk or OSG-3.1.3 dev release?

Robert.

On 24 October 2012 16:17, David Sellin <davse...@student.liu.se> wrote:
> Hi,
>
> I ported my program from mingw and Code Blocks to Visual Studio 2010 Express 
> and found that I couldn't get uniform arrays to work. Has anyone experienced 
> this? I'm new to Visual Studio so I might have missed something.
>
> I made a small test program that works on my old system but not on my new 
> system:
> (sorry for the weird symbols and that the include dirs fell off)
>
>
> Code:
>
> #include <osg/Group>
> #include <osgDB/ReadFile>
> #include <osgViewer/Viewer>
> #include <osgGA/TrackballManipulator>
>
> int main( int argc, char **argv )
> {
>     osg::setNotifyLevel( osg::WARN );
>
>     osg::Group *root = new osg::Group;
>
>     std::string url = "cow.osg";
>     osg::Node* modelNode = osgDB::readNodeFile( url );
>
>     //setup shaders
>     osg::Shader *vertshader = new osg::Shader( osg::Shader::VERTEX );
>     vertshader->loadShaderSourceFromFile( "uniformarray.vert" );
>     osg::Shader *fragshader = new osg::Shader( osg::Shader::FRAGMENT );
>     fragshader->loadShaderSourceFromFile( "uniformarray.frag" );
>     osg::Program *shaderprog = new osg::Program();
>     shaderprog->addShader( vertshader );
>     shaderprog->addShader( fragshader );
>     modelNode->getOrCreateStateSet()->setAttributeAndModes( shaderprog );
>
>     // Array uniform
>     osg::Uniform *arrayUFM = new osg::Uniform( osg::Uniform::FLOAT, "array", 
> 2 );
>     arrayUFM->setElement( 0, 0.5f );
>     arrayUFM->setElement( 1, 1.0f );
>     modelNode->getOrCreateStateSet()->addUniform( arrayUFM );
>
>     root->addChild( modelNode );
>
>     // Graphics Context and Traits
>     osg::ref_ptr<osg::GraphicsContext::Traits> traits = new 
> osg::GraphicsContext::Traits;
>     traits->x = 10;
>     traits->y = 10;
>     traits->width = 800;
>     traits->height = 600;
>     traits->doubleBuffer = true;
>     const std::string version( "3.1" );
>     traits->glContextVersion = version;
>
>     osg::ref_ptr<osg::GraphicsContext> gc = 
> osg::GraphicsContext::createGraphicsContext( traits.get() );
>
>     // Viewer
>     osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer();
>     viewer->getCamera()->setGraphicsContext( gc.get() );
>     viewer->getCamera()->setViewport( new osg::Viewport( 0, 0, traits->width, 
> traits->height ) );
>     viewer->setSceneData( root );
>     viewer->setCameraManipulator( new osgGA::TrackballManipulator() );
>
>     viewer->run();
>
>     return 0;
> }
>
>
>
>
> Vertex shader:
>
> Code:
>
> #version 140
>
> uniform mat4 osg_ModelViewProjectionMatrix;
>
> in vec4 osg_Vertex;
>
> void main()
> {
>   gl_Position = osg_ModelViewProjectionMatrix * osg_Vertex;
> };
>
>
>
>
> Fragment shader using the array:
>
> Code:
>
> #version 140
>
> uniform float array[2];
>
> out vec4 fragData;
>
> void main()
> {
>   fragData = vec4( 1.0, array[0], array[1], 1.0 );
> }
>
>
>
>
> Old system:
> OSG 3.0 (revision 12753)
> MinGW and Code Blocks
> NVIDIA GEFORCE 260
> WIN 7
>
> New system
> OSG 3.0.1 (stable release)
> Visual C++ 2010 Express
> NVIDIA GEFORCE 680
> WIN 7
>
> Thank you!
>
> Cheers,
> David[/code]
>
> ------------------
> Read this topic online here:
> http://forum.openscenegraph.org/viewtopic.php?p=50756#50756
>
>
>
>
>
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to