[Shading]Notes on Using Textures
keywords: Graphics, Shading, Texture Downsampling (Downscaling) Notes
Texture Parameters (glTexParameteri)
OpenGL
//moon贴图
if(!Texture.LoadBitmap("image_moon.bmp")) /**< 载入位图文件 */
{
MessageBox(NULL,"装载位图文件03失败!","错误",MB_OK); /**< 如果载入失败则弹出对话框 */
return false;
}
glGenTextures(1, &Texture.ID); /**< 生成一个纹理对象名称 */
glBindTexture(GL_TEXTURE_2D, Texture.ID); /**< 创建纹理对象 */
/** 控制滤波 */
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
/** 创建纹理 */
gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, Texture.imageWidth,
Texture.imageHeight, GL_RGB, GL_UNSIGNED_BYTE,
Texture.image);
// 加载和创建纹理
glGenTextures(1, &texture1);
glBindTexture(GL_TEXTURE_2D, texture1);
// 设定纹理wrapper参数
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// 纹理过滤
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// 加载image 创造纹理 生成mipmaps
int width, height, nrChannels;
std::string filename1 = "/data/data/com.example.airhockey_cpp/wall.jpg";
stbi_set_flip_vertically_on_load(true); // 翻转图像
unsigned char *data = stbi_load(filename1.c_str(), &width, &height, &nrChannels, 0);
if(data){
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
glGenerateMipmap(GL_TEXTURE_2D);
}else {
LOGE("Failed to load texture1\n");
}
stbi_image_free(data);
Texture Downsampling (Downscaling)
OpenGL
What is texture downsampling (downscaling) using OpenGL?
https://stackoverflow.com/a/30290468/1645289
DirectX
Downscaling texture via mipmap [DirectX 11]
https://computergraphics.stackexchange.com/questions/8975/downscaling-texture-via-mipmap-directx-11
“What's measured improves” ― Peter Drucker