glrotatef 函数好像没有起任何作用,求高手指点
-(bool) activeDraw { glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glMatrixMode(GL_MODELVIEW); RGBF clf[7]; vertex *vet ; vector<int>::iterator itr ; for( itr = crc->vi_still.begin () ; itr != crc->vi_still.end() ; itr++ ) { crc->rb_buf[*itr].GetShowData( vet, clf) ; / [self ShowBlock:vet :clf]; } crc->rot_deta += -0.144*fabs( crc->rot_alpha - 25 )+3.6 ; crc->rot_alpha ++ ; glPushMatrix(); glLoadIdentity(); glRotatef(crc->rot_alpha , crc->rot_x , crc->rot_y , crc->rot_z); for( itr = crc->vi_rot.begin () ; itr != crc->vi_rot.end() ; itr++ ) { crc->rb_buf[*itr].GetShowData( vet, clf) ; [self ShowBlock:vet :clf]; } glPopMatrix(); if( crc->rot_alpha == 50 ) { return true ; } glFinish(); }
解决方案:40分
本人写一般是用glm数学库构造一个rotate matrix,然后用uniform函数传到shader里面,给全部顶点都乘上这个uniform,就完成旋转了。