專利名稱:與二維或三維幾何實體相關(guān)的數(shù)據(jù)的輸出方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及信息數(shù)據(jù)的輸出,更具體涉及從計算機程序,比如計算機輔助設(shè)計軟件(CAD)或視頻游戲的軟件輸出與幾何實體有關(guān)的數(shù)據(jù)。
背景技術(shù):
目前,在各種工業(yè)領(lǐng)域中,通過仿真程序,比如飛行仿真器,進行比如CAD和視頻游戲等幾何實體的建模和/或處理技術(shù)和系統(tǒng)是很普遍的,這可從諸如小轎車或飛行器的計算機輔助設(shè)計到3D虛擬現(xiàn)實的活動游戲。
雖然CAD比較年輕,還不到20年,盡管信息技術(shù)有了飛速的進展,然而由于必須與早先的CAD系統(tǒng)向上相容,導(dǎo)致要保持歷史數(shù)據(jù)的結(jié)構(gòu),只是部分開發(fā)被新的信息系統(tǒng)所提供的可能性。
另外,在CAD或視頻游戲領(lǐng)域中,使用的數(shù)據(jù)結(jié)構(gòu)的格式普遍是具有知識產(chǎn)權(quán)的,這就是說,對所涉及的軟件是專有的,至少對涉及的軟件的編寫者是專有的。但是,至少在CAD領(lǐng)域中,這些圖形軟件一般具有輸入與幾何實體相關(guān)的不同格式數(shù)據(jù)的功能。
相反,由于要保持客戶的明顯的原因,這些軟件的編寫者,很少公布他們使用的數(shù)據(jù)格式規(guī)范,基于同樣的想法,對于提出能夠從他們的軟件將數(shù)據(jù)整體輸出到流行軟件中的實用程序,他們一般是很有保留的。
這種情況導(dǎo)致很難把這些軟件使用的數(shù)據(jù)從幾何數(shù)據(jù)的建模和/或處理信息系統(tǒng)完全轉(zhuǎn)移到類似的信息系統(tǒng)中。然而,這樣的轉(zhuǎn)移經(jīng)常是很必要的,比如對于在不同機種的CAD系統(tǒng)進行的數(shù)據(jù)轉(zhuǎn)移,比如在同一個企業(yè)內(nèi)部,在同級提供者的不同子處理器中所遇到的,比如特別是由于歷史原因在長時間使用CAD的大企業(yè)中所發(fā)生的情況。
同樣,可以預(yù)見到,視頻游戲技術(shù)的進展使得定期地在視頻游戲中輸入人物或物體,此時這將重新引起從另一個視頻游戲中輸出此類實體的問題。
由于沒有涉及有關(guān)數(shù)據(jù)庫格式的精確的規(guī)范,在與幾何實體有關(guān)的數(shù)據(jù)建模和/或處理的不同機種系統(tǒng)之間進行數(shù)據(jù)轉(zhuǎn)移的必要性導(dǎo)致在這些數(shù)據(jù)轉(zhuǎn)移的實用程序中要很高的開發(fā)費用,另外,當(dāng)所涉及的系統(tǒng)數(shù)據(jù)庫的結(jié)構(gòu)進行改進或變化時,這些實用程序徑應(yīng)該完全或部分重新建立。另外,由于缺乏涉及待轉(zhuǎn)換數(shù)據(jù)格式的精確規(guī)范,這樣的轉(zhuǎn)換一般是不完整的。
另外,在CAD系統(tǒng)的用戶企業(yè)里,對普遍和很好確定的開放數(shù)據(jù)的結(jié)構(gòu)和格式,同時作為不同CAD系統(tǒng)之間交換的手段,但也為了保證企業(yè)所使用的CAD軟件編寫者之間盡可能低的獨立性,假設(shè)所用CAD軟件的編寫者終止活動的情況下,一般須要從一個軟件到另一個軟件來重新處理CAD的數(shù)據(jù)。
經(jīng)過前面的考慮,很顯然對于具有良好市場而且可靠的可從任何與幾何實體有關(guān)的數(shù)據(jù)建模和/或處理軟件中輸出與幾何實體有關(guān)數(shù)據(jù)的方法和系統(tǒng)是有需求的,而且無須知道此軟件使用的數(shù)據(jù)結(jié)構(gòu),也無須以任何方式對此軟件進行任何改變,而且不用開發(fā)對所涉及軟件特殊的界面。
在實用程序的先有技術(shù)中存在著比如glTrace或glAnalysePro等,它們能夠截取和存儲由應(yīng)用圖形所進行的調(diào)取函數(shù)或原函數(shù)。但是,這些實用程序只具有將涉及的圖形應(yīng)用的調(diào)試功能,完全不能把與幾何實體有關(guān)的數(shù)據(jù)輸出到同樣性質(zhì)的另一個系統(tǒng)中。
發(fā)明內(nèi)容
因此,本發(fā)明的目的是使用為幾何實體建模和/或處理的計算機系統(tǒng),提供一種與幾何實體有關(guān)的數(shù)據(jù)輸出方法,所述幾何實體建模和/或處理計算機系統(tǒng)包括至少一個能夠執(zhí)行計算機程序的中央處理單元、一個能夠在執(zhí)行所述計算機程序的過程中存儲所述計算機程序和與幾何實體有關(guān)的數(shù)據(jù)的存儲器和至少一個能夠永久存儲與幾何實體有關(guān)的數(shù)據(jù)的存儲器,所述計算機系統(tǒng)包括至少一個幾何實體建模和/或處理程序和至少一個與幾何實體有關(guān)的數(shù)據(jù)的顯示程序,所述至少一個建模和處理程序,通過調(diào)用位于所述至少一個顯示程序中的顯示函數(shù)將待顯示的與幾何實體有關(guān)的數(shù)據(jù)傳遞到至少一個顯示程序中,待由所述顯示程序顯示的所述數(shù)據(jù),以由所述至少一個幾何實體建模和/或處理程序調(diào)用的所述顯示函數(shù)的參數(shù)形式被所述至少一個建模和/或處理程序傳遞到所述至少一個顯示程序中,所述顯示函數(shù)能夠顯示一定量的與幾何實體有關(guān)的數(shù)據(jù),其特征在于,與幾何實體有關(guān)的數(shù)據(jù)的輸出程序被代入所述至少一個顯示程序,所述輸出程序具有和所述顯示程序相同的與幾何實體有關(guān)數(shù)據(jù)的顯示函數(shù),所述輸出程序的所述與幾何實體有關(guān)數(shù)據(jù)的顯示函數(shù)具有與所述至少一個顯示程序的相應(yīng)函數(shù)相同的參數(shù),所述至少一個幾何實體建模和/或處理程序以明顯的方式調(diào)用所述輸出程序的函數(shù)以代入所述至少一個顯示程序的相應(yīng)函數(shù)。
在本發(fā)明的方法中,所述至少一個建模和/或處理程序中的至少一個是比如計算機輔助設(shè)計類,即CAD類的程序,或者是視頻游戲類的程序。
另外,當(dāng)把所述至少一個建模和/或處理程序時調(diào)用到所述輸出程序的所述一個顯示函數(shù)中時,所述輸出程序以適當(dāng)?shù)母袷綄?shù)據(jù)存儲在所述至少一個存儲單元中,該數(shù)據(jù)來源于由所述輸出程序把所述至少一個建模和/或處理程序調(diào)用到所述輸出程序的所述顯示函數(shù)中的處理。
而且,當(dāng)將所述至少一個建模和/或處理程序調(diào)用到所述輸出程序的所述顯示函數(shù)中之一時,所述輸出程序可以將相應(yīng)的所述顯示程序的顯示函數(shù)調(diào)用到在所述輸出程序中調(diào)用的,具有與在調(diào)用到所述輸出程序的所述函數(shù)時存在的參數(shù)相同的調(diào)用參數(shù)的所述顯示函數(shù)中。
在此情況下,所述被調(diào)用的顯示程序可以是其中所述輸出程序已被代入的所述顯示程序,或者相反,是與其中所述輸出程序被代入的程序不同的顯示程序。
另外,所述計算機系統(tǒng)還可包括至少一個圖形顯示裝置,所述至少一個顯示裝置包括至少一個圖像刷新和/或顯示存儲器,所述至少一個顯示程序給所述至少一個顯示裝置中指令,使由所述顯示程序接收的顯示函數(shù)的所述調(diào)用呈點狀數(shù)值化,所述顯示裝置將所述點存儲在所述圖像刷新和/或顯示存儲器中,此點來源于由所述至少一個顯示程序接收的顯示函數(shù)調(diào)用時的所述數(shù)值化。
在此情況下,所述計算機系統(tǒng)還可包括至少一個圖形顯示器,而且其中所述圖像刷新和/或顯示存儲器使所述至少一個顯示裝置發(fā)光,所述至少一個顯示裝置在所述至少一個圖形顯示器上顯示出從所述圖像刷新和/或顯示存儲器所重新讀出的點。
此時,由所述輸出程序進行的數(shù)據(jù)輸出可以被至少一個特別的圖形指令所啟動,此指令是被所述至少一個建模和/或處理程序傳遞到所述輸出程序中的,所述啟動所述數(shù)據(jù)輸出的至少一個特別的圖形指令是比如促使完成所述調(diào)用在所述圖像刷新和/或顯示存儲器中的所述點接收的圖形函數(shù)的所述數(shù)值化的指令。
在實施方案中,所述至少一個顯示裝置包括至少兩個圖像刷新和/或顯示存儲器,而且其中所述促使所述輸出的指令是促使將所述至少兩個圖像刷新和/或顯示存儲器中的一個切換到所述至少兩個圖像刷新和/或顯示存儲器中的另一個的指令。
另外,當(dāng)將所述建模和/或處理程序調(diào)用到所述輸出程序的所述顯示函數(shù)中時,所述輸出程序可以已適當(dāng)?shù)母袷酱鎯υ趤碓从谟伤鲚敵龀绦蛘{(diào)用到所述輸出程序的所述顯示函數(shù)所進行處理的數(shù)據(jù)的所述存儲器中。在此情況下,所述計算機系統(tǒng)還可執(zhí)行在來源于由所述輸出程序進行處理的數(shù)據(jù)存儲器中重新讀出的實用程序。另外,此時重讀所述存儲器的所述實用程序可以以適當(dāng)?shù)母袷酱鎯υ谒鲋辽僖粋€所述來源于被從所述存儲器中重新讀出的所述輸出程序進行處理的數(shù)據(jù)的存儲單元中。
另外,所述實用程序還可以借助于適當(dāng)?shù)卣{(diào)用到所述至少一個顯示程序的顯示函數(shù)來顯示從所述存儲器中重新讀出的所述數(shù)據(jù)。
在其中代入所述輸出程序的所述至少一個顯示程序中之一將要符合比如Silicon Graphics公司的OpenGL規(guī)范。在此情況下,所述至少一個促使所述輸出的指令將是指令OpenGL“wglSwapBuffer”和/或指令OpenGL“glFlush”。
同樣,其中所述輸出程序被代入的所述至少一個顯示程序中之一將要符合Microsoft公司的DirectX規(guī)范。
通常,在本發(fā)明的方法中,所述與幾何實體有關(guān)的數(shù)據(jù)要包括幾何數(shù)據(jù)。在此情況下,幾何數(shù)據(jù)將是二維類型和/或三維類型的。另外,此時所述幾何數(shù)據(jù)可包括點數(shù)據(jù)和/或具有兩個點的線段數(shù)據(jù)和/或涉及三角形的數(shù)據(jù)和/或涉及四邊形的數(shù)據(jù)和/或涉及多邊形的數(shù)據(jù)。
同樣,所述幾何數(shù)據(jù)可以與線型和/或表面型和/或體型幾何實體有關(guān)。此時,與幾何實體有關(guān)的所述幾何數(shù)據(jù)還包括與至少一個與至少一個所述線形和/或表面型和/或體型實體正交的向量有關(guān)的幾何數(shù)據(jù)。
同樣,所述與幾何實體有關(guān)的數(shù)據(jù)可包括色彩數(shù)據(jù)和/或結(jié)構(gòu)數(shù)據(jù)。
本發(fā)明還提供一個與幾何實體有關(guān)的使用幾何實體建模和/或處理計算機系統(tǒng)的數(shù)據(jù)輸出系統(tǒng),所述幾何實體的建模和處理計算機系統(tǒng)包括至少一個能夠執(zhí)行計算機程序的中央處理單元、一個在執(zhí)行所述計算機程序的過程中能夠存儲所述計算機程序和與幾何實體有關(guān)數(shù)據(jù)的存儲器,以及至少一個能夠永久存儲與幾何實體有關(guān)數(shù)據(jù)的存儲單元,所述計算機系統(tǒng)包括至少一個幾何實體的建模和/或處理程序和至少一個與幾何實體有關(guān)數(shù)據(jù)的顯示程序,通過調(diào)用位于所述至少一個顯示程序中的顯示函數(shù),所述至少一個建模和/或處理程序?qū)⒋@示的與幾何實體有關(guān)的數(shù)據(jù)傳遞到所述至少一個顯示程序中,所述待由所述顯示程序顯示的數(shù)據(jù)被所述至少一個建模和/或處理程序以調(diào)用被所述至少一個幾何實體建模和/或處理程序調(diào)用的所述顯示函數(shù)參數(shù)的形式轉(zhuǎn)移到至少一個顯示程序中,所述顯示函數(shù)能夠顯示出一定量的與幾何實體有關(guān)的數(shù)據(jù),而且其特征在于,它使用了按照前面任何一項權(quán)利要求的方法。
下面僅作為舉例,參照
本發(fā)明的兩個實施模式,其中圖1是不使用本發(fā)明的輸出方法,借助于標(biāo)準(zhǔn)的顯示函數(shù)程序庫,在計算機顯示器上顯示幾何模型的功能示意圖;圖2是使用按照本發(fā)明的與幾何實體有關(guān)的數(shù)據(jù)輸出方法,在計算機顯示器上顯示幾何模型的功能示意圖;圖3是按照本發(fā)明的與幾何實體有關(guān)的數(shù)據(jù)輸出方法的組織圖;圖4是在本發(fā)明的第一個實施模式中圖3的方塊40的詳細組織圖;
圖5是在本發(fā)明的第二個實施模式中圖3的方塊40的詳細組織圖;具體實施方式
本發(fā)明的方法在與幾何實體有關(guān)的數(shù)據(jù)建模和/或處理計算機系統(tǒng)1中運行。
此計算機系統(tǒng)1可以由沒有顯示出的與幾何實體有關(guān)的數(shù)據(jù)建模和/或處理程序11的用戶使用,在此計算機系統(tǒng)1上可使用或不使用本發(fā)明的方法。此計算機系統(tǒng)1還可以在圖形顯示器14上顯示來源于被圖形函數(shù)程序庫12控制的圖形界面13卡的圖形信號。
在此敘述的后面,為了更加簡化,與幾何實體有關(guān)的數(shù)據(jù)建模和/或處理11的程序11也可以表示為圖形應(yīng)用11。
在本發(fā)明的優(yōu)選實施模式中,用來運行本發(fā)明方法的計算機系統(tǒng)1是一臺計算機,該計算機能夠使用Microsoft公司的Windows操作系統(tǒng),在此操作系統(tǒng)中,幾何數(shù)據(jù)的顯示程序是通過編輯符合比如SiliconGraphics公司的OpenGL規(guī)范的動態(tài)鏈接庫(DLL)執(zhí)行的圖形API(對于高級編程界面)。此DLL通常位于Windows系統(tǒng)目錄中,被命名為opengl32.dll。
OpenGL程序庫包括許多函數(shù),在此敘述中,作為例子使用的整個OpenGL函數(shù),不管是使用本發(fā)明的方法,還是不使用本發(fā)明方法的,都有意局限于OpenGL的很簡化的子集,以在此敘述中能夠保持合理的總量。然而,由此應(yīng)該很好地理解,本發(fā)明的原理不但限于在此敘述中存在的OpenGL函數(shù),而且同樣應(yīng)用于在OpenGL規(guī)范中存在的各種函數(shù)。
參見圖1,現(xiàn)在敘述不使用本發(fā)明的數(shù)據(jù)輸出方法,在圖形顯示器14上顯示幾何模型10的運行原理。
當(dāng)希望的圖形應(yīng)用11在圖形顯示器14上顯示一個幾何模型時,它將圖形界面12調(diào)用到位于DLL中的圖形函數(shù)中。此圖形界面12將向量型的指令經(jīng)過其相關(guān)的控制軟件送往圖形卡13。
所述的顯示器由陰極射線管或類似的裝置組成,通過視頻型的掃描進行顯示,因此,必須存儲被顯示的圖形數(shù)據(jù)的二進制影像,以使使用者2能夠保持顯示圖形數(shù)據(jù)在視覺上的保留。對于顯示器14的每個可顯示點,這個由一定量的二進制數(shù)字組成的二進制影像就被存儲在被稱為圖像刷新存儲器的圖形卡13的內(nèi)存儲器中。通過每秒20多次重新讀出此二進制影像,和由存儲在圖形卡13的圖像刷新存儲器中的影像的代表性視頻信號重讀的信息產(chǎn)生,就由圖形卡得到了對于使用者2的數(shù)據(jù)視覺保留。圖形卡13就把這些視頻信號送到圖形顯示器14上,在這里它們使以二進制形式存儲在圖形卡13的圖像刷新存儲器中的影像得以顯示出來。
因此,希望在計算機顯示器14上顯示幾何模型10的圖形應(yīng)用11將執(zhí)行一系列存在于DLL OpenGL中的圖形函數(shù)的調(diào)用。在OpenGL規(guī)范中,此一系列圖形函數(shù)的調(diào)用終止于特定函數(shù)的調(diào)用,這將結(jié)束把送到卡13的指令轉(zhuǎn)換為在圖形顯示器14上顯示的二進制點的過程。
比如,為了顯示由兩個分別通過坐標(biāo)的點ABC和BCD的三角形的片(strip)T1和T2組成的幾何模型10,它們的坐標(biāo)分別是A(0,10,0);B(0,10,-10);C(0,0,0);D(0,0,-10);按照DLL OpenGL圖形應(yīng)用11進行圖形函數(shù)的調(diào)用glBegin(GL_TRIANGLES_STRIP)glVertex3fv(0.000,10.000,0.000)glVertex3fv(0.000,10.000,-10.000)glVertex3fv(0.000,0.000,0.000)glVertex3fv(0.000,0.000,-10.000)glEnd()wglSwapBuffers()在此一系列調(diào)用當(dāng)中,調(diào)用glBegin(GL_TRIANGLES_STRIP)表示三角形片的開始,而調(diào)用glEnd()表示其結(jié)束。函數(shù)glVertex3fv能夠由三個坐標(biāo)x、y和z定義三角形的頂點。
當(dāng)前面的全部元素被圖形應(yīng)用11經(jīng)過調(diào)用上述函數(shù)而轉(zhuǎn)變?yōu)锳PI圖形12時,圖形應(yīng)用11就引起借助于API圖形12適當(dāng)?shù)暮瘮?shù),比如在上面的例子中指出的“glFlush”函數(shù)或“wglSwapBuffers”函數(shù)轉(zhuǎn)變的上述元素顯示的完成。這些函數(shù)促使完成全部兩個前面接收的圖形指令轉(zhuǎn)變?yōu)樵趫D形卡13的電流圖像刷新存儲器中的比特影像,結(jié)果這就結(jié)束了前面接收的圖形接收指令在圖形顯示器14上的顯示。
在圖形卡13具有兩個幀存儲器的情況下,指令“wglSwapBuffers”還引起圖形卡13兩個幀存儲器的轉(zhuǎn)變。
在所述顯示例子的情況下,接收指令“wglSwapBuffers”的效果就是引起在圖形顯示器14上有效地顯示出被圖形應(yīng)用11通過圖形界面轉(zhuǎn)變到圖形卡13中的圖形指令。在此情況下,其效果就是在此顯示器14上完成了由兩個三角形T1和T2組成的幾何實體10的顯示。
現(xiàn)在參照圖2和圖3,敘述使用本發(fā)明的方法進行輸出幾何模型。
當(dāng)使用本發(fā)明的方法安裝圖形數(shù)據(jù)輸出程序時,在Widows系統(tǒng)目錄中存在的原DLL“opengl32.dll”12被重新命名為比如“opengl32bis.dll”,而且它被實施本發(fā)明方法而且與原來的,即“opengl32.dll”相同的方式命名的DLL15取代。按照本發(fā)明的此DLL15在OpenGL規(guī)范中具有與原DLL12相同的功能,即對于同樣的名稱和同樣的參數(shù),它賦予和原DLL OpenGL 12相同的界面函數(shù)。
當(dāng)沒有顯示出的操作者2希望輸出由圖形應(yīng)用11建立和/或處理的幾何模型10的數(shù)據(jù)時,預(yù)先使用了實施本發(fā)明方法以及如上所述的DLL。此時要顯示圖形應(yīng)用11希望的幾何模型10。與在前面所述的使用計算機系統(tǒng)1而不使用本發(fā)明方法的方式相同,當(dāng)圖形應(yīng)用希望在顯示器上顯示一個幾何模型時,使用了位于Windows系統(tǒng)目錄中被命名為“opengl32.dll”的DLL15,即按照在此DLL15中包含的OpenGL規(guī)范調(diào)用函數(shù)和原程序。
考慮到此,在安裝按照本發(fā)明的輸出與幾何實體有關(guān)的數(shù)據(jù)的程序時,用使用本發(fā)明的DLL15代替了DLL12,此時顯然圖形應(yīng)用調(diào)用使用本發(fā)明方法的DLL15中存在的函數(shù)和原程序代替在原DLL12中存在的函數(shù)和原程序。
在另一個實施方案中,可以通過在特定的應(yīng)用11目錄中只安裝DLL15來只安裝命名為DLL15的opengl32.dll以便用來應(yīng)用特定的幾何建?;蛱幚?。實際上,當(dāng)Windows操作系統(tǒng)尋找被應(yīng)用11所指定的DLL15時,它首先在應(yīng)用11存在的同一個目錄中尋找此DLL15。如果沒有找到,Windows操作系統(tǒng)隨后就在特別包括安裝Windows操作系統(tǒng)的系統(tǒng)目錄的系統(tǒng)1的預(yù)先確定的目錄中尋找此DLL15。
因此,當(dāng)使用本發(fā)明的方法并重新處理如上所述的例子時,本發(fā)明的DLL15代替原來的DLL OpenGL12,調(diào)用用于后者的圖形函數(shù)。在本發(fā)明當(dāng)前的實施模式中,此時本發(fā)明的DLL15把調(diào)用接收的函數(shù)轉(zhuǎn)變?yōu)樵瓉淼腄LL12,即它調(diào)用具有與在來源于圖形應(yīng)用11的調(diào)用中接受的函數(shù)具有相同參數(shù)的DLL12的相應(yīng)函數(shù)。
結(jié)果,本發(fā)明的DLL15接收了如下函數(shù)的調(diào)用glBegin(GL_TRIANGLES_STRIP)glVertex3fv(0.000,10.000,0.000)glVertex3fv(0.000,10.000,-10.000)glVertex3fv(0.000,0.000,0.000)glVertex3fv(0.000,0.000,-10.000)glEnd()wglSwapBuffers()為了輸出與幾何實體有關(guān)的數(shù)據(jù),在按照本發(fā)明的DLL15中包含的程序?qū)⒁欢康呐c幾何實體有關(guān)的數(shù)據(jù)表存儲在其存儲器16中并進行管理,這些表非限定地是比如點的“點”表和三角形的“三角形”表。在開始時,這兩個表是空的,即點表的N Point元素數(shù)和三角形表的NTriangle的元素數(shù)都是0。
在步驟30開始DLL15的程序,這里把點的N Point數(shù)和三角形的N Triangle數(shù)都初始化為0,然后等待接收來自圖形應(yīng)用11的圖形指令。當(dāng)接收到指令glBegin(GL_TRIANGLES_STRIP)時,本發(fā)明的方法就到達步驟31,在這里檢測指令GL_BEGIN的參數(shù)值是否是表示由其頂點定義三角形片的圖形指令串GL_TRIANGLES_STRIP的預(yù)定值。如果回答是否定的,本方法就轉(zhuǎn)向步驟30,這就是說如果參數(shù)值是GL_TRIANGLES_STRIP,本方法就轉(zhuǎn)向步驟32,在此等待一個圖形指令。
當(dāng)接收到一個圖形指令時,本發(fā)明的方法就在步驟33中檢測接收到的指令是否是指令glVertex3fv,在本實施例的情況下,回答是肯定的,當(dāng)接收了調(diào)用glVertex3fv(0.000,10.000,0.000)時,本發(fā)明的方法就到達步驟34。在步驟34中,當(dāng)接收了N Point的單位點時,即N Point由其初始值0變?yōu)?時,就將DLL15中的程序增量。此時將接收的點存儲在點表中,即在步驟34中,在數(shù)值為0.000、10.000和0.000的情況下,總是分別將接收到的指令glVertex3fv的第一、第二和第三參數(shù)存儲在點表第一點的坐標(biāo)x、y和z的位置上。然后本發(fā)明的方法就到達步驟35。
在步驟35中,本發(fā)明的方法檢測接收的點的N Point是否小于3。如果回答是肯定的,本發(fā)明的方法將轉(zhuǎn)向步驟32,否則本發(fā)明的方法就到達步驟36。
當(dāng)在步驟33中時的回答是否定的時,這意味著至少有三個點被前面的指令glVertex3fv傳遞。按照對于GL_TRIANGLES_STRIP三角形片的OpenGL規(guī)范,這表明確定了一個由接收的后三個點組成的三角形片。
因此隨后在步驟36中,使用本發(fā)明方法的程序DLL15增加由一個單位接收的三角形的數(shù),即增加由一個單位接收的三角形的N Triangle數(shù)。此時把構(gòu)成如此接收的三角形的點的號碼n1、n2和n3,即按照OpenGL規(guī)范的接收的后三個點,存儲在三角形表的相應(yīng)位置上,即把接收的后三個點的號碼N Triangle-2、N Triangle-1和N Triangle存儲在三角形表的N Triangle號碼位置的n1、n2和n3位置上。
此時,DLL15中的程序轉(zhuǎn)向步驟32,為的是在這里等待由圖形應(yīng)用11傳遞的三角形片的另一個可能的點。
本發(fā)明的方法反復(fù)進行步驟32到步驟36,直至在步驟32中的回答是否定的為止。
在所述的實施例當(dāng)中,在經(jīng)過4個“glVertex3fv”指令有了4個點以后,DLL15不再接收另外的“glVertex3fv”指令,而是代之以接收指令“glEnd”。然后在步驟33中,回答是否定的,此時DLL15就到達步驟37。
在OpenGL規(guī)范當(dāng)中,在GL_TRIANGLES_STRIP三角形片的情況下,指令“glEnd”意味著由前面的指令“glBegin”開始的圖形指令結(jié)束。
在步驟37中,DLL15檢測接收到的后一個調(diào)用是否是調(diào)用函數(shù)“glEnd”。如果回答是否定的,在DLL15中包含的程序就轉(zhuǎn)向步驟32。當(dāng)在步驟37中檢測的回答是肯定時,DLL15中的程序就到達步驟38。在所述的實施例當(dāng)中,當(dāng)圖形應(yīng)用11在4個“glVetrex3fv”指令以后送出指令“glEnd”時就是這樣。
在步驟38中,在本發(fā)明的DLL15中包含的程序等待來自圖形應(yīng)用11的指令,然后當(dāng)接到這樣的指令時,就到達步驟39。
在步驟39中,DLL15程序檢測接收到的圖形指令是否是OpenGL指令“wglSwapBuffers”或“glFlush”。如果回答是否定的,即如果接收到的指令既非“wglSwapBuffers”也非“glFlush”,此時按照本發(fā)明方法的DLL程序就結(jié)束了。如果在步驟39中的回答是肯定的,此時DLL15程序就到達步驟40。
在所述的實施例當(dāng)中,在送出指令“glEnd”以后,圖形應(yīng)用11此時向程序DLL15送出指令“wglSwapBuffers”,但也可以使用指令“glFlush”。
如同前面在使用計算機系統(tǒng)1而不用本發(fā)明的方法時所指出的,這些指令促使完成圖形指令的轉(zhuǎn)變及其在顯示器14上的所謂適當(dāng)?shù)娘@示,因此這些指令暗含著包括前面轉(zhuǎn)移的指令形成協(xié)調(diào)一致的整體的意思,因為它應(yīng)該顯示在顯示器14上而不用等待其他圖形指令。
然后,在本發(fā)明的實施模式中,使用這些指令來確定前面接收到的哪一個指令形成協(xié)調(diào)一致的整體以及在此時用來將其輸出到存儲單元18。
然后,當(dāng)在步驟39在檢測時的回答是肯定的時候,即當(dāng)接收到指令“wglSwapBuffers”或“glFlush”時,前面被DLL15中的程序接收到的指令就形成協(xié)調(diào)一致的整體,而且此時使用本發(fā)明方法的DLL15中的程序到達步驟40,在這里,一個名為Raider 3D的模塊17將存儲在存儲器16中的點和三角形表輸出到存儲單元18。
在本發(fā)明的方法中,在其中存儲點和三角形表的存儲器16是在實施本發(fā)明方法的計算機中的一個共享存儲器,這意味著它可以被DLL15寫入,同時由Raider 3D模塊17讀出。
在本發(fā)明的第一個實施模式中,點和三角形表以簡單的文本文件的形式輸出到單元18,其中點和三角形被寫入在存儲單元18中的同名文件中。
現(xiàn)在再參見圖4敘述按照本發(fā)明方法的第一種實施模式的模塊Raider 3D17的運行情況。
在此第一種實施模式中,在步驟41中,模塊Raider 3D17在存儲單元18中生成并打開一個點輸出文件,在所述實施例中其名稱是“點”,它把在文件“點”中寫入的點i的值初始化為數(shù)值0,然后就到達步驟42。
在步驟42中,模塊Raider3D17檢測在文件“點”中寫入的點i的值是否小于在共享存儲器中存在的點N Point的數(shù)值。如果在步驟42的回答是肯定的,模塊Raider 3D17就到達步驟43。在步驟43中,模塊Raider 3D17將點i的值增加一個單位,然后在文件“點”中寫入點i的新值,然后在同一行寫入對應(yīng)i的點的三個坐標(biāo)x、y和z,此點是由存儲在共享存儲器16中的“點”表的輸入i復(fù)制的。此時模塊Raider 3D17到達文件“點”中的一行,然后轉(zhuǎn)向步驟42。
如果在步驟42的回答是否定的,模塊Raider 3D17就到達步驟44。在步驟44中,模塊Raider 3D17關(guān)閉文件“點”,然后它就到達步驟45。在步驟45中,模塊Raider 3D17在存儲單元上生成并打開一個三角形輸出文件,在所述的實施例中將其命名為“三角形”,然后將在文件“三角形”中寫入的三角形i的值初始化為0。此時就到達步驟46。
在步驟46中,模塊raider 3D17檢測在文件“三角形”中寫入的三角形i的值是否小于在共享存儲器中存在的三角形N Triangle的數(shù)值。如果在步驟46中的回答是肯定的,模塊Raider 3D17就到達步驟47。在步驟47中,模塊Raider 3D17將三角形i的值增加一個單位,然后在文件“三角形”中寫入當(dāng)前三角形的號碼i,而且在文件“三角形”的同一行由存儲在共享存儲器中的表“三角形”的三角形i的值再復(fù)制組成號碼i的三角形的三個點的號碼n1、n2和n3。此時模塊17返回到步驟46中。
如果在步驟46中的回答是否定的,模塊Raider就到達步驟48,在這里它關(guān)閉輸出文件“三角形”。
此時在前面的實施例中得到的文本文件“點”和“三角形”將是分別在下面表1和表2中存在的形式。
表11 0.000,10.000,0.0002 0.000,10.000,-10.0003 0.000,0.000,0.000
4 0.000,0.000,-10.000表21 1,2,32 2,3,4此時,按照本發(fā)明的第一個實施模式的與幾何實體有關(guān)的數(shù)據(jù)輸出方法被終止,而且如同所看到的,這將能夠輸出由圖形應(yīng)用11所建立和/或處理的幾何模型10,而無須知道此應(yīng)用的數(shù)據(jù)格式,對此應(yīng)用無須進行任何改變,也沒有開發(fā)任何對此應(yīng)用11來說是特殊的程序。
在本發(fā)明的第二個實施模式中,使用的輸出格式是AutoDesk公司的DXF格式(Data eXchange格式),這在輸出與幾何實體有關(guān)的數(shù)據(jù)方面是市場參考格式。
DXF格式是一種按照逐行信息的文本格式。這些行被逐對分組,第一行的對包含指出出現(xiàn)在下一行數(shù)據(jù)類型的實體數(shù)字?jǐn)?shù)據(jù)。比如,當(dāng)數(shù)字?jǐn)?shù)據(jù)的類型是在0~9之間的實數(shù)時,在下一行出現(xiàn)的數(shù)據(jù)將是字符串,而當(dāng)數(shù)字?jǐn)?shù)據(jù)的類型是10~59之間的實數(shù)時,在下一行出現(xiàn)的數(shù)據(jù)將是兩倍精確度浮點型的三維點的坐標(biāo)。
另外,DXF文件被組織為節(jié)。節(jié)被引入一對行,行由引入字符串的數(shù)字0構(gòu)成,行由關(guān)鍵詞SECTION構(gòu)成,它們由一對行終止,其中第一行由數(shù)字0構(gòu)成,第二行由關(guān)鍵詞ENDSEC組成。
DXF文件包括一定量不同類型的節(jié),特別是描述幾何類實體的ENTITIES節(jié),以及一定量的其他節(jié),比如定義參數(shù)或分類的節(jié),它們都來源于本發(fā)明的范圍。
ENTITIES節(jié)由幾何模型的各種幾何實體構(gòu)成,每個實體都被指出實體類型的字符串引進,然后是定義相關(guān)實體所必需的參數(shù)。
比如,在空間定義一個面被一對行引入,其中第一行由引入字符串的數(shù)字0組成,然后是由關(guān)鍵詞3DFACE組成的一行。
在空間中的一個面由分別構(gòu)成三角形或四邊形的三個或四個點構(gòu)成,在用于指示時,第四個點被規(guī)定為與第三個點是一樣的,習(xí)慣上更愿意是三角形而不是四邊形。面的四個點中的每一個都被三個坐標(biāo)x、y和z定義,如在前面所指出的,坐標(biāo)中的每一個都被一對行所定義,其中第一行是10~59的指示實數(shù),第二行是適當(dāng)?shù)乃^坐標(biāo)。
在DXF格式規(guī)范中,此面第一個點坐標(biāo)x1、y1和z1使用的指示符分別是10、20和30,對于此面的第二點的坐標(biāo)x2、y2和z2的指示符分別是11、21和31,對于此面的第三點的坐標(biāo)x3、Y3和z3的指示符分別是12、22和32,而對于此面的第四點的坐標(biāo)x4、y4和z4的指示符分別是13、23和33。
在另一方面,對于一個號碼為j的點,對于j由1~4變化的面點j的坐標(biāo)x的數(shù)字指示符是9+j,點j的坐標(biāo)y的數(shù)字指示符是19+j,點j的坐標(biāo)z的數(shù)字指示符是29+j。
更準(zhǔn)確說,現(xiàn)在參照圖5,按照本發(fā)明的第二個實施模式的模塊Raider 3D17在步驟51中生成并打開一個輸出文件,在所述實施例中其文件名為“DXF”,然后就到達步驟52。在步驟52中模塊Raider 3D17以DXF格式在文件的開頭寫入幾行,即如下4行0SECTION2ENTITIES然后將在文件“DXF”中寫入的面的數(shù)值i初始化為0。此時模塊Raider 3D17到達步驟53。在步驟53中,模塊Raider 3D17檢測寫入的面的數(shù)值i是否小于在共享存儲器中存儲的三角形N Triangl的數(shù)值。
如果在步驟53的回答是肯定的,即如果前面在文件DXF中寫入的三角形的數(shù)i小于在共享存儲器16在存儲的三角形N Triangl的數(shù),此時模塊Raider 3D17就到達步驟54。在步驟54中,模塊Raider 3D17使前面在文件中寫入的三角形的數(shù)i增加一個單位,然后在用于面的文件DXF中從上端寫入幾行,即下面兩行03DFACE另外,在步驟54中,模塊Raider 3D17總是把在文件“DXF”中寫入的三角形i的點j初始化為0,然后就到達步驟55。在步驟55中,模塊Raider 3D17檢測在文件“DXF”中寫入的三角形i的點j是否小于3。如果回答是肯定的,模塊Raider 3D17就轉(zhuǎn)向步驟56。
在步驟56中,模塊Raider 3D17使在文件“DXF”中寫入的三角形i的點j增加一個單位,并將號碼n計算為等于三角形nj,即n應(yīng)該等于三角形i的點j的號碼nj。然后接著在第一行以DXF格式上寫入對于此面的點j的坐標(biāo)x的指示符,即數(shù)值9+j,然后對于前面計算出號碼n的點,在第二行上寫入坐標(biāo)x本身。
同樣,總是在步驟56中,總是對于號碼為n的點,模塊Raider 3D17分別在第三行寫入指示符19+j,在第四行寫入其坐標(biāo),然后在第5行寫入指示符29+j,在第6行寫入坐標(biāo)z。此時模塊Raider 3D就轉(zhuǎn)向步驟55。
反復(fù)進行步驟55和56的方法,直至在步驟55中的回答變成否定,這就是說,在文件“DXF”中寫入的三角形的點j等于3。在這個操作點上,模塊Raider 3D17將寫入三角形i的三個點。
因此當(dāng)i的值是1,即對于第一個三角形時,對于三角形1的點n1=1,模塊Raider 3D17將在文件“DXF”中相繼寫入下面各行100.02010.0300.0然后對于三角形1的點n2=2,寫入下面各行110.02110.031-10.0然后對于三角形1的點n3=3,寫入下面各行120.0220.0320.0當(dāng)在步驟55中在文件“DXF”中寫入的點j等于3時,模塊Raider3D17就到達步驟57。在步驟57的開頭,模塊Raider 3D將在文件“DXF”中以在上面所指出的形式寫入三角形i的三個點。然而,對于一個面,DXF規(guī)范需要4個點,如在前面所述,號碼是n3的第三個點是重復(fù)的,按照DXF的習(xí)慣,這意味著所描述的這個面是個三角形。
為此,在步驟57中,模塊Raider 3D17在文件的第一行中寫入該面第四點的坐標(biāo)x,即13指示符。同樣,在第3行寫入坐標(biāo)y,即23的指示符,在第4行寫入坐標(biāo)y,在第5行寫入坐標(biāo)z,即33的指示符,在第6行寫入坐標(biāo)z。
在i的數(shù)值是1的情況下,即對于第一個三角形,根據(jù)在步驟57中的表現(xiàn),模塊Raider 3D17在文件“DXF”中寫入如下幾行130.0230.0330.0這重復(fù)了當(dāng)前面的前一個點,即第一個三角形的第三個點的坐標(biāo)。
在步驟57的出口處,模塊Raider 3D17轉(zhuǎn)向步驟54,使用上面對于第一個三角形所述的同樣方法,以輸出下一個三角形,直至在步驟54中的回答是肯定的。
當(dāng)在步驟54中的回答是肯定時,即存儲在共享存儲器16中的前一個三角形完全被寫入文件“DXF”中,模塊Raider 3D17就到達步驟58。在步驟58中,模塊Raider 3D17寫入一節(jié)的最后兩行,即如下的兩行0ENDSEC然后是將輸出文件的結(jié)尾引入到DXF格式的兩行,即0EOF然后,總是在步驟58中,模塊Raider 3D17關(guān)閉了文件“DXF”,此時它將是在如下表3中存在的形式。
表3
0SECTION0ENTITIES03DFACE100.0200.0300.0110.02110.031-10.0120.0220.0320.0130.0230.0330.003DFACE100.020
0.030-10.0110.0210.0310.0120.0220.032-10.01323230.033-10.00ENDSEC0EOF此時,按照本發(fā)明第二個實施模式的與幾何型實體有關(guān)的數(shù)據(jù)輸出方法就結(jié)束了,正如所看到的,這將能夠輸出由圖形應(yīng)用11建立和/或處理的幾何模型10,而無須知道此應(yīng)用的數(shù)據(jù)格式,無須對此應(yīng)用11做任何改變,也無須開發(fā)對此應(yīng)用11的特殊的程序。
當(dāng)然,本發(fā)明的方法并不限于截取和輸出如上所述的點和三角形的圖形函數(shù)。特別是在前面所述的實施例中,用于產(chǎn)生點的函數(shù)是函數(shù)glVetrex3fv,但是對于在該技術(shù)中的技術(shù)人員來說,前面的敘述顯然適合于各種glVetrex指令集合。
另外,由前面的敘述完全應(yīng)該清楚,本發(fā)明的方法能夠輸出所需的各種OpenGL函數(shù),非限定性地比如定義四邊形的函數(shù)、定義表面取向信息,比如在點上正交的函數(shù)、定義顏色、表面組織、透明度信息的函數(shù)。
另外,本方法不限于輸出如在所述實施例中那樣簡單的幾何結(jié)構(gòu)的輸出,對于先有技術(shù)的專業(yè)人員來說,顯然本發(fā)明的方法能夠輸出任何幾何模型,因為各種模型結(jié)構(gòu),無論如何復(fù)雜,都將借助于點、三角形、四邊形等的原程序來顯示,因此使用如上所述的方法可將它們輸出。
同樣,顯然出于簡化敘述的原因,假設(shè)所有使用的幾何結(jié)構(gòu),特別是點,都是清晰的,因此用不著試圖以任何方式將使用的表拆分或簡化。實際上,無論是通過程序DLL15在點表和三角形表中記錄時,還是在通過模塊Raider 3D17輸出到存儲單元18中的時候,顯然可通過適當(dāng)?shù)姆椒▌h除重復(fù)的元素。
另外,本方法不限于敘述的使用OpenGL圖形庫的實施模式,對于本技術(shù)領(lǐng)域的專業(yè)人員來說,顯然如上所述的方法也是可以應(yīng)用于各種其他的能夠用于建?;驇缀谓?0的應(yīng)用的顯示函數(shù)庫12,以非限定性的方式比如Microsoft的DirectX顯示庫。
另外,本發(fā)明的方法僅通過在希望的應(yīng)用目錄11中安裝使用本發(fā)明方法的DLL15,而非在Windows操作系統(tǒng)目錄中,只能用于所需的特定應(yīng)用11,而非用于在建模和/或處理系統(tǒng)1中存在的整體圖形應(yīng)用。
因此按照前面的敘述可以看出,本發(fā)明的方法能夠由應(yīng)用11模型化的實施例10的幾何信息,無須開發(fā)對此應(yīng)用11是特定的程序,無須知道后者使用的數(shù)據(jù)格式,只須截取此應(yīng)用11用來顯示其幾何模型10的圖形函數(shù)和圖形原程序。
考慮到此,為了把輸出的與幾何實體有關(guān)的數(shù)據(jù)存儲在存儲單元18中使用的數(shù)據(jù)格式將是一種已知和開放的格式,比如在第一種實施模式中存在的格式,或者是市場的標(biāo)準(zhǔn)格式,比如DXF格式,或者是特殊應(yīng)用所需的其他格式,將很容易把這些數(shù)據(jù)輸出到各種其他的所需幾何建?;蛱幚硐到y(tǒng)中。
因此,本發(fā)明的方法可應(yīng)用于各個領(lǐng)域中,特別是應(yīng)用在各種需要在不同系統(tǒng)之間交換與幾何實體有關(guān)的數(shù)據(jù)的領(lǐng)域中,比如在使用與幾何實體有關(guān)的數(shù)據(jù)的各種產(chǎn)業(yè)和服務(wù)業(yè)中所遇到的問題,比如小汽車或飛行器制造、工業(yè)設(shè)計、建筑物設(shè)計和/或建筑學(xué)等產(chǎn)業(yè)和服務(wù)業(yè)、視頻游戲等領(lǐng)域。
權(quán)利要求
1.輸出與用計算機系統(tǒng)(1)建模和/或處理幾何實體(10)有關(guān)的數(shù)據(jù)的方法,包括至少一個能夠執(zhí)行計算機程序(11、12、15)的中央處理單元、一個在執(zhí)行所述計算機程序(11、12、15)的過程中能夠存儲所述計算機程序(11、12、15)和與幾何實體有關(guān)的數(shù)據(jù)的存儲器(16)和至少一個永久存儲與幾何實體有關(guān)的數(shù)據(jù)的存儲單元(18),所述計算機系統(tǒng)(1)包括至少一個建模和/或處理程序和至少一個與幾何實體有關(guān)的數(shù)據(jù)的顯示程序,所述至少一個建模和/和處理程序(11)通過調(diào)用位于所述至少一個顯示程序(12)中的顯示函數(shù)將待顯示的與幾何實體有關(guān)的數(shù)據(jù)傳遞到所述至少一個顯示程序(12)中,所述待被所述顯示程序(12)顯示的數(shù)據(jù),以被所述至少一個幾何實體(10)的建模和/或處理程序(11)調(diào)用的所述顯示函數(shù)參數(shù)的形式,被所述至少一個建模和/或處理程序(11)傳遞到所述至少一個顯示程序中,所述顯示函數(shù)能夠顯示一定量的與幾何實體(10)有關(guān)的數(shù)據(jù),其特征在于,與幾何實體(10)有關(guān)的數(shù)據(jù)的輸出程序(15)被代入到所述至少一個顯示程序(12)中,所述輸出程序(15)具有與所述至少一個顯示程序(12)相同的與幾何實體(10)有關(guān)數(shù)據(jù)的顯示函數(shù),所述輸出程序(15)的與幾何實體有關(guān)數(shù)據(jù)的所述顯示函數(shù)具有與所述至少一個顯示程序(12)的相應(yīng)函數(shù)相同的參數(shù),所述至少一個幾何實體建模和/或處理程序(11)以明顯的方式調(diào)用所述輸出程序(15)的函數(shù)以代入所述至少一個顯示程序(12)的相應(yīng)的函數(shù)。
2.如權(quán)利要求1的方法,其中所述至少一個建模和/或處理程序(11)是計算機輔助設(shè)計類程序,即CAD類程序。
3.如權(quán)利要求1或2的方法,其中所述至少一個建模和/或處理程序(11)是視頻游戲類的程序。
4.如前面的權(quán)利要求中任何一項的方法,其中當(dāng)所述至少一個建模和/或處理程序(11)調(diào)用所述輸出程序(15)的一個所述顯示函數(shù)時,所述輸出程序(15)以適當(dāng)?shù)母袷綄?shù)據(jù)存儲在所述至少一個存儲單元(18)中,該數(shù)據(jù)來源于由所述輸出程序(15)把所述至少一個建模和/或處理程序(11)調(diào)用到所述輸出程序(15)的所述顯示函數(shù)中的處理。
5.如前面的權(quán)利要求中任何一項的方法,其中當(dāng)所述至少一個建模和/或處理程序(11)調(diào)用所述輸出程序(15)的一個所述顯示函數(shù)時,所述輸出程序(15)調(diào)用所述顯示程序(12)的顯示函數(shù),該顯示函數(shù)相對于所述輸出程序(15)調(diào)用的顯示函數(shù)其調(diào)用參數(shù)與與所述輸出程序(15)的函數(shù)調(diào)用的當(dāng)前參數(shù)是相同的。
6.如權(quán)利要求5的方法,其中所述被調(diào)用的顯示程序是其中所述輸出程序被代入了的所述顯示程序(12)。
7.如權(quán)利要求5的方法,其中所述被調(diào)用的顯示程序是與其中所述輸出程序被代入了的顯示程序不同的顯示程序(12)。
8.如前面的權(quán)利要求中任何一項的方法,其中所述計算機系統(tǒng)(1)還包括至少一個圖形顯示裝置(13),所述至少一個顯示裝置(13)包括至少一個圖像刷新和/或顯示存儲器,所述顯示程序(12)向所述至少一個顯示裝置(13)發(fā)出指令,使由所述顯示程序接收的顯示函數(shù)的所述調(diào)用以點的形式數(shù)值化,所述顯示裝置(13)把所述點存儲在所述圖像刷新和/或顯示存儲器中,此點來源于對所述至少一個顯示程序(12)接收的顯示函數(shù)調(diào)用進行的所述數(shù)值化。
9.如權(quán)利要求8的方法,其中所述計算機系統(tǒng)(1)還包括至少一個圖形顯示器(14),而且其中所述圖像刷新和/或顯示存儲器被所述至少一個顯示裝置(13)讀出,所述至少一個顯示裝置(13)在所述至少一個圖形顯示器(14)上顯示從所述圖像刷新和/或顯示存儲器中重新讀出的所述點。
10.如權(quán)利要求8或9的方法,其中被所述輸出程序(15)進行的數(shù)據(jù)輸出被至少一個被所述至少一個建模和/或處理程序(11)傳遞到所述輸出程序(15)中的特定圖形指令所啟動。
11.如權(quán)利要求10的方法,其中啟動所述數(shù)據(jù)輸出的所述至少一個特定的圖形指令是促使完成所述調(diào)用在所述圖像刷新和/或顯示存儲器中的所述點接收的圖形函數(shù)的所述數(shù)值化的指令。
12.如權(quán)利要求10或11的方法,其中所述至少一個顯示裝置(13)包括至少兩個圖像刷新和/或顯示存儲器,而且其中所述促使所述輸出的指令是促使將所述至少兩個圖像刷新和/或顯示存儲器中的一個切換到所述至少兩個圖像刷新和/或顯示存儲器中的另一個的指令。
13.如前面的權(quán)利要求中任何一項的方法,其中當(dāng)將所述建模和/或處理程序(11)調(diào)用所述輸出程序(15)的所述輸出函數(shù)時,所述輸出程序(15)以適當(dāng)?shù)母袷綄碓从谟伤鲚敵龀绦?15)進行的調(diào)用到所述輸出程序(15)的顯示函數(shù)的處理所得到的數(shù)據(jù)存儲在所述存儲器(16)中。
14.如權(quán)利要求13的方法,其中所述計算機系統(tǒng)(1)還通過在所述存儲器(16)中重新讀出來源于所述由所述輸出程序(15)進行的處理得到的數(shù)據(jù)來執(zhí)行實用程序(17)。
15.如權(quán)利要求14的方法,其中讀出所述存儲器(16)的所述實用程序(17)以適當(dāng)?shù)母袷綄碓从谟伤鰪乃龃鎯ζ?16)中重新讀出的所述輸出程序進行的處理所得到的所述數(shù)據(jù)存儲在所述至少一個存儲單元(18)中。
16.如權(quán)利要求14或15的方法,其中所述實用程序(17)借助于適當(dāng)?shù)膶λ鲋辽僖粋€顯示程序(12)的顯示函數(shù)進行的調(diào)用來顯示從所述存儲器(16)中重新讀出的數(shù)據(jù)。
17.如前面的權(quán)利要求中任何一項的方法,其中被代入所述輸出程序(15)的至少一個所述顯示程序(12)符合Silicon Graphics公司的OpenGL規(guī)范。
18.如權(quán)利要求17的方法,其中促使所述輸出的所述至少一個指令是OpenGL指令“wglSwapBuffers”和/或OpenGL指令“glFlush”。
19.如權(quán)利要求1~16中任何一項的方法,其中被代入所述輸出程序(15)的至少一個顯示程序(12)符合Microsoft公司的DirectX規(guī)范。
20.如前面的權(quán)利要求中任何一項的方法,其中所述與幾何實體有關(guān)的數(shù)據(jù)包括幾何數(shù)據(jù)。
21.如權(quán)利要求20的方法,其中所述幾何數(shù)據(jù)是二維型和/或三維型的。
22.如權(quán)利要求20或21中之一的方法,其中所述幾何數(shù)據(jù)包括點數(shù)據(jù)和/或具有兩個點的線段數(shù)據(jù)和/或涉及三角形的數(shù)據(jù)和/或涉及四邊形的數(shù)據(jù)和/或涉及多邊形的數(shù)據(jù)。
23.如權(quán)利要求20~22中之一的方法,其中所述幾何數(shù)據(jù)與線形和/或面形和/或體形幾何實體有關(guān)。
24.如權(quán)利要求23的方法,其中與幾何實體有關(guān)的數(shù)據(jù)還包括與至少一個與至少一個所述線形和/或面形和/或體形實體正交的向量有關(guān)的幾何數(shù)據(jù)。
25.如前面的權(quán)利要求中任何一項的方法,其中所述與幾何實體有關(guān)的數(shù)據(jù)包括顏色數(shù)據(jù)和/或結(jié)構(gòu)數(shù)據(jù)。
26.輸出與用計算機系統(tǒng)(1)建模和/或處理幾何實體(10)有關(guān)的數(shù)據(jù)的系統(tǒng),所述用于建模和/或處理幾何實體(10)的計算機系統(tǒng)(1)包括至少一個能夠執(zhí)行計算機程序(11、12、15)的中央處理單元、一個在執(zhí)行所述計算機程序(11、12、15)的過程中能夠存儲所述計算機程序(11、12、15)和與幾何實體有關(guān)數(shù)據(jù)的存儲器(16)和至少一個能夠永久存儲與幾何實體有關(guān)的數(shù)據(jù)的存儲單元(18),所述計算機系統(tǒng)(1)包括至少一個幾何實體(10)的建模和/或處理程序(11)和至少一個與幾何實體有關(guān)的數(shù)據(jù)的顯示程序(12),所述至少一個建模和/或處理程序(11)通過調(diào)用位于至少一個所述顯示程序中的顯示函數(shù),將待顯示的與幾何實體(10)有關(guān)的數(shù)據(jù)傳遞到所述至少一個顯示程序(12)中,所述待由所述顯示程序(12)顯示的數(shù)據(jù),以被所述至少一個幾何實體(10)建模和/或處理程序(11)調(diào)用的所述顯示函數(shù)的參數(shù)的形式被所述至少一個建模和/或處理程序(11)傳遞到所述至少一個顯示程序(12)中,所述顯示函數(shù)能夠顯示一定量的與幾何實體有關(guān)的數(shù)據(jù),其特征在于,該系統(tǒng)使用如前面各項權(quán)利要求中任何一項的方法。
全文摘要
本發(fā)明涉及輸出與用計算機系統(tǒng)(1)建模和/或處理的二維或三維幾何實體(10)有關(guān)的數(shù)據(jù)的方法,所述計算機系統(tǒng)(1)包括至少一個建模和/或處理程序(11)和至少一個顯示程序(12),所述至少一個建模和/或處理程序(11)通過調(diào)用位于所述至少一個顯示程序(12)中的函數(shù),將待顯示的與幾何實體(10)有關(guān)的數(shù)據(jù)傳遞到至少一個顯示程序(12)中,其特征在于,與幾何實體(10)有關(guān)的數(shù)據(jù)的輸出程序(15)被代入到至少一個所述顯示程序(12)中,所述輸出程序(15)具有與所述至少一個顯示程序(12)相同的顯示函數(shù)。
文檔編號G06F17/50GK1526098SQ01823444
公開日2004年9月1日 申請日期2001年7月4日 優(yōu)先權(quán)日2001年7月4日
發(fā)明者F·李馬思尼, F 李馬思尼 申請人:Okyz公司