请问,当添加了纹理贴图后,就好像没有光照的效果了(旋转的时候不会变亮变暗),这可能是什么原因阿?
显示部分的代码
void RenderScene(void)
{
// Clear the window and the depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
glPushMatrix();
//把整个场景移动到视图中
glTranslatef(-20.0f, -40.0f, -250.0f);
//描绘背景
glBegin(GL_QUADS);
glColor3ub(0,128,0);
glVertex3f(200.0f, 0.0f, -200.0f);
glVertex3f(-200.0f, 0.0f, -200.0f);
glVertex3f(-200.0f, -20.0f, 200.0f);
glVertex3f(200.0f, 0.0f, 170.0f);
glEnd();
glPopMatrix(); glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
//开启纹理贴图
glEnable(GL_TEXTURE_2D);
glPushMatrix();
//把整个场景移动到视图中
glTranslatef(-20.0f, -20.0f, -230.0f);
glRotatef(45.0f, 0.0f, 1.0f, 0.0f); // Save matrix state and do the rotation
glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
DrawRect(FALSE);
// Restore transformations
glPopMatrix(); glDisable(GL_TEXTURE_2D);
// Get ready to draw the shadow
// First disable lighting and save the projection state
glDisable(GL_LIGHTING);
// Save matrix state and do the rotation
glPushMatrix();
glTranslatef(-20.0f, -20.0f, -230.0f);
glRotatef(45.0f, 0.0f, 1.0f, 0.0f); // Calculate projection matrix to draw shadow on the ground
MakeShadowMatrix(points, lightPos, shadowMat);
// Multiply by shadow projection matrix
glMultMatrixf((GLfloat *)shadowMat);
glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
DrawRect(TRUE);
// Restore transformations
glPopMatrix(); glEnable(GL_LIGHTING);
// Flush drawing commands
glutSwapBuffers();
}
显示部分的代码
void RenderScene(void)
{
// Clear the window and the depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
glPushMatrix();
//把整个场景移动到视图中
glTranslatef(-20.0f, -40.0f, -250.0f);
//描绘背景
glBegin(GL_QUADS);
glColor3ub(0,128,0);
glVertex3f(200.0f, 0.0f, -200.0f);
glVertex3f(-200.0f, 0.0f, -200.0f);
glVertex3f(-200.0f, -20.0f, 200.0f);
glVertex3f(200.0f, 0.0f, 170.0f);
glEnd();
glPopMatrix(); glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
//开启纹理贴图
glEnable(GL_TEXTURE_2D);
glPushMatrix();
//把整个场景移动到视图中
glTranslatef(-20.0f, -20.0f, -230.0f);
glRotatef(45.0f, 0.0f, 1.0f, 0.0f); // Save matrix state and do the rotation
glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
DrawRect(FALSE);
// Restore transformations
glPopMatrix(); glDisable(GL_TEXTURE_2D);
// Get ready to draw the shadow
// First disable lighting and save the projection state
glDisable(GL_LIGHTING);
// Save matrix state and do the rotation
glPushMatrix();
glTranslatef(-20.0f, -20.0f, -230.0f);
glRotatef(45.0f, 0.0f, 1.0f, 0.0f); // Calculate projection matrix to draw shadow on the ground
MakeShadowMatrix(points, lightPos, shadowMat);
// Multiply by shadow projection matrix
glMultMatrixf((GLfloat *)shadowMat);
glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
DrawRect(TRUE);
// Restore transformations
glPopMatrix(); glEnable(GL_LIGHTING);
// Flush drawing commands
glutSwapBuffers();
}
解决方案 »
- tcp协议调用recv后使用memcpy将recv_buf中的数据存入缓存字符数组,无法拷贝过去
- vc6.0的配置文件在哪儿?
- 控件选择 -- 列表数据单选问题
- 关于对话框的显示
- 高分救助,如何编程更改IIS中站点中的网站标识中的IP地址跟端口号那些
- 请教如何获取点击的ListControl里是第几行?
- C sdk程序,但运行时窗口只能点击上面的两个按纽,其它连窗口都无法聚焦.帮忙看看.
- 使用CSocket类时出现访问冲突
- 图片框结合部分按钮播放mpeg文件,具体怎么实现呢?up有分!
- 请问CodeJock的xtreme Toolkit V1.9.2.2 正式版可以在VC.NET下用吗?
- 读取硬盘上的.bmp 文件,并且全屏显示
- 关于memory mapping的问题
你用glTexImage2D(GL_TEXTURE_2D,0,3,64,64,0,GL_RGB,GL_UNSIGNED_BYTE,image)读纹理贴出来的颜色与原图不一样,把GL_RGB改成GL_BGR就可以了。