Hi Art,

Thanks for the idea.  I do have a Geforce 8800, and the extensions are reported 
as being supported.
I've attached a very simple program (shaders inlined in the code) which shows 
my setup, if anyone
is interested.  Thanks.

-Sean


> Date: Mon, 25 Feb 2008 13:27:55 +0100
> From: [EMAIL PROTECTED]
> To: osg-users@lists.openscenegraph.org
> Subject: Re: [osg-users] Texture2DArray shows up black
> 
> Hi Sean,
> 
> which graphic card do you have? Texture2DArray do only
> work fine with G80 chips. I have never tested it on
> current ATI chips.
> 
> Best,
> Art
> 
> 
> --- Sean Carmody <[EMAIL PROTECTED]> schrieb:
> 
> > 
> > Hi All,
> > 
> > I'm trying to get Texture2DArrays working, but am
> > having some trouble.  My textures always show up
> > black.  I'm setting up the texture array as follows
> > 
> >     ref_ptr<Texture2DArray> textureArray = new
> > Texture2DArray;
> >     textureArray->setTextureDepth(1);
> >     Image* image =
> > osgDB::readImageFile('media/skymap.tga');
> >     textureArray->setImage(0, image);
> >     stateSet->setTextureAttribute(0,
> > textureArray.get(), osg::StateAttribute::ON);
> > 
> > and trying to read it in the shader.
> > 
> >     #version 120 
> >     #extension GL_EXT_gpu_shader4 : enable
> >     
> >     uniform sampler2DArray rainTextures;
> > 
> >     void main()
> >     {
> >         gl_FragColor = texture2DArray(rainTextures,
> > vec3(gl_TexCoord[0].st, 0));
> >     }
> > 
> > Now, if I switch out the Texture2DArray with a
> > normal Texture2D (and update the shader accordingly)
> > it shows up fine, which leads me to believe the rest
> > of the app is working.  I'm pretty new to OSG and so
> > am wondering if I missed something obvious with the
> > setup of the Texture2DArray.  Thanks!
> > 
> > -Sean
> > 
> >
> _________________________________________________________________
> > Shed those extra pounds with MSN and The Biggest
> > Loser!
> > http://biggestloser.msn.com/>
> _______________________________________________
> > osg-users mailing list
> > osg-users@lists.openscenegraph.org
> >
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
> > 
> 
> 
> 
>       Lesen Sie Ihre E-Mails jetzt einfach von unterwegs.
> www.yahoo.de/go
> _______________________________________________
> osg-users mailing list
> osg-users@lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

_________________________________________________________________
Need to know the score, the latest news, or you need your HotmailĀ®-get your 
"fix".
http://www.msnmobilefix.com/Default.aspx
#include <osg/Group>
#include <osg/Geode>
#include <osg/ShapeDrawable>
#include <osg/Node>
#include <osgViewer/Viewer>
#include <osg/Texture2DArray>
#include <osgDB/ReadFile>
#include <string>

using namespace osg;

void applyShader(Geode* geode)
{
        ref_ptr<Program> program = new Program;
        program->setName("TexturesTest");
        ref_ptr<Shader> vertObj = new Shader(Shader::VERTEX);
        ref_ptr<Shader> fragObj = new Shader(Shader::FRAGMENT);

        program->addShader(vertObj.get());
        program->addShader(fragObj.get());

        ref_ptr<StateSet> stateSet = new osg::StateSet;
        ref_ptr<Uniform> texturesUniform = new Uniform(Uniform::FLOAT, 
"textures", 1);
        stateSet->addUniform(texturesUniform.get());
        stateSet->setAttributeAndModes(program.get(), StateAttribute::ON);

        ref_ptr<Texture2DArray> textureArray = new Texture2DArray;
        textureArray->setTextureDepth(1);
        Image* image = osgDB::readImageFile("Images/Brick-Std-Orange.TGA");
        textureArray->setImage(0, image);
        stateSet->setTextureAttribute(0, textureArray.get(), 
osg::StateAttribute::ON);

        std::string vertSource = 
                "void main()"
                "{"
                        "gl_TexCoord[0].st = gl_MultiTexCoord0.st;"
                        "gl_Position = ftransform();"
                "}";
        vertObj->setShaderSource(vertSource);

        std::string fragSource = 
                "#version 120\n"
                "#extension GL_EXT_gpu_shader4 : enable\n"
                ""
                "uniform sampler2DArray textures;"
                ""
                "void main()"
                "{"
                        "gl_FragColor = texture2DArray(textures, 
vec3(gl_TexCoord[0].xy, 0));"
                "}";
        fragObj->setShaderSource(fragSource);
        
        geode->setStateSet(stateSet.get());
}

int main(int argc, char** argv)
{
        setNotifyLevel(osg::DEBUG_INFO);

        // Create a cube
        ref_ptr<Group> rootNode = new Group;
        Box* cube = new Box(Vec3(0,0,0), 1.0f);
        ShapeDrawable* drawable = new ShapeDrawable(cube);
        Geode* geode = new Geode();
        geode->addDrawable(drawable);
        rootNode->addChild(geode);

        // Apply our shader to this cube
        applyShader(geode);

        osgViewer::Viewer viewer;
        viewer.setSceneData(rootNode.get());
        return viewer.run();
}
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to