for cube mapping u have to send to ur shader the camera position and the model matrix(and not the modelviewmatrix) of ur object that u want to apply the cube mapping .

so in ur GL code u have to separete the viewing transformation from modeling transfromation .

the modeling transformation is when u want to rotate/translate ur 3d model into game world.

the viewing transformation is to transform the world so it appears as if it is being viewed from a certain position in our world. then in ur GL code u will do something like this

//setup viwepoint of the global world

//translate,rotate or glulookat (lets call it matrix V)

//postion model1

//push matrix

//roatate translate model (lets call it matrix M)

//draw ur model : here each vertex of ur model will be multiplied by V*M

//pop matrix

//…

so back to ur shader . as i said u need to send the camera positon and the model matrix of ur object and not the modelview matrix(if u supply the modelview matrix the reflection will remain fix even if ur model moves ( as explained b4))

the question is how u can get the model matrix to send it to ur shader.

here an example :

//Ex,Ey,Ez define ur camera position in ur shader

gluLookAt(Ex,Ey,Ez,…);

//position ur model

glPushMatrix();

//here we will ask OpenGL to generate model matrix for us

glLoadIdentity();//back to identity matrix

glTranslatef(modelpos);//translate ur model

glRoatef(modelrot);//rotate ur model

float M[16];

glGetFloatv(GL_MODELVIEW_MATRIX,M);//M now contain the model

//matrix .this matrix must be sent to ur shader

glPopMatrix();//back to view matrix

glPushMatrix();

glTranslatef(modelpos);

glRoatetf(modelrot);

shader->begin();

shader->setuniform3fv(“camerapos”,vec3(Ez,Ey,Ez));

shader->setuniform4x4f(“modelmatrix”,M);

drawModel();

shader->end();

glPopMatrix();

here we asked OpenGL to generate our Model Matrix. u can always generate it manually ( check opengl red book appendix : modeling and transformations matrix)

hope this help