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

Shuffy

不斷的學(xué)習(xí),不斷的思考,才能不斷的進(jìn)步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19
視見體

Viewing Volume is nothing but the region of 3D Cartesian space in that will occupy the window. It is nothing but the minimum and maximum x, y and z values that are inside the window. So if a vertex is outside this range of x, y and z values then they are clipped by OpenGL before rendering can occur.

Z Buffer

The new term we have to deal with in addition to width and height of an object in 3D graphics is depth. The depth of an object is its distance from the viewpoint. The viewpoint is the location from which we are looking at that point. This depth value goes into the depth or Z-buffer. If we are drawing 2 objects that have some pixels that overlap, the first object will after it is rendered have its depth value in the depth buffer. When the next object is rendered, OpenGL will check to see whether the pixel it’s about to draw is in front of (with respect to the viewpoint) any pixel from the first object that’s already drawn. It does this by checking the Z value of the current pixel with the value that is already in the buffer. If the new pixel is closer to the viewpoint, OpenGL places its depth value in the depth buffer. This is how the Z-buffer works.

正交投影和透視投影

One term we need to understand very well to learn 3D Graphics well is projection. Well, computer graphics at its simplest is all about setting a color to a pixel on screen. And a pixel on a screen can have only two dimensions. So 3D graphics is merely an illusion. The 3D coordinates that we specify will have to be projected onto a 2D surface to create this illusion for us. And we have to specify how this projection works. By specifying a projection we specify the clipping or viewing volume.

基本3D圖形繪制

1,CCY457OpenGLView.h中加入下列變量

BOOL m_bPoint;        //Status of Point
BOOL m_bLine;        //Status of Line
BOOL m_bPolygon;    //Status of Polygon
BOOL m_bTriangle;    //Status of Triangle

并且在構(gòu)造函數(shù)中初始化

CCY457OpenGLView::CCY457OpenGLView()
{
    m_bPoint    
= FALSE;
    m_bLine        
= FALSE;
    m_bPolygon    
= FALSE;
    m_bTriangle 
= FALSE;
    m_bCube           
= FALSE;        
    m_bTorus       
= FALSE;        
    m_bTeapot       
= FALSE;        
    m_bIcosahedron 
= FALSE;
    m_bSimpleCube  
= FALSE;    
}

2,加入五個(gè)菜單項(xiàng)及其對應(yīng)的事件處理程序。

 

void CCY457OpenGLView::OnObjectsTeapot() 
{
//畫茶壺
    m_bCube           = FALSE;        
    m_bTorus       
= FALSE;        
    m_bTeapot       
= TRUE;        
    m_bIcosahedron 
= FALSE;
    m_bSimpleCube  
= FALSE;        
    InvalidateRect(NULL,FALSE);    
}
void CCY457OpenGLView::OnObjectsCube() 
{
//畫立方體
    m_bCube           = TRUE;    
    m_bTorus       
= FALSE;        
    m_bTeapot       
= FALSE;        
    m_bIcosahedron 
= FALSE;
    m_bSimpleCube  
= FALSE;        
    InvalidateRect(NULL,FALSE);    
}
void CCY457OpenGLView::OnObjectsIcosahedron() 
{
//畫二十面體
    m_bCube           = FALSE;        
    m_bTorus       
= FALSE;        
    m_bTeapot       
= FALSE;        
    m_bIcosahedron 
= TRUE;
    m_bSimpleCube  
= FALSE;    
    InvalidateRect(NULL,FALSE);    
}
void CCY457OpenGLView::OnObjectsTorus() 
{
//畫環(huán)面
    m_bCube           = FALSE;        
    m_bTorus       
= TRUE;        
    m_bTeapot       
= FALSE;        
    m_bIcosahedron 
= FALSE;
    m_bSimpleCube  
= FALSE;            
    InvalidateRect(NULL,FALSE);    
}

void CCY457OpenGLView::OnObjectsSimplecube() 
{
//畫簡單立方體
    m_bCube           = FALSE;        
    m_bTorus       
= FALSE;        
    m_bTeapot       
= FALSE;        
    m_bIcosahedron 
= FALSE;
    m_bSimpleCube  
= TRUE;        
    InvalidateRect(NULL,FALSE);
}

3,由于開始繪制3維圖形,因此使用第一篇文章的OnSize()函數(shù)。

4,RenderScene中加入具體的繪制代碼:

void CCY457OpenGLView::RenderScene ()
{
//繪制函數(shù)
    if(m_bPoint==TRUE)
    {
        glPointSize(
3.0f);
        glBegin(GL_POINTS);
            glVertex2f(
0.0f,0.0f);
            glVertex2f(
1.0f,0.0f);
            glVertex2f(
0.0f,1.0f);
        glEnd();
    }
    
if(m_bLine==TRUE)
    {
        glBegin(GL_LINES);
            glVertex2f(
0.0f,0.0f);
            glVertex2f(
1.0f,0.0f);
        glEnd();
    }
    
if(m_bTriangle==TRUE)
    {
        glBegin(GL_TRIANGLES);
            glVertex2f(
0.0f,0.0f);
            glVertex2f(
2.0f,0.0f);
            glVertex2f(
0.0f,2.0f);
        glEnd();
    }
    
if(m_bPolygon==TRUE)
    {
        glBegin(GL_POLYGON);
            glVertex2f(
0.0f,0.0f);
            glVertex2f(
3.0f,0.0f);
            glVertex2f(
4.0f,3.0f);
            glVertex2f(
1.5f,6.0f);
            glVertex2f(
-1.0f,3.0f);
        glEnd();
    }
    
//Replace the current matrix with Identity Matrix
    glLoadIdentity();
    glTranslatef(
0.0f,0.0f,-5.0f);
    glRotatef(
-30.0f,1.0f,1.0f,0.0f);
    
//Draw a Cube
    if(m_bCube)
    {
        glutWireCube(
1.0f);
    }
    
//Draw a Torus
    if(m_bTorus)
    {
        glutWireTorus(
0.5f1.0f5050);
    }
    
//Draw a Teapot
    if(m_bTeapot)
    {
        glutWireTeapot(
1.0f);
    }
    
//Draw a Icosahedron
    if(m_bIcosahedron)
    {
        glutWireIcosahedron();
    }
    
//Draw a cube by specifying the vertices individually
    if(m_bSimpleCube)
    {
        glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
        
        
//Front Face
        glBegin(GL_POLYGON);
            glVertex3f(
-1.0f,-1.0f,0.0f);
            glVertex3f( 
1.0f,-1.0f,0.0f);
            glVertex3f( 
1.0f1.0f,0.0f);
            glVertex3f(
-1.0f1.0f,0.0f);
        glEnd();
        
//Back Face
        glBegin(GL_POLYGON);
            glVertex3f(
-1.0f,-1.0f,-1.0f);
            glVertex3f(
-1.0f1.0f,-1.0f);
            glVertex3f( 
1.0f1.0f,-1.0f);
            glVertex3f( 
1.0f,-1.0f,-1.0f);
        glEnd();
        
//Left Face
        glBegin(GL_POLYGON);
            glVertex3f(
-1.0f,-1.0f0.0f);
            glVertex3f(
-1.0f1.0f0.0f);
            glVertex3f(
-1.0f1.0f,-1.0f);
            glVertex3f(
-1.0f,-1.0f,-1.0f);
        glEnd();
        
//Right Face
        glBegin(GL_POLYGON);
            glVertex3f(
1.0f,-1.0f0.0f);
            glVertex3f(
1.0f,-1.0f,-1.0f);
            glVertex3f(
1.0f1.0f,-1.0f);
            glVertex3f(
1.0f1.0f0.0f);
        glEnd();
        
//Top Face
        glBegin(GL_POLYGON);
            glVertex3f(
-1.0f1.0f,  0.0f);
            glVertex3f( 
1.0f1.0f,  0.0f);
            glVertex3f( 
1.0f1.0f-1.0f);
            glVertex3f(
-1.0f1.0f-1.0f);
        glEnd();
        
//Botton Face
        glBegin(GL_POLYGON);
            glVertex3f(
-1.0f-1.0f,  0.0f);
            glVertex3f(
-1.0f-1.0f-1.0f);
            glVertex3f( 
1.0f-1.0f-1.0f);
            glVertex3f( 
1.0f-1.0f,  0.0f);
        glEnd();
    }
}

作者:洞庭散人

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

本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
原文鏈接:http://www.cnblogs.com/phinecos/archive/2008/11/05/1327385.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>
            一本综合久久| 国产精品福利片| 亚洲综合电影| 免费人成网站在线观看欧美高清 | 欧美日韩精品综合| 麻豆精品精品国产自在97香蕉| 欧美视频网址| 亚洲高清一区二区三区| 国产美女精品视频| 中文有码久久| 亚洲午夜久久久久久尤物 | 国内精品一区二区三区| 亚洲私人影吧| 亚洲免费在线精品一区| 欧美日韩八区| 亚洲精品免费在线| 亚洲理论在线观看| 欧美韩国日本一区| 亚洲高清中文字幕| 亚洲激情综合| 欧美777四色影视在线| 免费视频久久| 在线观看欧美日本| 久久精品观看| 美女精品网站| 最新69国产成人精品视频免费| 久久久综合激的五月天| 欧美69视频| 亚洲人成在线观看| 久久这里有精品15一区二区三区| 国产精品一区二区在线观看| 午夜精品久久久久久久男人的天堂 | 久久久久久9| 美女精品在线观看| 亚洲欧洲免费视频| 欧美日韩伊人| 亚洲欧美精品在线观看| 久久久99久久精品女同性| 国内久久精品| 欧美大秀在线观看| 亚洲色图在线视频| 久久激情久久| 在线色欧美三级视频| 麻豆精品视频在线观看| 亚洲欧洲综合另类在线| 亚洲性xxxx| 国产午夜久久| 男女av一区三区二区色多| 亚洲精品在线免费| 性做久久久久久| 影音先锋亚洲一区| 欧美日韩在线不卡| 欧美一区二区三区免费在线看| 蜜臀久久久99精品久久久久久| 最新69国产成人精品视频免费| 欧美日韩专区在线| 欧美一站二站| 99热在线精品观看| 久久深夜福利| 亚洲一卡久久| 亚洲福利在线看| 国产精品伦理| 媚黑女一区二区| 亚洲欧美激情一区| 亚洲电影在线看| 欧美一区二区三区精品| 亚洲国产一区二区三区青草影视| 欧美激情视频免费观看| 欧美伊人久久大香线蕉综合69| 亚洲国产精品久久人人爱蜜臀 | 麻豆9191精品国产| 亚洲亚洲精品在线观看| 在线播放亚洲| 国产伦精品一区二区三区| 欧美成年网站| 欧美一二三区精品| 中日韩美女免费视频网址在线观看 | 国产一区二区精品丝袜| 欧美啪啪一区| 久久综合电影| 校园春色国产精品| 一区二区日韩伦理片| 亚洲成色www久久网站| 久久精品99国产精品酒店日本| 日韩天天综合| 亚洲国产99| 亚洲视频一区二区免费在线观看| 欧美xart系列高清| 久久精品中文字幕免费mv| 制服丝袜激情欧洲亚洲| 亚洲片国产一区一级在线观看| 国产日韩综合一区二区性色av| 国产精品高潮呻吟久久av无限| 欧美国产精品v| 欧美18av| 麻豆亚洲精品| 噜噜噜久久亚洲精品国产品小说| 欧美在线不卡| 久久精品国产99国产精品| 亚洲欧美综合v| 亚洲欧美日韩精品在线| 亚洲尤物在线视频观看| 亚洲午夜在线视频| 亚洲视频精品| 亚洲综合电影| 欧美一区二区成人6969| 欧美亚洲免费电影| 久久精品国产77777蜜臀| 欧美一区国产一区| 欧美中文字幕在线| 久久久久久9999| 麻豆精品网站| 欧美精品乱码久久久久久按摩| 欧美风情在线观看| 欧美伦理在线观看| 国产精品家庭影院| 国产欧美日韩亚洲| 精品999在线播放| 亚洲国产精品第一区二区| 亚洲精品免费在线播放| 夜夜嗨av一区二区三区四季av | 久久午夜精品一区二区| 久久久久久久激情视频| 老司机一区二区| 欧美国产视频日韩| 欧美日韩视频在线第一区| 国产精品久久久久免费a∨大胸| 国产精品一二三四| 一区二区三区在线高清| 亚洲精华国产欧美| 亚洲一区二区在| 久久精品综合网| 亚洲成色www久久网站| 亚洲免费观看高清在线观看 | 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美激情第1页| 国产精品久久久久久久午夜| 国产在线不卡| 日韩视频一区二区三区在线播放| 亚洲综合99| 麻豆精品在线观看| 99国内精品久久| 久久国产精品99久久久久久老狼| 欧美国产日韩亚洲一区| 国产精品久久久久免费a∨大胸| 激情另类综合| 亚洲无人区一区| 美女任你摸久久| 一区二区免费在线视频| 久久天天狠狠| 欧美视频一区二区| 在线观看欧美日韩| 亚洲欧美成人在线| 亚洲电影网站| 欧美伊人影院| 欧美三区美女| 亚洲国产精品黑人久久久| 亚洲一区影院| 亚洲福利在线视频| 欧美一区成人| 国产精品免费一区二区三区观看| 亚洲激情一区| 久久蜜桃av一区精品变态类天堂| 日韩午夜av电影| 免费视频一区| 一区二区视频欧美| 欧美在线免费| 99精品国产99久久久久久福利| 久久一本综合频道| 国产一区二区久久| 午夜精品成人在线| 9久草视频在线视频精品| 久久夜色精品国产噜噜av| 国产亚洲欧美一区在线观看| 亚洲天堂av电影| 亚洲黄网站黄| 免费久久99精品国产自| 国产一区二区你懂的| 性久久久久久久久| 日韩午夜在线视频| 欧美日本高清视频| 夜夜夜久久久| 亚洲啪啪91| 欧美裸体一区二区三区| 亚洲精品一区在线| 亚洲国产乱码最新视频| 美女在线一区二区| 亚洲激情成人网| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美国产精品日韩| 久久婷婷国产综合精品青草| 狠狠久久五月精品中文字幕| 久久er精品视频| 欧美一区二区免费| 国产一区再线| 蜜桃久久av| 欧美aa国产视频| 亚洲免费精品| 一区二区精品在线| 国产精品成人免费精品自在线观看|