開放式圖形庫操作的處理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本公開涉及計算機技術(shù)領(lǐng)域,特別涉及一種開放式圖形庫操作的處理方法和裝 置。
【背景技術(shù)】
[0002] OpenGL(英文:Open Graphics Library ;簡稱:開放式圖形庫)是個定義了一個 跨編程語言、跨平臺的編程接口規(guī)格的圖形程序接口,應用于二維或三維圖像的繪制,是 一個功能強大,調(diào)用方便的底層圖形庫。其中,OpenGL ES(英文:0penGL for Embedded Systems ;簡稱:嵌入式系統(tǒng)的開放式圖形庫)是OpenGL中針對手機、PDA(英文!Personal Digital Assistant ;簡稱:掌上電腦)和游戲主機等嵌入式設備而設計的圖形庫。
[0003] 相關(guān)技術(shù)中,在使用OpenGL ES進行繪圖時,需要用到OpenGL上下文環(huán)境(OpenGL context),該OpenGL上下文環(huán)境可以包括多個變量和數(shù)據(jù),例如寄存器變量、進程打開的 文件、內(nèi)存信息等環(huán)境參數(shù),每個進程對應唯一的OpenGL上下文環(huán)境。目前的操作系統(tǒng)通 ??梢灾С种辽僖粋€OpenGL上下文環(huán)境,但操作系統(tǒng)中同一時刻只能激活一個OpenGL上 下文環(huán)境,當進程在前臺和后臺之間切換時,操作系統(tǒng)會進行相應的OpenGL上下文環(huán)境的 切換。
【發(fā)明內(nèi)容】
[0004] 本公開實施例提供了開放式圖形庫操作的處理方法和裝置,所述技術(shù)方案如下:
[0005] 根據(jù)本公開實施例的第一方面,提供一種開放式圖形庫操作的處理方法,包括:
[0006] 在檢測到對后臺進程的開放式圖形庫操作指令時,判斷是否需要進行開放式圖形 庫上下文環(huán)境的切換,所述后臺進程為當前運行在后臺的進程,所述開放式圖形庫操作指 令用于指示進程進行開放式圖形庫操作;
[0007] 如果需要進行開放式圖形庫上下文環(huán)境的切換,則根據(jù)預設的開放式圖形庫參數(shù) 配置,創(chuàng)建所述后臺進程的開放式圖形庫緩沖區(qū),所述開放式圖形庫緩沖區(qū)用于存儲繪圖 數(shù)據(jù);
[0008] 基于所述開放式圖形庫緩沖區(qū),將當前的開放式圖形庫上下文環(huán)境切換成所述后 臺進程的開放式圖形庫上下文環(huán)境;
[0009] 基于所述后臺進程的開放式圖形庫上下文環(huán)境,執(zhí)行所述對后臺進程的開放式圖 形庫操作指令。
[0010] 結(jié)合第一方面,在第一方面的第一種可實現(xiàn)方式中,在所述基于所述后臺進程的 開放式圖形庫上下文環(huán)境,執(zhí)行所述對后臺進程的開放式圖形庫操作指令之后,所述方法 還包括:
[0011] 銷毀開放式圖形庫緩沖區(qū);
[0012] 將當前的開放式圖形庫上下文環(huán)境恢復成切換前的開放式圖形庫上下文環(huán)境。
[0013] 結(jié)合第一方面或第一方面的第一種可實現(xiàn)方式,在第一方面的第二種可實現(xiàn)方式 中所述對后臺進程的開放式圖形庫操作指令包括多個開放式圖形庫子操作指令,
[0014] 所述基于所述后臺進程的開放式圖形庫上下文環(huán)境,執(zhí)行所述對后臺進程的開放 式圖形庫操作指令,包括:
[0015] 基于所述后臺進程的開放式圖形庫上下文環(huán)境,依次執(zhí)行所述多個開放式圖形庫 子操作指令;
[0016] 在檢測到對其他進程的開放式圖形庫子操作指令時,停止所述多個開放式圖形庫 子操作指令中未執(zhí)行的開放式圖形庫子操作指令的執(zhí)行;
[0017] 在所述其他進程的開放式圖形庫子操作指令執(zhí)行完畢后,基于所述開放式圖形庫 緩沖區(qū),將當前的開放式圖形庫上下文環(huán)境切換成所述后臺進程的開放式圖形庫上下文環(huán) 境;
[0018] 繼續(xù)執(zhí)行所述多個開放式圖形庫子操作指令中未執(zhí)行的開放式圖形庫子操作指 令。
[0019] 結(jié)合第一方面,在第一方面的第三種可實現(xiàn)方式中,所述判斷是否需要進行開放 式圖形庫上下文環(huán)境的切換,包括:
[0020] 獲取當前的開放式圖形庫上下文環(huán)境標識;
[0021] 比較所述當前的開放式圖形庫上下文環(huán)境標識和所述后臺進程的開放式圖形庫 上下文環(huán)境標識;
[0022] 如果所述當前的開放式圖形庫上下文環(huán)境標識和所述后臺進程的開放式圖形庫 上下文環(huán)境標識不同,則確定需要進行開放式圖形庫上下文環(huán)境的切換;
[0023] 如果所述當前的開放式圖形庫上下文環(huán)境標識和所述后臺進程的開放式圖形庫 上下文環(huán)境標識相同,則確定不需要進行開放式圖形庫上下文環(huán)境的切換。
[0024] 結(jié)合第一方面,在第一方面的第四種可實現(xiàn)方式中,在所述根據(jù)預設的開放式圖 形庫參數(shù)配置,創(chuàng)建所述后臺進程的開放式圖形庫緩沖區(qū)之前,所述方法還包括:
[0025] 保存所述后臺進程的開放式圖形庫上下文環(huán)境標識。
[0026] 結(jié)合第一方面的第四種可實現(xiàn)方式,在第一方面的第五種可實現(xiàn)方式中,所述保 存所述后臺進程的開放式圖形庫上下文環(huán)境標識,包括:
[0027] 在所述后臺進程的開放式圖形庫上下文環(huán)境被創(chuàng)建時,生成并保存所述后臺進程 的開放式圖形庫上下文環(huán)境標識。
[0028] 根據(jù)本公開實施例的第二方面,提供一種開放式圖形庫操作的處理裝置,包括:
[0029] 判斷模塊,配置為在檢測到對后臺進程的開放式圖形庫操作指令時,判斷是否需 要進行開放式圖形庫上下文環(huán)境的切換,所述后臺進程為當前運行在后臺的進程,所述開 放式圖形庫操作指令用于指示進程進行開放式圖形庫操作;
[0030] 創(chuàng)建模塊,配置為在需要進行開放式圖形庫上下文環(huán)境的切換時,根據(jù)預設的開 放式圖形庫參數(shù)配置,創(chuàng)建所述后臺進程的開放式圖形庫緩沖區(qū),所述開放式圖形庫緩沖 區(qū)用于存儲繪圖數(shù)據(jù);
[0031] 切換模塊,配置為基于所述開放式圖形庫緩沖區(qū),將當前的開放式圖形庫上下文 環(huán)境切換成所述后臺進程的開放式圖形庫上下文環(huán)境;
[0032] 執(zhí)行模塊,配置為基于所述后臺進程的開放式圖形庫上下文環(huán)境,執(zhí)行所述對后 臺進程的開放式圖形庫操作指令。
[0033] 結(jié)合第二方面,在第二方面的第一種可實現(xiàn)方式中,所述處理裝置,還包括:
[0034] 銷毀模塊,配置為銷毀開放式圖形庫緩沖區(qū);
[0035] 恢復模塊,配置為將當前的開放式圖形庫上下文環(huán)境恢復成切換前的開放式圖形 庫上下文環(huán)境。
[0036] 結(jié)合第二方面或第二方面的第一種可實現(xiàn)方式,在第二方面的第二種可實現(xiàn)方式 中,所述對后臺進程的開放式圖形庫操作指令包括多個開放式圖形庫子操作指令,
[0037] 在執(zhí)行所述基于所述后臺進程的開放式圖形庫上下文環(huán)境,執(zhí)行所述對后臺進程 的開放式圖形庫操作指令時,所述執(zhí)行模塊,配置為:
[0038] 基于所述后臺進程的開放式圖形庫上下文環(huán)境,依次執(zhí)行所述多個開放式圖形庫 子操作指令;
[0039] 在檢測到對其他進程的開放式圖形庫子操作指令時,停止所述多個開放式圖形庫 子操作指令中未執(zhí)行的開放式圖形庫子操作指令的執(zhí)行;
[0040] 在所述其他進程的開放式圖形庫子操作指令執(zhí)行完畢后,基于所述開放式圖形庫 緩沖區(qū),將當前的開放式圖形庫上下文環(huán)境切換成所述后臺進程的開放式圖形庫上下文環(huán) 境;
[0041] 繼續(xù)執(zhí)行所述多個開放式圖形庫子操作指令中未執(zhí)行的開放式圖形庫子操作指 令。
[0042] 結(jié)合第二方面,在第二方面的第三種可實現(xiàn)方式中,在執(zhí)行所述判斷是否需要進 行開放式圖形庫上下文環(huán)境的切換時,所述判斷模塊,配置為:
[0043] 獲取當前的開放式圖形庫上下文環(huán)境標識;
[0044] 比較所述當前的開放式圖形庫上下文環(huán)境標識和所述后臺進程的開放式圖形庫 上下文環(huán)境標識;
[0045] 如果所述當前的開放式圖形庫上下文環(huán)境標識和所述后臺進程