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

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

并且在構造函數(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,加入五個菜單項及其對應的事件處理程序。

 

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ù)。

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

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/    

本文版權歸作者和博客園共有,歡迎轉載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
原文鏈接: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>
            欧美性片在线观看| 欧美高清日韩| 国产欧美精品国产国产专区| 欧美成人69av| 美女网站在线免费欧美精品| 久久国产欧美精品| 久久精品理论片| 久久精品2019中文字幕| 久久av一区二区| 久久精品国内一区二区三区| 亚洲一区久久久| 亚洲欧美精品在线| 亚洲欧美综合国产精品一区| 亚洲一区二区三区乱码aⅴ| 免费看亚洲片| 久久久久国产一区二区三区四区| 午夜精品一区二区三区电影天堂| 亚洲欧美日韩中文播放| 久久青草久久| 欧美福利专区| 亚洲经典自拍| 99国产精品国产精品久久| 一级日韩一区在线观看| 先锋影音久久久| 久久亚洲美女| 国产精品国产三级国产a| 国产精品视频最多的网站| 国产模特精品视频久久久久| 国产一区二区视频在线观看| 在线成人激情视频| 在线中文字幕一区| 久久黄金**| 亚洲国产美国国产综合一区二区| aa级大片欧美| 欧美一区视频| 欧美国产视频在线| 国产精品一区二区女厕厕| 精品1区2区3区4区| 国产视频一区三区| 亚洲国产91精品在线观看| 一本色道88久久加勒比精品| 久久国产欧美精品| 亚洲国产专区校园欧美| 欧美一区视频在线| 欧美裸体一区二区三区| 国产欧美精品久久| 亚洲人成网站777色婷婷| 午夜国产精品影院在线观看 | 国产拍揄自揄精品视频麻豆| 狠狠色狠狠色综合日日小说| 日韩亚洲欧美中文三级| 久久精品动漫| 亚洲免费激情| 嫩草伊人久久精品少妇av杨幂| 国产精品嫩草99av在线| 亚洲精品综合| 男人的天堂亚洲| 亚洲欧美春色| 欧美日韩中文字幕综合视频| 亚洲国产一区二区三区在线播 | 亚洲香蕉在线观看| 欧美xart系列在线观看| 欧美日韩精品免费观看视频| 含羞草久久爱69一区| 国产精品99久久久久久有的能看| 久久九九久久九九| 亚洲一区一卡| 欧美系列精品| 狠狠色狠狠色综合日日91app| 午夜精品999| 日韩亚洲一区二区| 欧美日韩二区三区| 亚洲精品视频啊美女在线直播| 麻豆成人小视频| 久久国产精品毛片| 国产一级精品aaaaa看| 午夜精品短视频| 中文高清一区| 欧美日韩综合久久| 中文国产一区| 一区二区国产精品| 国产精品久久久99| 久久伊人免费视频| 欧美护士18xxxxhd| 樱花yy私人影院亚洲| 久久久久久久久伊人| 久久精品国产v日韩v亚洲 | 国产欧美激情| 99国产精品久久久久久久久久| 亚洲乱码日产精品bd| 欧美性事免费在线观看| 久久免费的精品国产v∧| 久久午夜精品| 午夜精品福利在线| 久久久噜久噜久久综合| 中文一区二区在线观看| 久久精品一本| 99日韩精品| 欧美中文在线视频| 99热在线精品观看| 欧美有码视频| 宅男噜噜噜66一区二区| 久久精品亚洲一区二区三区浴池| 夜夜狂射影院欧美极品| 欧美在线播放一区| 亚洲视频在线观看视频| 久久国产精品一区二区三区| 亚洲视频国产视频| 欧美a级理论片| 久久久久女教师免费一区| 欧美日韩综合不卡| 亚洲国产精品一区二区第四页av| 国产日韩欧美不卡在线| 亚洲美女黄色| 亚洲人精品午夜在线观看| 久久成人免费网| 亚洲欧美大片| 欧美日韩岛国| 亚洲三级电影全部在线观看高清| 黑人中文字幕一区二区三区 | 另类天堂视频在线观看| 国产精品高潮呻吟| 91久久精品www人人做人人爽| 国产一区二区三区四区| 亚洲午夜一二三区视频| av成人免费观看| 欧美福利一区二区| 亚洲第一在线综合网站| 亚洲第一精品影视| 久久久国产午夜精品| 久久综合久久美利坚合众国| 国产精品久久久久久久久果冻传媒| 99国产精品99久久久久久| 一二三区精品| 欧美天堂亚洲电影院在线观看 | 亚洲午夜久久久久久尤物| 亚洲视频每日更新| 欧美色一级片| 在线亚洲免费视频| 亚洲视频999| 国产精品女同互慰在线看| 亚洲在线播放| 久久精品免费| 亚洲第一级黄色片| 欧美黄在线观看| 一区二区三区国产在线| 一卡二卡3卡四卡高清精品视频| 欧美日本中文字幕| 中文一区字幕| 久久久国际精品| 亚洲欧洲精品一区二区三区| 欧美日韩国产91| 亚洲欧美日韩在线播放| 久久欧美肥婆一二区| 亚洲激情国产精品| 欧美视频在线一区| 午夜精品成人在线| 欧美国产国产综合| 亚洲一区二区黄色| 国产亚洲成av人在线观看导航| 久久福利毛片| 日韩手机在线导航| 久久久99爱| 亚洲伦理一区| 国产欧美日韩不卡| 欧美jizz19性欧美| 亚洲综合色噜噜狠狠| 欧美波霸影院| 午夜精品亚洲| 亚洲看片免费| 国内不卡一区二区三区| 欧美激情综合五月色丁香| 亚洲制服欧美中文字幕中文字幕| 久久五月激情| 亚洲一区二区精品在线| 在线观看av一区| 欧美少妇一区二区| 久久一区二区三区av| 亚洲视频播放| 亚洲电影成人| 久久久www成人免费无遮挡大片| 亚洲精品四区| 国内免费精品永久在线视频| 欧美午夜理伦三级在线观看| 免费日韩成人| 久久久久国产一区二区| 一区二区三区导航| 亚洲国产精品一区二区三区| 久久一区激情| 久久riav二区三区| 一区二区三区高清不卡| 亚洲激情视频在线| 精品动漫av| 国产最新精品精品你懂的| 国产精品看片资源| 欧美激情第二页| 美女脱光内衣内裤视频久久网站| 亚洲欧美日韩中文在线制服| 亚洲毛片在线看| 亚洲精品综合久久中文字幕|