| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 
 |    GLuint texture;// 参数1生成几个,参数2是OpenGL中生成的纹理的标识符。
 glGenTextures(1, &texture);
 // 绑定当前的纹理对象,后面的操作都是针对这个对象。
 // PS:到这了的认知是OpenGL中都是先用API确定一个对象,然后后面的操作都是针对这个确定的对象的。
 glBindTexture(GL_TEXTURE_2D, texture);
 // 设置texture参数,
 // 参数说明:设置的是2d纹理,当一个纹理被放大时(128的图放到512的多边形上面)采用什么算法来采用,采用线性过滤
 // GL_NEAREST是采样是取最近的像素点的值,如果有多个应该是有个策略取的。
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 // 一样,只不过设置的是当一个大图放到小的多边形上时如何过滤
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
 // 如果模型uv坐标超出1.0怎么采样,
 // GL_CLAMP设置的是到纹理坐标为1.0的位置取
 // GL_REPEAT时,是uv.u取小数部分,比如1.1,那么采样就是0.1的位置。
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
 // 2d, 用mipmap哪个层级,纹理数据在显卡上是什么格式,宽、高、0、纹理数据在内存是什么格式,像素中每个分量(rgba)是什么格式,像素数据源
 glTexImage2D(GL_TEXTURE_2D, 0, type, width, height, 0, type, GL_UNSIGNED_BYTE, pixelData);
 // 当前纹理重绑定,等于上面设置的不要再改了。
 glBindTexture(GL_TEXTURE_2D, 0);
 
 |