freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于mfc的opengl繪圖-資料下載頁

2025-08-10 14:41本頁面
  

【正文】 lRotated(m_angle1,0,0,1)?! lPushMatrix()?! lTranslated(90,0,0)?! lRotated(m_angle2,0,0,1)?! lColor4f(,,,)?! lCallList(ArmPart)。//ArmPart且桓鼉卣竺  glPopMatrix()?! lColor4f(,,,)?! lCallList(ArmPart)?! lPopMatrix()?!?  解決屏幕的閃爍問題。我們知道,在窗口中拖動一個圖形的時候,由于邊畫邊顯示,會出現(xiàn)閃爍的現(xiàn)象。在GDI中解決這個問題較為復(fù)雜,通過在內(nèi)存中生成一個 內(nèi)存DC,繪畫時讓畫筆在內(nèi)存DC中畫,畫完后一次用Bitblt將內(nèi)存DC“貼”到顯示器上,就可解決閃爍的問題。在OpenGL中,我們是通過雙緩存 來解決這個問題的。一般來說,雙緩存在圖形工作軟件中是很普遍的。雙緩存是兩個緩存,一個前臺緩存、一個后臺緩存。繪圖先在后臺緩存中畫,畫完后,交換到 前臺緩存,這樣就不會有閃爍現(xiàn)象了。通過以下步驟可以很容易地解決這個問題:   1) 要注意,GDI命令是沒有設(shè)計雙緩存的。我們首先把使用InvalidateRect(null)的地方改成InvalidateRect(NULL,FALSE)。這樣做是使GDI的重畫命令失效,由OpenGL的命令進(jìn)行重畫;   2) 將像素格式定義成支持雙緩存的(注:PFD_DOUBLEBUFFER和PFD_SUPPORT_GDI只能取一個,兩者相互沖突)。   =  PFD_DRAW_TO_WINDOW|  PFD_SUPPORT_OPENGL|  PFD_DOUBLEBUFFER|  PFD_STEREO_DONTCARE?!?) 我們得告訴OpenGL在后臺緩存中畫圖,在視類的OnSize()的最后一行加入:glDrawBuffer (GL_BACK);   4) 最后我們得把后臺緩存的內(nèi)容換到前臺緩存中,在視類的OnPaint()的最后一行加入:SwapBuffers( )。    生成簡單的三維圖形。我們知道,三維和二維的坐標(biāo)系統(tǒng)不同,三維的圖形比二維的圖形多一個z坐標(biāo)。我們在生成簡單的二維圖形時,用的是 gluOrtho2D;我們在生成三維圖形時,需要兩個遠(yuǎn)近裁剪平面,以生成透視效果。實際上,二維圖形只是視線的近裁剪平面z= 1,遠(yuǎn)裁剪平面z=1;這樣z坐標(biāo)始終當(dāng)作0,兩者沒有本質(zhì)的差別。   在上述基礎(chǔ)之上,我們只做簡單的變化,就可以生成三維物體。    1) 首先,在OnSize()中,把gluOrtho2D(, *aspect, )換成gluPerspective(60, aspect, 1, );這樣就實現(xiàn)了三維透視坐標(biāo)系的設(shè)置。該語句說明了視點在原點,透視角是60度,近裁剪面在z=1處,遠(yuǎn)裁剪面在z=。   2) 在RenderScene()中生成三維圖形;實際上,它是由多邊形組成的。下面就是一個三維多邊形的例子:   glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT,RedSurface)  glBegin(GL_POLYGON)?! lNormal3d(,,)?! lVertex3d(,,)?! lVertex3d(,,)?! lVertex3d(,,)?! lVertex3d(,,)。  glEnd()。   3) 我們使用glMaterialfv(GL_ FRONT_AND_BACK, GL_AMBIENT, RedSurface)這個函數(shù)來定義多邊形的表面屬性,為每一個平面的前后面設(shè)置環(huán)境顏色。當(dāng)然,我們得定義光照模型,這只需在OnSize()的最后 加上glEnable(GL_LIGHTING);RedSufFace是一個顏色分量數(shù)組,例如:RedSufFace[] ={,};要定義某個平面的環(huán)境顏色,只需把glMaterialfv加在平面的定義前面即可,如上例所示。    4) Z緩沖區(qū)的問題:要使三維物體顯得更流暢,前后各面的空間關(guān)系正確,一定得使用Z緩沖技術(shù);否則,前后各面的位置就會相互重疊,不能正確顯示。Z緩沖區(qū)存 儲物體每一個點的值,這個值表明此點離人眼的距離。Z緩沖需要占用大量的內(nèi)存和CPU時間。啟用Z緩沖只需在OnSize()的最后加上glEnable (GL_DEPTH_TEST);要記?。涸诿看沃乩L之前,應(yīng)使用glClear(GL_DEPTH_BUFFER_BIT)語句清空Z緩沖區(qū)。   5) 現(xiàn)在已經(jīng)可以正確地生成三維物體了,但還需要美化,可以使物體顯得更明亮一些。我們用glLightfv函數(shù)定義光源的屬性值。下例就定義了一個光源:   glLightfv(GL_LIGHT0,GL_AMBIENT,LightAmbient)?! lLightfv(GL_LIGHT0,GL_DIFFUSE,LightDiffuse)?! lLightfv(GL_LIGHT0,GL_SPECULAR,LightSpecular)?! lLightfv(GL_LIGHT0,GL_POSITION,LightPosition)?! lEnable(GL_LIGHT0)。   GL_LIGHT0是光源的標(biāo)識號,標(biāo)識號由GL_LIGHTi組成(i從0到GL_MAX_LIGHTS)。 GL_AMBIENT、GL_DIFFUSE、GL_SPECULAR、GL_POSITION分別定義光源的周圍顏色強度、光源的散射強度、光源的鏡面 反射強度和光源的位置。
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1