OpenGL中进行纹理贴图出现颜色干扰的有关问题,请
发布时间:2011-06-27 20:38:57 文章来源:www.iduyao.cn 采编人员:星星草
OpenGL中进行纹理贴图出现颜色干扰的问题,请高手指点
今天发现了一个奇怪的现象:如果我要画两个物体,第一个不用纹理贴图,而第2个要纹理贴图,就发现第一个的颜色会干扰到纹理贴图的,结果两个物体的颜色都变得很怪了,怎么能让画完第一个物体后,它的颜色不对第2个产生影响呢?
我现在的代码如下,第一个画三菱锥(不用纹理贴图,只用平滑着色),第二个画一个正方体并用纹理贴图:
int COpenGLDemoView::DrawGLScene()
{// Here 's Where We Do All The Drawing
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glPushAttrib(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_CURRENT_BIT);
glPushMatrix();
glShadeModel(GL_SMOOTH);
glLoadIdentity(); // Reset The Current Modelview Matrix
glTranslatef(-1.5f,0.0f,-6.0f);//物体左移1.5,向内移6,相当于移动镜头一样,让物体进入镜头中
glRotatef(rTri,0.0f,1.0f,0.0f);
glBegin(GL_TRIANGLES); // 绘制三角形
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f( 0.0f, 1.0f, 0.0f); // 三角形的上顶点 (前侧面)
glColor3f(0.0f,1.0f,0.0f); // 绿色
glVertex3f(-1.0f,-1.0f, 1.0f); // 三角形的左下顶点 (前侧面)
glColor3f(0.0f,0.0f,1.0f); // 蓝色
glVertex3f( 1.0f,-1.0f, 1.0f); // 三角形的右下顶点 (前侧面)
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f( 0.0f, 1.0f, 0.0f); // 三角形的上顶点 (右侧面)
glColor3f(0.0f,0.0f,1.0f); // 蓝色
glVertex3f( 1.0f,-1.0f, 1.0f); // 三角形的左下顶点 (右侧面)
glColor3f(0.0f,1.0f,0.0f); // 绿色
glVertex3f( 1.0f,-1.0f, -1.0f); // 三角形的右下顶点 (右侧面)
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f( 0.0f, 1.0f, 0.0f); // 三角形的上顶点 (后侧面)
glColor3f(0.0f,1.0f,0.0f); // 绿色
glVertex3f( 1.0f,-1.0f, -1.0f); // 三角形的左下顶点 (后侧面)
glColor3f(0.0f,0.0f,1.0f); // 蓝色
glVertex3f(-1.0f,-1.0f, -1.0f); // 三角形的右下顶点 (后侧面)
glColor3f(1.0f,0.0f,0.0f); // 红色
glVertex3f( 0.0f, 1.0f, 0.0f); // 三角形的上顶点 (左侧面)
glColor3f(0.0f,0.0f,1.0f); // 蓝色
glVertex3f(-1.0f,-1.0f,-1.0f); // 三角形的左下顶点 (左侧面)
glColor3f(0.0f,1.0f,0.0f); // 绿色
glVertex3f(-1.0f,-1.0f, 1.0f); // 三角形的右下顶点 (左侧面
glEnd(); // 三角形绘制结束
glPopMatrix();
glPopAttrib();
glPushAttrib(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT|GL_CURRENT_BIT);
glPushMatrix();
glLoadIdentity();
glTranslatef(1.5f,0.0f,-6.0f);
glRotatef(xrot,1.0f,0.0f,0.0f);
glRotatef(yrot,0.0f,1.0f,0.0f);
glRotatef(zrot,0.0f,0.0f,1.0f);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glBegin(GL_QUADS); // 绘制正方形
// Front Face
glNormal3f( 0.0f, 0.0f, 1.0f); // 法线指向观察者
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于opengl源码的问题
gluPickMatrix函数的实现在哪?我在glut源码中找了半天没有找到
------解决方案--------------------
这是...
-
关于傅立叶变换的数字水印嵌入算法的问题
需求:
首先对图像和水印图像进行傅里叶变换;
讲数字水印嵌入到图像中;
逆变换显示潜入水印...
-
Matlab和OpenCV的处理速度问题
大家好!我正准备用Windows下的OPENCV实现MSR算法来处理图像,目前已经有在Matlab下面的处理的程序,但...
-
问一个Ghostscript的问题!
我用Ghostscript API将eps转换成pdf,在其他的环境下都能很好的执行。但是在windows server 2008上却不行...
-
求教D3D9.DLL为什么没有被游戏进程加载?
我本来想wrap一下D3D9.DLL给一个3D游戏搞点破坏,但用IcdSword监视一下游戏使用模块,发现连D...
-
请教几个DirectX的问题
1:切线贴图就是法线贴图的意思么?
如果不是,那两者有什么区别?
2:The NPatch mode segments 是什么意思?
原文:
...
-
用OpenCV作的一个车牌识别程序
新手用OpenCV作的一个车牌识别程序,目前只能处理黄底黑字
的车牌图像,供大家交流学习之用。如果感...
-
求助:用matlab实现图像的dct变换
如题
用matlab实现图像的dct变换
不要用自带的dct2函数
多谢了
------解决方案----------------...
-
建了一个群,OCR字符识别技术,欢迎大家加入!
欢迎大家讨论各种字符的识别技术,从图像的预处理到最后分类识别的过程都可以讨论。
qq...
-
Matlab下怎么才能把封闭曲线作为边界判断区域内外
大家好!我对一幅图进行边缘分割,得到了边缘(是一条曲线),下一步想要用得到的边缘曲...