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

Shuffy

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

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)及其對(duì)應(yīng)的事件處理程序。

 

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

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

3,由于開(kāi)始繪制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/    

本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(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>
            亚洲精品中文字幕女同| 欧美11—12娇小xxxx| 欧美在线一区二区| 国产一区二区三区久久久久久久久| 亚洲欧美在线视频观看| 久久久久久夜| 亚洲精品视频免费| 久久gogo国模啪啪人体图| 中文欧美日韩| 蜜桃精品久久久久久久免费影院| 亚洲福利久久| 国模一区二区三区| 亚洲一区二区成人在线观看| 亚洲伦理精品| 国产精品一级在线| 一区二区三区欧美日韩| 欧美一区二区三区视频免费播放| 激情亚洲网站| 欧美日韩国产片| 欧美在线视频在线播放完整版免费观看 | 欧美综合国产精品久久丁香| 伊人色综合久久天天五月婷| 欧美日韩另类一区| 亚洲国产小视频| 香蕉av777xxx色综合一区| 亚洲第一在线视频| 久久久久一本一区二区青青蜜月| 午夜精品网站| 亚洲另类在线一区| 欧美777四色影视在线| 毛片一区二区三区| 尤物在线观看一区| 久久久亚洲人| 亚洲女女做受ⅹxx高潮| 亚洲第一页在线| 久久国产主播| 狠狠久久亚洲欧美专区| 欧美亚洲不卡| 欧美女同在线视频| 久久久精品国产免费观看同学 | 一区二区高清视频在线观看| 在线一区二区三区四区| 伊人伊人伊人久久| 国产伦精品一区二区三区高清版| 欧美成熟视频| 久久视频这里只有精品| 午夜亚洲性色视频| 亚洲四色影视在线观看| 亚洲人精品午夜在线观看| 在线视频中文亚洲| 亚洲激情电影在线| 在线观看亚洲精品视频| 欧美成人午夜免费视在线看片| 亚洲国产综合在线看不卡| 久久久综合网站| 久久精品夜色噜噜亚洲a∨ | 欧美一区二区大片| 韩国三级电影一区二区| 国产精品毛片高清在线完整版| 中文久久乱码一区二区| 久久aⅴ国产欧美74aaa| 亚洲欧美福利一区二区| 亚洲夜间福利| 亚洲午夜激情免费视频| 中国女人久久久| 亚洲免费精彩视频| 亚洲免费av观看| 亚洲最黄网站| 亚洲视频一区二区| 亚洲午夜免费福利视频| 国内久久精品视频| 欧美精品一区二区三| 亚洲免费小视频| 午夜精品久久久久久久| 午夜国产一区| 久久久精品tv| 亚洲午夜精品一区二区| 亚洲欧美日韩一区二区三区在线| 欧美成人精品影院| 欧美成在线视频| 亚洲电影自拍| 夜夜爽夜夜爽精品视频| 你懂的视频一区二区| 亚洲综合国产精品| 欧美一级精品大片| 99在线热播精品免费99热| 狠狠色丁香久久婷婷综合_中| 国产一区二区三区四区五区美女| 精品成人国产在线观看男人呻吟| 欧美视频日韩视频| 国产精品电影在线观看| 欧美国产综合| 欧美午夜激情视频| 国产一区二区三区精品欧美日韩一区二区三区| 欧美成人国产va精品日本一级| 亚洲自拍高清| 99日韩精品| 欧美电影免费观看高清完整版| 亚洲高清免费视频| 噜噜噜在线观看免费视频日韩| 亚洲在线免费| 在线亚洲欧美| 久久久久免费视频| 欧美一级久久久| 免费国产一区二区| 久久女同精品一区二区| 新狼窝色av性久久久久久| 久久亚洲私人国产精品va| 欧美一级在线播放| 亚洲一级黄色片| 一区二区三区四区精品| 久久精品91久久久久久再现| 欧美高清在线一区二区| 亚洲图片在线观看| 亚洲一区二区三区777| 久久精品国产久精国产爱| 欧美在线观看一二区| 午夜伦欧美伦电影理论片| 免费中文日韩| 国产欧美日韩三级| 国产伦一区二区三区色一情| 亚洲欧洲三级电影| 亚洲经典在线| 欧美一级日韩一级| 久久精品视频在线观看| 欧美在线播放视频| 亚洲人成网站色ww在线| 久久精品亚洲热| 久久阴道视频| 国产啪精品视频| 午夜视频精品| 欧美专区在线播放| 国产精品第十页| 国产日本欧美一区二区三区在线| 亚洲精品自在久久| 美女黄色成人网| 亚洲激情一区二区三区| 亚洲毛片网站| 亚洲午夜精品久久久久久app| 亚洲专区免费| 国产精品av久久久久久麻豆网| 国产精品久久久久久久app| 国产精品永久入口久久久| 国产一区二区三区久久久久久久久| 国产综合色一区二区三区| 在线日本高清免费不卡| 亚洲精品久久视频| 免费看的黄色欧美网站| 日韩小视频在线观看专区| 美女网站久久| 欧美日韩亚洲一区二区三区在线观看 | 欧美怡红院视频| 国产欧美一区在线| 91久久线看在观草草青青| 久久在线播放| 久久久久在线观看| 在线看欧美视频| 亚洲无玛一区| 一本色道久久综合亚洲精品按摩 | 亚洲先锋成人| 国产精品夫妻自拍| 在线看视频不卡| 免费看精品久久片| 一区二区三区鲁丝不卡| 国产精品www994| 亚洲视频精品在线| 欧美va亚洲va国产综合| 久久嫩草精品久久久久| 伊人久久大香线蕉综合热线| 亚洲午夜高清视频| 中日韩美女免费视频网址在线观看 | 激情欧美一区二区三区| 乱人伦精品视频在线观看| 久久只有精品| 国产欧美日韩免费看aⅴ视频| 91久久亚洲| 久久久999精品| 99在线热播精品免费| 久久亚洲精品欧美| 亚洲人成在线观看| 亚洲乱码国产乱码精品精| 久久天天躁狠狠躁夜夜av| 国产精品第2页| 亚洲精品在线三区| 麻豆精品91| 欧美精品粉嫩高潮一区二区 | 欧美韩日一区| 亚洲综合欧美日韩| 欧美伊人精品成人久久综合97| **欧美日韩vr在线| 亚洲三级国产| 牛牛影视久久网| 亚洲自拍偷拍麻豆| 亚洲国产精品成人| 欧美午夜无遮挡| 久久综合伊人77777| 欧美极品aⅴ影院| 亚欧成人在线| 欧美精品日韩综合在线| 91久久久亚洲精品|