ropel
06-27-2007, 01:09 AM
Hi all,
I still have problems generating a mipmap.
Here is what I currently have:
energyValuesTex->Activate();
energyValuesTex->Bind();
//?? glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexParameterf(energyValuesTex->GetProps()->target,
GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameterf(energyValuesTex->GetProps()->target,
GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(energyValuesTex->GetProps()->target,
GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(energyValuesTex->GetProps()->target,
GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glEnable(energyValuesTex->GetProps()->target);
GLint dim = (int)(sqrt(vfgUtility::NextPowerOfTwo(particles->GetParticlesCount())));
glTexImage2D(energyValuesTex->GetProps()->target,
0,
energyValuesTex->GetProps()->format_int,
dim,
dim,
0,
energyValuesTex->GetProps()->format_ext,
energyValuesTex->GetProps()->type,
BUFFER_OFFSET(0));
//?? glGenerateMipmapEXT(energyValuesTex->GetProps()->target);
//?? gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, 128, 128, GL_RGB, GL_UNSIGNED_BYTE, BUFFER_OFFSET(0));
// Cleanup
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
glDisable(energyValuesTex->GetProps()->target);
energyValuesTex->Unbind();
energyValuesTex->Deactivate();
// Get back values at certain mipmap level
energyValuesTex->Activate();
energyValuesTex->Bind();
GLfloat pixels[3*16384];
glGetTexImage(energyValuesTex->GetProps()->target, 1, energyValuesTex->GetProps()->format_ext, energyValuesTex->GetProps()->type,pixels);
for(int i=0; i<21; i+=3) cout << (float)(pixels[i]) << ", " << (float)(pixels[i+1]) << ", " << (float)(pixels[i+2]) << endl;
energyValuesTex->Unbind();
energyValuesTex->Deactivate();Currently I fill my texture with all the same values, so I would expect that the first level mipmap averages out to approximately the same value. I just can't seem to get this to work. Did I forget something?
Regards,
Ropel
I still have problems generating a mipmap.
Here is what I currently have:
energyValuesTex->Activate();
energyValuesTex->Bind();
//?? glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexParameterf(energyValuesTex->GetProps()->target,
GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameterf(energyValuesTex->GetProps()->target,
GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(energyValuesTex->GetProps()->target,
GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameterf(energyValuesTex->GetProps()->target,
GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glEnable(energyValuesTex->GetProps()->target);
GLint dim = (int)(sqrt(vfgUtility::NextPowerOfTwo(particles->GetParticlesCount())));
glTexImage2D(energyValuesTex->GetProps()->target,
0,
energyValuesTex->GetProps()->format_int,
dim,
dim,
0,
energyValuesTex->GetProps()->format_ext,
energyValuesTex->GetProps()->type,
BUFFER_OFFSET(0));
//?? glGenerateMipmapEXT(energyValuesTex->GetProps()->target);
//?? gluBuild2DMipmaps(GL_TEXTURE_2D, GL_RGB, 128, 128, GL_RGB, GL_UNSIGNED_BYTE, BUFFER_OFFSET(0));
// Cleanup
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0);
glDisable(energyValuesTex->GetProps()->target);
energyValuesTex->Unbind();
energyValuesTex->Deactivate();
// Get back values at certain mipmap level
energyValuesTex->Activate();
energyValuesTex->Bind();
GLfloat pixels[3*16384];
glGetTexImage(energyValuesTex->GetProps()->target, 1, energyValuesTex->GetProps()->format_ext, energyValuesTex->GetProps()->type,pixels);
for(int i=0; i<21; i+=3) cout << (float)(pixels[i]) << ", " << (float)(pixels[i+1]) << ", " << (float)(pixels[i+2]) << endl;
energyValuesTex->Unbind();
energyValuesTex->Deactivate();Currently I fill my texture with all the same values, so I would expect that the first level mipmap averages out to approximately the same value. I just can't seem to get this to work. Did I forget something?
Regards,
Ropel