nehe教程混合这一节需要注意的两个地方
//glDepthFunc(GL_LESS);
?//glEnable(GL_DEPTH_TEST);///關掉深度測試,否則沒效果,原因是后畫的物體通不過測試,當然也就不能混合了
??? glDepthRange(0.0, 1.0);
?glClearDepth(1.0);
?
??? glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
??? glClearColor(0.0, 0.0, 0.0, 1.0);
??
??? //glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
?
??? AUX_RGBImageRec *textureImage[1];
??? textureImage[0] = auxDIBImageLoadA(TEXT("D:/aa.bmp"));//輔助函數,用來讀入紋理圖
??
??? glBlendFunc(GL_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA);//打開混合測試函數
?glColor4f(1.0, 0.0, 0.0, 0.7);
?glEnable(GL_BLEND);
??? GLuint texture[1];
??? glEnable(GL_TEXTURE_2D);
?glGenTextures(1, &texture[0]);
?glBindTexture(GL_TEXTURE_2D, texture[0]);
?glTexParameteri(GL_TEXTURE, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
?glTexParameteri(GL_TEXTURE, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
??? gluBuild2DMipmaps(GL_TEXTURE_2D, 3, textureImage[0]->sizeX, textureImage[0]->sizeY, GL_RGB, GL_UNSIGNED_BYTE, textureImage[0]->data);注意把nehe里面的生成紋理的函數換成glubuild2DMipmaps()
?glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
?
?glBindTexture(GL_TEXTURE_2D, texture[0]);
??? glMatrixMode(GL_MODELVIEW);
?glLoadIdentity();
?//glRotatef(num * 30, 10.0, 10.0, 10.0);//旋轉紋理
?glBegin(GL_QUADS);
???? glTexCoord2f(0.0f, 0.0f); glVertex3f(-100.0f, -100.0f,? 100.0f);//0 4?// 紋理和四邊形的左下
??glTexCoord2f(1.0f, 0.0f); glVertex3f( 100.0f, -100.0f,? 100.0f);//1 5?// 紋理和四邊形的右下
??glTexCoord2f(1.0f, 1.0f); glVertex3f( 100.0f,? 100.0f,? 100.0f);//2 6?// 紋理和四邊形的右上
??glTexCoord2f(0.0f, 1.0f); glVertex3f(-100.0f,? 100.0f,? 100.0f);//3 7?// 紋理和四邊形的左上
???? glTexCoord2f(0.0, 0.0); glVertex3f(-10.0, -10.0, 30.0);//4
??glTexCoord2f(1.0, 0.0); glVertex3f(10.0, -10.0, 30.0);//5
??glTexCoord2f(1.0, 1.0); glVertex3f(10.0, 10.0, 30.0);//6
??glTexCoord2f(0.0, 1.0); glVertex3f(-10.0, 10.0, 30.0);//7
??glTexCoord2f(0.0, 0.0); glVertex3f(-10.0f, -10.0f,? 10.0f);
??glTexCoord2f(1.0, 0.0); glVertex3f( 10.0f, -10.0f,? 10.0f);
??????? glTexCoord2f(1.0, 1.0); glVertex3f(-10.0, -10.0, 30.0);
??glTexCoord2f(0.0, 1.0); glVertex3f(10.0, -10.0, 30.0);
?glEnd();
?glFlush();?
?glDisable(GL_TEXTURE_2D);
//----------------------------
測試了一下nehe教程里面的混合這一節,有兩個地方需要注意,首先要關掉深度測試,如果不關掉深度測試,可能后畫的物體直接通不過,就不能畫到屏幕上,當然也就不能產生混合效果了
第二個就是,要用gluBuild2DMipmaps()這個函數,原教程的產生紋理的函數好像已經被丟棄了,不能使用
轉載于:https://www.cnblogs.com/lizhengjin/archive/2009/07/22/1528860.html
總結
以上是生活随笔為你收集整理的nehe教程混合这一节需要注意的两个地方的全部內容,希望文章能夠幫你解決所遇到的問題。