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

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>
            亚洲国产欧美一区二区三区久久 | 欧美一区二区三区四区在线| 美脚丝袜一区二区三区在线观看| 国产精品a久久久久久| 在线视频国内自拍亚洲视频| 欧美中文字幕不卡| 亚洲女爱视频在线| 欧美三级特黄| 在线一区欧美| 亚洲免费观看| 欧美人妖在线观看| 一区二区欧美国产| 亚洲理伦在线| 欧美日韩一区精品| 亚洲天天影视| 亚洲伊人久久综合| 国产精品国产三级国产专播品爱网 | 欧美激情女人20p| 亚洲三级性片| 亚洲美女区一区| 欧美性jizz18性欧美| 亚洲欧美一区二区激情| 午夜久久久久久久久久一区二区| 国产午夜精品一区二区三区欧美| 久久久久久久久久久久久9999 | 亚洲大片av| 亚洲国产精品女人久久久| 久久久免费精品| 亚洲国语精品自产拍在线观看| 欧美国产丝袜视频| 欧美精品一区二区三区很污很色的| av成人老司机| 亚洲在线不卡| 尤物99国产成人精品视频| 噜噜噜噜噜久久久久久91 | 久久综合网hezyo| 亚洲国产一区视频| 日韩视频免费观看高清在线视频 | 亚洲二区视频在线| 亚洲破处大片| 国产欧美日韩在线播放| 免费亚洲网站| 欧美日韩成人综合在线一区二区| 午夜精品免费在线| 久久综合伊人77777麻豆| 正在播放亚洲| 久久黄色级2电影| 一区二区三区高清| 欧美亚洲综合另类| 亚洲精品国产精品久久清纯直播 | 欧美成人精品激情在线观看| 欧美日本精品| 久久人91精品久久久久久不卡| 欧美电影免费观看网站| 欧美一区二区三区免费观看视频| 久久久午夜视频| 亚洲欧美不卡| 欧美国产综合| 久久久美女艺术照精彩视频福利播放| 久久在线免费观看| 欧美一级电影久久| 欧美激情在线播放| 老司机成人在线视频| 国产精品国产亚洲精品看不卡15| 免费在线亚洲| 国产精品视频观看| 亚洲精品国产日韩| 亚洲国产第一页| 亚洲欧美激情视频| 中文在线资源观看视频网站免费不卡| 久久九九国产精品| 久久国产综合精品| 欧美性开放视频| 亚洲精品老司机| 亚洲高清在线视频| 久久国产精品亚洲va麻豆| 亚洲欧美综合一区| 欧美午夜免费电影| 日韩视频三区| 亚洲欧洲一区二区三区| 久久精品91久久久久久再现| 欧美影院视频| 国产精品婷婷| 一本色道久久综合亚洲精品不| 亚洲精品四区| 欧美国产日韩精品| 亚洲国产精品va在看黑人| 亚洲国产福利在线| 巨乳诱惑日韩免费av| 蜜桃久久av一区| 好吊妞这里只有精品| 羞羞答答国产精品www一本| 午夜天堂精品久久久久| 欧美日韩成人综合天天影院| 亚洲美女诱惑| 亚洲在线中文字幕| 国产精品国产自产拍高清av| 亚洲午夜精品网| 亚洲欧美综合一区| 国产伦精品一区二区三区免费迷| 亚洲欧美视频在线| 欧美在线看片a免费观看| 国产日韩欧美电影在线观看| 午夜久久福利| 久久精品夜夜夜夜久久| 黑人巨大精品欧美一区二区| 久久久999| 亚洲大片在线观看| 亚洲日本成人网| 欧美日韩国产一区二区三区地区 | 久久激情综合网| 国内成+人亚洲| 久久综合狠狠| 91久久精品日日躁夜夜躁国产| 日韩午夜激情av| 欧美色另类天堂2015| 亚洲一区二区免费看| 久久亚洲私人国产精品va| 亚洲国产欧美另类丝袜| 欧美日韩国产色视频| 亚洲欧美激情四射在线日 | 欧美~级网站不卡| 亚洲黄色免费| 国产午夜精品久久久久久久| 久久精品一区| 99精品国产一区二区青青牛奶| 欧美制服第一页| 亚洲精品国产视频| 国产精品色网| 免费在线国产精品| 亚洲主播在线播放| 亚洲激情视频在线播放| 欧美一区二区三区四区在线观看 | 一区二区三区高清视频在线观看| 国产精品在线看| 欧美成人精品一区| 亚洲欧美日韩综合| 亚洲日本久久| 另类av导航| 亚洲欧美日韩一区二区三区在线观看 | 99精品国产在热久久婷婷| 久久久久国产精品麻豆ai换脸| 亚洲蜜桃精久久久久久久| 国产日韩精品一区观看| 欧美久久久久久蜜桃| 久久aⅴ国产欧美74aaa| 亚洲免费精彩视频| 免费久久精品视频| 欧美亚洲一区三区| 99这里只有精品| 尹人成人综合网| 国产精品入口夜色视频大尺度 | 亚洲精品在线视频观看| 国产一区在线观看视频| 欧美日韩1区2区3区| 久久中文精品| 欧美在线播放视频| 亚洲香蕉伊综合在人在线视看| 欧美大片免费| 久久躁狠狠躁夜夜爽| 亚洲欧美亚洲| 亚洲视频网在线直播| 亚洲精品黄色| 91久久精品国产91久久性色tv| 国产亚洲成av人片在线观看桃| 欧美日韩黄视频| 欧美激情在线有限公司| 欧美本精品男人aⅴ天堂| 久久亚洲二区| 久久成人人人人精品欧| 性感少妇一区| 欧美一区二区三区啪啪| 午夜视频一区二区| 亚洲伊人网站| 亚洲欧美综合另类中字| 亚洲一区二区成人| 亚洲宅男天堂在线观看无病毒| 亚洲午夜精品视频| 亚洲一区二区三区欧美| 亚洲天堂网在线观看| 亚洲一区二区在| 亚洲在线日韩| 午夜亚洲性色福利视频| 午夜精品久久久久久久久久久久久 | 激情丁香综合| 在线欧美电影| 一区二区三区在线看| 精品51国产黑色丝袜高跟鞋| 国产综合色精品一区二区三区| 国产亚洲欧美aaaa| 黄色成人av在线| 亚洲丰满在线| 亚洲精品国产无天堂网2021| 日韩一级在线观看| 性欧美大战久久久久久久久| 欧美亚洲视频在线观看| 久久久精品网| 亚洲国产高潮在线观看| 日韩亚洲视频| 欧美自拍偷拍午夜视频|