Sign in to follow this  
Ender1618

Dynamically loading and displaying greyscale textures

Recommended Posts

Ender1618    254

I am trying to create a 1 channel texture, and update on the fly with a 1 channel image buffer. Im trying to render the texture at its native black and white.

 

I am creating the storage like so:

glTexStorage2D (
    GL_TEXTURE_2D,
    1,
    GL_R8,
    width,
    height
);

 

And filling it like so (where data is a single channel image buffer):

glTexSubImage2D (
    GL_TEXTURE_2D,
    0,
    0,
    0,
    width,
    height,
    GL_RED,
    GL_UNSIGNED_BYTE,
    data
);

When rendering I am getting a red version of my b/w image.

 

My intention was that the other channels would get duplicates of the red channel (other than alpha which would get 1,0).

 

My shader is generic for any type of texture, and I dont want to have a custom one for greyscale images, as i am also showing non-greyscale images.

 

I was under the impression that GL_LUMINACE would do what I intended, but I thought that was deprecated.

 

I would rather not use a BGRA texture and fill the B G R with the same value coming from my data. Im trying to fill this as fast as possible from a decoded b/w video, and at the same time minimize use of texture memory. I also get RGB video, that i am uploading as BGRA8, which works fine (swizzling and adding A before the upload), but I want to use the same shader.

 

I must be doing something silly, and misunderstanding something.

 

How would I accomplish this?

 

Thanx for any help.

Edited by Ender1618

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this