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

Shuffy

不斷的學習,不斷的思考,才能不斷的進步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19

wglUseFontBitmaps函數

The wglUseFontBitmaps() function creates a set of bitmap display lists based on the glyphs in the currently selected font in the current DC for use in the current OpenGL RC. It basically creates a series of sequential display lists which can be executed using the function glCallLists. The function takes care of aligning the raster positions of subsequent bitmaps once we specify the raster position for the first bitmap. We use the glRasterPos function to set the current raster position, where the bitmapped text would start appearing.

The  glRasterPos function works exactly the same way as glVertex function, the only difference being that the position is being transformed and not the object. Thus when we use wglUseFontBitmaps to generate display lists and then call them, the resulting text is displayed, starting at the current raster position, and the bitmaps are copied to the raster buffer, giving the effect of always having the text positioned in the xy plane of the screen. 

Thus we would use wglUseFontBitmaps when we need the text to be visible to the user and that the size of the text relative to its distance from the viewpoint doesn't matter.

wglUseFontOutlines函數

The wglUseFontOutlines function creates a set of 3D polygon or line based primitive display lists, based on the glyphs in the currently selected TrueType font in the current DC for use in the current OpenGL RC. Stroke and Raster fonts are not supported. These objects can then be used to draw 3D characters. This function also has additional arguments that control the extrusion of the 3D characters in the +Z direction, the deviation of the generated primitive vertices from the design outline of the font, whether to generated filled polygons or a wireframe primitives and an array of structures to hold the metrics of each of the generated characters.

1,在CCY457OpenGLView類中加入下述變量:


    
//For Text
    GLuint m_3DTextList;
    GLuint m_2DTextList;
    BOOL m_b3DText, m_b2DText;

并在構造函數中進行初始化:

CCY457OpenGLView::CCY457OpenGLView()
{
    m_xRot 
= 0.0f;
    m_yRot 
= 0.0f;
    m_b3DText 
= FALSE;
    m_b2DText 
= FALSE;
}

2,加入兩個用來創建文本的菜單項及其事件處理函數

void CCY457OpenGLView::OnText2dtext() 
{
    m_b3DText 
= FALSE;
    m_b2DText 
= TRUE;
    InvalidateRect(NULL,FALSE);
}
void CCY457OpenGLView::OnText3dtext() 
{
    m_b3DText 
= TRUE;
    m_b2DText 
= FALSE;
    InvalidateRect(NULL,FALSE);    
}
void CCY457OpenGLView::OnUpdateText2dtext(CCmdUI* pCmdUI) 
{
    pCmdUI
->SetRadio(m_b2DText);        
}
void CCY457OpenGLView::OnUpdateText3dtext(CCmdUI* pCmdUI) 
{
    pCmdUI
->SetRadio(m_b3DText);
}

3,實際創建2D3D文本列表的函數:

void CCY457OpenGLView::Create3DTextLists()
{
    CFont m_font;
    GLYPHMETRICSFLOAT agmf[
256]; 
    m_font.CreateFont(    
-12,                            // Height Of Font
                        0,                                // Width Of Font
                        0,                                // Angle Of Escapement
                        0,                                // Orientation Angle
                        FW_BOLD,                        // Font Weight
                        FALSE,                            // Italic
                        FALSE,                            // Underline
                        FALSE,                            // Strikeout
                        ANSI_CHARSET,                    // Character Set Identifier
                        OUT_TT_PRECIS,                    // Output Precision
                        CLIP_DEFAULT_PRECIS,            // Clipping Precision
                        ANTIALIASED_QUALITY,            // Output Quality
                        FF_DONTCARE|DEFAULT_PITCH,        // Family And Pitch
                        "Algerian");
    CFont
* m_pOldFont = m_pDC->SelectObject(&m_font);
     
// create display lists for glyphs 0 through 255 with 0.1 extrusion 
    
// and default deviation. The display list numbering starts at 1000 
    
// (it could be any number) 
    m_3DTextList = glGenLists(256);
    wglUseFontOutlines(m_pDC
->GetSafeHdc(), 0255, m_3DTextList, 0.0f0.5f,WGL_FONT_POLYGONS, agmf); 
    m_pDC
->SelectObject(m_pOldFont);
}
void CCY457OpenGLView::Create2DTextLists()
{
    CFont m_font;
    m_font.CreateFont(    
-24,                            // Height Of Font
                        0,                                // Width Of Font
                        0,                                // Angle Of Escapement
                        0,                                // Orientation Angle
                        FW_NORMAL,                        // Font Weight
                        FALSE,                            // Italic
                        FALSE,                            // Underline
                        FALSE,                            // Strikeout
                        ANSI_CHARSET,                    // Character Set Identifier
                        OUT_TT_PRECIS,                    // Output Precision
                        CLIP_DEFAULT_PRECIS,            // Clipping Precision
                        DEFAULT_QUALITY,                // Output Quality
                        FF_DONTCARE|DEFAULT_PITCH,        // Family And Pitch
                        "Algerian");
    CFont
* m_pOldFont = m_pDC->SelectObject(&m_font);
     
// create display lists for glyphs 0 through 255 with 0.1 extrusion 
    
// and default deviation. The display list numbering starts at 1000 
    
// (it could be any number) 
    m_2DTextList = glGenLists(256);
    wglUseFontBitmaps(m_pDC
->GetSafeHdc(), 0255, m_2DTextList); 
    m_pDC
->SelectObject(m_pOldFont);
}

4, InitializeOpenGL函數中調用上述兩個函數:

BOOL CCY457OpenGLView::InitializeOpenGL()
{
    
//Get a DC for the Client Area
    m_pDC = new CClientDC(this);
    
//Failure to Get DC
    if(m_pDC == NULL)
    {
        MessageBox(
"Error Obtaining DC");
        
return FALSE;
    }
    
//Failure to set the pixel format
    if(!SetupPixelFormat())
    {
        
return FALSE;
    }
    
//Create Rendering Context
    m_hRC = ::wglCreateContext (m_pDC->GetSafeHdc ());
    
//Failure to Create Rendering Context
    if(m_hRC == 0)
    {
        MessageBox(
"Error Creating RC");
        
return FALSE;
    }
    
//Make the RC Current
    if(::wglMakeCurrent (m_pDC->GetSafeHdc (), m_hRC)==FALSE)
    {
        MessageBox(
"Error making RC Current");
        
return FALSE;
    }
    
    
//Specify Black as the clear color
    ::glClearColor(0.0f,0.0f,0.0f,0.0f);
    
//Specify the back of the buffer as clear depth
    ::glClearDepth(1.0f);
    
//Enable Depth Testing
    ::glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_FLAT);
    SetupLighting();
    
//Create Font Display Lists
    Create2DTextLists();
    Create3DTextLists();
    
return TRUE;
}

5,繪制函數修改如下:

void CCY457OpenGLView::RenderScene ()
{
//繪制函數
    glTranslatef(-1.0f,0.0f,-5.0f);
    glRotatef(
-10.0,1.0f,0.0f,0.0f);    
    glRotatef(
-10.0,0.0f,1.0f,0.0f);    
    
if(m_b2DText)
    {
//2D文本
        
// Position The Text On The Screen
        glDisable(GL_LIGHTING);
        glColor3f(
1.0f,1.0f,0.0f);
        glRasterPos2f(
0,0);
        glListBase(m_2DTextList);
        glCallLists(
6, GL_UNSIGNED_BYTE ,"OpenGL");
        glEnable(GL_LIGHTING);
    }
    
if(m_b3DText)
    {
//3D文本
        glListBase(m_3DTextList);
        glCallLists(
6, GL_UNSIGNED_BYTE ,"OpenGL");
    }
}

作者:洞庭散人

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

本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
原文鏈接:http://www.cnblogs.com/phinecos/archive/2008/11/06/1328250.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>
            午夜精品一区二区三区在线| 欧美日本乱大交xxxxx| 亚洲国产日韩精品| 亚洲国产精品成人综合色在线婷婷| 欧美一区二区精美| 激情久久久久久久| 欧美激情国产精品| 欧美激情综合在线| 亚洲综合色在线| 校园春色综合网| 亚洲高清在线播放| 亚洲精品美女| 国产嫩草一区二区三区在线观看 | 理论片一区二区在线| 亚洲免费激情| 亚洲一区二区三区涩| 国产综合香蕉五月婷在线| 欧美激情一区二区久久久| 欧美三级中文字幕在线观看| 欧美在线观看视频一区二区三区 | 99精品福利视频| 国产日产欧美a一级在线| 欧美成人精品激情在线观看| 欧美日韩国产在线播放网站| 久久国产精品久久w女人spa| 欧美成年人在线观看| 亚洲综合不卡| 久久久久久伊人| 一区二区三区黄色| 欧美一区综合| 99在线精品视频| 欧美一区二区免费| 亚洲美女淫视频| 亚洲欧美日韩精品在线| 最新成人av网站| 亚洲欧美日韩精品久久奇米色影视| 91久久久久久国产精品| 亚洲午夜激情| 亚洲片区在线| 亚洲一区中文字幕在线观看| 亚洲国产老妈| 亚洲一区久久久| 亚洲区一区二| 小黄鸭精品密入口导航| 日韩视频三区| 久久精品亚洲一区二区三区浴池| 亚洲午夜一区| 久热爱精品视频线路一| 欧美一级黄色录像| 欧美jizzhd精品欧美巨大免费| 欧美专区在线观看| 欧美经典一区二区三区| 久久精品欧美| 欧美日韩在线一区| 麻豆精品精品国产自在97香蕉| 国产精品久久久久久久久搜平片| 亚洲福利在线观看| 国产日韩精品久久久| 日韩视频在线观看免费| 激情另类综合| 亚洲视频1区2区| 亚洲精品护士| 久久久91精品国产一区二区三区| 午夜精品一区二区三区在线 | 亚洲精品视频二区| 激情偷拍久久| 亚洲欧洲av一区二区三区久久| 在线亚洲一区二区| 免费av成人在线| 久久久久久色| 国产精品xxxxx| 亚洲欧洲在线免费| 亚洲大胆av| 久久动漫亚洲| 久久不见久久见免费视频1| 欧美日韩一区自拍| 91久久精品美女高潮| 亚洲国产成人91精品| 欧美在线中文字幕| 欧美在线播放一区| 国产精品大全| 亚洲乱码日产精品bd| 亚洲区欧美区| 免费亚洲网站| 欧美国产欧美亚洲国产日韩mv天天看完整 | 老牛影视一区二区三区| 久久久国产精品亚洲一区| 欧美体内she精视频| 亚洲精品久久久久久久久久久久| 亚洲级视频在线观看免费1级| 久久精品色图| 久久久精品国产99久久精品芒果| 国产精品自拍三区| 亚洲午夜免费视频| 亚洲综合丁香| 国产精品国产三级国产普通话蜜臀 | 久久九九99| 久久久亚洲影院你懂的| 国产一区二区久久久| 午夜精品久久久久久99热| 午夜精品久久久久久99热| 国产精品扒开腿做爽爽爽软件| 一本色道久久| 亚洲直播在线一区| 国产精品激情电影| 亚洲午夜91| 午夜精品福利一区二区蜜股av| 国产精品夫妻自拍| 亚洲桃色在线一区| 午夜精品一区二区三区电影天堂| 国产伦精品免费视频| 亚洲欧美在线网| 久久久久国色av免费观看性色| 国产一区二区在线观看免费| 亚洲影视在线播放| 欧美一区精品| 激情欧美亚洲| 欧美va天堂va视频va在线| 亚洲国产一区视频| 一区二区三区日韩欧美| 国产精品av免费在线观看| 亚洲一二三级电影| 久久激情五月婷婷| 樱桃成人精品视频在线播放| 鲁大师影院一区二区三区| 亚洲国产成人av| 中日韩高清电影网| 国产精品久久久久9999高清| 性欧美1819sex性高清| 久久嫩草精品久久久精品| 在线观看不卡av| 欧美黄色aa电影| 一区二区三区久久久| 欧美在线一区二区| 精品999在线观看| 牛人盗摄一区二区三区视频| 日韩一二三区视频| 午夜一区不卡| 伊人久久噜噜噜躁狠狠躁 | 久久婷婷国产综合尤物精品| 亚洲国产日韩欧美| 欧美日韩视频在线观看一区二区三区| 亚洲私人影院| 另类综合日韩欧美亚洲| 99视频超级精品| 国产精品影院在线观看| 久久综合激情| 亚洲最新色图| 久久久久欧美精品| 亚洲精品乱码视频| 国产精品久久久久久久第一福利 | 亚洲激情综合| 国产精品欧美日韩久久| 久久裸体艺术| 日韩视频亚洲视频| 久久久噜噜噜久久狠狠50岁| 91久久精品www人人做人人爽 | 国内精品国语自产拍在线观看| 欧美r片在线| 国产精品99久久久久久有的能看| 久久精品一区| 一本色道久久综合| 国内欧美视频一区二区| 欧美日韩高清在线| 欧美一区二区高清| 亚洲三级免费电影| 久久狠狠久久综合桃花| 亚洲人体大胆视频| 国产麻豆精品视频| 免费成人av在线| 亚洲你懂的在线视频| 亚洲电影自拍| 久久精品国产一区二区三区免费看| 亚洲精品自在久久| 国产亚洲激情视频在线| 欧美精品手机在线| 久久久99免费视频| 亚洲免费电影在线观看| 久久免费视频在线观看| 亚洲视频你懂的| 亚洲国产日韩一级| 国产女精品视频网站免费| 欧美激情亚洲激情| 欧美亚洲尤物久久| 亚洲免费黄色| 男女激情久久| 久久激情综合| 亚洲欧美成aⅴ人在线观看| 亚洲日韩欧美视频一区| 国产一区二区三区在线观看免费| 欧美三级日韩三级国产三级| 麻豆久久婷婷| 欧美综合77777色婷婷| 一本大道久久a久久综合婷婷| 欧美顶级大胆免费视频| 久久久另类综合| 欧美中文在线字幕| 夜夜嗨av一区二区三区四季av | 国产精品欧美经典| 欧美精品系列|