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

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>
            国产精品久久激情| 卡通动漫国产精品| 蜜桃av久久久亚洲精品| 香蕉乱码成人久久天堂爱免费| 久久字幕精品一区| 久久免费黄色| 国产亚洲欧美一区二区三区| 一本不卡影院| 一区二区激情视频| 欧美激情小视频| 欧美va天堂在线| 狠色狠色综合久久| 欧美一区二区国产| 久久精品男女| 国产婷婷色一区二区三区在线| 亚洲在线成人| 午夜精品久久久| 国产精品日韩在线观看| 亚洲一区二区三区高清不卡| 亚洲小视频在线观看| 欧美色综合天天久久综合精品| 亚洲欧洲一区二区在线观看| 亚洲第一区在线观看| 久久久国产91| 欧美大片一区| 亚洲麻豆av| 欧美三级在线播放| 亚洲小少妇裸体bbw| 午夜电影亚洲| 国产欧美日韩激情| 欧美一区二区性| 久久综合给合久久狠狠狠97色69| 激情成人综合网| 免费永久网站黄欧美| 亚洲电影在线播放| 一区二区三区四区国产| 欧美性jizz18性欧美| 亚洲欧美日韩中文在线制服| 久久精品一区二区国产| 1000部精品久久久久久久久| 欧美成人久久| 亚洲调教视频在线观看| 久久久久久亚洲综合影院红桃| 在线精品视频一区二区| 欧美精品在线免费观看| 中文国产成人精品| 久久一区二区三区国产精品| 91久久精品日日躁夜夜躁国产| 欧美精品久久一区二区| 亚洲中无吗在线| 欧美大片免费久久精品三p | 国产精品美女久久久久久免费| 亚洲综合色视频| 欧美成人免费在线观看| 亚洲婷婷综合色高清在线| 国产精品入口尤物| 美女爽到呻吟久久久久| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲理伦电影| 久久爱www久久做| 亚洲韩国日本中文字幕| 国产精品久久久久久久久久免费看| 久久国产免费| 99精品欧美一区二区三区| 久久综合狠狠| 亚洲欧美电影在线观看| 在线播放中文一区| 国产精品免费网站| 欧美激情视频在线免费观看 欧美视频免费一 | 欧美日韩大陆在线| 久久狠狠久久综合桃花| 日韩视频一区二区三区在线播放免费观看| 午夜欧美视频| 99re66热这里只有精品3直播| 国产一区二区视频在线观看| 欧美人妖在线观看| 久久亚洲精品中文字幕冲田杏梨| 一本色道久久综合狠狠躁篇的优点| 欧美成人久久| 久久精品国产亚洲a| 在线视频精品一| 亚洲国产欧美久久| 一色屋精品亚洲香蕉网站| 国产精品久久久爽爽爽麻豆色哟哟| 免费美女久久99| 久久五月激情| 欧美一区影院| 午夜激情一区| 亚洲视频www| 99精品国产一区二区青青牛奶| 亚洲第一网站| 蜜桃久久精品一区二区| 久久九九热免费视频| 香蕉亚洲视频| 亚洲欧美日本精品| 亚洲一区二区三区精品动漫| 亚洲毛片视频| 99国产精品久久久久久久| 亚洲精品1区| 亚洲国产精品福利| 亚洲国产精品一区二区第一页 | 一本到高清视频免费精品| 亚洲第一网站| 欧美激情一区二区在线| 奶水喷射视频一区| 欧美国产综合| 亚洲国产欧美在线人成| 亚洲激情国产精品| 91久久精品www人人做人人爽 | 欧美gay视频| 美女视频网站黄色亚洲| 另类专区欧美制服同性| 久久婷婷综合激情| 另类成人小视频在线| 欧美ed2k| 最近中文字幕日韩精品| 亚洲青色在线| 一区二区三区国产| 亚洲欧美综合精品久久成人| 西瓜成人精品人成网站| 久久精品一区四区| 麻豆精品在线视频| 欧美理论电影在线观看| 欧美午夜片在线观看| 国产精品视频免费在线观看| 国产亚洲精品综合一区91| 国产麻豆综合| 亚洲福利视频一区二区| 亚洲精品欧美日韩| 亚洲综合国产激情另类一区| 羞羞答答国产精品www一本| 久久久免费精品| 亚洲国产精品久久| 亚洲四色影视在线观看| 久久精品国产2020观看福利| 欧美成人精品在线观看| 国产精品人人做人人爽人人添| 国内精品一区二区三区| 亚洲三级色网| 欧美在线免费观看亚洲| 欧美激情aⅴ一区二区三区| 日韩亚洲成人av在线| 午夜久久美女| 欧美精品一区在线| 国产伪娘ts一区| 99国内精品久久| 久久久久久香蕉网| 亚洲精品黄网在线观看| 久久激情视频| 欧美日韩中文字幕在线| 影音先锋欧美精品| 亚洲欧美成人一区二区在线电影| 美国成人直播| 亚洲永久免费av| 欧美国产日韩一区二区在线观看 | 亚洲日本中文字幕区| 亚洲欧美综合一区| 亚洲国产婷婷| 久久精品国产精品 | 久久精彩免费视频| 9i看片成人免费高清| 久久久久免费观看| 国产精品一区在线观看| 亚洲美女毛片| 免费久久99精品国产| 亚洲欧美一区在线| 欧美丝袜一区二区三区| 亚洲三级视频| 美女主播一区| 久久av二区| 国产亚洲激情视频在线| 亚洲欧美日韩中文在线制服| 亚洲欧洲日韩在线| 免费亚洲电影在线观看| 在线观看精品一区| 久久久免费精品视频| 亚洲欧美视频在线观看视频| 欧美视频在线观看免费网址| 亚洲人体1000| 欧美激情二区三区| 久久理论片午夜琪琪电影网| 国产人成一区二区三区影院| 亚洲综合精品四区| 一区二区三区高清不卡| 欧美三区在线视频| 亚洲视频图片小说| av不卡在线观看| 欧美另类videos死尸| 亚洲理论在线观看| 亚洲欧洲一区二区三区| 欧美激情精品久久久久| 亚洲精品综合精品自拍| 91久久精品国产| 欧美日本韩国| 中文高清一区| 亚洲视频图片小说| 国产情侣久久| 蜜桃精品久久久久久久免费影院| 久久精选视频| 亚洲全黄一级网站|