青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Shuffy

不斷的學習,不斷的思考,才能不斷的進步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19

《基于MFC的OpenGL編程》Part 16 Reflection

Posted on 2010-03-31 20:51 Shuffy 閱讀(289) 評論(0)  編輯 收藏 引用 所屬分類: MFC,OpenGL

Reflections

Adding reflections to a program too can improve its realism to a great extent. Here we'll look at a simple method to create reflection where we simply redraw the object with an appropriate transformation and make the surface in between translucent. This creates an effective illusion of reflection!!

1,設置光源代碼修改如下:

void CCY457OpenGLView::SetupLighting ()
{
      
//Material Properties
      GLfloat matSpecular[] = { 1.0f0.0f0.0f0.7f};
      GLfloat matShininess[] 
= { 50.0f};
      GLfloat matAmbient[] 
= { 0.25f0.25f0.25f0.7f};
      GLfloat matDiffuse[] 
= { 0.5f0.5f0.5f0.7f};
      glMaterialfv(GL_FRONT, GL_SPECULAR, matSpecular);
      glMaterialfv(GL_FRONT, GL_SHININESS, matShininess);
      glMaterialfv(GL_FRONT, GL_DIFFUSE, matDiffuse);
      glMaterialfv(GL_FRONT, GL_AMBIENT, matAmbient);
      
//Lighting Parameters
      
//Enable Lighting
      glEnable(GL_LIGHTING);
      
//Specify a single directional light
      GLfloat ambient1[] = { 0.5f,0.5f,0.5f};
      GLfloat diffuse1[] 
= { 0.5f,0.5f,0.5f};
      GLfloat specular1[] 
= { 1.0f,0.0f,0.0f};
      GLfloat position1[] 
= { 0.0f,0.0f,5.0f,0.0};
      glLightfv(GL_LIGHT0, GL_AMBIENT, ambient1);
      glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse1);
      glLightfv(GL_LIGHT0, GL_SPECULAR, specular1);
      glLightfv(GL_LIGHT0, GL_POSITION, position1);    
      glEnable(GL_LIGHT0);
      
//Specify a single positional spotlight
      GLfloat ambient2[] = { 1.0f,1.0f,0.0f};
      GLfloat diffuse2[] 
= { 1.0f,0.0f,0.0f};
      GLfloat position2[] 
= { 1.0f,0.0f,5.0f,1.0};
      GLfloat direction2[] 
= {0.0f,0.0f,-5.0f};
      glLightfv(GL_LIGHT1, GL_AMBIENT, ambient2);
      glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse2);
      glLightfv(GL_LIGHT1, GL_POSITION, position2);
      glLightfv(GL_LIGHT1, GL_SPOT_DIRECTION, direction2);
      glLightf(GL_LIGHT1, GL_SPOT_CUTOFF, 
15.0f);
      glEnable(GL_LIGHT1);
}

2,繪制函數修改如下:

void CCY457OpenGLView::RenderScene ()
{
//繪制函數
      glTranslatef(0.0f,0.0f,-8.0f);
      
// Save matrix state and do the rotation
      glPushMatrix();
           glRotatef(m_xRot, 
1.0f0.0f0.0f);
           DrawCube();
           glPopMatrix();
           glPushMatrix();
                 glTranslatef(
0.0f-3.0f0.0f);
                 glScalef(
1.0f-1.0f1.0f);
                 glRotatef(m_xRot, 
1.0f0.0f0.0f);
                 DrawCube();
           glPopMatrix();
           
// Draw bottom of floor
           glEnable(GL_BLEND);
           glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
           glPushMatrix();
           glEnable(GL_TEXTURE_2D);
           glBindTexture(GL_TEXTURE_2D, m_Texture[
3]);
           glBegin(GL_POLYGON);
                 glTexCoord2f(
0.0f0.0f);
                 glVertex3f(
-5.0f-1.5f5.0f );
                 glTexCoord2f(
1.0f0.0f);
                 glVertex3f(
-5.0f-1.5f-5.0f );
                 glTexCoord2f(
1.0f1.0f);
                 glVertex3f(
5.0f-1.5f-5.0f );
                 glTexCoord2f(
0.0f1.0f);
                 glVertex3f(
5.0f-1.5f5.0f );
           glEnd();
      glPopMatrix();
      glDisable(GL_TEXTURE_2D);
      glDisable(GL_BLEND); 
}
void CCY457OpenGLView::DrawCube ()
{
           glEnable(GL_TEXTURE_2D);
           glBindTexture(GL_TEXTURE_2D,m_Texture[
0]);    
           
//Front Face
           glBegin(GL_POLYGON);
                 glTexCoord2f(
0,0);
                 glVertex3f(
-1.0f,-1.0f,0.0f);
                 glTexCoord2f(
1,0);
                 glVertex3f( 
1.0f,-1.0f,0.0f);
                 glTexCoord2f(
1,1);
                 glVertex3f( 
1.0f1.0f,0.0f);
                 glTexCoord2f(
0,1);
                 glVertex3f(
-1.0f1.0f,0.0f);
           glEnd();
           
//Back Face
           glBegin(GL_POLYGON);
                 glTexCoord2f(
1,0);
                 glVertex3f(
-1.0f,-1.0f,-1.0f);
                 glTexCoord2f(
1,1);
                 glVertex3f(
-1.0f1.0f,-1.0f);
                 glTexCoord2f(
0,1);
                 glVertex3f( 
1.0f1.0f,-1.0f);
                 glTexCoord2f(
0,0);
                 glVertex3f( 
1.0f,-1.0f,-1.0f);
           glEnd();
           glBindTexture(GL_TEXTURE_2D,m_Texture[
1]);
           
//Left Face
           glBegin(GL_POLYGON);
                 glTexCoord2f(
1,0);
                 glVertex3f(
-1.0f,-1.0f0.0f);
                 glTexCoord2f(
1,1);
                 glVertex3f(
-1.0f1.0f0.0f);
                 glTexCoord2f(
0,1);
                 glVertex3f(
-1.0f1.0f,-1.0f);
                 glTexCoord2f(
0,0);
                 glVertex3f(
-1.0f,-1.0f,-1.0f);
           glEnd();
           
//Right Face
           glBegin(GL_POLYGON);
                 glTexCoord2f(
0,0);
                 glVertex3f(
1.0f,-1.0f0.0f);
                 glTexCoord2f(
1,0);
                 glVertex3f(
1.0f,-1.0f,-1.0f);
                 glTexCoord2f(
1,1);
                 glVertex3f(
1.0f1.0f,-1.0f);
                 glTexCoord2f(
0,1);
                 glVertex3f(
1.0f1.0f0.0f);
           glEnd();
           glBindTexture(GL_TEXTURE_2D,m_Texture[
2]);
           
//Top Face
           glBegin(GL_POLYGON);
                 glTexCoord2f(
0,0);
                 glVertex3f(
-1.0f1.0f0.0f);
                 glTexCoord2f(
0,1);
                 glVertex3f( 
1.0f1.0f0.0f);
                 glTexCoord2f(
1,1);
                 glVertex3f( 
1.0f1.0f-1.0f);
                 glTexCoord2f(
1,0);
                 glVertex3f(
-1.0f1.0f-1.0f);
           glEnd();
           
//Botton Face
           glBegin(GL_POLYGON);
                 glTexCoord2f(
0,1);
                 glVertex3f(
-1.0f-1.0f0.0f);
                 glTexCoord2f(
0,0);
                 glVertex3f(
-1.0f-1.0f-1.0f);
                 glTexCoord2f(
1,0);
                 glVertex3f( 
1.0f-1.0f-1.0f);
                 glTexCoord2f(
1,1);
                 glVertex3f( 
1.0f-1.0f0.0f);
           glEnd();
           glDisable(GL_TEXTURE_2D);
}

 

作者:洞庭散人

出處:http://phinecos.cnblogs.com/    

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
原文鏈接:http://www.cnblogs.com/phinecos/archive/2008/11/07/1328887.html
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            免费不卡亚洲欧美| 国内外成人在线| 午夜在线a亚洲v天堂网2018| 国产亚洲精品激情久久| 亚洲综合第一页| 久久国产欧美精品| 激情文学一区| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美日韩国产首页| 亚洲国产视频a| 亚洲国产精品一区二区第四页av| 免费h精品视频在线播放| 亚洲精品国产精品国自产观看浪潮 | 久久精品亚洲乱码伦伦中文| 一区二区三区亚洲| 欧美日韩国产亚洲一区| 欧美伊人精品成人久久综合97| 99在线热播精品免费99热| 国产精品美女一区二区| 亚洲理伦电影| 亚洲美女av电影| 免费成人高清视频| 久久精品视频在线观看| 日韩视频一区二区三区| 欧美一区免费| 欧美日韩视频在线第一区| 午夜一级久久| 亚洲看片网站| 你懂的亚洲视频| 激情丁香综合| 久久国产综合精品| av成人动漫| 亚洲一区二区三| 亚洲国产精品欧美一二99| 国产精品日本一区二区| 欧美mv日韩mv国产网站app| 欧美电影免费观看高清| 亚洲电影观看| 国产日韩欧美在线视频观看| 亚洲欧美精品suv| 99国产精品视频免费观看| 欧美日韩岛国| 亚洲理论在线| 久久综合一区二区| 亚洲免费一区二区| 国产精品视频免费一区| 欧美二区在线观看| 日韩亚洲一区二区| 亚洲国产三级网| 亚洲一区二区免费在线| 国产欧美日韩综合一区在线观看| 亚洲午夜三级在线| 99精品久久久| 亚洲精选大片| 亚洲人体一区| 欧美一区观看| 性娇小13――14欧美| 一本久久青青| 一区二区三区免费观看| 99精品国产在热久久下载| 亚洲免费成人| 99天天综合性| 亚洲天天影视| 亚洲男人的天堂在线观看| 亚洲天堂男人| 欧美一区二区免费| 伊人影院久久| 狠狠久久亚洲欧美专区| 伊人婷婷久久| 欧美日韩午夜| 欧美午夜精品久久久| 久久国产夜色精品鲁鲁99| 亚洲国产婷婷香蕉久久久久久| 欧美成人综合一区| 欧美成年人视频| 香蕉视频成人在线观看| 久久精品女人| 欧美国产日韩一二三区| 亚洲精品色婷婷福利天堂| 久久噜噜噜精品国产亚洲综合| 亚洲毛片av| 久久不射2019中文字幕| 久久久精品日韩欧美| 中国成人亚色综合网站| 亚洲一区二区黄| 欧美一区亚洲二区| 蜜桃av一区二区三区| 亚洲免费伊人电影在线观看av| 欧美激情网站在线观看| 久久久久国产一区二区三区| 欧美国产精品人人做人人爱| 亚洲激情网站| 久久亚洲一区| 亚洲精品免费网站| 欧美亚洲免费电影| 午夜精品久久久久久| **性色生活片久久毛片| 好看不卡的中文字幕| 亚洲精品国产欧美| 亚洲国产第一页| 黄色亚洲在线| 国产尤物精品| 国产一区二区视频在线观看 | 欧美激情综合五月色丁香| 久久久中精品2020中文| 久久国产精品色婷婷| 欧美日韩一区国产| 亚洲国产精品成人精品| 欧美在线视频全部完| 久久国产精品亚洲77777| 欧美亚洲一区| 亚洲黄色一区| 日韩亚洲不卡在线| 麻豆国产精品一区二区三区| 国产精品网站一区| 亚洲毛片在线| 欧美jizzhd精品欧美巨大免费| 亚洲综合第一| 欧美一区日韩一区| 久久国产精品一区二区| 国产精品私房写真福利视频 | 欧美日韩一区二区三区视频| 亚洲国产成人av在线| 亚洲国产三级网| 久久一日本道色综合久久| 亚洲特级毛片| 久久黄金**| 欧美顶级少妇做爰| 在线成人av网站| 日韩视频第一页| 欧美韩国一区| 一本色道久久综合一区| 欧美日韩久久| 一区二区三区不卡视频在线观看 | 久久精品国产一区二区电影| 久久综合九色综合久99| 激情综合网址| 麻豆精品传媒视频| 亚洲精品综合精品自拍| 欧美日韩裸体免费视频| 中文国产成人精品| 蜜臀va亚洲va欧美va天堂| 久久国产高清| 欧美成人xxx| 蜜桃久久精品一区二区| 欧美专区中文字幕| 欧美色视频日本高清在线观看| 一本久道久久久| 中文欧美在线视频| 欧美a级大片| 国产亚洲一区二区在线观看| 亚洲最新在线视频| 亚洲毛片在线看| 国产精品国产三级欧美二区| 亚洲女同性videos| 亚洲电影免费在线| 欧美日韩国产不卡在线看| 亚洲一区久久久| 欧美国产免费| 欧美视频在线观看 亚洲欧| 午夜一区二区三视频在线观看 | 亚洲国产一成人久久精品| 亚洲激情在线播放| 久久久最新网址| 国产日韩欧美综合一区| 免费黄网站欧美| 欧美日本在线视频| 欧美中文字幕不卡| 免费视频一区| 91久久国产精品91久久性色| 99日韩精品| 韩国一区二区在线观看| 亚洲美女网站| 欧美日韩一视频区二区| 香蕉精品999视频一区二区| 久久国产欧美日韩精品| 国产欧美日韩视频一区二区三区| 女人天堂亚洲aⅴ在线观看| 欧美午夜精品伦理| 欧美激情精品久久久久久久变态| 午夜一区不卡| 国产一区二区三区免费不卡 | 国产日韩精品久久久| 亚洲第一成人在线| 国产精品一区二区女厕厕| 欧美福利影院| 女仆av观看一区| 亚洲免费观看在线观看| 欧美一区二区三区免费在线看 | 一本一本久久| 亚洲高清不卡在线观看| 免费看的黄色欧美网站| 欧美亚一区二区| 亚洲国产黄色| 国产精品国产精品| 亚洲第一成人在线| 亚洲第一区中文99精品| 亚洲片国产一区一级在线观看| 欧美成黄导航| 亚洲视频综合|