專利名稱:交互信息生成方法及系統(tǒng)的制作方法
技術(shù)領域:
本發(fā)明涉及計算機圖像技術(shù),尤其涉及一種在應用繪圖引擎的程 序的渲染過程中生成交互信息的方法及其系統(tǒng)。
背景技術(shù):
計算機圖像技術(shù)已被廣泛的應用在二維顯示屏幕的圖像表示,這 種圖像表示已經(jīng)可以達到非常細致的程度。在顯示屏幕上所要表示的 顯示對象是以圖形圖元為基本單位的,通過硬件或軟件方式可以對這 些圖元進行圖像渲染或繪圖,進而得到顯示屏幕中各個顯示對象的視 圖。所謂圖像渲染是指將基于對象的高級描述轉(zhuǎn)換為在顯示設備上顯
示的圖形化圖像的過程,以3D渲染為例,圖像渲染指的是由提供繪 圖引擎的顯卡將3D對象或場景的數(shù)學模型轉(zhuǎn)換為在顯示屏上顯示的 位圖(Bitmap)圖像的過程。
繪圖引擎是顯卡提供的應用編程接口 (API)。只有通過調(diào)用繪 圖引擎,才可以使顯卡執(zhí)行渲染操作。在將繪圖引擎和顯卡看作是一 體的時,不需要對其加以區(qū)分。
執(zhí)行渲染還可以使用著色器(shader)。著色器應用于計算機圖 形學領域,指一組供計算機圖形資源在執(zhí)行渲染任務時使用的指令。 程序員將著色器應用于圖形處理器(GPU)的可編程流水線,來實現(xiàn) 三維應用程序。這樣的圖形處理器有別于傳統(tǒng)的固定流水線處理器, 為GPU編程帶來更高的靈活性和適應性。此外,著色器被用來在渲 染的同時處理大量的數(shù)據(jù),比如屏幕上的一整塊像素群,或者一個模 型結(jié)構(gòu)的所有頂點。并行計算適用于這樣的情況,而且當今的GPU 也設計有多核結(jié)構(gòu)來極大的提高處理效率。
目前,計算機應用程序中有很多在運行過程中動態(tài)生成繪制圖元,并在顯示屏上渲染出動態(tài)圖像的基于繪圖引擎的應用程序。由于 這類應用程序極富表現(xiàn)力,因此被廣泛應用在醫(yī)療、娛樂、科研以及 互聯(lián)網(wǎng)服務等方面。以互聯(lián)網(wǎng)服務為例,包含這類應用程序的客戶終 端通常會吸引大量的用戶使用。這類應用程序通常都比較復雜,開發(fā) 成本很高,如果在封裝之后的程序上擴展應用將是非常困難且高成本 的,因而在不修改封裝程序的情況下自由擴充原有程序的功能成為一 種需求。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種在圖元場景渲染中生成交互信息的方 法及系統(tǒng),能夠在基于繪圖引擎的圖元場景渲染程序運行期間生成人 機交互信息,為開發(fā)擴展的人機交互程序提供基礎信息數(shù)據(jù)。
為實現(xiàn)本發(fā)明的目的,本發(fā)明提供了一種在圖元場景渲染中生成
交互信息的方法,在圖元場景渲染過程中,還包括以下步驟
將預先根據(jù)上層應用需求確定的圖元相關(guān)的交互信息數(shù)據(jù)設置 到繪圖引擎中;
將根據(jù)上層應用需求確定的繪圖引擎支持的對所迷交互信息數(shù)據(jù)
的處理方式參數(shù)設置到繪圖引擎中處理;
對設置了所述交互信息數(shù)據(jù)和處理方式參數(shù)的圖元場景執(zhí)行渲 染搡作,將所述圖元對應的交互信息數(shù)據(jù)寫入顯示緩存,以在顯示緩 存中生成所述圖元場景的交互信息映射圖。
進一步的,所述根據(jù)上層應用需求確定圖元相關(guān)的交互信息數(shù)據(jù)
的操作包括
由擴展的上層應用需求確定圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并 由擴展的上層應用需求確定以紋理色的方式在繪圖引擎中存儲和設置交 互信息數(shù)據(jù),根據(jù)所述內(nèi)容分量合成出單一紋理色。
進一步的,所述根據(jù)上層應用需求確定圖元相關(guān)的交互信息數(shù)據(jù) 的操作包括
由擴展的上層應用需求確定圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應用需求確定以紋理圖的方式在繪圖引擎中存儲和設置交 互信息數(shù)據(jù),按照預設精度的分辨率生成位圖作為交互信息數(shù)據(jù)紋理 圖,并將所述內(nèi)容分量中的交互信息數(shù)據(jù)保存到該位圖中,使所述位 圖中的像素所確定的數(shù)據(jù)單元中保存與該^^素對應的交互信息數(shù)據(jù)。
進一步的,所述根據(jù)上層應用需求確定圖元相關(guān)的交互信息數(shù)據(jù)
的操作包括
由擴展的上層應用需求確定使用存儲于繪圖引擎中的、與圖元相關(guān) 的數(shù)據(jù)作為圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應用需求 確定所述交互信息數(shù)據(jù)的內(nèi)容分量在繪圖引擎中的使用和設置方式。 進一步的,設定所迷處理方式參數(shù)的操作包括 設定表示直接使用所迷交互信息數(shù)據(jù)進行著色的處理方式參數(shù) 到繪圖引擎中。
先由擴展的上層應用需求確定所述交互信息數(shù)據(jù)的內(nèi)容分量的 數(shù)學運算合并方式,并根據(jù)所述數(shù)學運算合并方式將這些運算的操作、 操作數(shù)和操作順序設定到繪圖引擎中。
進一步的,在對設置了所述交互信息數(shù)據(jù)的圖元場景執(zhí)行渲染操 作之前,還可以包括去除渲染特效參數(shù)的操作。
為實現(xiàn)上述目的,本發(fā)明還提供了一種圖元場景渲染中交互信息 生成系統(tǒng),包括
交互信息數(shù)據(jù)設置模塊,用于將預先根據(jù)上層應用需求確定的圖 元相關(guān)的交互信息數(shù)據(jù)設置到繪圖引擎中;
處理方式參數(shù)設置才莫塊,用于將才艮據(jù)上層應用需求確定的繪圖引 擎支持的對所述交互信息數(shù)據(jù)的處理方式參數(shù)設置到繪圖引擎中;
渲染模塊,用于對設置了所述交互信息數(shù)據(jù)和處理方式參數(shù)的圖 元場景執(zhí)行渲染操作,將所述圖元對應的交互信息數(shù)據(jù)寫入顯示緩存, 以在顯示緩存中生成所述圖元場景的交互信息映射圖。
進一步的,系統(tǒng)還包括交互信息數(shù)據(jù)生成模塊,用于由擴展的上 層應用需求確定圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應 用需求確定以紋理色的方式在繪圖引擎中存儲和設置交互信息數(shù)據(jù),根據(jù)所述內(nèi)容分量合成出單一紋理色;或由擴展的上層應用需求確定圖 元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應用需求確定以紋理圖 的方式在繪圖引擎中存儲和設置交互信息數(shù)據(jù),按照預設精度的分辨率 生成位圖作為交互信息數(shù)據(jù)紋理圖,并將所述內(nèi)容分量中的交互信息 數(shù)據(jù)保存到該位圖中,使所述位圖中的像素所確定的數(shù)據(jù)單元中保存 與該像素對應的交互信息數(shù)據(jù);或由擴展的上層應用需求確定使用存儲 于繪圖引擎中的、與圖元相關(guān)的數(shù)據(jù)作為圖元的交互信息數(shù)據(jù)的內(nèi)容分 量,并由擴展的上層應用需求確定所述交互^f言息數(shù)據(jù)的內(nèi)容分量在繪圖 引擎中的使用和i殳置方式。
進一步的,系統(tǒng)還可以包括
狀態(tài)重設模塊,用于在對設置了所述交互信息數(shù)據(jù)的圖元場景執(zhí) 行渲染操作之前,去除渲染特效參數(shù)的影響。
為實現(xiàn)本發(fā)明的目的,本發(fā)明提供了一種圖元場景渲染中生成交 互信息的方法,在圖元場景渲染過程中,還包括以下步驟
定義繪圖引擎支持的著色器代碼;
將定義好的著色器代碼加載到繪圖引擎中;以及
對繪圖引擎執(zhí)行渲染操作,使繪圖引擎執(zhí)行之前設定的著色器代 碼,從而生成交互信息映射圖。
為實現(xiàn)上述目的,本發(fā)明還提供了一種圖元場景渲染中交互信息 生成系統(tǒng),包括
加栽模塊,用于接收定義好的著色器代碼,并通過繪圖引擎的接 口將接收到的著色器代碼加栽到繪圖引擎中;和
執(zhí)行模塊,用于對繪圖引擎執(zhí)行渲染操作,使繪圖引擎執(zhí)行之前 設定的著色器代碼,從而生成交互信息映射圖。
基于上述技術(shù)方案,本發(fā)明在基于繪圖引擎的圖元場景渲染程序 運行期間插入用于生成人機交互信息數(shù)據(jù)的邏輯代碼,這些生成的交 互信息被存入顯示緩存,且與原場景畫面的屏幕坐標相對應,從而在 不修改應用程序的情況下生成附加的交互信息映射圖,該圖為交互信 息驅(qū)動的擴展應用提供了基礎數(shù)據(jù)。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請 的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)
成對本發(fā)明的不當限定。在附圖中
圖l為根據(jù)本發(fā)明第一實施例的圖元場景渲染中生成交互信息的 方法的流程示意圖。
圖2為根據(jù)本發(fā)明第 一 實施例的方法的 一 個應用實例的流程示意圖。
圖3為本發(fā)明交互信息映射圖的示意圖。
圖4為本發(fā)明顯示緩存與顯示屏之間的關(guān)系示意圖。
圖5為本發(fā)明應用中讀取交互信息的方法的一實例的流程示意圖。
圖6為根據(jù)本發(fā)明第一實施例的圖元場景渲染中生成交互信息的 系統(tǒng)的一實例的結(jié)構(gòu)示意圖。
圖7為根椐本發(fā)明第一實施例的圖元場景渲染中生成交互信息的 系統(tǒng)的另一實例的結(jié)構(gòu)示意圖。
圖8為根據(jù)本發(fā)明第二實施例的圖元場景渲染中生成交互信息的 方法的流程示意圖。
圖9為根據(jù)本發(fā)明第二實施例的圖元場景渲染中生成交互信息的 系統(tǒng)的一實例的結(jié)構(gòu)示意圖。
具體實施例方式
現(xiàn)在將以具體的、示例性實施例描述本發(fā)明。應該理解,本發(fā)明 不限于所披露的示例性實施例。還應該理解,目前所披露的基于執(zhí)行 階段信息來排列圖形元素的方法和裝置的每一個特征并非都是實現(xiàn)所 附權(quán)利要求任一 具體權(quán)項要求保護的發(fā)明必不可少的。描述設備的多 個元件和特征是為了使本發(fā)明完全能夠得以實施。還應該理解的是, 在本說明書中,在表示或者描述處理或方法之處,方法的步驟可以按
ii照任何順序執(zhí)行或者同時執(zhí)行,除非從上下文中顯然可以看出一個步 驟依賴于先前執(zhí)行的另 一步驟。
下面通過附圖和實施例,對本發(fā)明的才支術(shù)方案做進一步的詳細描述。
在描述本發(fā)明技術(shù)方案之前,先給出一些技術(shù)名詞的解釋,如下 繪圖引擎控制計算機顯卡運作的程序接口,本文將這些接口和 顯卡看作一個整體,并稱之為繪圖引擎;
圖元場景在二維或三維空間中以特定狀態(tài)擺放的圖元集合;
圖元構(gòu)成圖元場景的元素,如圓,三角,樓房、車等;
材質(zhì)描述圖元表面反光或發(fā)光特性的參數(shù);
紋理描述圖元表面顏色特性或凹凸特性的參數(shù);
紋理圖^皮繪圖引擎應用到圖元表面用以表現(xiàn)圖元紋理的位紋理色紋理位圖指定像素點的顏色值;
渲染將圖元場景變?yōu)橐环矫鎴D片的工作一平面化,由繪圖引 擎操作顯卡完成;
著色在渲染過程中根據(jù)設定的參數(shù)確定圖元在平面化后各像素 點的顏色;
渲染狀態(tài)渲染圖元時所用的控制參數(shù)值;
反射、漫射使渲染后圖元表面上的一點帶有周圍圖元顏色的成
分;
透明使渲染后圖元表面上的 一點帶有被其遮擋的圖元相應點的 顏色成分;
霧使渲染后圖元表面上的一點帶有某種特定顏色成分; 渲染目標存放渲染結(jié)果的緩沖區(qū)域; 分辨率指定面積內(nèi)的像素數(shù)。
著色器用戶自定義的渲染代碼,用于可編程流水線的渲染環(huán)節(jié)。 顯示緩存(顯存)用于存放顯示處理過程中的臨時數(shù)據(jù)的緩沖 存儲區(qū)。
如圖l所示,圖1為根據(jù)本發(fā)明第一實施例的圖元場景渲染中生定流水線處理器
的實現(xiàn)。在繪圖引擎實現(xiàn)的圖元場景渲染流程中,還包括以下步驟
步驟101、將預先根據(jù)上層應用需求確定的圖元相關(guān)的交互信息 數(shù)據(jù)設置到繪圖引擎中;
步驟102、將根據(jù)上層應用需求確定的繪圖引擎支持的對所述交互 信息數(shù)據(jù)的處理方式l^:設置到繪圖引擎中;
步驟103、對設置了所述交互信息數(shù)據(jù)和處理方式參數(shù)的圖元場 景執(zhí)行渲染操作,將所述圖元對應的交互信息數(shù)據(jù)寫入顯示緩存,以 在顯示緩存中生成所述圖元場景的交互信息映射圖。
在本實施例的步驟101中,在將交互信息數(shù)據(jù)到繪圖引擎之前, 可以預先根據(jù)上層應用請求確定交互信息數(shù)據(jù)的內(nèi)容,并且確定該交 互信息數(shù)據(jù)在所用繪圖引擎中的存儲和i殳置方式。例如,由擴展的上 層應用需求確定圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應 用需求確定以紋理色的方式在繪圖引擎中存儲和設置交互信息數(shù)據(jù),根 據(jù)所述內(nèi)容分量合成出單一紋理色。
這里的內(nèi)容分量可以理解為該圖元的屬性,舉例來說,根據(jù)上層 需求確定某一圖元在附加應用中有兩個屬性的需求,分別是"是否可 被左鍵單擊"和"是否可被右鍵單擊",這兩個屬性均為布爾型屬性, 因此可以確定該圖元的交互信息數(shù)據(jù)的內(nèi)容分量為這兩個屬性,在表 示這兩個屬性時,可以采用16進制的通用表示法,例如用0xl表示第 l位的值為l,即表示"可被左鍵單擊",0x2表示第2位為l,即表 示"可被右鍵點擊"。在得到上述內(nèi)容分量后,可以通過位或的方式 合成這兩個內(nèi)容分量,得到紋理色0x3,該數(shù)值可以被設置為圖元的 交互信息數(shù)據(jù)。
上述例子僅用來說明內(nèi)容分量的含義以及紋理色的合成過程,不 應被理解為對交互信息數(shù)據(jù)的設置操作的具體限制,采用其他表示屬 性的表示方法以及紋理色的合成方法均應在本發(fā)明的保護范圍之內(nèi)。
交互信息數(shù)據(jù)的設置并不局限于紋理色,還可以擴展到紋理圖, 包含更多顏色特征的紋理圖可以表示更豐富的交互信息。在預先確定交互信息數(shù)據(jù)時,由擴展的上層應用需求確定圖元的交互信息數(shù)據(jù)的 內(nèi)容分量,并由擴展的上層應用需求確定以紋理圖的方式在繪圖引擎中 存儲和設置交互信息數(shù)據(jù),按照預設精度的分辨率生成位圖作為交互 信息數(shù)據(jù)紋理圖,并將所述內(nèi)容分量中的交互信息數(shù)據(jù)保存到該位圖 中,使所述位圖中的像素所確定的數(shù)據(jù)單元中保存與該像素對應的交 互信息數(shù)據(jù)。
在一個圖元中可以根據(jù)上層應用的需求:沒置更復雜的交互信息, 例如在圖元中增加操作區(qū)域的屬性,即在一個圖元中設置多個可操作 區(qū)域,每個區(qū)域可以設置不同的屬性。這些屬性在本發(fā)明中同樣被定 義為內(nèi)容分量,這些內(nèi)容分量被存儲到位圖中的像素所確定的數(shù)據(jù)單 元中。這些內(nèi)容分量所表示的交互信息數(shù)據(jù)可以包括點對應的圖元表 面坐標、點所屬圖元表面區(qū)域號,點的交互類型信息以及圖元的標識 號、圖元所屬的類別、圖元所關(guān)聯(lián)的場景或其他圖元等。
除了上述紋理色和紋理圖的形式之外,還可以在圖元的某個或某 些相關(guān)的點(例如圖元的某個或某些頂點)存儲交互信息數(shù)據(jù)的多個 內(nèi)容變量的數(shù)據(jù)結(jié)構(gòu),例如包括世界坐標值、漫射顏色值、高光顏色 值、貼圖坐標值、自定義交互屬性值(例如可被鼠標左鍵點擊)等內(nèi) 容變量。即由擴展的上層應用需求確定使用存儲于繪圖引擎中的、與圖 元相關(guān)的數(shù)據(jù)作為圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應 用需求確定所述交互信息數(shù)據(jù)的內(nèi)容分量在繪圖引擎中的使用和設置方 式。通過在渲染前對將例如以"世界坐標值"作為"漫射顏色值"進行渲 染的交互信息數(shù)據(jù)和處理方式參數(shù)設置到渲染引擎中,從而在實現(xiàn)渲 染目標上生成一張顏色等于世界坐標的交互信息映射圖。
在設定處理方式參數(shù)時,可以直接釆用交互信息數(shù)據(jù)進行著色, 即"以直接使用紋理色或紋理圖或交互信息數(shù)值進行著色"作為處理 方式參數(shù),也可以采用由擴展的上層應用需求確定的交互信息數(shù)據(jù)的 內(nèi)容分量的數(shù)學合并方式進行處理,即"以數(shù)學運算的操作、操作數(shù) 和操作順序,,作為處理方式參數(shù)。
本發(fā)明實施例可以在不修改原應用程序的情況下嵌入到 一般的
14圖元場景渲染過程中,接下來通過圖2的應用實例進一步進行說明。 該應用實例包括以下的流程
步驟201、對圖元進行擺放,即對圖元場景中各個圖元的位置進 行設置,并且設定各個圖元的紋理。
步驟202、設定圖元場景的渲染狀態(tài),這里的渲染狀態(tài)為一些具 體的特效參數(shù),例如反射、漫射、透明或者霧等,這些渲染狀態(tài)會在 渲染后的場景畫面中表現(xiàn)出來。
步驟203、調(diào)用繪圖引擎對該圖元執(zhí)行渲染操作,將原場景該圖 元畫面渲染到顯示緩存中的渲染目標。
步驟204、對圖元的渲染狀態(tài)進行重新i殳定,以將所有的特效參 數(shù)設置為不對渲染發(fā)生作用。
步驟205、將預先根據(jù)上層應用需求確定的圖元場景中圖元相關(guān) 的交互信息數(shù)據(jù)設置到繪圖引擎中,并設定渲染時填充交互信息數(shù)據(jù) 的處理方式參數(shù)。
步驟206、調(diào)用繪圖引擎對設置了交互信息數(shù)據(jù)和處理方式參數(shù) 的圖元場景執(zhí)行渲染操作,將所述圖元對應的交互信息數(shù)據(jù)寫入顯示 緩存,以在顯示緩存中生成所述圖元場景的交互信息映射圖。
與上一實施例相比,本實施例在步驟205-206之前還可以包括步 驟204,即執(zhí)行去除渲染特效參數(shù)的操作。在本實施例中,交互信息 映射圖1的構(gòu)成如圖3所示,其大小與顯示屏幕一致,每一個數(shù)據(jù)單 元2中都包括該數(shù)據(jù)單元對應的交互信息數(shù)據(jù)。圖3中粗線框的范圍 表示某一圖元,該圖元采用紋理色或紋理圖作為交互信息數(shù)據(jù)。
通過以上的渲染流程,在顯示緩存中存入了畫面的渲染目標4和 交互信息映射圖1,參見圖4所示,這兩種渲染目標通過顯示屏幕坐 標關(guān)聯(lián)起來,如渲染目標4所展現(xiàn)的景象中屏幕坐標為(xl,yl)位 置上的點所對應的信息被保存在交互信息映射圖1中對應位置的像素 中。在對圖元場景的渲染完成后,用戶可以直接觀看到渲染目標4所 展示出的場景畫面,而交互信息映射圖1對用戶不可見,且與該渲染 目標4相關(guān)聯(lián)。
1520
下面再通過圖5來說明本發(fā)明應用中讀取交互信息的方法的一個實例,該實施例包括以下步驟
步驟301、根據(jù)上層應用程序的請求獲取相應的屏幕坐標,例如響應鼠標的移動動作,獲取對應的屏幕坐標;
步驟302、讀取顯示緩存內(nèi)存儲的交互信息映射圖中與屏幕坐標對應的交互信息數(shù)據(jù)。
通過圖元場景渲染中生成交互信息,在顯示緩存中就保存了圖元場景的二維畫面圖,以及與其通過屏幕坐標相關(guān)聯(lián)的圖元的交互信息映射圖。當獲得了屏幕坐標時,上層應用就可以通過繪圖引擎從交互信息映射圖中該屏幕坐標所對應的一個或多個數(shù)據(jù)單元里提取出 一個或多個交互信息數(shù)據(jù)。
如圖6所示,為根據(jù)本發(fā)明第一實施例的圖元場景渲染中生成交互信息的系統(tǒng)的一實例的結(jié)構(gòu)示意圖。在本實施例中,系統(tǒng)至少包括交互信息數(shù)據(jù)設置模塊5、處理方式參數(shù)設置模塊6和渲染模塊7。其中交互信息數(shù)據(jù)設置模塊5用于將預先根據(jù)上層應用需求確定的圖元相關(guān)的交互信息數(shù)據(jù)設置到繪圖引擎中。處理方式參數(shù)設置模塊6用于將根據(jù)上層應用需求確定的繪圖引擎支持的對所述交互信息數(shù)據(jù)的處理方式參數(shù)設置到繪圖引擎中。渲染模塊7用于對設置了所述交互信息數(shù)據(jù)和處理方式參數(shù)的圖元場景執(zhí)行渲染操作,將所述圖元對應的交互信息數(shù)據(jù)寫入顯示緩存,以在顯示緩存中生成所述圖元場景的交互信息映射圖。
如圖7所示,為根據(jù)本發(fā)明第一實施例的圖元場景渲染中生成交互信息的系統(tǒng)的另一實例的結(jié)構(gòu)示意圖。與上一實施例相比,本實施例還包括交互信息數(shù)據(jù)生成模塊8,該模塊用于由擴展的上層應用需求確定圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應用需求確定以紋理色的方式在繪圖引擎中存儲和設置交互信息數(shù)據(jù),根據(jù)所述內(nèi)容分量合成出單一紋理色;或由擴展的上層應用需求確定圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應用需求確定以紋理圖的方式在繪圖引擎中存儲和設置交互信息數(shù)據(jù),按照預設精度的分辨率生成位圖作為交互信息數(shù)據(jù)紋理圖,并將所述內(nèi)容分量中的交互信息數(shù)據(jù)保存到該位圖中,使所述位圖中的像素所確定的數(shù)據(jù)單元中保存與該像素
對應的交互信息數(shù)據(jù);或由擴展的上層應用需求確定使用存儲于繪圖引擎中的、與圖元相關(guān)的數(shù)據(jù)作為圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應用需求確定所述交互信息數(shù)據(jù)的內(nèi)容分量在繪圖引擎中的使用和設置方式。
在另一個實施例中,系統(tǒng)中還可以狀態(tài)重設模塊,用于在對設置了所述交互信息數(shù)據(jù)的圖元場景執(zhí)行渲染操作之前,去除渲染特效參數(shù)的影響。
如圖8所示,為根據(jù)本發(fā)明第二實施例的圖元場景渲染中生成交互信息的方法的流程示意圖。本實施例是基于著色器的實現(xiàn)。在繪圖引擎實現(xiàn)的圖元場景渲染流程中,還包括以下步驟
步驟801、定義繪圖引擎支持的著色器代碼。
具體而言,定義繪圖引擎支持的著色器代碼的步驟包括確定交互信息數(shù)據(jù),并定義數(shù)據(jù)處理過程,其中在與圖形處理器(GPU)有關(guān)的編程中,確定交互信息數(shù)據(jù)是指確定用于傳遞和存儲交互信息數(shù)據(jù)的繪圖引擎中的寄存器,該寄存器中的內(nèi)容由上層應用需求確定。而所定義的數(shù)據(jù)處理過程規(guī)定了數(shù)據(jù)處理的實施方式,在運行期間被繪圖引擎執(zhí)行,以將設置到繪圖引擎中的交互信息數(shù)據(jù)進行數(shù)學運算處理,生成圖元表面一個數(shù)據(jù)單元的交互數(shù)據(jù),作為著色器輸出傳遞給繪圖引擎。
在這里,交互信息數(shù)據(jù)是指繪圖引擎在執(zhí)行渲染操作期間生成并存儲繪圖引擎寄存器中的數(shù)據(jù)。這些數(shù)據(jù)可以由著色器代碼直接從繪圖引擎寄存器中讀取。以貼圖為例,當要將游戲場景中的一面墻貼上紋理時,這面墻的4個頂點的坐標是繪圖引擎生成并存儲在繪圖引擎寄存器中,并可由著色器獲得的。當然,繪圖引擎生成的數(shù)據(jù)不限于坐標,還包括其它很多信息,這對本領域技術(shù)人員而言是公知的。
在這里,數(shù)據(jù)處理是指將繪圖引擎中的圖元相關(guān)信息與上層應用確定的交互信息數(shù)據(jù)合并在一起的方式。具體而言,例如,對于32位真彩色顯示應用程序,圖元表面的一個數(shù)據(jù)單元也是32位的,這時可以規(guī)定"數(shù)據(jù)處理過程,,是"加"運算,即高16位存圖元相關(guān)信息,而低16位存交互信息數(shù)據(jù)。當然,也可以是"或"、"異或,,等運算的組合,只要能夠?qū)⑻幚砗蟮臄?shù)據(jù)無誤地分離成原樣就行。
步驟802、將定義好的著色器代碼通過繪圖引擎接口加載到繪圖引擎中。
在成功加載之后,繪圖引擎會在顯存中加載該著色器代碼備渲染時用。
步驟803、對繪圖引擎執(zhí)行渲染操作,使繪圖引擎執(zhí)行之前設定的著色器代碼,從而生成交互信息映射圖。
具體而言,渲染操作可以通過調(diào)用繪圖引擎的渲染操作接口,使繪圖引擎按照定義的數(shù)據(jù)處理過程所規(guī)定的方式,對繪圖引擎中的寄存器中存儲的交互信息數(shù)據(jù)進行數(shù)學處理,并將處理結(jié)果傳遞給繪圖
引擎寫入交互信息映射圖。
在調(diào)用繪圖引擎的渲染操作接口的同時,還可以通過調(diào)用繪圖引擎相應接口將上層應用需求確定交互信息數(shù)據(jù)動態(tài)設置到所述繪圖引擎中的寄存器中,從而使繪圖引擎執(zhí)行著色器數(shù)據(jù)處理過程時以動態(tài)設定的內(nèi)容生成動態(tài)的交互信息數(shù)據(jù)。
以游戲場景舉例,當用戶在上層的游戲應用程序中用鼠標指針選擇某個圖元(例如樹等)時,上層應用程序可以從操作系統(tǒng)中獲取鼠標指針的屏幕坐標信息,并且在顯示緩存中查找該屏幕坐標是否對應有交互信息映射圖中的交互信息(例如圖元平面上的坐標x,y和圖元標識a),如果有,則讀取該交互信息,從而使上層應用程序能夠了解到鼠標指針當前所指的位置是圖元標識為a的圖元的x,y位置,進而利用這些信息進行更復雜的處理。
在根據(jù)本實施例生成了交互信息映射圖之后,可以使用參照圖5
所描述的方法來讀取交互信息。
如圖9所示,為根據(jù)本發(fā)明第二實施例的圖元場景渲染中生成交互信息的系統(tǒng)的一實例的結(jié)構(gòu)示意圖。在本實施例中,系統(tǒng)至少包括加載模塊901和執(zhí)行模塊902。
加栽模塊901接收定義好的著色器代碼,并通過繪圖引擎的接口將接收到的著色器代碼加載到繪圖引擎中。執(zhí)行模塊902對繪圖引擎執(zhí)行渲染操作,使繪圖引擎執(zhí)行之前設定的著色器代碼,從而生成交互信息映射圖。
在另一個系統(tǒng)實施例中,還可以包括著色器代碼定義模塊,用于確定交互信息數(shù)據(jù),并定義數(shù)據(jù)處理過程;其中,確定交互信息數(shù)據(jù)指確定被繪圖引擎支持的、用于傳遞和存儲交互信息數(shù)據(jù)的寄存器,該寄存器中的內(nèi)容由上層應用需求確定;并且所定義的數(shù)據(jù)處理過程規(guī)定了數(shù)據(jù)處理的實施方式,在運行期間被繪圖引擎執(zhí)行,以將設置到繪圖引擎中的交互信息數(shù)據(jù)進行數(shù)學運算處理,生成圖元表面一個數(shù)據(jù)單元的交互數(shù)據(jù),作為著色器輸出傳遞給繪圖引擎。
執(zhí)行模塊902在渲染過程中,可以通過調(diào)用繪圖引擎的渲染操作接口,使繪圖引擎按照定義的數(shù)據(jù)處理過程所規(guī)定的方式,對繪圖引擎中的寄存器中存儲的交互信息數(shù)據(jù)進行數(shù)學處理,并將處理結(jié)果傳遞給繪圖引擎寫入交互信息映射圖。
在另 一個系統(tǒng)實施例中,執(zhí)行模塊902在調(diào)用繪圖引擎的渲染操作接口的同時,還可以通過調(diào)用繪圖引擎相應接口將上層應用需求確
定交互信息數(shù)據(jù)動態(tài)設置到繪圖引擎中的寄存器中,從而使繪圖引擎執(zhí)行著色器數(shù)據(jù)處理過程時以動態(tài)設定的內(nèi)容生成動態(tài)的交互信息數(shù)據(jù)。
本發(fā)明實施例在基于繪圖引擎的圖元場景渲染程序運行期間插入用于生成人機交互信息數(shù)據(jù)的邏輯代碼,這些生成的交互信息被存入顯示緩存,且與原場景畫面的屏幕坐標相對應,從而在不修改應用程序的情況下生成附加的交互信息映射圖,該圖為交互信息驅(qū)動程序提供了基礎數(shù)據(jù)。
本領域普通技術(shù)人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實
19施例的步驟;而前述的存儲介質(zhì)包括ROM、 RAM、》茲碟或者光盤 等各種可以存儲程序代碼的介質(zhì)。
本領域普通技術(shù)人員可以理解,以上出于說明清楚的目的參照不 同功能部件和處理器對本發(fā)明的實施例進行了描述。顯然,在不偏離 本發(fā)明的條件下,可在不同功能部件或處理器之間使用任何合適的功 能分布。例如,所示出的由分立單元或處理器執(zhí)行的功能可由同一單 元或處理器執(zhí)行。因此,僅將針對具體功能部件的描述視為是對用于 提供所述功能的合適裝置的描述,而不表示嚴格的邏輯或物理結(jié)構(gòu)或 組織。
最后應當說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案而
非對其限制;盡管參照較佳實施例對本發(fā)明進行了詳細的說明,所屬
領域的普通技術(shù)人員應當理解依然可以對本發(fā)明的具體實施方式
進 行修改或者對部分技術(shù)特征進行等同替換;而不脫離本發(fā)明技術(shù)方案 的精神,其均應涵蓋在本發(fā)明請求保護的技術(shù)方案范圍當中。
權(quán)利要求
1、一種圖元場景渲染中生成交互信息的方法,在圖元場景渲染過程中,還包括以下步驟將預先根據(jù)上層應用需求確定的圖元相關(guān)的交互信息數(shù)據(jù)設置到繪圖引擎中;將根據(jù)上層應用需求確定的繪圖引擎支持的對所述交互信息數(shù)據(jù)的處理方式參數(shù)設置到繪圖引擎中;對設置了所述交互信息數(shù)據(jù)和處理方式參數(shù)的圖元場景執(zhí)行渲染操作,將所述圖元對應的交互信息數(shù)據(jù)寫入顯示緩存,以在顯示緩存中生成所述圖元場景的交互信息映射圖。
2、 根據(jù)權(quán)利要求1所迷的圖元場景渲染中生成交互信息的方法, 其中所述根據(jù)上層應用需求確定圖元相關(guān)的交互信息數(shù)據(jù)的操作包 括'.由擴展的上層應用需求確定圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并 由擴展的上層應用需求確定以紋理色的方式在繪圖引擎中存儲和設置交 互信息數(shù)據(jù),根據(jù)所述內(nèi)容分量合成出單一紋理色。
3、 根據(jù)權(quán)利要求l所迷的圖元場景渲染中生成交互信息的方法, 其中所述根據(jù)上層應用需求確定圖元相關(guān)的交互信息數(shù)據(jù)的操作包 括由擴展的上層應用需求確定圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并 由擴展的上層應用需求確定以紋理圖的方式在繪圖引擎中存儲和設置交 互信息數(shù)據(jù),按照預設精度的分辨率生成位圖作為交互信息數(shù)據(jù)紋理 圖,并將所述內(nèi)容分量中的交互信息數(shù)據(jù)保存到該位圖中,使所述位 圖中的像素所確定的數(shù)據(jù)單元中保存與該像素對應的交互信息數(shù)據(jù)。
4、 根據(jù)權(quán)利要求1所述的圖元場景渲染中生成交互信息的方法, 其中所述根據(jù)上層應用需求確定圖元相關(guān)的交互信息數(shù)據(jù)的操作包 括由擴展的上層應用需求確定使用存儲于繪圖引擎中的、與圖元相關(guān)的數(shù)據(jù)作為圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應用需求 確定所述交互信息數(shù)據(jù)的內(nèi)容分量在繪圖引擎中的使用和設置方式。
5、 根據(jù)權(quán)利要求1所述的圖元場景渲染中生成交互信息的方法, 其中設定所述處理方式參數(shù)的操作包括設定表示直接使用所述交互信息數(shù)據(jù)進行著色的處理方式參數(shù) 到繪圖引擎中。
6、 根據(jù)權(quán)利要求1所述的圖元場景渲染中生成交互信息的方法,其中設定所述處理方式的操作還包括先由擴展的上層應用需求確定所述交互信息數(shù)據(jù)的內(nèi)容分量的 數(shù)學運算合并方式,并根據(jù)所述數(shù)學運算合并方式將這些運算的操作、操作數(shù)和操作順序設定到繪圖引擎中。
7、 根據(jù)權(quán)利要求1所述的圖元場景渲染中生成交互信息的方法, 其中對設置了所述交互信息數(shù)據(jù)的圖元場景執(zhí)行渲染操作之前,還包 括去除渲染特效參數(shù)的操作。
8、 一種圖元場景渲染中交互信息生成系統(tǒng),包括 交互信息數(shù)據(jù)設置模塊,用于將預先根據(jù)上層應用需求確定的圖元相關(guān)的交互信息數(shù)據(jù)設置到繪圖引擎中;處理方式參數(shù)設置模塊,用于將根據(jù)上層應用需求確定的繪圖引 擎支持的對所述交互信息數(shù)據(jù)的處理方式參數(shù)i殳置到繪圖引擎中;渲染模塊,用于對設置了所述交互信息數(shù)據(jù)和處理方式參數(shù)的圖 元場景執(zhí)行渲染操作,將所述圖元對應的交互信息數(shù)據(jù)寫入顯示緩存, 以在顯示緩存中生成所述圖元場景的交互信息映射圖。
9、 根據(jù)權(quán)利要求8所述的圖元場景渲染中交互信息生成系統(tǒng), 其中還包括交互信息數(shù)據(jù)生成模塊,用于由擴展的上層應用需求確定 圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上層應用需求確定以紋理 色的方式在繪圖引擎中存儲和設置交互信息數(shù)據(jù),根據(jù)所述內(nèi)容分量合 成出單一紋理色;或由擴展的上層應用需求確定圖元的交互信息數(shù)據(jù) 的內(nèi)容分量,并由擴展的上層應用需求確定以紋理圖的方式在繪圖引擎 中存儲和設置交互信息數(shù)據(jù),按照預設精度的分辨率生成位圖作為交互信息數(shù)據(jù)紋理圖,并將所述內(nèi)容分量中的交互信息數(shù)據(jù)保存到該位圖 中,使所述位圖中的像素所確定的數(shù)據(jù)單元中保存與該像素對應的交互信息數(shù)據(jù);或由擴展的上層應用需求確定4吏用存儲于繪圖引擎中的、 與圖元相關(guān)的數(shù)據(jù)作為圖元的交互信息數(shù)據(jù)的內(nèi)容分量,并由擴展的上 層應用需求確定所述交互信息數(shù)據(jù)的內(nèi)容分量在繪圖引擎中的使用和設 置方式。
10、 根據(jù)權(quán)利要求8所述的圖元場景渲染中交互信息生成系統(tǒng), 其中還包括狀態(tài)重設模塊,用于在對設置了所述交互信息數(shù)據(jù)的圖元場景執(zhí) 行渲染操作之前,去除渲染特效參數(shù)的影響。
11、 一種圖元場景渲染中生成交互信息的方法,在圖元場景渲染 過程中,還包括以下步驟定義繪圖引擎支持的著色器代碼; 將定義好的著色器代碼加載繪圖引擎中;以及 對繪圖引擎執(zhí)行渲染操作,使繪圖引擎執(zhí)行之前設定的著色器代 碼,從而生成交互信息映射圖。
12、 根據(jù)權(quán)利要求11所述的圖元場景渲染中生成交互信息的方 法,其中所述定義繪圖引擎支持的著色器代碼的步驟包括確定交互信息數(shù)據(jù),并定義數(shù)據(jù)處理過程;其中,確定交互信息數(shù)據(jù)指確定用于傳遞和存儲交互信息數(shù)據(jù)的 繪圖引擎中的寄存器,該寄存器中的內(nèi)容由上層應用需求確定;并且其中,所定義的數(shù)據(jù)處理過程規(guī)定了數(shù)據(jù)處理的實施方式,在運 行期間被繪圖引擎執(zhí)行,以將設置到繪圖引擎中的交互信息數(shù)據(jù)進行 數(shù)學運算處理,生成圖元表面一個數(shù)據(jù)單元的交互數(shù)據(jù),作為著色器 輸出傳遞給繪圖引擎。
13、 根據(jù)權(quán)利要求12所述的圖元場景渲染中生成交互信息的方 法,其中所述對繪圖引擎執(zhí)行渲染操作的步驟包括通過調(diào)用繪圖引擎的渲染操作接口 ,使繪圖引擎按照定義的數(shù)據(jù) 處理過程所規(guī)定的方式,對所述寄存器中存儲的交互信息數(shù)據(jù)進行數(shù)學處理,并將處理結(jié)果傳遞給繪圖引擎寫入交互信息映射圖。
14、 根據(jù)權(quán)利要求12所述的圖元場景渲染中生成交互信息的方 法,其中所述對繪圖引擎執(zhí)行渲染操作的步驟還包括在調(diào)用繪圖引擎的渲染操作接口的同時,通過調(diào)用繪圖引擎相應 接口將上層應用需求確定交互信息數(shù)據(jù)動態(tài)設置到所述寄存器中,從 而使繪圖引擎執(zhí)行著色器數(shù)據(jù)處理過程時以動態(tài)設定的內(nèi)容生成動態(tài) 的交互信息數(shù)據(jù)。
15、 一種圖元場景渲染中交互信息生成系統(tǒng),包括 加載模塊,用于接收定義好的著色器代碼,并通過繪圖引擎的接口將接收到的著色器代碼加載到繪圖引擎中;和執(zhí)行模塊,用于對繪圖引擎執(zhí)行渲染操作,使繪圖引擎執(zhí)行之前 設定的著色器代碼,從而生成交互信息映射圖。
16、 根據(jù)權(quán)利要求15所述的圖元場景渲染中交互信息生成系統(tǒng), 其中還包括著色器代碼定義模塊,用于確定交互信息數(shù)據(jù),并定義數(shù)據(jù)處理過程;其中,確定交互信息數(shù)據(jù)指確定用于傳遞和存儲交互信息數(shù)據(jù)的 繪圖引擎中的寄存器,該寄存器中的內(nèi)容由上層應用需求確定;并且其中,所定義的數(shù)據(jù)處理過程規(guī)定了數(shù)據(jù)處理的實施方式,在運 行期間被繪圖引擎執(zhí)行,以將設置到繪圖引擎中的交互信息數(shù)據(jù)進行 數(shù)學運算處理,生成圖元表面一個數(shù)據(jù)單元的交互數(shù)據(jù),作為著色器 輸出傳遞給繪圖引擎。
17、 根據(jù)權(quán)利要求16所述的圖元場景渲染中交互信息生成系統(tǒng),其中所迷執(zhí)行模塊通過調(diào)用繪圖引擎的渲染操作接口 ,使繪圖引擎按 照定義的數(shù)據(jù)處理過程所規(guī)定的方式,對所述寄存器中存儲的交互信 息數(shù)據(jù)進行數(shù)學處理,并將處理結(jié)果傳遞給繪圖引擎寫入交互信息映 射圖。
18、 根據(jù)權(quán)利要求16所述的圖元場景渲染中交互信息生成系統(tǒng), 其中所述執(zhí)行模塊在調(diào)用繪圖引擎的渲染操作接口的同時,通過調(diào)用繪圖引擎相應接口將上層應用需求確定交互信息數(shù)據(jù)動態(tài)設置到所述 寄存器中,從而使繪圖引擎執(zhí)行著色器數(shù)據(jù)處理過程時以動態(tài)設定的 內(nèi)容生成動態(tài)的交互信息數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種圖元場景渲染中生成交互信息的方法和系統(tǒng),方法在圖元場景渲染過程中包括將預先根據(jù)上層應用需求確定的圖元相關(guān)的交互信息數(shù)據(jù)設置到繪圖引擎中;將根據(jù)上層應用需求確定的對交互信息數(shù)據(jù)的處理方式參數(shù)設置到繪圖引擎中;對設置了交互信息數(shù)據(jù)和處理方式參數(shù)的圖元場景執(zhí)行渲染操作,將圖元對應的交互信息數(shù)據(jù)寫入顯示緩存,以在顯示緩存中生成圖元場景的交互信息映射圖。本發(fā)明在基于繪圖引擎的圖元場景渲染程序運行期間插入用于生成人機交互信息數(shù)據(jù)的邏輯代碼,這些生成的交互信息被存入顯存中,且與原場景畫面的屏幕坐標相對應,從而在不修改應用程序的情況下生成附加的交互信息映射圖,為擴展應用提供了基礎數(shù)據(jù)。
文檔編號G06T1/00GK101650822SQ20091017677
公開日2010年2月17日 申請日期2009年9月21日 優(yōu)先權(quán)日2009年9月21日
發(fā)明者建 潘, 南 肖 申請人:北京壁虎科技有限公司