Du kannst die Texturen in ein großes PNG laden und per glTexCoord2f(x, y) auf deine Quads laden. guck dir dazu die referenz von glTexCoord* an.
Sollte 1 der fall sein mach es folgendermaßen:
Code: Alles auswählen
void loadTexture(QString filename, GLuint textureid)
{
QImage img, tmp;
tmp.load(filename); //Bild laden
img = QGLWidget::convertToGLFormat( tmp ); //QImage in opengl format wandeln (umdrehen und farben tauschen)
glGenTextures(1, &textureid);
glBindTexture(GL_TEXTURE_2D, textureid);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
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_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img.width(),
img.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE,
img.bits());
glBindTexture(GL_TEXTURE_2D, 0);
}
void Widget::initializeGL()
{
loadTexture("texture.png", texName);
/*
..... CODE.....
*/
}
void Widget::paintGL()
{
double x = 0, y = 0;
for(int i = 0; i < 1000; i++){
glBegin(GL_QUADS);
glTexCoord(x == 0 : 0.0 ? x/32.0, y == 0 : 0.0 ? y/32.0); glVertex(posx,posy);
glTexCoord((x+1)/32.0, y == 0 : 0.0 ? y/32.0); glVertex(posx,posy);
glTexCoord(x == 0 : 0.0 ? x/32.0, (y+1)/32.0); glVertex(posx,posy);
glTexCoord((x+1)/32.0, y == (y+1)/32.0); glVertex(posx,posy);
glEnd();
x++;
if(x == 32){
x = 0;
y = 0;
}
}
}
oder so in der art. habs mal aufgeschrieben ohne zu testen.