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

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∨国产成人精品| 亚洲欧洲日本国产| 亚洲精品欧美在线| 国产精品美女主播| 久久综合中文| 欧美精品麻豆| 欧美一区二区三区视频在线 | 一区二区三区偷拍| 欧美性色视频在线| 久久久人成影片一区二区三区 | 亚洲一区在线观看视频| 亚洲视频香蕉人妖| 国产一区自拍视频| 亚洲国产老妈| 国产精品国码视频| 老巨人导航500精品| 欧美欧美在线| 欧美一区三区三区高中清蜜桃| 久久中文久久字幕| 欧美成人第一页| 欧美影院精品一区| 欧美高清不卡| 久久三级视频| 欧美日韩专区| 久久手机免费观看| 欧美日产在线观看| 久久久久久久久久久久久9999| 亚洲婷婷综合久久一本伊一区| 久久免费黄色| 亚洲专区欧美专区| 欧美va亚洲va日韩∨a综合色| 国产九色精品成人porny| 欧美激情精品久久久| 欧美日韩一区二区免费视频| 麻豆精品视频在线观看视频| 欧美三区免费完整视频在线观看| 日韩小视频在线观看| 亚洲午夜精品久久久久久浪潮| 欧美日韩亚洲三区| 欧美成人在线免费观看| 国产精品网曝门| 亚洲电影免费| 激情综合色丁香一区二区| 亚洲色图自拍| 日韩一级精品| 免费成人黄色片| 久久亚洲国产精品一区二区| 国产精品色婷婷久久58| 亚洲乱码国产乱码精品精可以看| 欧美视频日韩视频在线观看| 亚洲第一在线综合网站| 狠狠干成人综合网| 欧美在现视频| 久久久.com| 国产亚洲精品综合一区91| 亚洲一二三四区| 亚洲自拍偷拍色片视频| 欧美日韩免费观看一区| 亚洲精选大片| 一区二区三区四区五区精品视频| 一区二区三区欧美激情| 一区二区激情| 欧美日韩一区在线观看| 日韩一级二级三级| 亚洲一区黄色| 国产精品欧美久久久久无广告| 香港久久久电影| 国产精品自拍网站| 亚洲一区二区高清视频| 欧美一区二区三区免费在线看 | 一区二区三区日韩| 亚洲一区二区三区高清不卡| 欧美日韩国产首页| 宅男噜噜噜66一区二区| 亚洲一区bb| 国产视频精品免费播放| 久久精品91| 亚洲国产电影| 亚洲亚洲精品在线观看 | 久久aⅴ国产紧身牛仔裤| 久久国产黑丝| 在线视频成人| 免费成人网www| 99精品热6080yy久久| 欧美在线观看一区| 娇妻被交换粗又大又硬视频欧美| 亚洲巨乳在线| 欧美一区二区视频在线观看| 国产字幕视频一区二区| 久久看片网站| 亚洲三级观看| 久久久久久久成人| 亚洲人成小说网站色在线| 欧美四级电影网站| 久久久久久999| 一区二区av| 久久综合国产精品| 亚洲午夜一区二区三区| 一区二区三区在线免费观看| 欧美精品成人一区二区在线观看| 欧美成人一品| 午夜欧美理论片| 亚洲国内高清视频| 国产精品尤物福利片在线观看| 欧美激情一区二区三区在线| 亚洲一区二区三区精品在线观看 | 久久另类ts人妖一区二区| 欧美韩国在线| 欧美亚洲日本网站| 日韩特黄影片| 激情成人综合网| 国产精品一区二区三区观看| 美女视频网站黄色亚洲| 亚洲一区美女视频在线观看免费| 亚洲影院高清在线| 久久中文欧美| 亚洲欧美影院| 一本久久综合亚洲鲁鲁| 18成人免费观看视频| 欧美丝袜一区二区| 欧美黄色免费| 久久婷婷久久| 久久久久.com| 欧美中文在线免费| 午夜精品成人在线| 亚洲欧美日韩综合aⅴ视频| 99国产精品久久久久久久久久 | 午夜精品福利一区二区三区av| 欧美伦理在线观看| 久久在线91| 久久久最新网址| 久久久一本精品99久久精品66| 麻豆国产精品va在线观看不卡| 黄色成人在线观看| 国产日韩在线看| 国产欧美日韩另类视频免费观看| 亚洲欧美中文字幕| 亚洲一区3d动漫同人无遮挡| 在线视频一区二区| 日韩亚洲视频| 日韩视频―中文字幕| 日韩亚洲欧美综合| 一区二区冒白浆视频| 亚洲图片欧美日产| 午夜老司机精品| 久久精品国产v日韩v亚洲| 欧美在线短视频| 久久香蕉国产线看观看av| 久久影院亚洲| 欧美黄网免费在线观看| 欧美日韩aaaaa| 国产精品美女www爽爽爽| 国产伦精品一区二区三区| 国产一区二区精品丝袜| 在线精品视频一区二区三四| 亚洲国产精品久久91精品| 亚洲精品影院在线观看| 在线视频精品一区| 亚洲欧美日韩中文视频| 久久精品视频导航| 欧美福利视频在线| 99re6这里只有精品视频在线观看| 久久夜色精品亚洲噜噜国产mv| 一区二区三区导航| 亚洲欧美日韩中文视频| 久久久另类综合| 91久久在线视频| 亚洲综合二区| 免费在线国产精品| 国产精品久久夜| 亚洲高清电影| 午夜精品www| 欧美高清视频在线观看| 亚洲午夜在线视频| 巨乳诱惑日韩免费av| 欧美日韩中字| 欲色影视综合吧| 一本色道88久久加勒比精品 | 亚洲品质自拍| 亚洲影院在线观看| 欧美国产第一页| 亚洲欧美日韩国产精品| 裸体一区二区三区| 国产精品午夜电影| 99国产精品久久久久老师| 亚洲欧美日韩综合一区| 亚洲第一网站| 久久gogo国模啪啪人体图| 欧美日韩另类一区| 亚洲国产成人porn| 欧美一区二区在线| a4yy欧美一区二区三区| 免费看亚洲片| 激情欧美一区二区三区| 午夜精品在线看| 99re6热只有精品免费观看|