-
UID:117951
-
- 注册时间2011-06-13
- 最后登录2020-10-19
- 在线时间344小时
-
- 发帖171
- 搜Ta的帖子
- 精华0
- 金钱1770
- 威望186
- 贡献值0
- 好评度176
-
访问TA的空间加好友用道具
|
我画了一个正方体,然后在(0,0,2)的地方放了光源。我想把这个光源固定住, 旋转立方体的时候光源只照射眼睛看到的这个面。但我的程序的光源却跟着立方体一起旋转了。。。。现在就是,刚开始照亮了正方体的面对我的这个面,当我旋转正方体的时候,光会越来越暗。等到第一个面赚回来的时候,光线又正常了,求解。 主要代码如下: - void opengl::initializeGL()
- {
- loadGLTextures();
- glEnable( GL_TEXTURE_2D );
- glShadeModel(GL_SMOOTH);
- glClearColor(0.0, 0.0, 0.0, 1);
- glClearDepth(1.0);
- glEnable(GL_DEPTH_TEST);
- glEnable(GL_LEQUAL);
- glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
- }
- void opengl::paintGL()
- {
- glPushMatrix();
- glLoadIdentity();
- glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
- glEnable(GL_LIGHT0);
- glEnable(GL_LIGHTING);
- glPopMatrix();
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glLoadIdentity();
- glTranslatef( 0.0, 0.0, zoom );
- glRotatef(rSx, 0.0, 1.0, 0.0);
- // glTranslatef( 0.0, -0.5, -3.0 );
- glRotatef(rSy, 1.0, 0.0, 0.0);
- // glLoadIdentity();
- glTranslatef( -0.5, -0.5, 0.5 );
- glBindTexture( GL_TEXTURE_2D, texture[0] );
- glBegin( GL_QUADS );
- glColor3f(1.0, 1.0, 1.0);
- glTexCoord2f( 0.0, 0.0 ); glVertex3f(0.0,0.0,0.0);
- glTexCoord2f( 1.0, 0.0 ); glVertex3f(1.0,0.0,0.0);
- glTexCoord2f(1.0,1.0); glVertex3f(1.0,1.0,0.0);
- glTexCoord2f(0.0,1.0); glVertex3f(0.0,1.0,0.0);
- // glColor3f(0.0,1.0,0.0);
- glTexCoord2f( 0.0, 0.0 );glVertex3f(1.0,0.0,0.0);
- glTexCoord2f( 1.0, 0.0 ); glVertex3f(1.0,0.0,-1.0);
- glTexCoord2f(1.0,1.0); glVertex3f(1.0,1.0,-1.0);
- glTexCoord2f(0.0,1.0); glVertex3f(1.0,1.0,0.0);
- // glColor3f(0.0,0.0,1.0);
- glTexCoord2f( 0.0, 0.0 );glVertex3f(1.0,0.0,-1.0);
- glTexCoord2f( 1.0, 0.0 );glVertex3f(0.0,0.0,-1.0);
- glTexCoord2f(1.0,1.0);glVertex3f(0.0,1.0,-1.0);
- glTexCoord2f(0.0,1.0);glVertex3f(1.0,1.0,-1.0);
- //glColor3f(1.0,1.0,0.0);
- glTexCoord2f( 0.0, 0.0 );glVertex3f(0.0,0.0,-1.0);
- glTexCoord2f( 1.0, 0.0 );glVertex3f(0.0,0.0,0.0);
- glTexCoord2f(1.0,1.0); glVertex3f(0.0,1.0,0.0);
- glTexCoord2f(0.0,1.0);glVertex3f(0.0,1.0,-1.0);
- glTexCoord2f( 0.0, 0.0 );glVertex3f(0.0, 1.0, 0.0);
- glTexCoord2f( 1.0, 0.0 );glVertex3f(1.0, 1.0, 0.0);
- glTexCoord2f(1.0,1.0);glVertex3f(1.0, 1.0, -1.0);
- glTexCoord2f(0.0,1.0);glVertex3f(0.0, 1.0, -1.0);
- glTexCoord2f( 0.0, 0.0 );glVertex3f(0.0, 0.0, -1.0);
- glTexCoord2f( 1.0, 0.0 );glVertex3f(1.0, 0.0, -1.0);
- glTexCoord2f(1.0,1.0);glVertex3f(1.0, 0.0, 0.0);
- glTexCoord2f(0.0,1.0);glVertex3f(0.0, 0.0, 0.0);
- glEnd();
-
- //rS+=5;
- }
- void opengl::resizeGL(int w, int h)
- {
- if(h == 0)
- h = 1;
- glViewport(0, 0, GLint(w), GLint(h));
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(45.0, w/h, 0.1, 100.0);
- glMatrixMode( GL_MODELVIEW );
- glLoadIdentity();
- }
|