OpenGL using Texture2d key steps

Source: Internet
Author: User

Steps to generate texture2d
1. Prepare the pixel data for the texture ImageData
2. Glgentextures (); stored in a handle gluint texture
3. Glbindtexture () The Texture just generated, the first parameter is gl_texture_2d
4. Glteximage2d (), combined with imageData and the texture that was just bound, so the texture generation is complete.
5. Clean up ImageData memory
6. Glbindtexture () The first parameter is gl_texture_2d, and the second one is 0. And just the texture handle unbound




Gluint generatetexture (std::string filePath)
{
int width, height;
unsigned char* image = Soil_load_image (Filepath.c_str (), &width, &height, 0, Soil_load_rgb);
Gluint texture;
Glgentextures (1, &texture);
Glbindtexture (gl_texture_2d, TEXTURE);
Glteximage2d (gl_texture_2d, 0, Gl_rgb, width, height, 0, Gl_rgb, gl_unsigned_byte, image);
Glgeneratemipmap (gl_texture_2d);
Soil_free_image_data (image);
Glbindtexture (gl_texture_2d, 0);
return texture;
}


7. When using textures


Glactivetexture (GL_TEXTURE0);
Glbindtexture (gl_texture_2d, TEXTURE);
Gluniform1i (Glgetuniformlocation (Shaderprogram, "Outtexture"), 0);


Glactivetexture (Gl_texture1);
Glbindtexture (gl_texture_2d, TEXTURE);
Gluniform1i (Glgetuniformlocation (Shaderprogram, "OutTexture1"), 1);


The last parameter of gluniform1i () 0,1 refers to sampler2d corresponding gl_texture0 in shader, Gl_texture1




The corresponding fragment shader:


#version Core
Out VEC4 color;
In Vec4 Vertexcolor;
In VEC2 Texcoord;
Uniform sampler2d outtexture;
Uniform sampler2d OutTexture2;
void Main ()
{
"COLOR = Mix (texture (outtexture,texcoord), Texture (Outtexture2,texcoord), 0.2);"
}

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.