我有一个图像 ( png),其中包含我想要拆分并加载到单独纹理中的精灵。怎么做才对?。例如,我有一个png600x300 的尺寸,我想将其用作两个 300x300 的纹理。目前我只是完全下载
glActiveTexture(GL_TEXTURE7);
glGenTextures(1, &glTexture_);
glBindTexture(GL_TEXTURE_2D, glTexture_);
glTexImage2D(GL_TEXTURE_2D,
0,
GL_RGBA,
pictureSize.width(),
pictureSize.height(),
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
fromRGBA32.pixels());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_2D, 0);
并且已经在我共享的着色器中,但是当我们可以组合多个纹理然后确定要在着色器中采用哪个纹理时,我想使用创新es 3(传递一个变量比传递一个确定正方形的二维坐标更好)需要)。
可以将图像的各个部分复制到单独的二维数组中并
glTexImage2D像往常一样加载它们,但这既无趣又慢。你可以这样做:
通常,OpenGL 认为传递的数组中的像素行是密集的,但
glPixelStorei(GL_UNPACK_ROW_LENGTH, ...)你可以让它忽略行之间的额外字节。