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

Shuffy

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

Selection

Selection is a powerful feature of OpenGL that allows you click at some position of the OpenGL window using the mouse and determine which of your objects lie beneath it. The act of selecting a specific object is called Picking. With OpenGL's selection feature, we can specify a viewing volume and determine which objects fall within that viewing volume. A powerful utility function, gluPickMatrix, produces a matrix which can be used to create a smaller viewing volume placed beneath the mouse cursor. Then we use selection to test this viewing volume to see which objects are contained by it.

Selection is actually a rendering mode, but in this mode no pisels are actually copied onto the frame buffer. Instead, primitives drawn within the viewing volume produce hit records in a selection buffer. We must set up this selection buffer in advance and name the primitives or groups of primitives so that they can be identified in the selection buffer.We can then parse the buffer to determine which objects intersected the viewing volume.

Naming Primitives

We have to name a group of primitives such as one describing a cube or a cylinder etc in order to identify them. These names are nothing but integers such as for display list names. The names list is maintained on the named stack. After we initialize the name stack we can push names on the stack or simply replace the name currently on the top of the stack. When a hit occurs during selection, all the names on the stack are copied onto the selection buffer.

1,CCY457OpenGLView類中加入一個(gè)變量,用來表示寬高比

      GLdouble m_aspectRatio; // width/height ratio

2,OnSize函數(shù)修改如下:

void CCY457OpenGLView::OnSize(UINT nType, int cx, int cy)
{
      CView::OnSize(nType, cx, cy);
      
if ( 0 >= cx || 0 >= cy )
      {
           
return;
      }
      
// select the full client area
    ::glViewport(00, cx, cy);
      
// compute the aspect ratio
      
// this will keep all dimension scales equal
      m_aspectRatio = (GLdouble)cx/(GLdouble)cy;
      
// select the projection matrix and clear it
    ::glMatrixMode(GL_PROJECTION);
    ::glLoadIdentity();
      
// select the viewing volume
      ::gluPerspective(45.0f, m_aspectRatio, .01f, 200.0f);
      
//::gluOrtho2D(-10.0f, 10.0f, -10.0f, 10.0f);   
      
// switch back to the modelview matrix and clear it
    ::glMatrixMode(GL_MODELVIEW);
    ::glLoadIdentity();
}

3,繪制函數(shù)修改如下:

void CCY457OpenGLView::RenderScene ()
{
//繪制函數(shù)
      glTranslatef(0.0f,0.0f,-5.0f);
      glRotatef(m_xRot,
1.0f,0.0f,0.0f);
      glRotatef(m_yRot,
0.0f,1.0f,0.0f);
      glInitNames();
      glPushName(
0);
      glPushMatrix();
           glTranslatef(
-2.0f,0.0f,0.0f);
           glLoadName(
1);
           glutSolidSphere(
1.0f,20,20);
      glPopMatrix();
      glPushMatrix();
           glLoadName(
2);
           glTranslatef(
2.0f,0.0f,0.0f);
           glutSolidCube(
1.0f);
      glPopMatrix();
}

4,加入對(duì)鼠標(biāo)左鍵選擇物體的處理

void CCY457OpenGLView::ProcessSelection (CPoint point)
{
      
int xPos = point.x ;
      
int yPos = point.y ;
      GLuint selectBuff[
64];
      GLint hits, viewport[
4];
      glSelectBuffer(
64, selectBuff);
      glGetIntegerv(GL_VIEWPORT, viewport);
      glMatrixMode(GL_PROJECTION);
      glPushMatrix();
      glRenderMode(GL_SELECT);
      glLoadIdentity();
      gluPickMatrix(xPos, viewport[
3- yPos, 2,2, viewport);
      gluPerspective(
45.0f, m_aspectRatio, .01f, 200.0f);
      RenderScene();
      hits 
= glRenderMode(GL_RENDER);
      
if(hits==1)
           ProcessObject(selectBuff);
      glMatrixMode(GL_PROJECTION);
      glPopMatrix();
      glMatrixMode(GL_MODELVIEW);
}
void CCY457OpenGLView::ProcessObject (GLuint* pSelectBuff)
{
      
int id = pSelectBuff[3];
      
if(id==1)
           MessageBox(
"You clicked on Sphere");
      
if(id==2)
           MessageBox(
"You clicked on Cube");
}
void CCY457OpenGLView::OnLButtonDown(UINT nFlags, CPoint point)
{
      ProcessSelection(point);
      CView::OnLButtonDown(nFlags, point);
}

作者:洞庭散人

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

本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
原文鏈接:http://www.cnblogs.com/phinecos/archive/2008/11/07/1328861.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>
            国产区在线观看成人精品| 亚洲作爱视频| 亚洲国产精品va在看黑人| 亚洲欧洲一区二区三区在线观看| 亚洲日本久久| 羞羞色国产精品| 久久婷婷亚洲| 99热免费精品| 久久久免费av| 国产精品久久久久影院色老大 | 亚洲在线不卡| 老妇喷水一区二区三区| 国产精品盗摄久久久| 亚洲第一主播视频| 香蕉久久夜色精品国产| 久久精品国产精品亚洲综合| 欧美视频精品在线| 亚洲黄色av| 免费成人在线视频网站| 亚洲一区国产视频| 激情小说另类小说亚洲欧美| 欧美一级片一区| 蜜桃av综合| 在线精品福利| 一区二区三区你懂的| 欧美精品久久天天躁| 在线观看国产日韩| 免费在线播放第一区高清av| 欧美日韩国产精品一区| 亚洲黄色精品| 午夜精品亚洲一区二区三区嫩草| 欧美三级电影一区| 久久在线精品| 国产精品国产三级国产| 欧美a级大片| 久久成人久久爱| 宅男噜噜噜66一区二区66| 亚洲精品国产精品国自产观看浪潮 | 久久嫩草精品久久久精品| 国产欧美精品久久| 亚洲韩国青草视频| 欧美激情国产高清| 夜夜嗨av色一区二区不卡| 欧美一区二区三区免费大片| 国产一区二区0| 久久伊人免费视频| 国产精品久久婷婷六月丁香| 亚洲国产日韩综合一区| 极品少妇一区二区三区精品视频| 中日韩视频在线观看| 国产日韩欧美三区| 久久亚洲综合色| 国产精品色一区二区三区| 欧美自拍丝袜亚洲| 久久久精品网| 一本色道88久久加勒比精品| 久热re这里精品视频在线6| 欧美一区二区视频免费观看 | 欧美国产欧美亚洲国产日韩mv天天看完整| 久久久久久91香蕉国产| 欧美一区二区日韩一区二区| 国产精品久久精品日日| 亚洲最新在线视频| 亚洲天堂黄色| 久久国产成人| 久久理论片午夜琪琪电影网| 欧美成人午夜激情视频| 亚洲一区二区三区涩| 欧美一区二区三区视频在线观看| 亚洲女人天堂成人av在线| 欧美尤物巨大精品爽| 91久久在线观看| 欧美国产极速在线| 最近看过的日韩成人| 国产欧美亚洲一区| 亚洲欧美精品在线| 亚洲精品久久在线| 欧美国产一区二区在线观看| 亚洲人午夜精品| 亚洲一区二区不卡免费| 国产精品久久久久aaaa| 性色一区二区三区| 噜噜噜在线观看免费视频日韩 | 久久天堂成人| 亚洲国产天堂久久综合| 亚洲私人影院在线观看| 国产精品人成在线观看免费 | 小黄鸭精品密入口导航| 美女啪啪无遮挡免费久久网站| 亚洲国产精品毛片| 欧美三日本三级少妇三2023| 亚洲欧美日韩人成在线播放| 一本色道久久综合精品竹菊| 国产精品久久久久久久久久三级 | 久久九九热re6这里有精品| 免费观看在线综合色| 日韩小视频在线观看| 久久亚洲综合色| 亚洲精品美女久久久久| 久久国产综合精品| 国产伦精品一区二区三区视频孕妇| 亚洲区国产区| 欧美专区日韩视频| 亚洲国产日韩一区| 国产精品久久毛片a| 久久久久久网站| 在线视频亚洲一区| 免费观看亚洲视频大全| 亚洲一区二区在线免费观看视频| 欧美美女操人视频| 最新国产成人av网站网址麻豆| 亚洲欧美日韩精品久久亚洲区| 激情五月婷婷综合| 国产精品高潮在线| 欧美国产激情二区三区| 欧美在线短视频| 一区二区三区日韩在线观看| 亚洲高清电影| 99天天综合性| 在线精品观看| 国产午夜精品美女视频明星a级| 欧美日本簧片| 欧美成人乱码一区二区三区| 欧美一区二区视频免费观看| 亚洲视频在线观看视频| 午夜在线一区二区| 99精品欧美一区二区三区| 在线观看日韩av电影| 国产一区二区三区四区五区美女 | 久久九九热免费视频| 亚洲午夜极品| 在线亚洲欧美视频| 99re这里只有精品6| 亚洲一区二区三区影院| 亚洲乱码一区二区| 国产精品久久久久久久第一福利| 欧美激情一区二区三区四区| 麻豆av福利av久久av| 久久亚洲私人国产精品va| 久久超碰97人人做人人爱| 先锋亚洲精品| 久久成人综合视频| 欧美一区影院| 久久久久久97三级| 久久免费高清| 欧美va天堂在线| 午夜精品久久久久久99热软件| 亚洲小视频在线| 亚洲欧美区自拍先锋| 欧美亚洲综合另类| 久久精品国产亚洲精品| 欧美在线视频网站| 久久全国免费视频| 欧美成人免费全部| 欧美日韩一区精品| 久久久久青草大香线综合精品| 欧美在线视频观看| 久久免费视频观看| 欧美国产综合| 国产精品国产三级欧美二区| 国产伦理一区| 激情五月***国产精品| 亚洲国产高清视频| 在线中文字幕不卡| 欧美一区二区三区久久精品茉莉花| 欧美一区视频在线| 免费在线欧美视频| 亚洲精品影院| 亚洲大片av| 99pao成人国产永久免费视频| 中文成人激情娱乐网| 欧美一区二区三区免费视| 葵司免费一区二区三区四区五区| 欧美精品久久久久久久久老牛影院| 欧美午夜片欧美片在线观看| 欧美激情精品久久久久久久变态 | 久久久久www| 欧美伦理在线观看| 国产日韩欧美精品在线| 亚洲精品免费观看| 久久国产精品色婷婷| 欧美国产激情| 麻豆成人在线观看| 99pao成人国产永久免费视频| 午夜精品久久久久久久久| 欧美第一黄色网| 国产视频精品网| 一二美女精品欧洲| 欧美mv日韩mv国产网站app| 一本色道久久综合亚洲精品婷婷| 久久国产精品色婷婷| 欧美日韩在线另类| 亚洲电影成人| 久久九九热re6这里有精品| 欧美一区二区三区电影在线观看| 欧美激情中文不卡| 久久精品青青大伊人av| 国产精品九九| 一区二区三区日韩精品| 欧美va天堂|