opengl中3d图形的旋转,求解答!解决思路

opengl中3d图形的旋转,求解答!!!
问题还是没有解决,我想要实现导入的3d模型绕着屏幕的x轴(就是固定水平方向),y轴(固定的竖直方向)旋转,使用glLoadIdentity();重置模型观察矩阵,
glRotatef(Angel, 0.0f, 1.0f, 0.0f);
glRotatef(Alph, 1, 0, 0);
因为每次调用模型矩阵单位化了的,所以绕着y轴(也就是竖直方向没有问题),
但是由于y轴转动了,世界坐标系中的x轴也发生的相应的转动,在使用glRotatef就不是绕着屏幕的水平方向了,有没有什么方法解决啊?
OpenGL 图形 旋转

------解决方案--------------------
你的问题是物体的自转的问题

而glRotatef是按照世界坐标来旋转,旋转效果是叠加的

办法两种
1  需要计算出来自身转轴在之前的旋转下新的位置, 对新的位置调用glRotatef 
2  自己接管矩阵数学, 建立根据自转角度直接生成 旋转矩阵的算法
  而后使用 glLoadMatrix 来直接使用 
参考这个说明:http://blog.****.net/mysniper11/article/details/8766574

------解决方案--------------------
也许和你rotate角的设置有关

#define GOOD_ROTATE

#include <GL\glut.h>   
void init(void)   
{   
    GLfloat light_position [] = { 1.0, 1.0, 1.0, 0.0 };   
    GLfloat mat_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };  
    GLfloat mat_shininess[] = { 50.0 };  
    glClearColor ( 0.0, 0.0, 1.0, 0.0 );
    glShadeModel ( GL_SMOOTH );   
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse);  
    glLightfv ( GL_LIGHT0, GL_POSITION, light_position);   
    glEnable (GL_LIGHTING);   
    glEnable (GL_LIGHT0);   
    glEnable (GL_DEPTH_TEST);   
}   
float xRot = 0.0f;
float yRot = 0.0f;
void rotate()
{
    glMatrixMode(GL_MODELVIEW);
#ifdef GOOD_ROTATE
    glLoadIdentity();
#endif
    glTranslatef(0,0,0);
    glRotatef(xRot,1.0f,0.0f,0.0f);
    glRotatef(yRot,0.0f,1.0f,0.0f);
}
void display ( void )   
{   
    glClear (GL_COLOR_BUFFER_BIT 
------解决方案--------------------
 GL_DEPTH_BUFFER_BIT);   
    rotate();
    glutSolidSphere (1.0, 4, 5);
    glFlush ();   
}   
int x_from, y_from, x_to, y_to;
int mouse_down[3];
void motion(GLint x, GLint y)
{
    x_to = x;
    y_to = y;
    if(mouse_down[0])
    {
        float xVec = (x_to - x_from) / 5.f;
        float yVec = (y_to - y_from) / 5.f;