材质(Textures)
当我要画一个图片,
先获得一个材质id,bind材质,设置纹理参数,read图片数据,转成opengl识别的数据格式,如rgba等,
把数据和id绑定。这个时候在draw里面就可以提取出材质根据id,然后就可以画这个材质了.
load过程:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrapst);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrapst);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, magfilter);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, minfilter);
int ns = pngLoad([str UTF8String], mipMap, trs, &info);
if (ns <= 0) return;
id和数据绑定:glTexImage2D(GL_TEXTURE_2D, mipmap, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data2); //data2是png数据
当你需要绘制的时候在draw里面:
glPushMatrix();
glxColor3f(1.0, 1.0, 1.0);
float halfW = info.Width / 2;
float halfH = info.Height / 2;
glBindTexture(GL_TEXTURE_2D, ids);
glRotatef(-90, 0, 0, 1);
glxBegin(GL_QUADS);
glxTexCoord2f(0.0, 0.0); glxVertex2f(-halfW, halfH);
glxTexCoord2f(0.0, 1.0); glxVertex2f(-halfW, -halfH);
glxTexCoord2f(1.0, 1.0); glxVertex2f(halfW, -halfH);
glxTexCoord2f(1.0, 0.0); glxVertex2f(halfW, halfH);
glxEnd();
glPopMatrix();