Hi Jochen,

can you please provide a minimal compiling example, or at least the vertex shader you use.
The

Cheers
Sebastian
Hi, all :)

I have so a simple quastion but I can solve the problem.

I want to draw a quad attach a simple Shader with a simple texture operation.
But I only get a black quad. The shader works when a color each fragmnent with 
the color red, but wen I want to get texture-colors... its only got black.

Some Code:

Code:

osg::Vec2Array* textureCoordinates = new osg::Vec2Array;
        osg::Vec3Array* quadVertices = new osg::Vec3Array;
        osg::Geometry* quadGeometry = new osg::Geometry();

        // *********** Vertices ***********
        quadVertices->push_back(osg::Vec3(x - rad, y - rad, 0.0));
        quadVertices->push_back(osg::Vec3(x + rad, y - rad, 0.0));
        quadVertices->push_back(osg::Vec3(x + rad, y + rad, 0.0));
        quadVertices->push_back(osg::Vec3(x - rad, y + rad, 0.0));

        quadGeometry->setVertexArray(quadVertices);
        // *********** Vertices - Ende ***********

        // *********** Texturkorrdinaten ***********
        textureCoordinates->push_back(osg::Vec2(0, 0));
        textureCoordinates->push_back(osg::Vec2(1, 0));
        textureCoordinates->push_back(osg::Vec2(1, 1));
        textureCoordinates->push_back(osg::Vec2(0, 1));

        quadGeometry->setTexCoordArray(0, textureCoordinates, 
osg::Array::BIND_PER_VERTEX);
        // *********** Texturkorrdinaten-Ende ***********


        // *********** Faces-Idizes ***********
        osg::DrawElementsUInt* gridFace = new 
osg::DrawElementsUInt(osg::PrimitiveSet::QUADS, 0);
        gridFace->push_back(0);
        gridFace->push_back(1);
        gridFace->push_back(2);
        gridFace->push_back(3);

        quadGeometry->addPrimitiveSet(gridFace);
        // *********** Faces-Idizes - Ende ***********

        // **** Logo - Texture ****
        {
                std::string path("Grafik\\");
                std::string fileName = path + std::string("Skull.tga");

                osg::Image *image = osgDB::readImageFile(fileName);
                if (!image)
                {
                        exit;
                }

                osg::TextureRectangle* texture = new 
osg::TextureRectangle(image);

                osg::TexMat* texmat = new osg::TexMat;
                texmat->setScaleByTextureRectangleSize(true);

                // setup state
                osg::StateSet* state = new osg::StateSet();
                state->addUniform(new osg::Uniform("skull_Texture", 
SKULL_TEXTURE));
                state->setTextureAttributeAndModes(SKULL_TEXTURE, texture, 
osg::StateAttribute::ON);
                state->setTextureAttributeAndModes(SKULL_TEXTURE, texmat, 
osg::StateAttribute::ON);

                state->setMode(GL_BLEND, osg::StateAttribute::ON);
        
        
                quadGeometry->setStateSet(state);
        }




Here I attech the shader

Code:

        // Shader-Logo
        {
                osg::StateSet* stateSet = quadGeometry->getOrCreateStateSet();

                mShaderProgramLogo = new osg::Program;
                mShaderProgramLogo->setName("ProgramLogo");
                mVertexShaderLogo = new osg::Shader(osg::Shader::VERTEX);
                mFragmentShaderLogo = new osg::Shader(osg::Shader::FRAGMENT);

                mShaderProgramLogo->addShader(mFragmentShaderLogo);
                mShaderProgramLogo->addShader(mVertexShaderLogo);

                
mVertexShaderLogo->loadShaderSourceFromFile("Shader\\vertLogo.txt");
                
mFragmentShaderLogo->loadShaderSourceFromFile("Shader\\fragmentLogo.txt");
                stateSet->setAttributeAndModes(mShaderProgramLogo, 
osg::StateAttribute::ON);
                
                quadGeometry->setStateSet(stateSet);
        }





and here the fragment-shader code:

Code:

#version 330

uniform sampler2D skull_Texture;

varying vec2 textCoord;

void main(void)
{
     vec4 colSkull = texture2D(skull_Texture, textCoord);

        //gl_FragColor = vec4(1.0,0,0,1.0); // => this works fine
        gl_FragColor = colSkull;        // => every fragment is black!!!
}




Can anybody help my.
OSG is such a nice library...but why it doesn't work? :(

Thank you!

Cheers,
JoseMan[/code]

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





_______________________________________________
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