⑴ 什麼是GIS 的三維結構
此類GIS應用軟體通常多建立在OpenGL平台之上,本系統也不例外。在實現其他特殊功能之前,必須首先正確配置、安裝好OpenGL環境,然後才能進行各種實用功能的開發。下面將對OpenGL做一個簡短的介紹,並開始OpenGL應用程序框架的搭建工作。
OpenGL概述
OpenGL是一種到圖形硬體的軟體介面。從本質上說,它是一個完全可移植並且速度很快的3D圖形和建模庫。通過使用OpenGL,可以創建視覺質量接近射線跟蹤程序的精緻漂亮的3D圖形。但是它在執行速度上要比射線跟蹤程序快好幾個數量級。OpenGL使用的是由Silicon Graphcs(SGI)公司精心開發的優化演算法,這家公司在計算機圖形和動畫領域是公認的業界領袖。開發者可以利用OpenGL提供的150多個圖形函數輕松建立三維模型並進行三維實時交互。這些函數並不要求開發者將三維物體模型的數據寫成固定的數據格式,這樣一 來開發者就不僅可以直接使用自己的數據,而且還可以利用其他格式的數據源,能在很大程度上縮短軟體的開發周期。
OpenGL不僅可對整個三維模型進行渲染並繪制出逼真的三維景象,而且還可以進行三維交互、動作模擬等處理。其提供的基本功能具體包含以下幾方面的內容:
(1)模型繪制。在OpenGL中通過對點、線和多邊形等基本形體的繪制可以構造出非常復雜的三維模型。OpenGL經常通過使用模型的多邊形及其頂點來描述三維模型。
(2)模型觀察。在建立了三維模型後,可以通過OpenGL的描述來觀察此模型。此觀察過程是通過一系列的坐標變換來實現的。這種變換使得觀察者能夠在視點位置得到與之相適應的三維模型場景。投影變換的類型對模型的觀察有很大的影響,在不同投影變換下得到的三維模型場景也是不同的。在模型觀察過程的最後還要對場景進行裁剪和縮放,以決定整個三維模型場景在屏幕上的顯示。
(3)顏色模式的指定。在OpenGL中可以指定模型的顏色模式(RGBA模式和顏色表模式)。除此之外,還可以通過選擇模型的著色方式(平面著色和光滑著色)來對整個三維場景進行著色處理。
(4)光照效果。為使OpenGL繪制的三維模型更加逼真還必須增加光照效果。目前OpenGL僅提供了對輻射光、環境光、鏡面光和漫反射光的管理方法,另外還可以指定模型表面的反射特性。
(5)圖象效果增強。在增強三維場景圖象效果方面,OpenGL也提供了一系列相關函數。這些函數通過反走樣、混合和霧化等處理來增強圖象效果。其中,反走樣用於改善圖象中線形圖形的鋸齒使其更平滑;混合用於處理模型的半透明效果;霧化使場景圖象從視點到遠處逐漸褪色,使其更接近現實情況。
(6)點陣圖和圖象處理。OpenGL提供有專門進行點陣圖和圖象處理的函數。
(7)紋理映射。真實物體的表面普遍存在紋理,如果建立的三維模型場景缺少此細節將顯得不夠真實,為更逼真地表現三維場景,OpenGL提供了紋理映射的功能。OpenGL提供的紋理映射函數可以很方便地把紋理圖象貼到場景多邊形上。
(8)雙緩存技術。OpenGL提供的雙緩存技術主要用於實時動畫,為獲得平滑的動畫效果,需要先在內存中生成下一幀圖象,然後再將其從內存拷貝到屏幕。
(9)人機交互。OpenGL提供了方便的三維圖形人機交互介面,通過此介面用戶可以選擇修改三維景觀中的物體。
OpenGL應用程序框架的建立
首先建立一個單文檔應用程序,並將需要用到的頭文件和導入庫添加到工程,以便能夠順利通過編譯。在VC++中,OpenGL的頭文件一般是存放在系統頭文件目錄的子目錄GL中,所以在指定包含的時候要指定一下相對路徑:
#include <gl\gl.h> // OpenGL32庫的頭文件
#include <gl\glu.h> // GLu32庫的頭文件
#include <gl\glaux.h> // GLaux庫的頭文件
這里的gl.h是基本頭文件,glu.h是應用頭文件,大多數應用程序都需要同時包含這兩個頭文件,glaux.h是輔助頭文件,只在需要使用的情況下包含。接下來調出"Project Settings"對話框並在"Link"選項頁中添加glu32.lib、glaux.lib和OpenGL win32實現的標准導入庫opengl32.lib到工程。
接下來初始化OpenGL,這也是本文最重要的部分。先大致講一下基本步驟:首先獲取需要在上面繪圖的設備環境(DC)並為該設備環境設置像素格式,然後創建基於該設備環境的OpenGL設備。最後,初始化OpenGL繪制場景及狀態設置。前三步的實現過程在SetOpenGLInterface()函數中實現:
PIXELFORMATDESCRIPTOR pfd = {
// 初始化象素存儲格式
sizeof(PIXELFORMATDESCRIPTOR), // pfd的大小
1, // 版本號
PFD_DRAW_TO_WINDOW | // 支持窗口
PFD_SUPPORT_OPENGL | // 支持OpenGL
PFD_DOUBLEBUFFER, // 支持雙緩存
PFD_TYPE_RGBA, // RGBA類型
24, // 24位色深度
0, 0, 0, 0, 0, 0, // 各顏色位(忽略)
0, // 無alpha緩存
0, // 忽略轉換位
0, // 無累計位
0, 0, 0, 0,
32, // 32位深度緩存
0, // 無模版緩存
0, // 無輔助緩存
PFD_MAIN_PLANE, // 主繪制層
0, // 保留
0, 0, 0 // 忽略的層掩模
};
m_pDC = GetDC(); // 得到設備環境句柄
int iFormat = ChoosePixelFormat(m_pDC->m_hDC, &pfd); // 設置象素格式
SetPixelFormat(m_pDC->m_hDC, iFormat, &pfd);
m_hGlrc = wglCreateContext(m_pDC->m_hDC); // 創建渲染上下文
wglMakeCurrent(m_pDC->m_hDC, m_hGlrc); // 設置一個線程的當前繪圖描述表
這里首先對描述像素存儲格式的PIXELFORMATDESCRIPTOR結構變數進行了填充,在得到設備環境句柄後調用ChoosePixelFormat()和SetPixelFormat()函數以返回並設置最佳匹配的像素格式。最後調用wglCreateContext()創建一個渲染上下文RC並將其作為參數通過wglMakeCurrent()來建立一個當前的繪圖描述表,並在繪制完畢後(通常在WM_DESTORY消息發出後執行)將其釋放:
ReleaseDC(m_pDC); // 釋放DC
if (m_hGlrc != NULL) // 釋放RC
wglDeleteContext(m_hGlrc);
經過上面的處理OpenGL就已經初始化完畢了,但為了達到逼真的視覺效果還有必要進一步設置一下場景,這在InitOpenGL()函數中完成。具體的工作包括對光源的各種定義:
GLfloat light_position[] = {0.0, 0.0, 1.0, 0.0}; // 定義光源的位置坐標
glLightfv(GL_LIGHT0, GL_POSITION, light_position);
GLfloat light_ambient[] = {0.0, 0.0, 0.0, 1.0}; // 定義環境反射光
glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0}; // 定義漫反射光
glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
GLfloat light_specular[] = {1.0, 1.0, 1.0, 1.0}; // 定義鏡面反射光
glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
GLfloat light_model_ambient[] = {0.4f, 0.4f, 0.4f, 1.0f}; // 定義光模型參數
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, light_model_ambient);
GLfloat local_view[] = {0.0};
glLightModelfv(GL_LIGHT_MODEL_LOCAL_VIEWER, local_view);
以及各項相關功能的使能設置:
glEnable(GL_LIGHTING); // GL_LIGHTING有效
glEnable(GL_LIGHT0); // GL_LIGHT0有效
glEnable(GL_DEPTH_TEST); // 允許深度比較
glDepthFunc(GL_LESS); // 激活深度比較
glClearColor(0.1f, 0.1f, 0.5f, 0.0f); // 設置藍色背景
glHint(GL_LINE_SMOOTH_HINT, GL_DONT_CARE); // 權衡圖像質量與繪制速度
通常,SetOpenGLInterface()和InitOpenGL()在WM_CREATE消息發出後即被執行,以確保在程序啟動之初完成對OpenGL的環境設置。在視圖初始化更新完畢後,還要進行最後的處理--進行視口的定義,下面給出的這段InitViewPort()函數實現代碼將完成此功能:
CRect rect; // 得到繪圖客戶區的大小
GetClientRect(rect);
glMatrixMode(GL_PROJECTION); // 設置投影模式
glLoadIdentity(); // 裝載單位矩陣
if (m_nViewMode == 0) // 建立一個透視投影矩陣
gluPerspective(90.0, rect.Width() / rect.Height(), 1.0, 10000.0);
if (m_nViewMode == 1) // 建立一個正射投影矩陣
glOrtho(-0.5 * 10000.0, 0.5 * 10000.0, -0.5 * 10000.0, 0.5 * 10000.0, 1.0, 10000.0); glViewport(0, 0, rect.Width(), rect.Height()); // 重定視口
glMatrixMode(GL_MODELVIEW); // 確定當前矩陣模式
glLoadIdentity(); // 裝載單位矩陣
這里完成的主要工作有對投影模式的設置與對投影矩陣的建立以及對視口的重定等。其中,控制變數m_nViewMode的取值決定了投影模式(透視投影還是正射投影),並根據不同的投影模式調用函數gluPerspective()或glOrtho()建立相應的投影矩陣。函數gluPerspective()用於創建一個對稱透視視景體,第一個參數定義了視野在X-Z平面的角度,取值范圍為[0.0, 180.0];第二個參數是投影平面寬度與高度的比率;後兩個參數分別為遠近裁剪面沿Z負軸到視點的距離,總為正值。glOrtho()用於創建一個平行視景體(實際是創建一個正射投影矩陣,並以此矩陣乘以當前矩陣)。其近裁剪、遠裁剪平面均為矩形,近裁剪矩形左下角點和右上角點的三維空間坐標分別為(left,bottom,-near)和(right,top,-near);遠裁剪平面的相應空間坐標分別為(left,bottom,-far)和(right,top,-far)。這里所有的near、far值同時為正或同時為負。若未進行其他變換,正射投影的方向將平行於Z軸、視點朝向Z負軸。
視口確定之後就可以著手對場景的繪制了。這主要在ReDraw()中完成,並在OnSize()、OnDraw()等需要重繪的地方被調用。由於這部分不屬於OpenGL框架搭建的內容,因此該函數的實現將在後續的文章中進行詳細介紹,這里不再贅述
⑵ 3DMAX渲染速度取決於什麼
3DMAX渲染是三維制圖的重要步驟,制圖過程中主要靠顯卡的性能,渲染時顯卡幾乎停止工作,主要依賴以下幾方面:
CPU的處理能力,3D渲染時CPU的佔用率通常達到100%,所以在其他條件均衡的情況下,處理器核心數越多,性能越強,渲染速度就會越快。
內存的空間大小,3D渲染時通常會佔用比較大的機器運行內存,所以足夠大的內存是渲染速度暢快的必要條件。
散熱方面,3D渲染時電腦溫度會特別高,CPU散熱不良會直接影響性能發揮,從而導致渲染速度變慢,所以保持電腦良好的散熱也會提高3DMAX的渲染速度。
⑶ 守望先鋒要開垂直同步和三維緩沖嗎 淺談顯卡
垂直同步 , 開了鎖定60FPS , 不開畫面有撕裂出現!
三維緩沖在開了垂直同步下 , 能使游戲保持更加流暢!
⑷ Z緩沖誰知道是什麼。說簡單點,
Z緩沖指在3D環境中每個像素中會利用一組數據資料來定義像素在顯示時的縱深度(Z軸座標值)。Z緩沖所用的位數越高,則代表該顯示卡所提供的物件縱深感也越精確。這樣,當畫面中的視角發生變化時,可以即時地將這些變化反映出來,從而避免了由於運算速度緩慢所造成的圖形失真。
(4)三維數據緩存原理擴展閱讀:
當三維圖形卡渲染物體的時候,每一個所生成的像素的深度(即z坐標)就保存在z緩沖區中。這個緩沖區通常組織成一個保存每個屏幕像素深度的x-y二維數組。如果場景中的另外一個物體也在同一個像素生成渲染結果,那麼圖形處理卡就會比較二者的深度,並且保留距離觀察者較近的物體。
然後這個所保留的物體點深度會覆蓋保存到z緩沖區中。最後,圖形卡就可以根據深度緩沖區正確地生成通常的深度感知效果:較近的物體遮擋較遠的物體。
參考資料來源:
網路——Z緩沖
網路——Z緩存
網路——深度緩沖
⑸ 正常嗎
CPU的工作原理是:
1. 從存儲單元讀取數據(程序指令),
2. 交由控制單元進行調度分配,
3. 然後傳送到邏輯運算單元處理,
4. 再將處理後的結果數據寫入存儲單元,最後交由應用程序使用。
如圖所示。
控制單元
控制單元是整個CPU的指揮控制中心,由指令寄存器(IR--Instruction Register)、指令解碼器(ID--Instruction Decoder)和操作控制器(OC--Operation Controller)三個部件組成,對協調整個微型計算機有序工作極為重要。
它根據用戶預先編好的程序,依次從存儲器中取出各條指令,放在指令寄存器IR中,通過指令解碼(分析)確定應該進行什麼操作,然後通過操作控制器OC,按確定的時序,向相應的部件發出微操作控制信號。操作控制器OC中主要包括有節拍脈沖發生器、控制矩陣、時鍾脈沖發生器、復位電路和啟停電路等控制邏輯。
寄存器組RS(Register Set或Registers)
RS實際是CPU暫時存放數據的地方,裡面保存著那些等待處理的數據,或已經處理過的數據,CPU訪問寄存器所用時間要比訪問內存的時間短。採用寄存器,可減少CPU 訪問內存次數,從而提高CPU的工作速度。但因受到晶元面積和集成度所限,寄存器組容量不可能很多。
寄存器組又可分為專用寄存器和通用寄存器。專用寄存器的作用是固定的,分別寄存相應數據。而通用寄存器用途廣泛並可由程序員規定其用途。通用寄存器的數目因微處理器而異,如80486有EAX、EBX、ECX、EDX、ESI、EDI、EBP、ESP共8個32位通用寄存器等。
邏輯運算單元ALU
ALU(Arithmetic Logic unit)是運算器核心。它是以全加器為基礎,輔之以移位寄存器及相應控制邏輯組合而成的電路,在控制信號的作用下可完成加、減、乘、除四則運算和各種邏輯運算。
CPU工作模式
CPU工作模式是指各種影響CPU可以執行的指令和晶元功能的操作環境。不同的工作模式決定了CPU如何看到並管理內存。
目前CPU有三種工作模式:實模式、保護模式和虛擬實模式。
所有的Intel和Intel兼容(如AMD和Cyrix)的CPU在系統上電時都處於實模式。如果載入了一個32位操作系統,它自動將CPU切換到32位模式。
五. CPU的性能指標
(1) CPU的時鍾頻率稱為主頻, 主頻越高, 則計算機工作速度越快; 主板的頻率稱為外頻; 主頻與外頻的關系為:
(2) 內部緩存(cache), 也叫一級緩存(L1 cache). 這種存儲器由SRAM製作, 封裝於CPU內部, 存取速度與CPU主頻相同. 內部緩存容量越大, 則整機工作速度也越快. 一般容量為KB.
主頻=外頻×倍頻數
(3) 二級緩存(L2 cache). 集成於CPU外部的高速緩存, 存取速度與CPU主頻相同或與主板頻率相同. 容量一般為KB~MB.
(4) MMX(Multi-Media extension)指令技術. 增加了多媒體擴展指令集的CPU, 對多媒體信息的處理能力可以提高60%左右.
(5) 3D指令技術. 增加了3D擴展指令集的CPU, 可大幅度提高對三維圖象的處理速度.
----------------------------------
CPU的英文全稱是Central Processing Unit,即中央處理器。CPU從雛形出現到發展壯大的今天,由於製造技術的越來越先進,其集成度越來越高,內部的晶體管數達到幾百萬個。雖然從最初的CPU發展到現在其晶體管數增加了幾十倍,但是CPU的內部結構仍然可分為控制單元,邏輯單元和存儲單元三大部分。CPU的性能大致上反映出了它所配置的那部微機的性能,因此CPU的性能指標十分重要。 CPU主要的性能指標有以下幾點:
第一:主頻,也就是CPU的時鍾頻率,簡單地說也就是CPU的工作頻率。一般說來,一個時鍾周期完成的指令數是固定的,所以主頻越高,CPU的速度也就越快了。不過由於各種CPU的內部結構也不盡相同,所以並不能完全用主頻來概括CPU的性能。至於外頻就是系統匯流排的工作頻率;而倍頻則是指CPU外頻與主頻相差的倍數。用公式表示就是:主頻=外頻×倍頻。我們通常說的賽揚433、PIII 550都是指CPU的主頻而言的。
第二:內存匯流排速度或者叫系統總路線速度,一般等同於CPU的外頻。內存匯流排的速度對整個系統性能來說很重要,由於內存速度的發展滯後於CPU的發展速度,為了緩解內存帶來的瓶頸,所以出現了二級緩存,來協調兩者之間的差異,而內存匯流排速度就是指CPU與二級(L2)高速緩存和內存之間的工作頻率。
第三:工作電壓。工作電壓指的也就是CPU正常工作所需的電壓。早期CPU(386、486)由於工藝落後,它們的工作電壓一般為5V,發展到奔騰586時,已經是3.5V/3.3V/2.8V了,隨著CPU的製造工藝與主頻的提高,CPU的工作電壓有逐步下降的趨勢,Intel最新出品的Coppermine已經採用1.6V的工作電壓了。低電壓能解決耗電過大和發熱過高的問題,這對於筆記本電腦尤其重要。
第四:協處理器或者叫數學協處理器。在486以前的CPU裡面,是沒有內置協處理器的。由於協處理器主要的功能就是負責浮點運算,因此386、286、8088等等微機CPU的浮點運算性能都相當落後,自從486以後,CPU一般都內置了協處理器,協處理器的功能也不再局限於增強浮點運算。現在CPU的浮點單元(協處理器)往往對多媒體指令進行了優化。比如Intel的MMX技術,MMX是「多媒體擴展指令集」的縮寫。MMX是Intel公司在1996年為增強Pentium CPU在音像、圖形和通信應用方面而採取的新技術。為CPU新增加57條MMX指令,把處理多媒體的能力提高了60%左右。
第五:流水線技術、超標量。流水線(pipeline)是 Intel首次在486晶元中開始使用的。流水線的工作方式就象工業生產上的裝配流水線。在CPU中由5~6個不同功能的電路單元組成一條指令處理流水線,然後將一條X86指令分成5~6步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鍾周期完成一條指令,因此提高了CPU的運算速度。超流水線是指某型 CPU內部的流水線超過通常的5~6步以上,例如Pentium pro的流水線就長達14步。將流水線設計的步(級)數越多,其完成一條指令的速度越快,因此才能適應工作主頻更高的CPU。超標量是指在一個時鍾周期內CPU可以執行一條以上的指令。這在486或者以前的CPU上是很難想像的,只有Pentium級以上CPU才具有這種超標量結構;這是因為現代的CPU越來越多的採用了RISC技術,所以才會超標量的CPU。
第六:亂序執行和分枝預測,亂序執行是指CPU採用了允許將多條指令不按程序規定的順序分開發送給各相應電路單元處理的技術。分枝是指程序運行時需要改變的節點。分枝有無條件分枝和有條件分枝,其中無條件分枝只需要CPU按指令順序執行,而條件分枝則必須根據處理結果再決定程序運行方向是否改變,因此需要「分枝預測」技術處理的是條件分枝。
第七:L1高速緩存,也就是我們經常說的一級高速緩存。在CPU裡面內置了高速緩存可以提高CPU的運行效率。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。採用回寫(Write Back)結構的高速緩存。它對讀和寫操作均有可提供緩存。而採用寫通(Write-through)結構的高速緩存,僅對讀操作有效。在486以上的計算機中基本採用了回寫式高速緩存。
第八:L2高速緩存,指CPU外部的高速緩存。Pentium Pro處理器的L2和CPU運行在相同頻率下的,但成本昂貴,所以Pentium II運行在相當於CPU頻率一半下的,容量為512K。為降低成本Intel公司曾生產了一種不帶L2的CPU名為賽揚。
第九:製造工藝, Pentium CPU的製造工藝是0.35微米, PII和賽揚可以達到0.25微米,最新的CPU製造工藝可以達到0.18微米,並且將採用銅配線技術,可以極大地提高CPU的集成度和工作頻率。
六.多媒體指令集
CPU依靠指令來計算和控制系統,每款CPU在設計時就規定了一系列與其硬體電路相配合的指令系統。指令的強弱也是CPU的重要指標,指令集是提高微處理器效率的最有效工具之一。從現階段的主流體系結構講,指令集可分為復雜指令集和精簡指令集兩部分,而從具體運用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)和AMD的3DNow!等都是CPU的擴展指令集,分別增強了CPU的多媒體、圖形圖象和Internet等的處理能力。我們通常會把CPU的擴展指令集稱為"CPU的指令集"。
1、精簡指令集的運用
在最初發明計算機的數十年裡,隨著計算機功能日趨增大,性能日趨變強,內部元器件也越來越多,指令集日趨復雜,過於冗雜的指令嚴重的影響了計算機的工作效率。後來經過研究發現,在計算機中,80%程序只用到了20%的指令集,基於這一發現,RISC精簡指令集被提了出來,這是計算機系統架構的一次深刻革命。RISC體系結構的基本思路是:抓住CISC指令系統指令種類太多、指令格式不規范、定址方式太多的缺點,通過減少指令種類、規范指令格式和簡化定址方式,方便處理器內部的並行處理,提高VLSI器件的使用效率,從而大幅度地提高處理器的性能。
RISC指令集有許多特徵,其中最重要的有:
指令種類少,指令格式規范:RISC指令集通常只使用一種或少數幾種格式。指令長度單一(一般4個位元組),並且在字邊界上對齊,欄位位置、特別是操作碼的位置是固定的。
定址方式簡化:幾乎所有指令都使用寄存器定址方式,定址方式總數一般不超過5個。其他更為復雜的定址方式,如間接定址等則由軟體利用簡單的定址方式來合成。
大量利用寄存器間操作:RISC指令集中大多數操作都是寄存器到寄存器操作,只以簡單的Load和Store操作訪問內存。因此,每條指令中訪問的內存地址不會超過1個,訪問內存的操作不會與算術操作混在一起。
簡化處理器結構:使用RISC指令集,可以大大簡化處理器的控制器和其他功能單元的設計,不必使用大量專用寄存器,特別是允許以硬體線路來實現指令操作,而不必像CISC處理器那樣使用微程序來實現指令操作。因此RISC處理器不必像CISC處理器那樣設置微程序控制存儲器,就能夠快速地直接執行指令。
便於使用VLSI技術:隨著LSI和VLSI技術的發展,整個處理器(甚至多個處理器)都可以放在一個晶元上。RISC體系結構可以給設計單晶元處理器帶來很多好處,有利於提高性能,簡化VLSI晶元的設計和實現。基於VLSI技術,製造RISC處理器要比CISC處理器工作量小得多,成本也低得多。
加強了處理器並行能力:RISC指令集能夠非常有效地適合於採用流水線、超流水線和超標量技術,從而實現指令級並行操作,提高處理器的性能。目前常用的處理器內部並行操作技術基本上是基於RISC體系結構發展和走向成熟的。
正由於RISC體系所具有的優勢,它在高端系統得到了廣泛的應用,而CISC體系則在桌面系統中占據統治地位。而在如今,在桌面領域,RISC也不斷滲透,預計未來,RISC將要一統江湖。
2、CPU的擴展指令集
對於CPU來說,在基本功能方面,它們的差別並不太大,基本的指令集也都差不多,但是許多廠家為了提升某一方面性能,又開發了擴展指令集,擴展指令集定義了新的數據和指令,能夠大大提高某方面數據處理能力,但必需要有軟體支持。
MMX 指令集
MMX(Multi Media eXtension,多媒體擴展指令集)指令集是Intel公司於1996年推出的一項多媒體指令增強技術。MMX指令集中包括有57條多媒體指令,通過這些指令可以一次處理多個數據,在處理結果超過實際處理能力的時候也能進行正常處理,這樣在軟體的配合下,就可以得到更高的性能。MMX的益處在於,當時存在的操作系統不必為此而做出任何修改便可以輕松地執行MMX程序。但是,問題也比較明顯,那就是MMX指令集與x87浮點運算指令不能夠同時執行,必須做密集式的交錯切換才可以正常執行,這種情況就勢必造成整個系統運行質量的下降。
SSE指令集
SSE(Streaming SIMD Extensions,單指令多數據流擴展)指令集是Intel在Pentium III處理器中率先推出的。其實,早在PIII正式推出之前,Intel公司就曾經通過各種渠道公布過所謂的KNI(Katmai New Instruction)指令集,這個指令集也就是SSE指令集的前身,並一度被很多傳媒稱之為MMX指令集的下一個版本,即MMX2指令集。究其背景,原來"KNI"指令集是Intel公司最早為其下一代晶元命名的指令集名稱,而所謂的"MMX2"則完全是硬體評論家們和媒體憑感覺和印象對"KNI"的 評價,Intel公司從未正式發布過關於MMX2的消息。
而最終推出的SSE指令集也就是所謂勝出的"互聯網SSE"指令集。SSE指令集包括了70條指令,其中包含提高3D圖形運算效率的50條SIMD(單指令多數據技術)浮點運算指令、12條MMX 整數運算增強指令、8條優化內存中連續數據塊傳輸指令。理論上這些指令對目前流行的圖像處理、浮點運算、3D運算、視頻處理、音頻處理等諸多多媒體應用起到全面強化的作用。SSE指令與3DNow!指令彼此互不兼容,但SSE包含了3DNow!技術的絕大部分功能,只是實現的方法不同。SSE兼容MMX指令,它可以通過SIMD和單時鍾周期並行處理多個浮點數據來有效地提高浮點運算速度。
在後來Intel為了應對AMD的3Dnow!指令集,又在SSE的基礎上開發了SSE2,增加了一些指令,使得其P4處理器性能有大幅度提高。到P4設計結束為止,Intel增加了一套包括144條新建指令的SSE2指令集。像最早的SIMD擴展指令集,SSE2涉及了多重的數據目標上立刻執行一單個的指令(即SIMD,一個計算低工控最好的方法是讓每指令執行更多的工作)。最重要的是SSE2能處理128位和兩倍精密浮點數學運算。處理更精確浮點數的能力使SSE2成為加速多媒體程序、3D處理工程以及工作站類型任務的基礎配置。但重要的是軟體是否能適當的優化利用它。
3D Now!(3D no waiting)指令集
3DNow!是AMD公司開發的SIMD指令集,可以增強浮點和多媒體運算的速度,並被AMD廣泛應用於其K6-2 、K6-3以及Athlon(K7)處理器上。3DNow!指令集技術其實就是21條機器碼的擴展指令集。
與Intel公司的MMX技術側重於整數運算有所不同,3DNow!指令集主要針對三維建模、坐標變換 和效果渲染等三維應用場合,在軟體的配合下,可以大幅度提高3D處理性能。後來在Athlon上開發了Enhanced 3DNow!。這些AMD標準的SIMD指令和Intel的SSE具有相同效能。因為受到Intel在商業上以及Pentium III成功的影響,軟體在支持SSE上比起3DNow!更為普遍。Enhanced 3DNow!AMD公司繼續增加至52個指令,包含了一些SSE碼,因而在針對SSE做最佳化的軟體中能獲得更好的效能。
七.CPU常見的故障及排除
⑹ 等值面的等值面生成演算法
Cuberille方法
· Cuberrille等值面方法又稱Opaque Cube演算法,最初由Herman等人提出,後來又多次改進。演算法主要分為兩個步驟:
· (1) 確定邊界單元
對於規則網格數據,其網格單元可看成是正六面體單元,整個三維數據就是由這種正六面體組成的,這種組成三維圖象的基本正六面體單元稱為體元。對於給定的閾值Ft,遍歷體數據中的各個單元,將組成體元8個頂點上的值與Ft進行比較,找出頂點值跨越Ft的所有體元,即體元中有的頂點值大於閾值,有的頂點值小於閾值,因此體元內包含等值面片,這就是邊界單元。
(2) 繪制各邊界單元的6個多邊形面,即將等值面看成是由各單元的六個外表面拼合而成
每個單元均為一正六面體,包括6個多邊形面。對組成所有邊界體元的多邊形面進行繪制,即可產生最終的圖象結果。在繪制多邊形過程中應採用合適的光照模型和消隱技術。
如果在具有硬體深度緩存(Z-buffer)功能的計算機上運行立方體方法,可以將這組多邊形不分次序地提交給硬體,由硬體完成消除隱藏面的任務。如果以軟體方式執行立方體方法,在演算法中必須考慮多邊形的遮擋問題。一個有效的方法是把遍歷體元集合與顯示兩個步驟合二為一,遍歷體元集合時採用從後至前的次序。發現一個邊界體元,就立刻顯示它的6個面。後顯示到屏幕上去的多邊形將覆蓋先顯示的多邊形,這樣就達到了消除隱藏面的目的,這就是畫家演算法的思想。
Marching Cubes(MC)方法
Marching Cubes(移動立方體)方法是由W.E.Lorenson和H.E.Cline在1987年提出來的。由於這一方法原理簡單,易於實現,目前已經得到了較為廣泛的應用,成為三維數據等值面生成的經典演算法,Marching Cubes演算法又簡稱為MC演算法。MC方法的原理如下:
在Marching Cubes方法中,假定原始數據是離散的三維空間規則數據,一個體元定義為由相鄰層上的8個頂點組成的一個長方體。為了在三維數據中構造等值面,應先給定所求等值面的值,該方法的基本原理是逐個處理所有的體元,將體元各頂點處的值與給定的閾值進行比較,首先找出與等值面相交的體元,然後通過插值求等值面與體元棱邊的交點,並將各交點連成三角形來構成等值面片,所有體元中的三角形集合就構成了等值面。由於這一方法是逐個處理所有的體元,因此被稱為Marching Cubes方法。 在W.E.Lorenson和H.E.Cline於1987年提出Marching Cubes方法之後不久,他們就發現,當離散三維數據的密度很高時,由Marching Cubes方法在體元中產生的小三角面片常常很小,在圖像空間中的投影面積與屏幕上一個像素點的大小差不多,甚至還要小,因此,通過插值來計算小三角面片是不必要的。隨著新一代CT和MRI等設備的出現,二維切片中圖象的解析度不斷提高,斷層不斷變薄,已經接近並超過計算機屏幕顯示的解析度。在這種情況下,常用於三維表面生成的Marching Cubes方法已不適用。於是,在1988年,仍由W.E.Lorenson和H.E.Cline兩人提出了剖分立方體(Dividing Cubes)方法。
⑺ blender建模一下午,c盤竟然滿了!!!卡死要命,我的天這是怎麼一回事
三維立體建模是需要佔用大量空間的,也會產生大量數據緩存。
你可以按照以下Windows系統清理優化方法嘗試清理瘦身:
另附:系統查看並顯示隱藏文件的方法:打開「我的電腦」,點擊菜單欄「工具」-「文件夾選項」,在新出現的窗口點擊「查看」,去掉「隱藏受保護的操作系統文件(推薦)」前面復選框的鉤,在彈出的窗口點擊「是」;在「隱藏文件和文件夾」選項里選擇「顯示所有文件和文件夾」,然後「確定」即可。
⑻ 啟用渲染緩存會卡嗎
啟用渲染緩存不會卡。
啟用渲染緩存,強制全部渲染緩存,開啟渲染優化,全部關掉因為渲染時CPU需要讀取的是你各個素材的原本的位置的文件。
而磁碟緩存只是一個提升內存和硬碟之間的數據交換速度,在一定程度上能提升你在製作一個合成時的實時預覽速度而已。渲染緩存不會卡。因為實時預覽相當於是把你原本的素材復制到了一個你給AE指定的一個緩存文件夾。
相關信息
渲染在電腦繪圖中是指用軟體從模型生成圖像的過程。模型是用嚴格定義的語言或者數據結構對於三維物體的描述,它包括幾何、視點、紋理以及照明信息。
將三維場景中的模型,按照設定好的環境、燈光、材質及渲染參數。二維投影成數字圖像的過程。渲染這個術語被用作「藝術家或作家對於場景的渲染」。另外渲染也用於描述「計算視頻編輯文件中的效果以生成最終視頻輸出的過程」。
⑼ 三維地理信息系統的C Earth
ConverseEarth三維數字地球系統是由北京中天灝景網路科技有限公司於2011年推出的三維數據和地理信息(GIS)集成的軟體平台,該平台從三維場景創建、地圖數據加工到互聯網發布都提供了成熟的商業解決方案;它集中體現了VR行業和GIS行業完美結合的優勢,是單一VR軟體或GIS軟體無可比擬的;並開放了完整的API,在多功能集成性項目開發上,給用戶提供了按需定製的良好支持;通過三維交互的方式來展示海量的三維場景和空間地理數據,讓一切虛擬活動具有了真實的時空背景。
傳統的虛擬現實軟體追求極致的光影效果,虛擬地球三維渲染技術脫胎於Converse3D VR技術,具有一脈相承的理念和技術優勢,不過此時的三維場景不再是微觀的局部區域,而是可以賦上經緯度坐標後放置在虛擬地球表面的宏觀場景,即具有微觀場景的精緻細節又有全局范圍的數據疊加,使VR和GIS此刻變得密不可分,相得益彰,能在其上施加的應用也變得豐富起來。
Converse3D三維數字地球打開了一扇通往虛擬的真實世界之門。能夠基於地表衛星影像、航空影像創建高解析度的地球場景,不需要數據預處理,能夠快速融合不同的、分布式的實時傳輸源數據快速構建實時三維互動式環境。同時具備C/S、B/S兩種發布形式,採用瘦客戶端模式,數據可全部來源於地圖、三維模型伺服器,客戶端具有緩存機制,多次瀏覽場景時可提高速度。
在虛擬地球表面展示的三維世界可能是整個城市抑或是廣域的地形地貌,這無疑需要提供
對海量三維模型的支持,作為成熟的VR軟體開發商,我們成功的做到了這一點,我們綜合運用動態資源調度、渲染線和載入線程同步工作、LOD等關鍵技術使地球表面承載大型地物成為可能。VR軟體逼真的光影效果被移植進該系統,場景效果逼真而平滑。
多種格式的衛星影像圖均可載入到球體上,對TB級貼圖進行切割使其具有金字塔式組織結構,可表達20級高清影像。支持OGC標准,可以流數據方式連接WMS、WFS伺服器讀取數據。
支持高程數據(DEM)的疊加,表達地表起伏變化的豐富特性。同時支持矢量數據的導入,支持GoogleEarth格式的KML文件的導入。
ConverseEarthEditor場景編輯器
1、快速創建、編輯、獲取三維場景資料庫
ConverseEarthEditor能夠如同照片般逼真地創建三維場景,並提供配准工具將三維場景精準的放置到地球表面。作為開發過成熟的虛擬現實軟體的公司,我們在已有產品的基礎上構建ConverseEarthEditor,繼承了原有技術的優勢並加入新的理念。放置到地球表面的三維場景不再是微觀的局部區域,而是可以賦上經緯度坐標後放置在虛擬地球表面的宏觀場景,即具有微觀場景的精緻細節又有全局范圍的數據疊加,使VR和GIS此刻變得密不可分,相得益彰。
2、幫助客戶壓縮製作成本
壓縮製作成本是客戶所看重的,ConverseEarthEditor支持多人協作,每人分別編輯整個項目部分場景,最後分別配准後在地球表面拼合成一個大的宏觀場景,並可將3dMax製作的三維模型一次性導入到編輯器中,中間並不需要冗餘環節,協同作業和批量處理大大提高了工作效率節約了製作成本。
ConverseEarthEditor提供建築、小品等多種類型的模型庫,方便用戶快速組建場景,減少建模工作量。
簡單易用的操作界面使學習周期大大縮短,可視化面板進行材質、模型屬性、交互功能編輯,所見即所得。三維模型可批量導入也可分次導入,靈活性強。
3、具有高安全性
直接或間接支持3dMax、CAD、Maya等多種數據格式,最終導出成自身格式,自身格式經過加密和壓縮,數據量小且保密性強,適應互聯網流式載入三維場景的需要。
4、逼真光影效果,讓您的三維場景看上去賞心悅目
支持RTT技術,紋理可預先存儲在紋理內,實時渲染預處理紋理圖片,能達到效果圖級渲染效果。
5、讓三維世界搭載人類活動
該軟體帶有角色動畫系統和粒子特效系統等高級模塊,可實現多人互動虛擬社區的應用,來開發多人協同作業、多人在線安全應急演練等高端項目。
6、模型數據密不可分
模型不帶數據,數據不掛接模型是傳統項目開發的弊端,現在我們讓模型一誕生就具有各種基礎數據(經緯度、高程等信息),同時還可整合各種用戶業務層數據,便於快速構建基於三維場景的信息化管理系統;三維模型體系具有地面、空間兩種模式,兩種模式分別具有各自不同的坐標系,二者可以相互轉化,方便用戶取用。
ConverseEarthExplorer瀏覽器
ConverseEarthExplorer打開了通往三維數字化地球的大門。使用它用戶能夠瀏覽和操作基於地表的衛星影像、航空影像、高程數據模型、三維模型創建的高解析度的三維虛擬地球場景,用戶可以通過互聯網、區域網充分體驗互動式三維地球漫遊的樂趣。它是分布式應用的客戶端軟體,同時又是全球虛擬社區服務的一個充滿生機的節點。
在家裡或在辦公室里你可以通過Explorer瀏覽用戶分享的三維地球數據或處理生產相關的企業級數據,它支持各種IE內核的瀏覽器項目部署。
基於Explorer能夠開發的項目類別包括設備管理、工藝流程模擬、單人技能級心理素質培訓、多人在線安全應急演練,可實施的項目范圍廣,功能全面,具有良好的可擴展性和強大的升級能力。
1、軟體特性:
在任何網路上都能夠以流方式傳輸影像、地形和三維數據
支持互動式繪圖工具,可以在地球表面繪制幾何圖形、用戶自定義對象、建築物、點陣圖等
可以創建和導入靜態或動態的標注,並支持來自GoogleEarth的標注文件。
支持OGC標准,可以連接任意符合該標準的WMS、WFS數據伺服器進行讀取數據。
支持矢量數據的疊加,可以本地或從伺服器端獲取矢量數據。
自動導航功能可以創建預定義飛行路徑,並在瀏覽器中回放
使用滑鼠、鍵盤、位置跟蹤器、飛行控制器對三維地球進行操控
在三維視窗中截取快照並輸出成圖片
集成視頻、網頁、Flash等多媒體信息,對地物進行描述
2、協同作業模式
不同地域的用戶可以通過TCP/IP架構進行場景漫遊和數據操作的交互,用戶可以發起、加入一個實時互動式協同操作環境。
3、GPS跟蹤
採用NMEA協議,通過讀取實時或記錄的GPS數據控制單個或多個對象的移動、轉向,可以繪制對象運動的歷時軌跡。數據源可以是GPS、Socket、USB、COM、Database、無線網路位置跟蹤器等。
4、天體運行模擬
可以用於火箭發射、衛星調度項目的開發,能實時模擬天體運行狀態也運行軌跡,可以選取任意時空片段查看天體運行狀態,能夠繪制衛星與地面站通訊電波示意圖形和星下條帶。
ConverseEarthSDK二次開發工具包
ConverseEarthSDK提供了一套強大的介面來為用戶提供三維地球核心功能服務,這些本來內嵌的功能可以以簡單易用介面的形式被外界程序調用,可廣泛用於傳統二維信息系統的三維化升級、軟硬體結合的集成項目的研發。
SDK提供了一套ActiveX控制項,將三維窗口、導航圖以控制項對象的方式嵌入到用戶系統的可視化界面中。這些以COM協議為基礎的API介面都可以通過腳本語言超作(例如JavaScript),也可以通過非腳本語言來控制操作(例如:C++VBDelphi.net)。
基於B/S的項目可以將控制項打包後放到伺服器端,使用網頁訪問時會自動安裝控制項,免去安裝客戶端的繁瑣步驟。
我們的大量SDK客戶來至於石油、電力、水利、安防等領域,SDK的價值在於對業務數據和三維模型數據的整合,使得三維場景成為生產或業務流程中最直觀的數據部份而不是單純的場景展現。
SDK提供的API大類可以分為:
二三維圖層操作
幾何體的繪制
標注及地面物件的繪制
物體的位移、旋轉、縮放等變換操作
事件觸發處理
數據分析功能
角色骨骼動畫
粒子特效模塊
系統參數設置
相機控制
天體運行控制
GPS地物運動控制
數學計算
⑽ 什麼是顯存緩存和顯存有什麼區別它們屬不屬於電腦配置
1、顯存的種類:
顯存的種類有EDORAM、MDRAM、SDRAM、SGRAM、VRAM、WRAM、DDR等許多種。EDO顯存曾用在Voodoo、Voodoo 2等顯卡上,但目前已消聲匿跡。SGRAM顯存支持塊寫和掩碼,可以看作是SDRAM的加強版,曾流行一時,但由於價格較SDRAM稍高,現在也已甚少採用。目前顯卡上被廣泛使用的顯存就是SDRAM和DDR SDRAM了。SDRAM可以與CPU同步工作,無等待周期,減少數據傳輸延遲。優點是價格低廉,在中低端顯卡上得到了廣泛的應用。DDR是Double Data Rate是縮寫,它是現有的SDRAM內存的一種進化。在設計和操作上,與SDRAM很相似,唯一不同的是DDR在時鍾周期的上升沿和下降沿都能傳輸數據,而SDRAM則只可在上升沿傳輸數據,所以DDR的帶寬是SDRAM的兩倍,而DDR比SDRAM的數據傳輸率也快一倍。如果SDRAM內存的頻率是133MHz,則DDR內存的頻率是266MHz,因此在中高檔顯卡上應用廣泛。
2、顯存的容量:
顯存與系統內存一樣,也是多多益善。顯存越大,可以儲存的圖像數據就越多,支持的解析度與顏色數也就越高。以下計算顯存容量與解析度關系的公式:
所需顯存=圖形解析度×色彩精度/8
例如要上16bit真彩的1024×768,則需要1024×768×16/8=1.6M,即2M顯存。
對於三維圖形,由於需要同時對Front buffer、Back buffer和Z buffer進行處理,因此公式為:所需顯存(幀存)=圖形解析度×3×色彩精度/8
例如一幀16bit、1024×768的三維場景,所需的幀緩存為1024×768×3×16bit/8=4.71M,即需要8M顯存。
3、顯存的數據位數與帶寬:
數據位數指的是在一個時鍾周期之內能傳送的bit數,它是決定顯存帶寬的重要因素,與顯卡性能息息相關。當顯存種類相同並且工作頻率相同時,數據位數越大,它的性能就越高。
顯存帶寬的計算方法是:運行頻率×數據帶寬/8。以目前的GeForce3顯卡為例,其顯存系統帶寬=230MHz×2(因為使用了DDR顯存,所以乘以2)×128/8=7.36GB。
數據位數是顯存也是顯卡的一個很重要的參數。在顯卡工作過程中,Z緩沖器、幀緩沖器和紋理緩沖器都會大幅佔用顯存帶寬資源。帶寬是3D晶元與本地存儲器傳輸的數據量標准,這時候顯存的容量並不重要,也不會影響到帶寬,相同顯存帶寬的顯卡採用64MB和32MB顯存在性能上區別不大。因為這時候系統的瓶頸在顯存帶寬上,當碰到大量像素渲染工作時,顯存帶寬不足會造成數據傳輸堵塞,導致顯示晶元等待而影響到速度。目前顯存主要分為64位和128位,在相同的工作頻率下,64位顯存的帶寬只有128位顯存的一半。這也就是為什麼Geforce2 MX200(64位SDR)的性能遠遠不如Geforce2 MX400(128位SDR)的原因了。
4、顯存的速度:
顯存的速度一般以ns為單位。常見的顯存有7ns、6ns、5.5ns、5ns、4ns甚至3.8ns的顯存。其對應的額定工作頻率分別是143MHz、166MHz、183MHz、200MHz和250MHz。額定工作頻率=1/顯存速度。當然,對於一些質量較好的顯存來說,顯存的實際最大工作頻率是有一定的餘量的。顯存的超頻就是基於這一原理,列如將額定頻率為6ns的顯存超至190MHz的運行頻率。
這里還要說一說顯存的實際運行頻率和等效工作頻率。DDR顯存因為能在時鍾的上升沿和下降沿都能傳送數據,因此,在相同的時鍾頻率和數據位寬度的情況下顯存帶寬是普通SDRAM的兩倍。換句話說,在顯存速度相同的情況下,DDR顯存的實際工作頻率是普通SDRAM顯存的2倍。同樣,DDR顯存達到的帶寬也是普通SDRAM顯存的2倍。例如,5ns的SDRAM顯存的工作頻率為200MHZ,而5ns的DDR顯存的等效工作頻率就是400MHZ。