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

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>
            一本色道久久综合亚洲精品按摩| 国产精品久久久久久久9999| 一区二区三区自拍| 狂野欧美一区| 欧美高清视频www夜色资源网| 亚洲经典一区| 亚洲免费精品| 国产丝袜一区二区| 欧美顶级大胆免费视频| 欧美精品在线免费| 午夜免费电影一区在线观看| 性久久久久久久久| 亚洲国产一区二区三区在线播 | 亚洲日本免费| 亚洲图片你懂的| 国产日韩欧美在线观看| 欧美激情亚洲| 国产精品乱码人人做人人爱| 久久久欧美一区二区| 欧美精品七区| 久久亚洲一区二区三区四区| 欧美日韩大陆在线| 久久先锋影音| 欧美特黄视频| 欧美成ee人免费视频| 国产精品大片wwwwww| 麻豆精品精华液| 欧美体内she精视频| 鲁大师成人一区二区三区| 欧美日韩一区二区三区在线| 久久午夜影视| 国产精品嫩草影院av蜜臀| 欧美搞黄网站| 国产亚洲精品一区二区| 99在线|亚洲一区二区| 又紧又大又爽精品一区二区| 一本色道久久综合一区| 亚洲国产日韩美| 欧美一区激情视频在线观看| 一本色道久久综合狠狠躁篇怎么玩| 久久国产精品亚洲va麻豆| 亚洲一区二区三区中文字幕| 免费日韩av| 久久久不卡网国产精品一区| 欧美日韩精品欧美日韩精品一| 美女精品国产| 国产午夜精品全部视频在线播放| 一区二区三区国产在线观看| 亚洲日本aⅴ片在线观看香蕉| 欧美在线欧美在线| 久久福利视频导航| 国产精品看片资源| 一本到12不卡视频在线dvd| 亚洲精品视频免费在线观看| 久久亚洲精品欧美| 玖玖精品视频| 亚洲高清电影| 麻豆成人综合网| 亚洲电影自拍| 亚洲国产人成综合网站| 理论片一区二区在线| 女同性一区二区三区人了人一| 国产日韩一区二区三区在线播放| 亚洲一区二区三区国产| 午夜亚洲一区| 国产自产在线视频一区| 欧美在线影院| 欧美**字幕| 亚洲巨乳在线| 欧美深夜福利| 先锋影音国产精品| 麻豆精品一区二区av白丝在线| 黄色欧美日韩| 欧美成人资源| 一区二区三区日韩| 久久精品国产视频| 亚洲电影免费在线观看| 欧美福利视频在线| 一区二区三区精品在线 | 亚洲国产精品精华液2区45| 老牛国产精品一区的观看方式| 欧美a级一区| 99国产精品99久久久久久| 欧美日韩一区在线视频| 亚洲一区二区不卡免费| 久久久久免费| 日韩一级精品视频在线观看| 欧美午夜理伦三级在线观看| 先锋影音网一区二区| 欧美成人免费网| 在线亚洲美日韩| 国内精品久久久久影院薰衣草| 久热精品视频在线| 一区二区三区黄色| 毛片一区二区| 亚洲一区二区三区涩| 激情小说亚洲一区| 欧美精品午夜视频| 欧美一级专区| 日韩写真视频在线观看| 玖玖玖国产精品| 亚洲一区精品视频| 亚洲第一二三四五区| 国产精品盗摄久久久| 六十路精品视频| 欧美亚洲视频| 亚洲最新色图| 亚洲福利视频一区二区| 欧美怡红院视频一区二区三区| 亚洲第一精品影视| 国产日韩欧美精品| 国产精品二区二区三区| 欧美不卡视频一区| 久久久久一区二区三区四区| 99在线精品免费视频九九视| 欧美成ee人免费视频| 久久久久99精品国产片| 亚洲欧美韩国| 日韩亚洲视频| 最新精品在线| 影音先锋久久| 激情自拍一区| 好吊妞**欧美| 国产一区二区三区四区五区美女| 欧美私人啪啪vps| 欧美精品一区在线| 欧美成人免费小视频| 久久人人97超碰国产公开结果| 午夜精品久久久久久久蜜桃app| 夜夜爽www精品| 亚洲免费福利视频| 亚洲精品一区二区三区蜜桃久| 欧美大片网址| 欧美国产日韩一区二区三区| 久久亚洲精品视频| 久久在线精品| 美玉足脚交一区二区三区图片| 久久免费黄色| 免费在线亚洲| 欧美激情视频一区二区三区在线播放 | 欧美伊人精品成人久久综合97| 亚洲在线视频| 亚洲欧美综合一区| 亚洲欧美综合国产精品一区| 亚洲专区在线| 亚洲欧美日韩一区二区三区在线| 亚洲在线视频一区| 销魂美女一区二区三区视频在线| 亚洲欧美区自拍先锋| 亚洲欧美在线x视频| 欧美一区二区三区免费大片| 欧美在线视频网站| 久久午夜国产精品| 欧美激情一区在线观看| 欧美日韩国产高清视频| 国产精品第一区| 国产日本欧洲亚洲| 黄色成人av| 亚洲精品黄网在线观看| 99riav久久精品riav| 亚洲综合色噜噜狠狠| 久久久久久国产精品一区| 欧美电影免费观看高清完整版| 亚洲国产精品一区二区www| 亚洲精品久久久蜜桃| 午夜精品美女自拍福到在线| 久久精品一区蜜桃臀影院| 欧美激情按摩| 国产精品一区二区久久国产| 激情文学一区| 一区二区毛片| 久久精品一区二区三区中文字幕| 欧美bbbxxxxx| 99在线|亚洲一区二区| 久久国产精品电影| 欧美日韩高清在线| 国内自拍亚洲| 亚洲一区免费视频| 欧美aⅴ一区二区三区视频| 一本到高清视频免费精品| 欧美专区在线观看| 欧美日韩在线电影| 亚洲电影在线看| 午夜影院日韩| 亚洲乱码国产乱码精品精98午夜| 欧美一区二区三区日韩| 欧美精品一区二区三区蜜桃 | 美女视频黄a大片欧美| 99热免费精品| 你懂的视频欧美| 国产日产精品一区二区三区四区的观看方式 | 欧美人与性动交cc0o| 极品日韩久久| 欧美一级精品大片| 亚洲最新在线视频| 欧美激情小视频| 亚洲国产精品久久久| 久久综合九色综合久99| 亚洲一区综合| 国产精品久久久久一区二区三区 |