Hi Robert,

In the cow.osg model, they use SPHERE_MAP to generate the texture coordinates. 
I wonder whether openscenegraph has the same kinds of functions. Would you 
please tell me?

Thanks,
Ying


robertosfield wrote:
> Hi Ying,
> 
> The cow.osg model uses osg::TexGen (wrapper for glTexGen) to generate the 
> texture coordinates so the ones assigned to actual geometry are ignored.  
> glTexGen is part of the fixed function pipeline in OpenGL so you don't get 
> this functionality when using shaders.  You'll have to implement your own 
> texgen to generate the texture coordinates for this model, or apply your own.
> 
> 
> Might I suggest using other models that do have appropriate texture 
> coordinate on them for testing.
> 
> 
> Robert.
> 
> 
> 
> On 6 August 2014 15:52, ying song < ()> wrote:
> 
> >  Hello Robert,
> > 
> > Yes, you are right. The reason is that I didn't set up the texture 
> > coordinates. I did the following change, and I could texturing the model in 
> > the shader. I think the problem is that gl_MultiTexCoord0 actually didn't 
> > give out any texture coordinates in my first code.
> > 
> > vertex shader:
> > varying vec2 texCoord;
> > void main()
> > {
> > 
> >         gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
> > 
> >         texCoord = gl_Vertex.xy;
> > }
> > 
> > fragment shader:
> > uniform sampler2D texture;
> > varying vec2 texCoord ;
> > void main()
> > {
> >        vec4 color = texture2D(texture, texCoord );
> >         gl_FragColor = color;
> > }
> > 
> > But in this way, I set the texture coordinate according to gl_Vertex, which 
> > is still not what I wanted.
> > 
> > If I want to render the cow.osg model using shaders, how could I get the 
> > texture coordinates from the osg file? I checked the original osg file of 
> > the cow model, and found that the texture coordinates are all set to (0,0) 
> > in this file. I wonder whether it's necessary to use texture coordinates if 
> > I want to render the cow model.
> > 
> > If I want to render the exact same cow model using shaders, would you tell 
> > me how could I do it?
> > 
> > Thanks,
> > Ying
> > 
> > robertosfield wrote:
> > 
> > > Hi Ying,
> > > 
> > > It's not possible to pinpoint what is wrong as you provide no guidance of 
> > > how you set up your osg::Geometry.  My best guess would be that you don't 
> > > set up the texture coordinates.
> > > 
> > > 
> > > Have a look at the osgshaders example for inspiration,
> > > 
> > > 
> > > Robert.
> > > 
> > > 
> > > 
> > > 
> > 
> > 
> > > On 5 August 2014 16:31, ying song < ()> wrote:
> > > 
> > > 
> > > > Hello everyone,
> > > > 
> > > > I tried texturing a cube by using shaders, but failed. I already tried 
> > > > all the way I could think about, but the rendered cube is still totally 
> > > > black if I use shaders. Could someone help me on this?
> > > > 
> > > > Here is mycode:
> > > > cpp file:
> > > >         osg::ref_ptr<osg::Image> image = 
> > > > osgDB::readImageFile("Images/reflect.rgb");
> > > >         osg::ref_ptr<osg::Node> node = createNode(); //create the cube
> > > > 
> > > > osg::StateSet* squareState = node->getOrCreateStateSet();
> > > >          osg::Program* squareProgramObject = new osg::Program;
> > > >        osg::Shader* squareVertexObject = new osg::Shader( 
> > > > osg::Shader::VERTEX );
> > > >        osg::Shader* squareFragmentObject = new osg::Shader( 
> > > > osg::Shader::FRAGMENT );
> > > >        squareProgramObject->addShader( squareFragmentObject );
> > > >        squareProgramObject->addShader( squareVertexObject );
> > > >            squareVertexObject->loadShaderSourceFromFile( 
> > > > "shaders/cubeRender.vert");
> > > >            
> > > > squareFragmentObject->loadShaderSourceFromFile("shaders/cubeRender.frag");
> > > >        squareState->setAttributeAndModes(squareProgramObject, 
> > > > osg::StateAttribute::ON);
> > > > 
> > > >            osg::ref_ptr<osg::Texture2D> texture = new osg::Texture2D();
> > > >         texture->setImage(image.get());
> > > >         
> > > > texture->setFilter(osg::Texture::MIN_FILTER,osg::Texture::NEAREST_MIPMAP_NEAREST);
> > > >  //choose the nearest texture unit value
> > > >         
> > > > texture->setFilter(osg::Texture::MAG_FILTER,osg::Texture::LINEAR); 
> > > > //choose the average of the nearest 4 pixel values as texture
> > > > 
> > > >         osg::Uniform* myTextureU = new 
> > > > osg::Uniform("myTexture",texture.get());
> > > >         squareState->addUniform(myTextureU);
> > > > 
> > > >          viewer->setSceneData(node.get());
> > > > 
> > > > vertex shader:
> > > > 
> > > > void main()
> > > > {
> > > > 
> > > >         gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
> > > >         gl_TexCoord[0] = gl_MultiTexCoord0;
> > > > }
> > > > 
> > > > fragment shader:
> > > > uniform sampler2D myTexture;
> > > > 
> > > > void main()
> > > > {
> > > >         vec4 color = texture2D(myTexture, gl_TexCoord[0].st);
> > > >         gl_FragColor = color;
> > > > }
> > > > 
> > > > Thanks a lot!
> > > > 
> > > > Cheers,
> > > > ying[/b]
> > > > 
> > > > ------------------
> > > > Read this topic online here:
> > > > 
> > > 
> > 
> > 
> > 
> > > 
> > > > http://forum.openscenegraph.org/viewtopic.php?p=60539#60539 
> > > > (http://forum.openscenegraph.org/viewtopic.php?p=60539#60539) 
> > > > (http://forum.openscenegraph.org/viewtopic.php?p=60539#60539 
> > > > (http://forum.openscenegraph.org/viewtopic.php?p=60539#60539))
> > > > 
> > > > 
> > > > 
> > > > 
> > > > 
> > > > _______________________________________________
> > > > osg-users mailing list
> > > >  ()
> > > > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > >  
> > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org)
> > > >  
> > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > > >  
> > > > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org))
> > > > 
> > > > 
> > > 
> > > 
> > >  ------------------
> > > Post generated by Mail2Forum
> > > 
> > 
> > 
> > ------------------
> > Read this topic online here:
> > 
> > http://forum.openscenegraph.org/viewtopic.php?p=60566#60566 
> > (http://forum.openscenegraph.org/viewtopic.php?p=60566#60566)
> > 
> > 
> > 
> > 
> > 
> > _______________________________________________
> > osg-users mailing list
> >  ()
> > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org 
> > (http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org)
> > 
> > 
> > 
> 
> 
>  ------------------
> Post generated by Mail2Forum


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





_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to