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

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>
            欧美亚洲免费| 久久人人97超碰国产公开结果| 免费成人美女女| 亚洲国产成人精品久久久国产成人一区 | 亚洲免费伊人电影在线观看av| 欧美婷婷六月丁香综合色| 亚洲午夜在线观看| 亚洲欧美在线另类| 影音先锋中文字幕一区二区| 欧美成人xxx| 欧美激情综合在线| 亚洲欧美成人网| 久久久久99| 99国产精品国产精品毛片| 一区二区av在线| 国产亚洲人成a一在线v站| 蜜臀91精品一区二区三区| 欧美激情亚洲激情| 性娇小13――14欧美| 久久久精品日韩欧美| 亚洲精品国产精品国自产在线 | 亚洲一区二区免费看| 亚洲一区二区在线免费观看| 精品不卡视频| 一区电影在线观看| 尤物在线精品| 在线视频中文亚洲| 在线欧美影院| 亚洲一区免费观看| 亚洲精品久久久蜜桃| 在线亚洲一区观看| 亚洲国产精品久久久| 亚洲一区综合| 99在线精品观看| 国产精品一香蕉国产线看观看| 香蕉久久夜色精品国产使用方法| 久久影视三级福利片| 午夜精品久久久久久久99热浪潮| 久久先锋影音| 欧美一级久久| 欧美日韩午夜在线视频| 免费欧美高清视频| 国产日产亚洲精品系列| 亚洲精品一区二区三区婷婷月 | 欧美美女日韩| 欧美aⅴ99久久黑人专区| 国产精品资源在线观看| 夜夜精品视频| 亚洲精品欧美在线| 久久在线精品| 久久婷婷丁香| 国产亚洲欧美激情| 亚洲一区二区三区四区五区午夜| 99视频+国产日韩欧美| 老司机一区二区三区| 看片网站欧美日韩| 国产一区二区三区精品久久久| 一本色道久久综合亚洲精品婷婷| 亚洲国产精品123| 久久精品av麻豆的观看方式 | 亚洲黄色在线观看| 久久黄色影院| 久久综合伊人77777麻豆| 国内精品免费在线观看| 久久国产福利国产秒拍| 久久国产欧美精品| 国产欧美日韩高清| 性做久久久久久免费观看欧美| 午夜久久久久久| 国产精品乱码人人做人人爱| 亚洲自拍电影| 久久久久久亚洲综合影院红桃| 国产人妖伪娘一区91| 亚洲欧美一区二区原创| 久久精品国产亚洲a| 国产日韩欧美| 狠狠久久亚洲欧美| 午夜视频久久久久久| 久久精品中文字幕一区二区三区| 国产视频亚洲| 久久久久久伊人| 亚洲黄网站黄| 亚洲尤物在线视频观看| 国产女人精品视频| 久久国产精品99久久久久久老狼| 女女同性精品视频| 99成人精品| 国产精品欧美日韩| 久久久人成影片一区二区三区| 欧美搞黄网站| 亚洲夜间福利| 狠狠色狠狠色综合| 欧美精品日韩| 午夜精品亚洲| 亚洲国产欧美国产综合一区| 亚洲一区自拍| 亚洲国产精品高清久久久| 欧美三级午夜理伦三级中视频| 亚洲欧美日韩人成在线播放| 欧美a级一区| 亚洲小视频在线| 在线电影国产精品| 国产精品成人免费视频| 欧美制服丝袜| 日韩视频精品| 欧美成人免费在线视频| 亚洲专区一二三| 亚洲人体一区| 国内激情久久| 欧美视频一区二区三区在线观看| 久久久免费观看视频| 一本久道久久综合中文字幕| 另类尿喷潮videofree| 亚洲一区二区3| 亚洲三级性片| 免费中文日韩| 亚洲天堂视频在线观看| 伊人久久大香线蕉综合热线| 国产精品v欧美精品v日本精品动漫| 久久久人人人| 欧美在线免费观看视频| 一区二区三区高清在线观看| 欧美激情中文字幕在线| 久久漫画官网| 欧美在线观看一区二区| 亚洲天堂av在线免费观看| 亚洲国产精选| 亚洲成人直播| 激情欧美一区| 国产日韩在线看| 国产欧美1区2区3区| 欧美三级特黄| 欧美日韩一区二区在线视频| 欧美风情在线观看| 免费在线看成人av| 麻豆精品一区二区综合av| 欧美亚洲尤物久久| 午夜亚洲性色视频| 亚洲欧美精品一区| 午夜精品久久久| 亚洲永久精品大片| 亚洲欧美日韩高清| 亚洲欧美日韩国产一区二区三区| 亚洲视频精选| 亚洲一本大道在线| 亚洲永久免费av| 亚洲天堂av在线免费| 在线亚洲精品福利网址导航| 99视频精品全国免费| 一本大道久久精品懂色aⅴ | 久久婷婷丁香| 另类春色校园亚洲| 欧美激情精品久久久久久久变态| 欧美18av| 最新日韩精品| 一区二区三区四区五区视频 | 麻豆成人综合网| 欧美高清免费| 亚洲人www| 国产精品99久久久久久久女警 | 欧美激情亚洲另类| 欧美激情综合| 一区二区三区|亚洲午夜| 亚洲色图在线视频| 欧美在线视频免费观看| 久久久亚洲一区| 欧美精品电影在线| 国产精品午夜电影| 一区久久精品| 亚洲午夜一区二区三区| 欧美在线影院| 欧美大尺度在线观看| 日韩一级视频免费观看在线| 亚洲欧美色一区| 狂野欧美激情性xxxx| 欧美三级在线| 在线免费观看成人网| 亚洲国产欧洲综合997久久| 亚洲精品一区二区在线| 午夜精品久久久久久久男人的天堂 | 久久精品久久综合| 亚洲第一区中文99精品| 一区二区三区不卡视频在线观看 | 欧美日韩亚洲综合在线| 国产精品日日摸夜夜摸av| 影视先锋久久| 亚洲欧美精品中文字幕在线| 久色成人在线| 亚洲一级特黄| 欧美激情第二页| 极品av少妇一区二区| 中文日韩在线| 欧美激情中文字幕乱码免费| 亚洲男人av电影| 欧美日韩性生活视频| 亚洲盗摄视频| 久久精品噜噜噜成人av农村| 亚洲免费精彩视频| 欧美a级理论片| 激情成人亚洲|