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

Shuffy

不斷的學習,不斷的思考,才能不斷的進步.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

并且在構造函數中初始化

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,加入五個菜單項及其對應的事件處理程序。

 

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() 
{
//畫環面
    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()函數。

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

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

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
原文鏈接: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>
            亚洲国产一区二区三区在线播| 亚洲精品一区在线观看| 国产精品免费一区二区三区观看| 午夜精品一区二区三区在线视| 亚洲高清在线精品| 久久九九精品| 久久久99精品免费观看不卡| 校园春色综合网| 欧美一区二区女人| 欧美在线观看视频在线| 欧美一区二区三区久久精品| 欧美一区二区视频观看视频| 校园激情久久| 玖玖精品视频| 亚洲国产毛片完整版| 亚洲黄网站在线观看| 亚洲色在线视频| 欧美一区免费| 欧美精品九九99久久| 国产女优一区| 亚洲激情视频网| 乱中年女人伦av一区二区| 久久亚洲精品欧美| 欧美精品乱码久久久久久按摩| 欧美日韩一卡二卡| 激情久久婷婷| 亚洲男人第一网站| 亚洲福利av| 久久青草久久| 韩国久久久久| 久久久在线视频| 午夜精品久久久久久99热| 欧美日韩在线免费视频| 亚洲国产日韩在线| 久久久91精品国产一区二区三区 | 亚洲欧美综合精品久久成人| 久久亚洲精选| 亚洲国产导航| 蜜桃av一区二区三区| 久久电影一区| 狠狠综合久久av一区二区老牛| 亚洲影音先锋| 在线视频你懂得一区| 国产精品久久九九| 欧美一级成年大片在线观看| 亚洲欧美日韩高清| 激情综合中文娱乐网| 免费成人黄色片| 欧美精品免费在线观看| 亚洲一区二区动漫| 香蕉久久精品日日躁夜夜躁| 韩日精品视频一区| 欧美成人精品1314www| 欧美成年视频| 欧美综合激情网| 久久午夜羞羞影院免费观看| 久久免费视频观看| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美日韩另类国产亚洲欧美一级| 亚洲卡通欧美制服中文| av成人手机在线| 国产一区二区| 99热免费精品| 亚洲高清资源| 亚洲欧美成人| 亚洲一区欧美二区| 米奇777在线欧美播放| 午夜亚洲福利在线老司机| 老司机精品久久| 久久久久免费观看| 国产精品私拍pans大尺度在线| 久久性色av| 国产亚洲福利一区| 亚洲综合日本| 亚洲一区二区视频在线| 麻豆精品视频在线观看| 免费久久久一本精品久久区| 国产精品xnxxcom| 99国产成+人+综合+亚洲欧美| 欲色影视综合吧| 久久综合五月天婷婷伊人| 久久久久久日产精品| 黄色一区二区在线| 久久精品视频免费观看| 久久影视精品| 亚洲精品在线免费| 欧美日韩一二三四五区| 亚洲午夜小视频| 久久影视精品| 欧美日韩综合精品| 亚洲免费观看| 久久精品导航| 亚洲黄色成人| 国产精品日韩高清| 久久嫩草精品久久久久| 亚洲欧洲视频| 久久理论片午夜琪琪电影网| 在线欧美日韩| 国产精品入口尤物| 欧美大片免费久久精品三p | 欧美日韩国产在线看| 欧美一级片在线播放| 亚洲丶国产丶欧美一区二区三区| 亚洲一区二区高清视频| 精品不卡在线| 国产精品专区第二| 欧美精品亚洲| 美女主播一区| 久久久精品日韩欧美| 亚洲一区在线观看免费观看电影高清| 久久三级福利| 久久综合伊人77777蜜臀| 欧美中文日韩| 欧美专区在线观看一区| 亚洲欧美在线一区| 中国亚洲黄色| 亚洲免费在线观看| 亚洲欧美大片| 午夜精品久久久| 性欧美大战久久久久久久久| 亚洲一级一区| 欧美影视一区| 久久精品视频导航| 欧美韩国一区| 亚洲精品日韩精品| 午夜在线电影亚洲一区| 一区二区精品国产| 中文欧美日韩| 欧美一区二区黄色| 久久久无码精品亚洲日韩按摩| 久久久久久午夜| 欧美高清你懂得| 国产精品久久久久久久第一福利| 国产精品美女视频网站| 狠狠综合久久| 一区二区三区欧美视频| 午夜激情亚洲| 亚洲国产婷婷| 欧美一级理论性理论a| 欧美精品v国产精品v日韩精品| 国产精品一区二区在线观看不卡| 国产一区二区三区高清| 欧美日韩一二三区| 欧美日韩国产一中文字不卡| 亚洲婷婷在线| 久久精品国产亚洲一区二区三区| 日韩视频免费观看高清在线视频| 国产精品久久久一本精品| 久久国内精品视频| 欧美v亚洲v综合ⅴ国产v| 久久精品免费看| 亚洲网站在线播放| 国产女人18毛片水18精品| 欧美人成网站| 99亚洲精品| 久久久久综合网| 国产日韩欧美在线| 欧美一区二区在线播放| 在线亚洲欧美视频| 欧美午夜精彩| 亚洲欧美日韩中文视频| 亚洲免费观看在线视频| 麻豆国产精品777777在线 | 在线一区日本视频| 日韩视频永久免费观看| 欧美国产日产韩国视频| 免费成人黄色| 午夜免费在线观看精品视频| 欧美一区二区三区在| 亚洲大片免费看| 99热这里只有成人精品国产| 欧美视频成人| 麻豆国产精品777777在线 | 欧美一区影院| 久久精品一区中文字幕| 亚洲精品在线视频观看| 一本色道久久综合亚洲精品不卡| 国产精品久久久久久久久久久久| 欧美一区二区高清| 欧美精品一区二区在线播放| 午夜精品成人在线| 欧美黄色视屏| 欧美ab在线视频| 国产伦精品一区二区三区高清版| 亚洲国产第一页| 国产夜色精品一区二区av| 亚洲精品一区二区在线观看| 国产午夜精品全部视频播放| 一区二区精品国产| 99综合在线| 欧美剧在线免费观看网站| 久久久久久电影| 国内精品视频666| 欧美一区二区在线播放| 午夜精品福利视频| 国产精品美女久久福利网站| 一区二区久久久久| 亚洲欧美一区二区三区极速播放| 欧美日韩一区二区三区四区在线观看 | 欧美激情视频网站|