Hi,

I encountered something peculiar. Everything seems to work fine, though.

I get the following warning message:


> 
> Warning: detected OpenGL error 'invalid operation' at After Renderer::compile
> 


Investigating the issue (and stripping it down somewhat), I found that the 
error message disappears when I change 'unsigned int' in the following piece of 
code to 'int':


Code:

unsigned int texUnit = 0;
ref_ptr<Uniform> uniform = new Uniform("sampler", texUnit);
stateSet->addUniform(uniform);




I'm curious if this is a bug or something I'm forgetting?

For completeness, here's the code that replicates the 'issue' for me:


Code:

#include <osgViewer/Viewer>

using namespace osg;

int main(int argc, char** argv)
{
    osgViewer::Viewer viewer;

    viewer.setUpViewInWindow(50, 50, 640, 480);
        
    ref_ptr<Group> root = new Group;
    ref_ptr<Geode> geode = new Geode;
    ref_ptr<Geometry> geometry = new Geometry;

    root->addChild(geode);
    geode->addChild(geometry);

    geometry->setUseDisplayList(false);
    geometry->setUseVertexBufferObjects(true);

    ref_ptr<StateSet> stateSet = geometry->getOrCreateStateSet();

    ref_ptr<Program> program = new Program();
    program->setName("TestProgram");
    stateSet->setAttributeAndModes( program, StateAttribute::ON );
        
    ref_ptr<Shader> vertShader = new Shader(osg::Shader::Type::VERTEX);
    ref_ptr<Shader> fragShader = new Shader(osg::Shader::Type::FRAGMENT);
    program->addShader(vertShader);
    program->addShader(fragShader);

    vertShader->setShaderSource(
        "void main(void){\n"
        "gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;\n"
        "}\n"
        );
    fragShader->setShaderSource(
        "uniform sampler2D sampler;\n"
        "void main (void){\n"
        "gl_FragColor = vec4(1, 1, 1, 1) + texture2D(sampler, vec2(0, 
0)).rgba;\n"
        "}\n"
        );

    osg::Vec3 quadVerts[] = {
        osg::Vec3(-1, -1, 1),
        osg::Vec3(1, -1, 1),
        osg::Vec3(1, 1, -1),
        osg::Vec3(-1, 1, -1)};

    geometry->setVertexArray( new Vec3Array(4, quadVerts) );
    geometry->addPrimitiveSet( new DrawArrays(PrimitiveSet::QUADS, 0, 1) );

    unsigned int texUnit = 0;
    ref_ptr<Uniform> uniform = new Uniform("sampler", texUnit);
    stateSet->addUniform(uniform);

    viewer.setSceneData(root);

    viewer.run();
}




Thanks,

Selmar[/code]

------------------
Read this topic online here:
http://forum.openscenegraph.org/viewtopic.php?p=61034#61034





_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to