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

Shuffy

不斷的學(xué)習(xí),不斷的思考,才能不斷的進步.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 閱讀(295) 評論(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,設(shè)置光源代碼修改如下:

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,繪制函數(shù)修改如下:

void CCY457OpenGLView::RenderScene ()
{
//繪制函數(shù)
      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/    

本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
原文鏈接: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>
            亚洲午夜性刺激影院| 在线一区二区三区四区五区| 久久国产精品一区二区三区四区| 亚洲视频在线看| 亚洲免费伊人电影在线观看av| 亚洲午夜在线观看视频在线| 亚洲综合三区| 久久久噜噜噜| 欧美精品成人| 国产精品久久久久91| 国产手机视频精品| 在线日韩av片| 一区二区三区蜜桃网| 亚洲网站啪啪| 欧美一区综合| 欧美黄在线观看| 99热在线精品观看| 欧美一区二区三区男人的天堂| 香蕉久久夜色精品国产| 蜜桃伊人久久| 国产嫩草一区二区三区在线观看| 伊人久久大香线蕉综合热线| 宅男噜噜噜66一区二区66| 久久av一区二区三区漫画| 国产一区二区精品| 亚洲国产专区| 性娇小13――14欧美| 亚洲第一福利社区| 亚洲精品黄色| 久久高清国产| 欧美区在线播放| 狠狠色狠狠色综合日日五| 99综合在线| 欧美不卡视频一区发布| 亚洲校园激情| 欧美日韩爆操| 影音先锋欧美精品| 欧美亚洲免费电影| 亚洲国产精品第一区二区三区| 亚洲性av在线| 欧美日韩午夜| 日韩一级欧洲| 亚洲福利精品| 老司机一区二区三区| 国产亚洲精品bt天堂精选| 亚洲性夜色噜噜噜7777| 亚洲黄色一区二区三区| 久久精品av麻豆的观看方式| 国产精品久久久久免费a∨大胸| 亚洲精品男同| 亚洲高清激情| 欧美电影免费观看| 精久久久久久久久久久| 久久精品国产清高在天天线| 一本色道久久88亚洲综合88| 欧美激情亚洲综合一区| 亚洲精品一区二区三区av| 亚洲电影免费观看高清完整版在线| 久久xxxx| 激情另类综合| 另类酷文…触手系列精品集v1小说| 亚洲一区二区三区精品在线观看 | 久久国产99| 国产欧美韩日| 久久精品亚洲一区二区| 亚洲欧美在线看| 国产日韩亚洲欧美综合| 久久黄色影院| 欧美在线播放一区| 狠狠色狠狠色综合日日91app| 久久久久综合| 久久午夜激情| 亚洲日本久久| 亚洲精品一区中文| 欧美无乱码久久久免费午夜一区 | 久久免费视频一区| 欧美在线一区二区三区| 伊人久久综合| 亚洲国产精品电影在线观看| 欧美日韩精品久久| 欧美一区二区三区免费看| 欧美一级理论片| 欧美激情一区二区久久久| 99精品国产热久久91蜜凸| a4yy欧美一区二区三区| 国产精品一卡二| 久久只有精品| 欧美xart系列高清| 午夜激情亚洲| 美国十次成人| 亚洲欧美激情精品一区二区| 欧美一级理论性理论a| 欲色影视综合吧| 一本一本大道香蕉久在线精品| 国产欧美一区二区白浆黑人| 久久琪琪电影院| 欧美日韩精品一区二区天天拍小说| 亚洲欧美日产图| 久久一区中文字幕| 亚洲欧美国产精品专区久久| 久久国产精品毛片| 中日韩视频在线观看| 欧美一区中文字幕| 亚洲日韩欧美视频一区| 亚洲欧美国产高清va在线播| 亚洲国产精品精华液2区45| 亚洲一区二区伦理| 亚洲国产精品日韩| 午夜久久久久久| 亚洲少妇诱惑| 久久综合伊人| 久久一日本道色综合久久| 欧美午夜精品电影| 欧美成人午夜激情在线| 国产日本精品| 一个色综合导航| 日韩视频在线一区二区| 久久九九久精品国产免费直播 | 久热国产精品| 国产欧美日韩视频| 一本色道久久加勒比88综合| 亚洲国产精品一区二区www在线| 亚洲性视频网站| 一区二区三区色| 欧美电影免费观看大全| 欧美激情一区二区三区成人| 国产在线欧美| 欧美一二三视频| 久久爱91午夜羞羞| 国产日韩精品一区二区浪潮av| 一本色道久久综合一区| av成人老司机| 欧美日韩免费网站| 9l国产精品久久久久麻豆| 亚洲少妇诱惑| 欧美精品三级日韩久久| 亚洲精品在线二区| 一区二区三区蜜桃网| 欧美日韩一区二区在线| 99亚洲伊人久久精品影院红桃| 夜夜狂射影院欧美极品| 欧美日韩精品高清| 中日韩在线视频| 午夜日本精品| 国产精品资源| 欧美一区二区三区四区在线观看 | 欧美日本乱大交xxxxx| 亚洲国产精品久久人人爱蜜臀 | 欧美1区视频| 亚洲伦理在线观看| 亚洲在线观看视频| 国产精品色午夜在线观看| 亚洲欧美中文日韩v在线观看| 久久av一区二区| 在线观看中文字幕亚洲| 嫩模写真一区二区三区三州| 亚洲激情av在线| 亚洲午夜在线观看| 国产日本欧美视频| 久久精品国产一区二区三| 麻豆精品视频在线观看| 亚洲狠狠婷婷| 国产精品国色综合久久| 久久成人免费网| 亚洲日本乱码在线观看| 欧美一二三视频| 在线观看一区二区视频| 欧美日韩精品免费看 | 欧美三级视频在线观看| 午夜在线精品偷拍| 欧美国产欧美综合 | 亚洲欧美日韩天堂一区二区| 国产一区二区三区四区老人| 老司机午夜免费精品视频| 在线视频欧美日韩| 老司机午夜精品| 亚洲一区二区精品视频| 国产在线成人| 欧美特黄一级大片| 久久久久久噜噜噜久久久精品| 亚洲国产成人精品视频 | 亚洲高清视频在线观看| 亚洲综合精品一区二区| 激情另类综合| 国产精品一区免费视频| 美女被久久久| 欧美在线关看| 亚洲视频综合| 亚洲毛片在线| 欧美大秀在线观看| 久久经典综合| 亚洲欧美日韩国产综合在线| 亚洲国产老妈| 最新日韩欧美| 国产精品一区久久久| 欧美日本高清一区| 免费不卡在线观看| 久久久99精品免费观看不卡| 在线视频中文亚洲| 亚洲九九精品|