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

Shuffy

不斷的學(xué)習(xí),不斷的思考,才能不斷的進(jìn)步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19
     本文在8篇文章的基礎(chǔ)上,為其加入燈光效果。

Materials

OpenGL materials are description of what objects are made of. It basically specifies how much of light they reflect and this is what we would be seeing. OpenGL lighting goes a long way towards modeling real world lighting. In order achieve proper lighting effects in OpenGL we need to specify material properties. Material properties are of the following types - Diffuse and Ambient properties, Specular and Shininess Properties and Emissive Properties. These are the properties that specify how a surface dissipates light.

Diffuse and Ambient Properties

The diffuse and ambient reflective material properties are a type of reflective effect that is independent of the viewpoint. Diffuse lighting is light from a particular direction and ambient lighting is light that is coming from all directions. A particular light source can have both a diffuse and an ambient component. These material properties describe how the material reflects diffuse and ambient light falling on it.

Specular and Shininess Properties

The specular and the shininess properties of the surface describe the reflective effects that are affected by the position of the viewpoint. Specular light is reflected from a surface that produces the reflective highlights in a surface. The shininess is a value that describes how focussed the reflective properties are.

Emissive Property

This is the light that an object gives off by itself. A typical example of this is a light source itself.

Specifying a material property

In order to specify a material property we have to use the OpenGL function - glMaterial*(). We can individually specify the material properties using this function. Another way to go about this is by color tracking. This can be achieved by enabling color tracking and specifying what parameters of the material would be affected by the glColor command. This is an optimization feature that OpenGL provides and is useful in cases where we will be changing only particular properties of the material and not all of them. In this tutorial we will use glMaterial to specify the material properties as we will be individually setting each one of them.

Choosing the material properties determine how the object will look. We will follow the following steps in choosing the material properties -

  • Decide on the diffuse and ambient colors.
  • Decide on the shininess depending on the type of material object that is being modeled such as silver, wood etc.
  • Decide whether the object would be giving off any light on its own.

The above values can be obtained by mere trial and error. We will look at how we go about doing this when we write a program.

Lighting

OpenGL has two types of lighting: global lighting or ambient lighting and individual light sources which have position and direction. The way an object is lit depends on the material of the object, all the lights and their properties, their positions and direction etc. This means lighting calculations are quite expensive and are hence turned off by OpenGL by default. So we have to turn on lighting before using it. Global lighting parameters can be set using the glLightModel function which specify the lighting model we would be using - such as an infinite viewer or a local viewer (for specular highlights), single sided or two sided lighting and the RGBA value for the ambient light. In addition to this we would be specifying the individual light sources.  

1,設(shè)置燈光和材質(zhì)屬性

void CCY457OpenGLView::SetupLighting ()
{
    
//Material Properties
    GLfloat matSpecular[] = { 1.0f0.0f0.0f1.0f};
    GLfloat matShininess[] 
= { 50.0f};
    GLfloat matAmbient[] 
= { 0.25f0.25f0.25f1.0f};
    GLfloat matDiffuse[] 
= { 0.5f0.5f0.5f1.0f};
    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,在初始化OpenGL時(shí)調(diào)用上述函數(shù)

BOOL CCY457OpenGLView::InitializeOpenGL()
{
    
//Get a DC for the Client Area
    m_pDC = new CClientDC(this);
    
//Failure to Get DC
    if(m_pDC == NULL)
    {
        MessageBox(
"Error Obtaining DC");
        
return FALSE;
    }
    
//Failure to set the pixel format
    if(!SetupPixelFormat())
    {
        
return FALSE;
    }
    
//Create Rendering Context
    m_hRC = ::wglCreateContext (m_pDC->GetSafeHdc ());
    
//Failure to Create Rendering Context
    if(m_hRC == 0)
    {
        MessageBox(
"Error Creating RC");
        
return FALSE;
    }
    
//Make the RC Current
    if(::wglMakeCurrent (m_pDC->GetSafeHdc (), m_hRC)==FALSE)
    {
        MessageBox(
"Error making RC Current");
        
return FALSE;
    }
    
//Specify Black as the clear color
    ::glClearColor(0.0f,0.0f,0.0f,0.0f);
    
//Specify the back of the buffer as clear depth
    ::glClearDepth(1.0f);
    
//Enable Depth Testing
    ::glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_FLAT);
    SetupLighting();
    
return TRUE;
}

 

作者:洞庭散人

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

本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
原文鏈接:http://www.cnblogs.com/phinecos/archive/2008/11/05/1327595.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>
            亚洲影视在线播放| 久久夜色精品国产欧美乱| 亚洲人成亚洲人成在线观看| 欧美夫妇交换俱乐部在线观看| 午夜精品一区二区三区四区| 在线亚洲欧美视频| 欧美激情女人20p| 久久精品72免费观看| 久久精品国产99| 久久精品国产久精国产思思| 久久久在线视频| 欧美成人精品h版在线观看| 男人的天堂成人在线| 欧美国产三区| 一区二区三区鲁丝不卡| 亚洲少妇中出一区| 欧美一区二区三区四区在线观看 | 国产精品高潮呻吟久久| 欧美另类一区| 国产精品对白刺激久久久| 国产精品私人影院| 亚洲欧洲美洲综合色网| 香蕉av777xxx色综合一区| 欧美一区二区三区男人的天堂| 欧美一级网站| 亚洲日本免费电影| 篠田优中文在线播放第一区| 欧美成人免费播放| 国产一二精品视频| 亚洲天堂网站在线观看视频| 久久亚洲高清| 亚洲视频香蕉人妖| 欧美精品色网| 欧美一级在线视频| 欧美电影资源| 在线欧美日韩| 久久一二三区| 久久国产精品亚洲va麻豆| 国产精品白丝av嫩草影院 | 亚洲另类视频| 欧美精品久久99久久在免费线| 合欧美一区二区三区| 久久久久久9| 亚洲午夜在线观看| 久久综合五月| 亚洲午夜av在线| 亚洲日韩视频| 亚洲午夜久久久久久久久电影院| 亚洲风情亚aⅴ在线发布| 欧美日韩一二三四五区| 另类图片国产| 国产一区二区精品丝袜| 亚洲精品一区在线观看香蕉| 国产日韩综合一区二区性色av| 99成人在线| 一区二区三区日韩欧美| 麻豆国产精品va在线观看不卡| 亚洲欧美电影院| 欧美精品一区二区三区蜜臀| 欧美激情亚洲| 亚洲精品午夜| 欧美日韩亚洲不卡| 亚洲一级特黄| 久久手机精品视频| 亚洲国产综合在线| 欧美精品福利视频| 日韩视频一区二区三区在线播放免费观看| 亚洲黄色影片| 欧美岛国激情| 亚洲国产视频一区| 欧美国产91| 午夜精品久久久99热福利| 久久久免费av| 亚洲图片在线| 亚洲国产视频直播| 欧美日韩综合在线免费观看| 亚洲一区在线观看视频| 另类酷文…触手系列精品集v1小说| 亚洲福利精品| 国产精品日韩一区二区| 久久视频在线视频| 亚洲欧美日韩精品久久亚洲区 | 欧美国产视频日韩| 欧美激情精品久久久久久| 亚洲乱码国产乱码精品精可以看| 狼人天天伊人久久| 亚洲美女电影在线| 久久成年人视频| 亚洲精品免费一区二区三区| 亚洲高清不卡| 国产精品高潮呻吟视频| 性久久久久久久久| 亚洲东热激情| 亚洲免费视频观看| 亚洲国产精品成人一区二区| 国产精品推荐精品| 欧美日韩国产电影| 亚洲欧美日韩在线一区| 欧美福利在线观看| 久久男人资源视频| 一级日韩一区在线观看| 国产综合久久久久久| 国产精品另类一区| 一本色道**综合亚洲精品蜜桃冫 | 国产视频久久久久| 欧美精品在线播放| 欧美成人激情视频| 久久精品成人一区二区三区| 正在播放日韩| 一区二区三区欧美| 亚洲夜晚福利在线观看| 99re66热这里只有精品4| 亚洲久久一区二区| 免费日韩成人| 久久一区中文字幕| 久久精品国产成人| 免费日韩成人| 亚洲欧洲三级电影| 亚洲精品久久7777| 亚洲欧美国产高清| 久久黄色小说| 欧美喷水视频| 一区福利视频| 91久久在线| 亚洲一区在线观看视频| 欧美一区二区三区另类| 久久精品国产久精国产一老狼 | 亚洲一二三区视频在线观看| 香蕉久久夜色精品| 野花国产精品入口| 欧美日韩国产一区二区三区| 亚洲精品乱码久久久久久| 久久资源在线| 欧美精品久久一区| 久久av一区二区三区亚洲| 老司机精品视频网站| 亚洲视频综合在线| 欧美日韩另类一区| 亚洲欧洲另类| 麻豆成人在线观看| 久久天天躁夜夜躁狠狠躁2022| 麻豆久久精品| 欧美国产精品va在线观看| 香蕉精品999视频一区二区 | 亚洲激情在线观看| 久久se精品一区二区| 国产深夜精品| 久久精品免费| 卡通动漫国产精品| 亚洲承认在线| 亚洲国产精品女人久久久| 久久精品日韩欧美| 亚洲第一页在线| 久久久xxx| 久久精品一区蜜桃臀影院| 亚洲网站在线看| 国内外成人在线| 亚洲网友自拍| 一区二区成人精品 | 亚洲最新合集| 亚洲小说区图片区| 91久久精品美女高潮| 亚洲一区二区三区精品在线观看 | 欧美一区二区三区日韩视频| 男人的天堂亚洲在线| 久久精品中文字幕一区| 国产精品成人一区二区三区吃奶| 国产精品久久久久久户外露出 | 欧美精品网站| 亚洲视频一区二区免费在线观看| 欧美黄色视屏| 亚洲男人的天堂在线观看| 久久大逼视频| 国产精品一区在线播放| 91久久精品www人人做人人爽| 亚洲国产天堂网精品网站| 99精品免费网| 欧美.日韩.国产.一区.二区| 99在线精品免费视频九九视| 欧美一区激情| 亚洲桃花岛网站| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美激情中文不卡| 国产在线精品一区二区夜色| 亚洲女人天堂av| 亚洲色图综合久久| 欧美福利专区| 亚洲精品国产精品国产自| 久久天天躁狠狠躁夜夜av| 欧美在线不卡| 国产精品视频导航| 日韩一区二区精品| 女人色偷偷aa久久天堂| 99国内精品久久| 亚洲视频精品| 国产精品午夜国产小视频| 亚洲伊人伊色伊影伊综合网| 巨乳诱惑日韩免费av| 亚洲黄色尤物视频| 亚洲在线网站|