[osg-users] Creating Texture2DArray

Sebastian Messerschmidt sebastian.messerschmidt at gmx.de
Fri Oct 21 06:03:39 PDT 2016


Hi Bruno,




> How do I guarantee that my textures will be unsigned integer 8bit texels
> with no scaling nor normalization to float or whatsoever? Because using
> GL_LUMINANCE is distupring my textures

GL_LUMINANCE8UI should do the trick. You need use a the correct 
sampler/data-type in the shader too (usampler and uvec)

Cheers
Sebatian

>
> 2016-10-21 13:47 GMT+01:00 Glenn Waldron <gwaldron at gmail.com
> <mailto:gwaldron at gmail.com>>:
>
>     I mean that GL_LUMINANCE is a valid pixel format, and GL_LUMINANCE8
>     is an internal format. GL_LUMINANCE8 is not a valid pixel format and
>     will probably give you a invalid enumerant error.
>
>
>
>     Glenn Waldron
>
>     On Fri, Oct 21, 2016 at 8:03 AM, Bruno Oliveira
>     <bruno.manata.oliveira at gmail.com
>     <mailto:bruno.manata.oliveira at gmail.com>> wrote:
>
>         Sorry Glenn what do you mean by "those reserved"?
>
>
>         By the way, my intention is to pass uchar textures of fixed
>         size, to perform texelFetch and bitwise operations inside a
>         shader, so I really need my textures to be in the exact format
>         of unsigned byte integer, single channel!
>
>         2016-10-21 12:25 GMT+01:00 Glenn Waldron <gwaldron at gmail.com
>         <mailto:gwaldron at gmail.com>>:
>
>             Bruno, I think you have those reversed.
>
>
>             On Oct 21, 2016 6:07 AM, "Bruno Oliveira"
>             <bruno.manata.oliveira at gmail.com
>             <mailto:bruno.manata.oliveira at gmail.com>> wrote:
>
>                 Hello,
>
>                 thank you for your answer. I am indeed using the same
>                 texture sizes and formats.
>                 If I use GL_LUMINANCE8 as pixelFormat and GL_LUMINANCE
>                 as internalFormat, I get a "invalid enumerant" error
>
>                 2016-10-21 7:56 GMT+01:00 Sebastian Messerschmidt
>                 <sebastian.messerschmidt at gmx.de
>                 <mailto:sebastian.messerschmidt at gmx.de>>:
>
>
>                     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
>                         <mailto:osg-users at lists.openscenegraph.org>
>                         http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>                         <http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org>
>
>                     _______________________________________________
>                     osg-users mailing list
>                     osg-users at lists.openscenegraph.org
>                     <mailto:osg-users at lists.openscenegraph.org>
>                     http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>                     <http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org>
>
>
>
>                 _______________________________________________
>                 osg-users mailing list
>                 osg-users at lists.openscenegraph.org
>                 <mailto:osg-users at lists.openscenegraph.org>
>                 http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>                 <http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org>
>
>
>             _______________________________________________
>             osg-users mailing list
>             osg-users at lists.openscenegraph.org
>             <mailto:osg-users at lists.openscenegraph.org>
>             http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>             <http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org>
>
>
>
>         _______________________________________________
>         osg-users mailing list
>         osg-users at lists.openscenegraph.org
>         <mailto:osg-users at lists.openscenegraph.org>
>         http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>         <http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org>
>
>
>
>     _______________________________________________
>     osg-users mailing list
>     osg-users at lists.openscenegraph.org
>     <mailto:osg-users at lists.openscenegraph.org>
>     http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
>     <http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org>
>
>
>
>
> _______________________________________________
> 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