Sign in to follow this  

Create a new texture from two blended textures

This topic is 1957 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi guys, I am trying to create a new texture from a background texture but with it's alpha values set from the colour gradient of another texture. Ie like this:


This is a framework of the C++ code I am using:

unsigned tex_aft(int tex, int copy_tex)
//tex is the texture to set the alpha to, copy_tex is the texture to take the colour gradients from for the alpha values
GLuint texture = tex, copy_texture = copy_tex;
glBindTexture(GL_TEXTURE_2D, texture);
int w, h;
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_WIDTH, &w);
glGetTexLevelParameteriv(GL_TEXTURE_2D,0,GL_TEXTURE_HEIGHT, &h);
glBindTexture(GL_TEXTURE_2D, copy_texture);
char* bitmap = new char[(h<<(lgpp2(w)+2))|2]; //lgpp2() function is used to get powers of two
glGetTexImage(GL_TEXTURE_2D, 0, GL_RGBA, GL_UNSIGNED_BYTE, bitmap);
GLuint tex_new;
glGenTextures(1, &tex_new);
glBindTexture(GL_TEXTURE_2D, tex_new);
glTexImage2D(GL_TEXTURE_2D, 0, 4, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, void(bitmap));
delete[] bitmap;
return tex_new;

But from what I know you can't use glBlendFunc to blend bound textures like this, all this code winds up doing is returning a straight replica of the copy_tex. So does anybody here please know what code I could use to blend the two textures like I have described and create a new texture from this?

Thanks for any help. Edited by grasshop

Share this post

Link to post
Share on other sites
It depends a little on your requirements. If you only need to do it once, you may as well do it "off-line". That is, you can do it yourself without using OpenGL.

If you have real-time requirements, using OpenGL to do it seems like a good idea. The usual solution is to use a [url=""]Frame Buffer Object[/url].

However, I think you should to abandon the deprecated [url=""]legacy opengl[/url]. With shaders, you get it exactly the way you want it.

Share this post

Link to post
Share on other sites
Thanks for the help, I did it manually a lot better. [img][/img] Edited by grasshop

Share this post

Link to post
Share on other sites
Sign in to follow this