[osg-users] Creating Texture2DArray

Sebastian Messerschmidt sebastian.messerschmidt at gmx.de
Thu Oct 20 23:56:51 PDT 2016


Hi Bruno:
Sorry for not reading to the end:

> Hello,
>
> I'm trying to create a Texture2DArray. My textures are uchar images with
> size (texWidth, 256), single channel. The combination of texture
> internalFormat and pixelFormat with pixelType is not working. I use
> GL_R8UI for internalFormat, GL_RED_INTEGER for pixelFormat and
> GL_UNSIGNED_BYTE for type. This yields the following error when I try to
> render my scene:
>
> /Warning: detected OpenGL error 'invalid enumerant' at after
> RenderBin::draw(..)/
>
> However, if I use GL_LUMINANCE for internalFormat and also GL_LUMINANCE
> for pixelFormat, I get no errors but my textures are not correctly
> sized. WHat formats should I use here?
When using GL_LUMINCANE as internal formet the pixlel format needs to be 
GL_LUMINANCE4/8/12/16[F/I/UI] ...

So basically for default precision (GL_BYTE) it should be

GL_LUMINANCE8


Cheers
Sebastian

>
> This is my code:
>
>
>
> osg::ref_ptr<osg::Texture2DArray> texture = new osg::Texture2DArray;
> texture->setFilter(osg::Texture2DArray::MIN_FILTER,
> osg::Texture2DArray::LINEAR);
> texture->setFilter(osg::Texture2DArray::MAG_FILTER,
> osg::Texture2DArray::LINEAR);
> texture->setWrap(osg::Texture2DArray::WRAP_R, osg::Texture2DArray::REPEAT);
>  texture->setInternalFormat(*textureFormat()*);
>
>
> // Add some images as follows:
> for (...) {
>
>  osg::Image* image = new osg::Image;
> image->setImage(texWidth, 256, 1, *textureFormat(), pixelFormat(),
> type(),* dataPtr);
>
> texture->setImage(i, image);
> }
>
>
> I am using:
> textureFormat() = GL_R8UI;
> pixelFormat() = GL_RED_INTEGER;
> type() = GL_UNSIGNED_BYTE
>
>
> _______________________________________________
> osg-users mailing list
> osg-users at lists.openscenegraph.org
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>



More information about the osg-users mailing list