IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッドの特許一覧

特許7185044要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置
<>
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図1
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図2
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図3
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図4
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図5
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図6
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図7
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図8
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図9
  • 特許-要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-28
(45)【発行日】2022-12-06
(54)【発明の名称】要素レンダリング方法、装置、コンピュータプログラム及びコンピュータ装置
(51)【国際特許分類】
   G06T 11/00 20060101AFI20221129BHJP
【FI】
G06T11/00
【請求項の数】 15
(21)【出願番号】P 2021531977
(86)(22)【出願日】2020-04-13
(65)【公表番号】
(43)【公表日】2022-07-08
(86)【国際出願番号】 CN2020084502
(87)【国際公開番号】W WO2020224388
(87)【国際公開日】2020-11-12
【審査請求日】2021-06-28
(31)【優先権主張番号】201910370800.5
(32)【優先日】2019-05-06
(33)【優先権主張国・地域又は機関】CN
(73)【特許権者】
【識別番号】514187420
【氏名又は名称】テンセント・テクノロジー・(シェンジェン)・カンパニー・リミテッド
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】レイ,ダンション
【審査官】橋爪 正樹
(56)【参考文献】
【文献】特開2016-224942(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 11/00-19/20
(57)【特許請求の範囲】
【請求項1】
少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を取得するステップと、
ローカルに格納されている要素ビットマップから各前記レンダリング対象要素を順に検索するステップと、
前記要素ビットマップから前記レンダリング対象要素が検索された場合、前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定するステップと、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、当該検索されなかった前記レンダリング対象要素を前記要素ビットマップの対応する空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定するステップと、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、前記要素ビットマップ、及び各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーするステップと、
を含む、要素レンダリング方法。
【請求項2】
少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を取得する前記ステップは、
表示インターフェースを表示するステップと、
入力されたレンダリング対象要素が前記表示インターフェースにおいて検出された場合、各前記レンダリング対象要素にそれぞれ対応する入力位置を決定するステップと、
前記入力位置に基づいて、各前記レンダリング対象要素にそれぞれ対応する目標表示位置を決定するステップと、
を含む、
ことを特徴とする、請求項1に記載の方法。
【請求項3】
ローカルに格納されている要素ビットマップから各前記レンダリング対象要素を順に検索する前記ステップは、
各前記レンダリング対象要素にそれぞれ対応する要素コード値及び要素属性情報を決定するステップと、
前記要素コード値及び前記要素属性情報に基づいて、各前記レンダリング対象要素にそれぞれ対応する要素インデックスを決定するステップと、
各前記レンダリング対象要素にそれぞれ対応する要素インデックスにより、ローカルに格納されている要素ビットマップにおいて各前記レンダリング対象要素を順に検索するステップと、
を含む、
ことを特徴とする、請求項1に記載の方法。
【請求項4】
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定する前記ステップは、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素に対応する要素形体情報を取得するステップと、
前記要素形体情報に基づいて、前記要素ビットマップの空き領域において、検索されなかった前記レンダリング対象要素描画領域を割り当てるステップと、
前記要素ビットマップにおいて割り当てられた描画領域に、検索されなかった前記レンダリング対象要素を描画して、前記要素ビットマップを更新するステップと、
前記描画領域に基づいて、描画された前記レンダリング対象要素の更新後の要素ビットマップにおける配置位置を決定するステップと、
を含む、
ことを特徴とする、請求項1に記載の方法。
【請求項5】
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素に対応する要素形体情報を取得する前記ステップは、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、要素境界情報取得インターフェース及び要素測定インターフェースにより、検索されなかった前記レンダリング対象要素に対応する要素境界測定情報を取得するステップと、
前記要素境界測定情報を所定の規則に従い補正し、検索されなかった前記レンダリング対象要素に対応する要素形体情報を取得するステップと、
を含む、
ことを特徴とする、請求項4に記載の方法。
【請求項6】
前記要素形体情報に基づいて、前記要素ビットマップの空き領域において、検索されなかった前記レンダリング対象要素に描画領域を割り当てる前記ステップは、
前記要素形体情報に基づいて、前記要素ビットマップに含まれている要素の周囲の空き領域において、検索されなかった前記レンダリング対象要素に描画領域を割り当てるステップ、を含み、
前記要素ビットマップにおいて割り当てられた描画領域に、検索されなかった前記レンダリング対象要素を描画して、前記要素ビットマップを更新する前記ステップは、
前記要素ビットマップにおいて割り当てられた描画領域に、検索されなかった前記レンダリング対象要素を描画して、前記要素ビットマップを更新するステップであって、前記要素ビットマップに描画された各要素は、密に配置されているステップ、を含む、
ことを特徴とする、請求項4に記載の方法。
【請求項7】
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定する前記ステップは、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、前記要素ビットマップの空き領域を決定するステップと、
前記空き領域の大きさ所定の大きさ以下である場合、前記要素ビットマップに含まれている要素を消去するステップと、
前記空き領域の大きさが前記所定の大きさより大きい場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定することを実行するステップと、
を含む、
ことを特徴とする、請求項1に記載の方法。
【請求項8】
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定する前記ステップの後に、前記方法は、さらに、
前記要素ビットマップに描画されたレンダリング対象要素に対応する要素コード値及び要素属性情報を決定するステップと、
決定された前記要素コード値及び要素属性情報に基づいて、要素インデックスを構築するステップと、
構築された前記要素インデックスと、対応するレンダリング対象要素の前記要素ビットマップにおける配置位置とを関連付けて格納するステップと、
を含む、ことを特徴とする請求項1に記載の方法。
【請求項9】
前記方法は、さらに、
各前記レンダリング対象要素にそれぞれ対応する要素間隔情報を決定するステップを含み、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素の要素ビットマップ、及び、各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーする前記ステップは、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素が含まれている要素ビットマップ、及び、各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、各前記レンダリング対象要素にそれぞれ対応する要素間隔情報に応じて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーするステップ、
を含む、
ことを特徴とする、請求項1に記載の方法。
【請求項10】
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、前記要素ビットマップ、及び各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーする前記ステップは、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、各前記レンダリング対象要素が含まれている要素ビットマップに基づいて、要素テクスチャマップを生成するステップと、
前記要素テクスチャマップ、及び各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーするステップと、
を含む、ことを特徴とする請求項1~9のいずれか一項に記載の方法。
【請求項11】
前記要素テクスチャマップ、及び、各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーする前記ステップは、
グラフィックスレンダリングインターフェースを呼び出すことにより、前記要素テクスチャマップ、及び、各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーするステップ、
を含む、
ことを特徴とする、請求項10に記載の方法。
【請求項12】
少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を取得する取得モジュールと、
ローカルに格納されている要素ビットマップから各前記レンダリング対象要素を順に検索する検索モジュールと、
決定モジュールであり、
前記要素ビットマップから前記レンダリング対象要素が検索された場合、前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定し、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定する、
決定モジュールと、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、前記要素ビットマップ、及び各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーする、トリガーモジュールと、
を含む、ことを特徴とする、要素レンダリング装置。
【請求項13】
前記取得モジュールは、さらに、
表示インターフェースを表示し、
入力されたレンダリング対象要素が前記表示インターフェースにおいて検出された場合、各前記レンダリング対象要素にそれぞれ対応する入力位置を決定し、前記入力位置に基づいて、各前記レンダリング対象要素にそれぞれ対応する目標表示位置を決定する、
ことを特徴とする、請求項12に記載の装置。
【請求項14】
複数の命令を含むコンピュータプログラムであって、
前記命令がコンピュータによって実行されると、請求項1~11のいずれか一項に記載の方法を、前記コンピュータに実行させる、
コンピュータプログラム。
【請求項15】
コンピュータ装置であって、
コンピュータプログラムが記憶されているメモリと、
プロセッサと、を含み、
前記コンピュータプログラムが前記プロセッサにより実行されると、
請求項1~11のいずれか一項に記載の方法を、前記プロセッサに実行させる、
コンピュータ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、画像処理の技術分野に関し、特に要素レンダリング方法、装置、コンピュータ可読記憶媒体及びコンピュータ装置に関する。
【0002】
本願は、2019年5月6日に提出された、出願番号が2019103708005で、発明の名称が「要素レンダリング方法、装置、記憶媒体及びコンピュータ装置」である中国特許出願の優先権を主張するものであり、その全ての内容は、参照により本願に組み込まれるものとする。
【背景技術】
【0003】
コンピュータ技術の発展に伴い、コンピュータ装置において実行可能なアプリケーションプログラム、例えば、ブラウザアプリケーション又はゲームアプリケーションなど、がますます出現している。ブラウザアプリケーション又はゲームアプリケーションなどのアプリケーションは、対応する機能を提供する時に、常にOpen GL(Open Graphics Library、オープングラフィックスライブラリ)により要素描画を行う必要がある。
【0004】
現在、描画対象要素がキャラクタである場合を例にすれば、一般的に、freetype(移植可能なフォント解析ツール)などのフォント解析ツールをアプリケーションプログラムに結合することにより、任意のキャラクタの描画レンダリングを実現することができる。しかし、アプリケーションプログラムにフォント解析ツールを結合すると、アプリケーションプログラムのボリュームを増大させる。ボリュームが大きくなることを回避するために、一部の解決手段は、端末システムの提供するインターフェースを用いて、予め設定されたキャラクタを含むテクスチャマップを生成し、その後に、このテクスチャマップを用いてレンダリングして、予め設定されたキャラクタの描画を達成する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
これに鑑みて、キャラクタ描画の柔軟性を向上させる要素レンダリング方法、装置、コンピュータ可読記憶媒体、及びコンピュータ装置を提供する。
【課題を解決するための手段】
【0006】
要素レンダリング方法は、
少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を取得するステップと、
ローカルに格納されている要素ビットマップから各前記レンダリング対象要素を順に検索するステップと、
前記要素ビットマップから前記レンダリング対象要素が検索された場合、前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定するステップと、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定するステップと、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、前記要素ビットマップ、及び各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーするステップと、を含む。
【0007】
要素レンダリング装置は、
少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を取得する取得モジュールと、
ローカルに格納されている要素ビットマップから各前記レンダリング対象要素を順に検索する検索モジュールと、
前記要素ビットマップから前記レンダリング対象要素が検索された場合、前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定し、かつ、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定する、決定モジュールと、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、要素ビットマップ、及び、各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーするトリガーモジュールと、を含むことを特徴とする。
【0008】
コンピュータ可読記憶媒体は、
コンピュータプログラムが記憶されており、前記コンピュータプログラムがプロセッサにより実行されると、
少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を取得するステップと、
ローカルに格納されている要素ビットマップから各前記レンダリング対象要素を順に検索するステップと、
前記要素ビットマップから前記レンダリング対象要素が検索された場合、前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定するステップと、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定するステップと、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素の要素ビットマップ、及び各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーするステップと、
を前記プロセッサに実行させる。
【0009】
コンピュータ装置であって、
コンピュータプログラムが記憶されているメモリと、
プロセッサと、を含み、
前記コンピュータプログラムは、
前記プロセッサにより実行されると、
少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を取得するステップと、
ローカルに格納されている要素ビットマップから各前記レンダリング対象要素を順に検索するステップと、
前記要素ビットマップから前記レンダリング対象要素が検索された場合、前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定するステップと、
前記要素ビットマップから前記レンダリング対象要素が検索されなかった場合、検索されなかった前記レンダリング対象要素を前記要素ビットマップの空き領域に描画するとともに、描画された前記レンダリング対象要素の前記要素ビットマップにおける配置位置を決定するステップと、
各前記レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素の要素ビットマップ、及び各レンダリング対象要素それぞれの前記要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各前記レンダリング対象要素がレンダリング表示されるようにトリガーするステップと、
を前記プロセッサに実行させる。
【発明の効果】
【0010】
上記要素レンダリング方法、装置、コンピュータ可読記憶媒体、及びコンピュータ装置は、少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素に対応する目標表示位置を取得する。ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索し、要素ビットマップからあるレンダリング対象要素が検索された場合、迅速に応答し、過去に描画した要素によりレンダリング表示動作を直接的に実行することができ、レンダリング対象要素の描画時間を大幅に減少させる。要素ビットマップからあるレンダリング対象要素が検索されなかった場合、検索されなかった該レンダリング対象要素を要素ビットマップの空き領域に描画して、要素ビットマップを更新する。更新された要素ビットマップ、及び、レンダリング対象要素の要素ビットマップにおける配置位置に基づいて、レンダリング表示動作の実行をトリガーする。また、描画された要素を要素ビットマップに格納し、それ以降のレンダリングで同じ要素があった場合に直接的にスクリーンに表示することができる。このように、ライブラリファイル又はフォントファイルを追加することなく、任意の要素の効率的な描画レンダリングを実現することができ、柔軟かつ便利であり、実用性が高い。
【図面の簡単な説明】
【0011】
図1】一実施例における、要素レンダリング方法の応用環境図である。
図2】一実施例における、要素レンダリング方法のフローチャートである。
図3】一実施例において、ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索するステップのフローチャートである。
図4】一実施例において、キャラクタを要素ビットマップに稠密配列した結果を示す概略図である。
図5】一実施例における、要素間隔情報を示す概略図である。
図6】具体的な実施例における、要素レンダリング方法のフローチャートである。
図7】別の具体的な実施例における、要素レンダリング方法のフローチャートである。
図8】一実施例における、要素レンダリング装置の構成ブロック図である。
図9】別の一実施例における、要素レンダリング装置の構成ブロック図である。
図10】一実施例における、コンピュータ装置の構成ブロック図である。
【発明を実施するための形態】
【0012】
本願の目的、技術手段、及び利点をより明確にするため、以下に、図面及び実施例を参照しながら、本願を、さらに、詳細に説明する。本明細書において説明した具体的な実施例は、本願を説明するためのものに過ぎず、本願を限定するものではないことを、理解だれたい。
【0013】
図1は、実施例における要素レンダリング方法の応用環境図である。図1を参照すると、該要素レンダリング方法は、要素レンダリングシステムに適用される。該要素レンダリングシステムは、端末110とサーバ120とを含む。端末110とサーバ120とは、ネットワークを介して接続されている。端末110は、具体的には、デスクトップ端末又は移動端末であってよく、移動端末の場合、具体的には、携帯電話、タブレットコンピュータ、ノートパソコンなどのうちの少なくとも1つであってよい。サーバ120は、独立したサーバ又は複数のサーバで構成されるサーバクラスタで実現されてよい。端末110とサーバ120とは、いずれも本願の実施例に係る要素レンダリング方法を単独で実行することができる。端末110とサーバ120とは、協力して本願の実施例に係る要素レンダリング方法を実行してもよい。
【0014】
図2に示すように、一実施例において、要素レンダリング方法を提供する。本実施例は、主に、該方法をコンピュータ装置に応用する場合を例として説明し、該コンピュータ装置は、具体的には、上記図1における端末110又はサーバ120であってよい。図2を参照すると、該要素レンダリング方法は、具体的には、以下のステップS202~S210を含む。
【0015】
S202において、コンピュータ装置は、少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を取得する。
【0016】
レンダリング対象要素は、レンダリング表示対象の可視化要素であり、具体的には、レンダリング対象のキャラクタ及びレンダリング対象の図形記号のうちの少なくとも一種であってよく、該キャラクタは、文字、記号などであってよい。目標表示位置は、レンダリング対象要素を表示インターフェースにレンダリング表示する表示位置、即ち、レンダリング対象要素の表示インターフェースでの表示位置であり、具体的には、レンダリング対象要素が表示インターフェースに表示される具体的な位置又は相対的位置情報などであってよく、該目標表示位置は座標、例えば、要素の表示インターフェースにおける座標、で表すことができる。
【0017】
なお、該コンピュータ装置が端末である場合、その表示インターフェースは、現在の端末上の表示インターフェース、又は、他の端末上の表示インターフェースであってよく、コンピュータ装置がサーバである場合、その表示インターフェースはサーバの表示インターフェースであってもよいし、他の装置上の表示インターフェースであってもよく、本願の実施例はこれを限定しない。
【0018】
具体的には、コンピュータ装置は、レンダリング要求を検出した場合、レンダリング要求から少なくとも1つのレンダリング対象要素、及び、各レンダリング対象要素にそれぞれ対応する目標表示位置を解析することができる。レンダリング対象要素に対応する目標表示位置は、予め設定された固定位置であってもよいし、予め設定されたアルゴリズムに基づいて算出された位置であってもよい。理解されるように、端末により該要素レンダリング方法が実行される場合、端末は、ユーザのトリガーしたレンダリング要求を検出することができ、サーバにより該要素レンダリング方法が実行される場合、サーバは、端末から送信されたレンダリング要求を受信することができる。
【0019】
一実施例において、ステップS202は、具体的には、コンピュータ装置が表示インターフェースを表示すること、入力されたレンダリング対象要素が表示インターフェースにおいて検出された場合、各レンダリング対象要素にそれぞれ対応する入力位置を決定すること、および、入力位置に基づいて各レンダリング対象要素にそれぞれ対応する目標表示位置を決定すること、を含む。該プロセスは、開発者の入力した要素及びその入力位置に基づいて、どの要素をどの目標表示位置にレンダリングするかを決定することであると理解してよい。
【0020】
一実施例において、該要素レンダリング方法は、端末により実行され、端末は、表示インターフェースを表示し、表示インターフェースにキャラクタ及び/又は図形記号を入力するための複数の入力コントロールを表示する。ユーザは、該入力コントロールにより、表示したい要素を入力することができる。端末は、入力されたレンダリング対象要素が表示インターフェースにおいて検出された場合、各レンダリング対象要素にそれぞれ対応する入力コントロールを決定し、各入力コントロールの位置する位置に基づいて、各レンダリング対象要素にそれぞれ対応する入力位置を決定する。
【0021】
さらに、端末は、予め設定された対応ルールに従い、各レンダリング対象要素に対応する入力位置に基づいて、対応する目標表示位置を決定することができる。予め設定された対応ルールは、具体的には、予め設定された入力位置と目標表示位置との間の対応関係であってよく、異なる入力位置は予め設定された同じ対応ルールに対応してもよいし、予め設定された異なる対応ルールに対応してもよい。
【0022】
異なる入力位置が予め設定された同じ対応ルールに対応する場合、例えば、端末は、目標表示位置の座標情報と入力位置の座標情報とが同じであるか、又は、一定の対応関係(例えば、入力位置の座標情報に対して線形変化を行うことにより、目標表示位置の座標情報を算出することができる)を有するように予め設定することができる。異なる入力位置が予め設定された異なる対応ルールに対応する場合、例えば、入力位置1に対応するレンダリング対象要素は予め設定された画像の周囲のA位置に表示され、つまり、該レンダリング対象要素に対応する目標表示位置は動的に変化し、予め設定された画像に対応する相対的位置であり、入力位置2に対応するレンダリング対象要素は表示スクリーンの予め設定された位置Bに表示される、などである。
【0023】
一実施例において、端末は、異なる各入力位置に対応する目標表示位置の計算方式を予め設定することができ、端末がレンダリング対象要素の入力位置を決定した後で、予め設定された計算方式に従い、目標表示位置を算出することができる。
【0024】
一実施例において、レンダリング対象要素の数が1つより多い場合、該レンダリング対象要素の入力位置の近接関係に基づいて、レンダリング対象要素を少なくとも1つのグループに分ける。例えば、入力位置が互いに近接するレンダリング対象要素を同じグループに分け、同じグループ内のレンダリング対象要素の目標表示位置が近接する。このような場合、各レンダリング対象要素にそれぞれ対応する目標表示位置は、具体的には、各グループのレンダリング対象要素に対応する目標表示位置であってよい。あるグループのレンダリング対象要素に対応する目標表示位置は、具体的には、該グループのレンダリング対象要素のうちの最初のレンダリング対象要素の目標表示位置であってよい。
【0025】
例を挙げて説明すれば、レンダリング対象要素がユーザ名である場合、該ユーザ名が例えば「ZXC」であれば、理解されるように、「ZXC」うちの3つのキャラクタは表示インターフェースに入力されるときに必然的に近接するため、「Z」、「X」、及び「C」を1グループの要素とすることができ、該グループの要素に対応する目標表示位置は「Z」に対応する目標表示位置であってもよい。
【0026】
一実施例において、端末は、入力されたレンダリング対象要素と、決定された対応する目標表示位置とに基づいて、レンダリング要求を生成することができる。該レンダリング要求により、端末でローカルに要素レンダリング方法をトリガーし、或いは、該レンダリング要求をサーバに送信して、要素レンダリング方法をトリガーする。
【0027】
上記実施例においては、各レンダリング対象要素にそれぞれ対応する入力位置に基づいて、各レンダリング対象要素にそれぞれ対応する目標表示位置を決定し、異なる位置に異なる要素をレンダリング表示することができ、便利で柔軟である。
【0028】
S204において、コンピュータ装置は、ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索する。
【0029】
要素ビットマップは、ビットマップ(bitmap)画像であり、ドットマトリクス画像又は描画画像とも呼ばれ、コンピュータ装置は、要素ビットマップ上に様々な要素を描画することができる。具体的に、コンピュータ装置は、要素ビットマップをローカル記憶媒体、例えばローカルキャッシュ、に格納することができる。レンダリング要求を取得した場合、ローカルに格納されている要素ビットマップに既に存在している各要素をトラバースすることで、ローカルに格納されている要素ビットマップから各レンダリング対象要素を検索することができる。
【0030】
なお、上記要素ビットマップは、予め描画された要素を含むことができ、該要素ビットマップは、予め生成してコンピュータ装置に格納することができ、レンダリングプロセスに基づいて更新することもできる。要素は、要素ビットマップにおいて一定の配置位置を有し、該配置位置は、要素インデックスに基づいて特定することができる。コンピュータ装置が要素ビットマップにおいて該レンダリング対象要素を検索した場合、該レンダリング対象要素の要素インデックスにより、対応する配置位置などの情報を決定することで、要素ビットマップにおける要素を迅速に検索することができる。
【0031】
一実施例において、ステップS204、すなわちローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索するステップは、具体的には、以下のステップS302~S306を含む。
【0032】
S302において、コンピュータ装置は、各レンダリング対象要素にそれぞれ対応する要素コード値及び要素属性情報を決定する。
【0033】
要素コード値は、レンダリング対象要素に符号化処理を行って得られた符号化値であり、該レンダリング対象要素を標準化して表現するためのものである。例えば、コンピュータ装置は、レンダリング対象要素に対してUTF-8(8-bit Unicode Transformation Format、8ビットUnicode変換フォーマット、様々なキャラクタの符号化に用いられる)符号化処理を行って、対応する要素コード値を得ることができる。要素属性情報は、レンダリング対象要素の属性を示す情報である。レンダリング対象要素がキャラクタである場合、対応する要素属性情報は、具体的には、該キャラクタのサイズ、フォント、中抜きか否か、太字か否か、及び斜体か否か、などであってよい。レンダリング対象要素が図形記号である場合、対応する要素属性情報は、具体的に、該図形記号の大きさを示す該図形記号のサイズ、斜体か否か、などであってよい。
【0034】
具体的には、コンピュータ装置は、レンダリング対象要素及びレンダリング対象要素の要素属性情報が含まれるレンダリング要求を取得する。コンピュータ装置は、レンダリング対象要素を符号化して要素コード値を取得することができる。レンダリング対象要素を符号化する符号化方式は、具体的には、UTF-8、ASCII(American Standard Code for Information Interchange、米国情報交換標準コード)、又はGBK(Chinese Internal Code Specification、漢字内碼拡展規範)、などの符号化方式であってよく、本願の実施例は、ここで限定されない。
【0035】
一実施例において、ユーザが、レンダリング要求をトリガーすると、コンピュータ装置は、入力されたレンダリング対象要素に対応する入力位置を決定することができる。コンピュータ装置は、予め設定された、異なる入力位置と異なる要素属性情報との間の対応関係に基づいて、入力されたレンダリング対象要素に対応する入力位置により、該レンダリング対象要素に対応する要素属性情報を決定することができる。
【0036】
例を挙げて説明すれば、コンピュータ装置は、入力位置1が、フォントサイズ5、楷書体、中抜き文字ではない、太字、及び斜体、などの要素属性情報に対応し、入力位置2が、フォントサイズ4、宋体(SimSun)、中抜きキャラクタ、太字、斜体ではない、などの要素属性情報に対応するように予め設定することができる。現在のレンダリング対象要素に対応する入力位置が入力位置1である場合、コンピュータ装置は、該レンダリング対象要素に対応する要素属性情報をフォントサイズ5、楷書体、中抜きキャラクタではない、太字、及び斜体、などとして決定することができる。
【0037】
S304において、コンピュータ装置は、要素コード値及び要素属性情報に基づいて、各レンダリング対象要素にそれぞれ対応する要素インデックスを決定する。
【0038】
具体的に、コンピュータ装置は、レンダリング対象要素の要素コード値と各属性情報とを連結し、連結情報を取得し、連結情報に対してハッシュ演算を行い、該レンダリング対象要素の要素インデックスを取得することができる。或いは、コンピュータ装置は、レンダリング対象要素の要素コード値と各属性情報とを組み合わせて、該レンダリング対象要素の要素インデックスを取得してもよい。
【0039】
理解されるように、レンダリング対象要素に対応する要素コード値により該レンダリング対象要素のコンテンツを特定することができ、該レンダリング対象要素の要素属性情報により、該レンダリング対象要素の表示状態を特定することができる。該レンダリング対象要素の要素コード値及び要素属性情報に基づいて、該レンダリング対象要素を一意に特定することができるため、該レンダリング対象要素の要素コード値及び要素属性情報に基づいて特定された要素インデックスでは、該レンダリング対象要素にインデックスすることができる。理解されるように、異なるレンダリング対象要素は異なる要素インデックスに対応する。
【0040】
S306において、コンピュータ装置は、各レンダリング対象要素にそれぞれ対応する要素インデックスにより、ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索する。
【0041】
一実施例において、コンピュータ装置は、既に描画された要素について、各要素に対応する要素コード値及び対応する属性情報を組み合わせて、要素インデックス(keyとも呼ばれる)を生成し、該要素の検索のために、要素ビットマップにおける該要素に関連付けて格納することができる。コンピュータ装置は、既に描画された各要素の要素インデックスをローカルキャッシュに共に格納することにより、要素インデックス集合を構成することができる。別の一実施例において、コンピュータ装置は、既に描画された要素について、該要素の要素コード値と各属性情報とを連結し、連結情報を取得し、連結情報にハッシュ演算を行い、該要素の要素インデックスを取得し、該要素の検索のために、要素インデックスと要素ビットマップにおける該要素とを関連付けて格納することができる。
【0042】
一実施例において、コンピュータ装置は、各レンダリング対象要素にそれぞれ対応する要素インデックスを決定した後、各レンダリング対象要素について、対応する要素インデックスに基づいて、ローカルに格納された要素インデックス集合から該要素インデックスが存在するか否かをそれぞれ検索する。存在すれば、該レンダリング対象要素がローカルに格納されている要素ビットマップに存在すると判定し、存在しなければ、該レンダリング対象要素がローカルに格納されている要素ビットマップに存在しないと判定する。
【0043】
一実施例において、コンピュータ装置は、ローカルに格納された要素インデックス集合中の各要素インデックスをトラバースすることにより、現在のレンダリング対象要素の要素インデックスが該要素インデックス集合に存在するか否かを判断することができる。存在すれば、該レンダリング対象要素がローカルに格納されている要素ビットマップに存在すると判定し、存在しなければ、該レンダリング対象要素がローカルに格納されている要素ビットマップに存在しないと判定する。
【0044】
一実施例において、コンピュータ装置は、要素ビットマップに既に描画された要素の要素インデックス及び対応する配置位置、並びに、描画済み要素の要素形体情報及び要素間隔情報などの情報を関連付けて格納することができる。コンピュータ装置が要素ビットマップにおいて該レンダリング対象要素を検索した場合、該レンダリング対象要素の要素インデックスにより、対応する配置位置、要素形体情報、及び要素間隔情報、などの情報を決定することができ、決定された情報により迅速なスクリーンへの表示動作を実現する。
【0045】
上記実施例において、各レンダリング対象要素にそれぞれ対応する要素コード値及び要素属性情報により、各レンダリング対象要素にそれぞれ対応する要素インデックスを決定し、要素インデックスに基づいて、ローカルに格納されている要素ビットマップから各レンダリング対象要素を迅速かつ正確に検索することができる。
【0046】
S206において、コンピュータ装置は、要素ビットマップからレンダリング対象要素が検索された場合、レンダリング対象要素の要素ビットマップにおける配置位置を決定する。
【0047】
具体的に、コンピュータ装置は、要素ビットマップに要素を描画する場合、後続の使用のために、該要素に対応する配置位置を関連付けて格納する。コンピュータ装置が要素ビットマップからレンダリング対象要素を検索した場合、該レンダリング対象要素が過去に描画した要素であると見なすことができ、このため、コンピュータ装置に該レンダリング対象要素に対応する配置位置がローカルに格納されており、コンピュータ装置が直接的に取得することができる。
【0048】
一実施例において、コンピュータ装置は、後続の使用のために、過去に描画した要素を要素ビットマップに格納し、該要素の要素ビットマップにおける配置位置を解析することができる。このようにして、その以降に同じレンダリング要求がある場合、該レンダリング対象要素の配置位置を迅速にフィードバックすることで、コンピュータ装置が前に描画された要素により、スクリーンへの表示動作を行うことができる。スクリーンへの表示動作は、レンダリング表示動作と理解してもよい。
【0049】
具体的な一実施例において、コンピュータ装置は、過去に描画した要素を要素ビットマップに格納し、かつ、該要素の要素形体情報、要素間隔情報、及び配置位置、などを関連付けて格納することができる。要素形体情報は、該要素の形態、例えば、要素の長さと幅、又は要素の面積、などを示す情報である。要素がキャラクタである場合、該要素形体情報は、具体的には、該キャラクタが位置する矩形の長さ及び幅であってもよい。要素間隔情報は、該レンダリング対象要素と隣接するレンダリング対象要素との表示位置間の間隔情報であり、各レンダリング対象要素に対応する要素間隔情報は、複数のレンダリング対象要素が順に隣接して表示される場合の隣接状況を特定することができる。コンピュータ装置は、レンダリング要求を受信すると、過去に記録した要素ビットマップから現在のレンダリング対象要素が存在するか否かを検索し、検索した場合に、関連する要素の形情報、要素間隔情報、及び配置位置、などを直接取得し、取得した情報に基づいて、該レンダリング対象要素をスクリーンに表示することができる。
【0050】
S208において、コンピュータ装置は、要素ビットマップからレンダリング対象要素が検索されなかった場合、検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画するとともに、描画されたレンダリング対象要素の要素ビットマップにおける配置位置を決定する。
【0051】
空き領域は、空白領域と呼ばれてもよく、要素が描画されていない該要素ビットマップの空間領域を指す。具体的に、コンピュータ装置は、要素ビットマップからレンダリング対象要素が検索されなかった場合、該レンダリング対象要素が前のレンダリング動作に出現したことがないものと見なし、このため、該レンダリング対象要素を要素ビットマップに描画する必要があり、後続のレンダリング表示動作を実行するようにする。
【0052】
一実施例において、コンピュータ装置は、レンダリング対象要素の属性情報に基づいて、該レンダリング対象要素を描画するために必要な空間の大きさを計算し、要素ビットマップの空き領域から、対応する大きさの空間の領域を分割し、検索されなかったレンダリング対象要素を分割した領域に描画することができる。コンピュータ装置は、該検索されなかったレンダリング対象要素に割り当てた領域の位置を、該レンダリング対象要素の要素ビットマップにおける配置位置とすることができる。
【0053】
一実施例において、ステップS208の後、該要素レンダリング方法は、要素インデックスを構築するステップをさらに含み、該ステップは、具体的には、要素ビットマップに描画されたレンダリング対象要素に対応する要素コード値及び要素属性情報を決定すること、決定された要素コード値及び要素属性情報に基づいて、要素インデックスを構築すること、および、構築された要素インデックスと、対応するレンダリング対象要素の要素ビットマップにおける配置位置とを関連付けて格納すること、を含む。
【0054】
具体的には、検索されなかったレンダリング対象要素を要素ビットマップに描画した場合、コンピュータ装置は、既に描画した要素を記録して解析することができる。コンピュータ装置は、要素ビットマップに描画されたレンダリング対象要素に対応する要素コード値及び要素属性情報を決定し、要素ビットマップに描画されたレンダリング対象要素に対応する要素コード値及び対応する要素属性情報を組み合わせ、要素インデックス(keyとも呼ばれる)を生成し、構築された要素インデックスと、対応するレンダリング対象要素の要素ビットマップにおける配置位置とを関連付けて格納することができる。
【0055】
一実施例において、コンピュータ装置は、要素コード値と各属性情報とを連結して連結情報を取得し、連結情報にハッシュ演算を行って要素ビットマップに描画されたレンダリング対象要素に対応する要素インデックスを取得することができる。
【0056】
一実施例において、コンピュータ装置は、要素ビットマップに描画された要素の要素インデックス及び対応する配置位置、並びに、描画済み要素の要素形体情報及び要素間隔情報、などの情報を関連付けて格納することができる。コンピュータ装置は、要素ビットマップにおいて該レンダリング対象要素が検索された場合、該レンダリング対象要素の要素インデックスにより、対応する配置位置、要素形体情報、及び要素間隔情報、などの情報を決定し、決定された情報により迅速なスクリーンへの表示動作を実現することができる。
【0057】
一実施例において、コンピュータ装置が既に要素ビットマップに描画した要素について、コンピュータ装置がそれ以降に該要素(即ち、その以降のレンダリング対象要素)のレンダリング要求を受けたとき、コンピュータ装置は、要素インデックスに基づいて要素ビットマップから該レンダリング対象要素を迅速に検索し、該レンダリング対象要素の要素ビットマップにおける配置位置、要素形体情報、及び要素間隔情報、などの情報を迅速にフィードバックすることができ、それにより、前に描画した要素を用いてレンダリング動作を行う。
【0058】
上記実施例において、描画されたレンダリング対象要素に対応する要素インデックスと該レンダリング対象要素の要素ビットマップにおける配置位置とを関連付けて格納し、要素ビットマップに要素を蓄積して格納していくことができ、その以降のレンダリングが同じ要素に遭遇する場合に、直接的にスクリーンに表示することができ、要素レンダリングの効率を大幅に向上させる。
【0059】
S210において、コンピュータ装置は、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素の要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーする。
【0060】
レンダリング表示は、レンダリング対象の画素値を処理することにより、表示インターフェースにレンダリング対象のコンテンツを表示するプロセスである。具体的には、コンピュータ装置は、要素ビットマップにおいて対応する配置位置に位置する各画素の画素値により、レンダリング対象を対応する目標位置にレンダリング表示するようにトリガーすることができる。画素の画素値は、具体的には、該画素のARGB(alpha透明度、red赤色、green緑色、blue青色)値であってよいし、該画素の階調値であってもよい。
【0061】
理解されるように、該要素レンダリング方法が端末により実行される場合、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、端末は、各レンダリング対象要素の要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素を対応する目標表示位置にレンダリング表示する。つまり、端末は、要素ビットマップにおいて対応する配置位置に位置する各画素の画素値により、レンダリング対象を対応する目標位置にレンダリング表示することができる。該要素レンダリング方法がサーバにより実行される場合、サーバは、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素が含まれている要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置、などの情報を端末に送信し、端末が各レンダリング対象要素が含まれている要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーする。
【0062】
一実施例において、要素ビットマップにおける要素の多重化率を確保するために、コンピュータ装置は、要素ビットマップにレンダリング対象要素を描画する際に、要素ビットマップ内の描画領域における、該レンダリング対象要素に対応する有効画素のRGB値を、いずれも階調値に設定し、描画領域における無効画素の画素値を、予め設定された画素値、例えば255(白色を表示する)に設定し、それにより、レンダリング対象要素を表示する。或いは、コンピュータ装置は、要素ビットマップ内の描画領域における、該レンダリング対象要素に対応する有効画素の画素値を、第1の所定値、例えば0、に設定し、描画領域における無効画素の画素値を、第2の所定値、例えば255、などに設定してもよい。このようにして、色のみが異なるレンダリング対象要素を要素ビットマップに描画する際に、同じレンダリング対象要素を共用することができ、要素ビットマップに描画した要素の多重化率を大幅に向上させることができる。コンピュータ装置は、レンダリング表示する際に、異なるレンダリング対象要素の目標色に応じて、重畳レンダリングするカラー画像の画素値を決定し、カラー画像と要素ビットマップとを重畳レンダリングすることにより、レンダリング対象要素が目標表示位置に目標色を表示するようにすることができる。
【0063】
一実施例において、異なるレンダリング対象要素の目標色が異なる場合、異なるレンダリング対象要素に対応するカラー画像も異なる。各レンダリング対象要素について、コンピュータ装置は、要素ビットマップ、該レンダリング対象要素に対応する配置位置、及び対応するカラー画像に基づいて、重畳レンダリングして、目標表示位置に目標色を有するレンダリング対象要素を表示することができる。
【0064】
上記要素レンダリング方法は、少なくとも1つのレンダリング対象要素、及び各レンダリング対象要素に対応する目標表示位置を取得する。ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索し、要素ビットマップからあるレンダリング対象要素が検索された場合、迅速に応答して、過去に描画した要素により、直接的にレンダリング表示動作の実行をトリガーし、レンダリング対象要素の描画時間を大幅に減少させることができる。要素ビットマップからあるレンダリング対象要素が検索されなかった場合、検索されなかった該レンダリング対象要素を要素ビットマップの空き領域に描画することにより、要素ビットマップを更新する。更新された要素ビットマップ、及びレンダリング対象要素の要素ビットマップにおける配置位置により、レンダリング表示動作の実行をトリガーする。また、描画された要素を要素ビットマップに格納し、それ以降のレンダリングで同じ要素があった場合に、直接的にスクリーンに表示することができる。このように、ライブラリファイル又はフォントファイルを追加することなく、任意の要素の効率的な描画・レンダリングを実現することができ、柔軟かつ便利であり、実用性が高い。
【0065】
一実施例において、ステップS208、即ち、要素ビットマップからレンダリング対象要素が検索されなかった場合、検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画するとともに、描画されたレンダリング対象要素の要素ビットマップにおける配置位置を決定するステップは、具体的には、要素ビットマップからレンダリング対象要素が検索されなかった場合、検索されなかったレンダリング対象要素に対応する要素形体情報を取得するステップ、要素形体情報に基づいて、要素ビットマップの空き領域において、検索されなかったレンダリング対象要素に描画領域を割り当てるステップ、要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画して、要素ビットマップを更新するステップ、および、描画領域に基づいて、描画したレンダリング対象要素の更新後の要素ビットマップにおける配置位置を決定するステップ、を含む。
【0066】
要素形体情報は、要素の形の大きさを示す情報であり、具体的には、要素の縦横情報であってもよい。要素の縦横情報は、該要素の位置する矩形の縦横情報で表してもよい。要素の位置する矩形とは、該要素を平行にカバーすることができる最小矩形を指し、矩形の長さは該要素の高さと同じであり、矩形の幅は、該要素の幅と同じである。
【0067】
一実施例において、コンピュータ装置は、検索されなかったレンダリング対象要素の要素属性情報に基づいて、レンダリング対象要素に対応する要素形体情報を決定することができる。コンピュータ装置は、要素形体情報に基づいて、要素ビットマップの空き領域において、検索されなかったレンダリング対象要素に描画領域を割り当て、要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画して、要素ビットマップを更新することができる。例えば、アンドロイドシステムのコンピュータ装置の場合、コンピュータ装置は、レンダリング対象要素をandroid.view.Bitmapに描画し、一時的に格納することができる。
【0068】
一実施例において、コンピュータ装置は、該検索されなかったレンダリング対象要素に割り当てた描画領域に基づいて、該レンダリング対象要素の要素ビットマップにおける配置位置を決定することができる。例えば、コンピュータ装置は、該検索されなかったレンダリング対象要素に割り当てた描画領域を、直接的に該レンダリング対象要素の要素ビットマップにおける配置位置としてもよく、或いは、コンピュータ装置は、該描画領域の左上隅と右下隅の座標情報を、該レンダリング対象要素の要素ビットマップにおける配置位置の座標情報としてもよく、或いは、コンピュータ装置は、該描画領域の中心点の座標情報を、該レンダリング対象要素の要素ビットマップにおける配置位置の座標情報としてもよい。
【0069】
上記実施例において、レンダリング対象要素に対応する要素形体情報に基づいて、検索されなかったレンダリング対象要素に描画領域を割り当て、要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画することにより、レンダリング対象要素の要素ビットマップの空き領域への正確な描画を実現することができる。
【0070】
一実施例において、要素ビットマップからレンダリング対象要素が検索されなかった場合、検索されなかったレンダリング対象要素に対応する要素形体情報を取得するステップは、具体的には、要素ビットマップからレンダリング対象要素が検索されなかった場合、要素境界情報取得インターフェース及び要素測定インターフェースにより、検索されなかったレンダリング対象要素に対応する要素境界測定情報を取得すること、および、要素境界測定情報を所定の規則に従い補正し、検索されなかったレンダリング対象要素に対応する要素形体情報を取得すること、含む。
【0071】
予め設定されたルールは、予め設定された計算方式であり、具体的には、開発者が複数回の試験テストを経て引き出したルールであってよい。例えば、要素境界測定情報が要素形体情報を含む場合、要素クリップという問題の影響を低減するために、予め設定されたルールを、要素境界情報取得インターフェース及び要素測定インターフェースにより、それぞれ取得された要素の幅値のうちの最大値、又は最大値と予め設定された数値(例えば、数値1)との和を、実際の要素の幅値とし、要素境界情報取得インターフェースにより取得された要素下限値と要素上限値との差分値を要素の実際の高さ値とする、などのように、設定してもよい。
【0072】
一実施例において、要素ビットマップからレンダリング対象要素が検索されなかった場合、コンピュータ装置は、要素境界情報取得インターフェース及び要素測定インターフェースを呼び出すことにより、要素境界測定情報を取得することができる。要素境界測定情報は、具体的に、要素形体情報及び要素間隔情報を含んでよい。
【0073】
実際の応用において、要素境界情報取得インターフェース及び要素測定インターフェースにより取得されたデータは比較的単純であり、そのまま使用すると、コンピュータ装置の機種によっては、要素クリップ(clip)という問題を引き起こす可能性があるため、取得した要素境界測定情報を補正する必要がある。
【0074】
アンドロイドシステムを実行する端末を例として説明すれば、アンドロイドシステムがTypefaceインターフェースを直接呼び出すことをネイティブにサポートしないため、端末がandroid.graphics.Paint.getTextBounds及びandroid.graphics.Paint.measureTextインターフェースを直接呼び出し、かつ、システムの戻り値を読み取ると、誤差を生じることがあり、したがって、補正を行う必要がある。具体的には、要素境界情報取得インターフェース及び要素測定インターフェースによりそれぞれ取得された要素の幅値のうちの最大値に1を加算して実際の幅値(real_width)とし、要素境界情報取得インターフェースにより取得された要素下限値(bounds.descent)と要素上限値(bounds.ascent)との差分値を要素の実際の高さ値(実際の長さ値ともいう)(real_height)としてもよい。要素が中抜きキャラクタである場合、要素の横方向のオフセット(glyph.offset_x)は、負の中抜き幅値の半分(-stroke_width/2)であり、補正後の中抜きキャラクタの幅値(glyph.width)は、中抜き幅値と実際の幅値との和(stroke_width+real_width)であり、補正後の中抜きキャラクタの高さ値(glyph.height)は、実際の高さ値(real_height)である。要素が中抜きキャラクタではない場合、要素の横方向のオフセット(glyph.offset_x)は、0であり、補正後のキャラクタの幅値(glyph.width)は、実際の幅値(real_width)であり、補正後のキャラクタの高さ値(glyph.height)は、実際の高さ値(real_height)である。
【0075】
該補正過程を実現する擬似コードは以下のとおりである。
RectF bounds=getTextBounds('')
float measure_width=measureText('')
float real_width=max(bounds.width,measure_width)+1
float real_height=bounds.descent-bounds.ascent
glyph.advance_x=real_width
if (stroke){
glyph.offset_x=-stroke_width/2f
glyph.width=stroke_width+real_width
glyph.height=real_height
} else {
glyph.offset_x=0
glyph.width=real_width
glyph.height=real_height
}
上記実施例において、要素境界情報取得インターフェース及び要素測定インターフェースにより取得された要素境界測定情報を、予め設定された計算方式により補正することで、要素クリップという問題を解決し、様々な機種のコンピュータ装置に適用でき、取得された要素形体情報を正確かつ有効にし、適用性を大幅に向上させる。
【0076】
一実施例において、要素形体情報に基づいて、要素ビットマップの空き領域において、検索されなかったレンダリング対象要素に描画領域を割り当てることは、要素形体情報に基づいて、要素ビットマップに含まれている要素の周囲近傍の空き領域において、検索されなかったレンダリング対象要素に描画領域を割り当てることを含む。要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画して、要素ビットマップを更新するステップは、具体的に、要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画して、要素ビットマップを更新するステップであり、要素ビットマップに描画された各要素は、密に配置されているステップを含む。
【0077】
具体的には、実際の応用において、任意の要素の効率的な描画を確保する重要なポイントは、要素ビットマップを空にする頻度をできるだけ減少させること、即ち、過去に描画した要素をできるだけ長時間に要素ビットマップに格納することである。このため、コンピュータ装置は、要素形体情報に基づいて、要素ビットマップに含まれている要素の周囲近傍の空き領域において、稠密配列アルゴリズムを採用して、検索されなかったレンダリング対象要素に描画領域を割り当てる。コンピュータ装置は、要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画する。要素ビットマップに描画された各要素は、密に配置されている。このように、1枚の要素ビットマップは、可能な限り多くの要素を格納することができる。
【0078】
一実施例において、レンダリング対象要素に描画領域を割り当てるために用いられる稠密配列アルゴリズムは、具体的に、SkylineBLRectPacking(配列アルゴリズム)であってよく、当然のことながら、他の稠密配列アルゴリズムであってもよく、本願の実施例はここで限定されない。コンピュータ装置は、該要素ビットマップの占有するキャッシュ空間が1024*1024であるように割り当ててよく、当然のことながら、コンピュータ装置の性能パラメータ及び残りのキャッシュ空間に応じて、より多く又はより少ないキャッシュ空間を割り当ててもよい。
【0079】
図4は、実施例においてキャラクタを要素ビットマップに密に配列した結果を示す概略図である。図4に示す要素ビットマップのキャッシュ空間は、512*512である。図4から分かるように、要素ビットマップに描画された各要素は密に配列され、空間を最大限節約している。理解できるように、該要素ビットマップの変換により得られた要素テクスチャマップも図4に示すような効果を示す。
【0080】
上記実施例において、検索されなかったレンダリング対象要素を要素ビットマップに密に配列して描画することで、空間を節約することができ、1枚の要素ビットマップにおいてより多くの要素を可能な限り描画することができるため、レンダリング要求を取得したとき、要素ビットマップからレンダリング対象要素を検索した確率が大幅に向上し、さらに要素レンダリングの効率が向上する。
【0081】
一実施例において、要素ビットマップからレンダリング対象要素が検索されなかった場合、検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画するとともに、描画されたレンダリング対象要素の要素ビットマップにおける配置位置を決定するステップは、具体的に、要素ビットマップからレンダリング対象要素が検索されなかった場合、要素ビットマップの空き空間を決定すること、空き空間が所定の空間以下である場合、要素ビットマップに含まれている要素を消去すること、および、空き空間が所定の空間より大きい場合、検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画するとともに、描画されたレンダリング対象要素の要素ビットマップにおける配置位置を決定すること、を含む。
【0082】
空き空間は、要素ビットマップにおける空き領域の大きさであり、つまり、要素ビットマップにおいて使用されていないキャッシュ空間である。所定の空間は、予め設定された領域の大きさであり、具体的には、予め設定されたキャッシュの大きさであってよいし、1つの要素の描画に必要な空間の大きさであってもよい。開発者は、実際の経験に基づいて所定の空間の値を設定することができ、所定の空間の値はゼロ又は他の数値であってもよい。具体的に、コンピュータ装置は、要素ビットマップからレンダリング対象要素が検索されなかった場合、現在の要素ビットマップの空き空間を決定する。現在の要素ビットマップの空き空間が所定の空間より大きい場合、検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画するとともに、描画されたレンダリング対象要素の要素ビットマップにおける配置位置を決定するステップを実行する。現在の要素ビットマップの空き空間が所定の空間以下である場合、この時に、該要素ビットマップにおける空き空間がレンダリング対象要素の描画に足りず、要素ビットマップに含まれている要素を消去する必要がある。要素ビットマップを空にした後、又は要素ビットマップにおける要素の一部を消去した後、検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画するとともに、描画されたレンダリング対象要素の要素ビットマップにおける配置位置を決定するステップを実行する。
【0083】
上記実施例において、要素ビットマップの空き空間が足りない場合、要素ビットマップを空にしてからレンダリング対象要素を描画することで、キャッシュ空間が限られた条件で、レンダリング対象要素の描画を確実に行うことができる。
【0084】
一実施例において、該要素レンダリング方法は、各レンダリング対象要素にそれぞれ対応する要素間隔情報を決定することをさらに含む。ステップS210、つまり、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素の要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素を対応する目標表示位置にレンダリング表示するステップは、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素が含まれている要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素にそれぞれ対応する要素間隔情報に応じて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーする。
【0085】
要素間隔情報は、該レンダリング対象要素と隣接するレンダリング対象要素との表示位置間の間隔情報であり、各レンダリング対象要素に対応する要素間隔情報は、複数のレンダリング対象要素が順に隣接して表示される場合の隣接状況を特定することができる。レンダリング対象要素がキャラクタである場合、要素間隔情報は、具体的には、ベースライン位置(baseline)、送り(advance)、及びオフセット(offset)、などを含んでよい。レンダリング対象要素が図形記号である場合、要素間隔情報は、具体的に、ベースライン位置、図形間、隔及び図形オフセット、などを含んでもよい。
【0086】
図5は一実施例における要素間隔情報を示す概略図である。図5に単一のキャラクタのキャラクタ形情報及びキャラクタ間隔情報を示す。図5に示すように、キャラクタ「H」について、キャラクタ「H」の左側の縦線は左から右へのベースライン(Left to right baseline origin)であり、キャラクタ「H」の右側の縦線は右から左へのベースライン(Right to left baseline origin)であり、キャラクタ「H」はブラックボックス(Black box)に描画されており、キャラクタ「H」の左側のベースラインからキャラクタ「H」の左側の境界までの距離は左サイドベアリング(Left side bearing)であり、キャラクタ「H」の右側のベースラインからキャラクタ「H」の右側の境界までの距離は右サイドベアリング(Right side bearing)であり、キャラクタ「H」の左ベースラインから右ベースラインまでの距離は、送り幅(Advance width)であり、間隔幅とも呼ばれる。
【0087】
キャラクタ「f」について、キャラクタ「f」はブラックボックス(Black box)に描画されており、キャラクタ「f」の左ベースラインと右ベースラインはそれぞれブラックボックスの中間の2本の縦線であり、キャラクタ「f」の左側のベースラインからキャラクタ「f」の左側の境界までの距離は左サイドベアリング(Left side bearing)であり、キャラクタ「f」の右側のベースラインからキャラクタ「f」の右側の境界までの距離は右サイドベアリング(Right side bearing)であり、キャラクタ「f」の左ベースラインから右ベースラインまでの距離は、送り幅(Advance width)であり、間隔幅とも呼ばれる。
【0088】
理解されるように、レンダリング対象要素がキャラクタである場合、要素間隔情報は、具体的に、上述した図4における左ベースライン(left baseline)の位置、右ベースライン(right baseline)の位置、送り幅(advance width)、及びオフセット(offset)、などを含んでもよい。オフセットは、具体的に、水平方向のオフセット、又は垂直方向のオフセット(鉛直方向のオフセットとも呼ばれる)であり得る。
【0089】
一実施例において、要素ビットマップからレンダリング対象要素が検索された場合、コンピュータ装置は、該レンダリング対象要素の要素インデックスに関連する要素間隔情報を直接検索することができる。要素ビットマップからレンダリング対象要素が検索されなかった場合、コンピュータ装置は、レンダリング対象要素の要素属性情報に基づいて、対応する要素間隔情報を決定することができる。
【0090】
一実施例において、コンピュータ装置は、要素境界情報取得インターフェース及び要素測定インターフェースを呼び出すことにより、要素形体情報及び要素間隔情報を取得することができる。例えば、アンドロイドシステムの端末の場合、android.graphics. Paint.getTextBounds/android.graphics.Paint.measureTextインターフェースを呼び出して、要素形体情報と要素間隔情報とを取得することができる。
【0091】
さらに、元々要素ビットマップに存在しないレンダリング対象要素について、コンピュータ装置は、要素形体情報及び要素間隔情報に基づいて、要素ビットマップの空き領域において該レンダリング対象要素に描画領域を割り当て、該レンダリング対象要素を描画領域に描画することができる。さらに、コンピュータ装置は、描画領域に基づいて、レンダリング対象要素の要素ビットマップにおける配置位置を決定することができる。コンピュータ装置は、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素が含まれている要素ビットマップ、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素にそれぞれ対応する要素間隔情報に応じて、各レンダリング対象要素を対応する目標表示位置にレンダリング表示する。
【0092】
一実施例において、コンピュータ装置が取得した目標表示位置は、1グループのレンダリング対象要素のうち最初のレンダリング対象要素に対応する目標表示位置、例えば「ZXC」のうちの「Z」に対応する位置、であり得る。そうすると、コンピュータ装置は、該グループのレンダリング対象要素のうちの最初のレンダリング対象要素に対応する目標表示位置、及び各レンダリング対象要素に対応する要素間隔情報に基づいて、1グループのレンダリング対象要素のうちの各レンダリング対象要素にそれぞれ対応する目標表示位置を順に決定し、さらに、各レンダリング対象要素に対応する目標表示位置に各レンダリング対象要素を表示することができる。また、各レンダリング対象要素のベースライン位置により、レンダリング表示時に、同一行又は同一列に存在する各レンダリング対象要素が整然に分布し、乱雑に配列されることのないよう保証することができる。
【0093】
上記実施例において、各レンダリング対象要素が含まれている要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素にそれぞれ対応する要素間隔情報に応じて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーすることで、表示される要素が重なり、要素の間隔が大きすぎ、又は要素のベースラインが揃っていない、などの問題を回避することができ、要素表示の正確性及び審美性を向上させる。
【0094】
一実施例において、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素の要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーするステップは、具体的に、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素が含まれている要素ビットマップに基づいて要素テクスチャマップを生成すること、および、要素テクスチャマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーすること、を含む。
【0095】
具体的には、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、コンピュータ装置は、要素ビットマップを要素テクスチャマップに変換し、要素テクスチャマップに基づいて、レンダリング表示動作の実行をトリガーすることができる。
【0096】
一実施例において、コンピュータ装置は、1つのテクスチャオブジェクトと、テクスチャデータを格納する1つのn次元配列とを作成し、glTextImageND関数を呼び出して要素ビットマップ(bitmap)における各画素の画素値を該テクスチャオブジェクト及びn次元配列に伝達することにより、対応する要素テクスチャマップを生成することができる。
【0097】
一実施例において、要素テクスチャマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素を対応する目標表示位置にレンダリング表示するステップは、具体的に、グラフィックスレンダリングインターフェースを呼び出すことにより、要素テクスチャマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素を対応する目標表示位置にレンダリング表示すること、を含む。
【0098】
一実施例において、コンピュータ装置は、グラフィックスレンダリングインターフェース、例えばglDrawArrayインターフェース(グラフィックスレンダリングインターフェースの1つ)を呼び出すことにより、レンダリング対象要素のスクリーンへの表示動作を実現することができる。
【0099】
具体的な応用シーンにおいて、例えばゲームアプリケーションシーンにおいて、現在の表示インターフェースは、開発者が予め設定したゲームインターフェースの他、例えばユーザニックネームなどの要素を表示する必要がある。各ユーザのニックネームは異なる可能性があり、開発者が予測できないため、該ゲームアプリケーションは、任意のキャラクタをレンダリング表示できる能力を備える必要がある。ゲーム画面は、OpenGLインターフェースに基づいてレンダリング表示を実現することが多いため、画像とキャラクタとが同期して表示することができるように、該任意のキャラクタのレンダリング表示もOpenGLインターフェースに基づいてレンダリング表示することが好ましい。
【0100】
一実施例において、要素ビットマップにおける各要素の画素値により、レンダリング対象要素が単一色のみを呈し、そして、変換して生成された要素テクスチャマップにおける各レンダリング対象要素も単一色のみを呈する。実際の応用において、レンダリング対象要素をレンダリング表示するときには、常に、様々な目標色を表示する必要がある。これに鑑み、コンピュータ装置は、異なるレンダリング対象要素の目標色に基づいて、重畳レンダリングする必要があるカラー画像の画素値を決定し、カラー画像と要素テクスチャマップとを重畳レンダリングすることにより、レンダリング対象要素が目標表示位置に目標色を表示するようにすることができる。
【0101】
上記実施例においては、各レンダリング対象要素が含まれている要素ビットマップに基づいて生成された要素テクスチャマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素を対応する目標表示位置に迅速かつ正確にレンダリング表示することができる。
【0102】
具体的な使用シーンにおいて、親アプリケーションで実行される子アプリケーション(例えば、アプリケーションが提供する実行環境において実行されるミニプログラム)の場合、それ自体の実行環境の特殊性のため、子アプリケーションのインストールパッケージをできるだけ小さくする必要があり、子アプリケーションのインストールパッケージをできるだけ小さくする前提で、どのように子アプリケーションの各機能が正常に使用できることを保証するかは、現在早急に解決すべき課題である。例えば、ゲーム類のミニプログラムの場合、インストールパッケージのボリュームを増大することなく、ライブラリファイル又はフォントファイルを追加しないこと、とともに、「任意の文字」の描画を効率的に行うことを保証することが、解決すべき技術的課題である。本願の各実施例に係る方法を実行することにより、ミニプログラムにライブラリファイル又はフォントファイルを追加することなく、OpenGLインターフェースを用いて任意の文字を描画することができ、同時に、これを基として、本願に係る方法は顔文字emojiなどの画像記号を描画する機能を備えている。ミニプログラムを親アプリケーションで実行し、対応する機能を実現できるという機能要件を満たし、ミニプログラムの開発の使いやすさを向上させる。
【0103】
具体的な一実施例において、アンドロイドシステムの端末でキャラクタを描画することを例にして、本解決策を詳細に説明する。本解決策は、具体的に、複数のソフトウェアモジュールにより実現することができ、具体的には、統括制御モジュール、キャッシュヒットモジュール、グリフ描画モジュール、及びグリフレイアウトモジュールを含む。
【0104】
図6は、一実施例における要素レンダリング方法のフローチャートである。図6に示すように、開発者は、描画インターフェースを呼び出してレンダリング要求をトリガーし、レンダリング要求は、統括制御モジュールに提供されて統括的に処理され、統括制御モジュールは、他のモジュールをスケジューリングする機能をも有する。統括制御モジュールは、キャッシュヒットモジュールに該キャラクタが存在しているか否かをクエリする。存在すれば、直接描画及びスクリーンへの表示フローに入る。存在しなければ、グリフ描画フローを開始する。まず、要素ビットマップ中のキャラクタセットに空間があるか否かをチェックし、なければ、キャラクタセットを空にし、あれば、グリフ描画を行う。グリフ描画フローは、主にグリフ描画モジュール(Glyphモジュール)及びグリフレイアウトモジュール(Atlasモジュール)により共に完了する。2つのモジュールのうち、グリフ描画モジュールは、描画されるグリフのキャラクタ形情報及びキャラクタ間隔情報を取得することにより、グリフをどのように描画するかという問題を解決する。グリフレイアウトモジュールは、該グリフを要素ビットマップにおけるどの位置に描画するかという問題を解決し、該モジュールは、グリフをできるだけ密に描画することを保証する必要があり、それによりキャラクタセットを空にする頻度を減少させる。端末は、グリフをキャッシュに書き込んだ後、要素ビットマップに基づいて要素テクスチャマップを生成し、要素テクスチャマップによりスクリーンへの表示動作を行うことができる。
【0105】
以下、各モジュールの機能実現について詳細に説明する。統括制御モジュールは、各モジュールのスケジューラであり、また、各モジュールの統括的なスケジューリングに加えて、リソースの要求及びリリース、OpenGLリソースの管理、フォント描画に関連するOpenGLコマンドの実行動作等をも担当する。
【0106】
キャッシュヒットモジュール(Cacheモジュール)は、現在既に描画されたグリフに対する記録及び分析を行い、それ以降に同様の描画要求がある場合、結果を迅速に返し、前に描画したグリフを使用して、スクリーンへの表示動作を行うことができる。描画タスクの効率を確保するように、本解決策では、キャラクタセットを空にする頻度をできるだけ減少させる必要があるため、キャッシュヒットモジュールは不可欠である。
【0107】
グリフ描画モジュール(Glyphモジュール)は、キャラクタ形情報及びキャラクタ間隔情報を含むグリフの具体的な正確な情報を取得する。グリフ描画モジュールは、グリフをandroid.view.Bitmapに描画して一時的に格納し、最終的に統括制御モジュールによりbitmapをtextureとして提供し、スクリーンに表示する。
【0108】
グリフレイアウトモジュール(Atlasモジュール)は、具体的には、SkylineBLRectPacking稠密配列アルゴリズムを用いてキャラクタに描画空間を割り当て、このようにして、キャラクタセットを空にする頻度を可能な限り減少させることができる。
【0109】
最終的に稠密配列されたテクスチャマップは、glyphモジュールにより測定されたグリフの具体的な正確な情報と共に底層に送信されて格納され、最終的に、glDrawArrayインターフェースを用いてスクリーンへの表示が行われる。
【0110】
具体的な一実施例において、該要素レンダリング方法は、以下のステップを含む。
【0111】
S702:コンピュータ装置は、表示インターフェースを表示する。
【0112】
S704:入力されたレンダリング対象要素が表示インターフェースにおいて検出された場合、コンピュータ装置は、各レンダリング対象要素にそれぞれ対応する入力位置を決定する。
【0113】
S706:コンピュータ装置、は入力位置に基づいて各レンダリング対象要素にそれぞれ対応する目標表示位置を決定する。
【0114】
S708:コンピュータ装置は、各レンダリング対象要素にそれぞれ対応する要素コード値及び要素属性情報を決定する。
【0115】
S710:、コンピュータ装置は、要素コード値及び要素属性情報に基づいて、各レンダリング対象要素にそれぞれ対応する要素インデックスを決定する。
【0116】
S712:コンピュータ装置は、各レンダリング対象要素にそれぞれ対応する要素インデックスにより、ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索する。
【0117】
S714:要素ビットマップからレンダリング対象要素が検索された場合、コンピュータ装置は、レンダリング対象要素の要素ビットマップにおける配置位置、及び対応する要素間隔情報を決定する。
【0118】
S716:要素ビットマップからレンダリング対象要素が検索されなかった場合、コンピュータ装置は、要素ビットマップの空き空間を決定する。
【0119】
S718:空き空間が所定の空間より小さい場合、コンピュータ装置は、要素ビットマップに含まれている要素を消去する。
【0120】
S720:空き空間が所定の空間以上である場合、コンピュータ装置は、要素境界情報取得インターフェース及び要素測定インターフェースにより、検索されなかったレンダリング対象要素に対応する要素境界測定情報を取得する。
【0121】
S722:コンピュータ装置は、要素境界測定情報を所定の規則に従い補正し、検索されなかったレンダリング対象要素に対応する要素形体情報、及び要素間隔情報を取得する。
【0122】
S724:コンピュータ装置は要素形体情報、及び要素間隔情報に基づいて、要素ビットマップに含まれている要素の周囲近傍の空き領域において、検索されなかったレンダリング対象要素に描画領域を割り当てる。
【0123】
S726:コンピュータ装置は、要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画して、要素ビットマップを更新し、要素ビットマップに描画された各要素は、密に配置されている。
【0124】
S728:コンピュータ装置は、描画領域に基づいて、描画したレンダリング対象要素の更新後の要素ビットマップにおける配置位置を決定する。
【0125】
S730:コンピュータ装置は、要素ビットマップに描画されたレンダリング対象要素に対応する要素コード値及び要素属性情報を決定する。
【0126】
S732:コンピュータ装置は、決定された要素コード値及び要素属性情報に基づいて、要素インデックスを構築する。
【0127】
S734:コンピュータ装置は、構築された要素インデックスと、対応するレンダリング対象要素の要素ビットマップにおける配置位置とを関連付けて格納する。
【0128】
S736:コンピュータ装置は、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素が含まれている要素ビットマップに基づいて
要素テクスチャマップを生成する。
【0129】
S738:コンピュータ装置は、グラフィックスレンダリングインターフェースを呼び出すことにより、要素テクスチャマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素にそれぞれ対応する要素間隔情報に応じて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーする。
【0130】
図7は、一実施例における要素レンダリング方法のフローチャートである。理解されるように、図7のフローチャートにおける各ステップは、矢印の指した順に示されているが、これらのステップは、必ずしも矢印の指した順に従って順次実行されるとは限らない。本明細書で明確に説明しない限り、これらのステップの実行は、厳密な順序に限定されず、他の順序で実行されてもよい。さらに、図7における少なくとも一部のステップは、複数のサブステップ又は複数の段階を含んでよく、これらのサブステップ又は段階は、必ずしも同じ時刻で実行されるものではなく、異なる時刻で実行されてもよく、これらのサブステップ又は段階の実行も、必ずしも順次行われるものではなく、その他のステップ又はその他のステップのサブステップ或いは段階の少なくとも一部と順に又は交互に実行されてもよい。
【0131】
図8に示すように、一実施例に係る要素レンダリング装置800は、取得モジュール801、検索モジュール802、決定モジュール803、及びトリガーモジュール804を含む。
【0132】
取得モジュール801は、少なくとも1つのレンダリング対象要素、及び各レンダリング対象要素にそれぞれ対応する目標表示位置を取得する。
【0133】
検索モジュール802は、ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索する。
【0134】
決定モジュール803は、要素ビットマップからレンダリング対象要素が検索された場合、レンダリング対象要素の要素ビットマップにおける配置位置を決定する。
【0135】
決定モジュール803は、さらに、要素ビットマップからレンダリング対象要素が検索されなかった場合、検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画するとともに、描画されたレンダリング対象要素の要素ビットマップにおける配置位置を決定する。
【0136】
トリガーモジュール804は、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素の要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーする。
【0137】
一実施例において、取得モジュール801は、さらに、表示インターフェースを表示し、入力されたレンダリング対象要素が表示インターフェースにおいて検出された場合、各レンダリング対象要素にそれぞれ対応する入力位置を決定し、入力位置に基づいて、各レンダリング対象要素にそれぞれ対応する目標表示位置を決定する。
【0138】
一実施例において、検索モジュール802は、さらに、各レンダリング対象要素にそれぞれ対応する要素コード値及び要素属性情報を決定し、要素コード値及び要素属性情報に基づいて、各レンダリング対象要素にそれぞれ対応する要素インデックスを決定し、各レンダリング対象要素にそれぞれ対応する要素インデックスにより、ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索する。
【0139】
一実施例において、決定モジュール803は、さらに、要素ビットマップからレンダリング対象要素が検索されなかった場合、検索されなかったレンダリング対象要素に対応する要素形体情報を取得し、要素形体情報に基づいて、要素ビットマップの空き領域において、検索されなかったレンダリング対象要素に描画領域を割り当て、要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画して要素ビットマップを更新し、描画領域に基づいて、描画したレンダリング対象要素の更新後の要素ビットマップにおける配置位置を決定する。
【0140】
一実施例において、決定モジュール803は、さらに、要素ビットマップからレンダリング対象要素が検索されなかった場合、要素境界情報取得インターフェース及び要素測定インターフェースにより、検索されなかったレンダリング対象要素に対応する要素境界測定情報を取得し、要素境界測定情報を所定の規則に従い補正し、検索されなかったレンダリング対象要素に対応する要素形体情報を取得する。
【0141】
一実施例において、決定モジュール803は、さらに、要素形体情報に基づいて、要素ビットマップに含まれている要素の周囲近傍の空き領域において、検索されなかったレンダリング対象要素に描画領域を割り当て、要素ビットマップにおいて割り当てられた描画領域に、検索されなかったレンダリング対象要素を描画して、要素ビットマップを更新し、要素ビットマップに描画された各要素は、密に配置されている。
【0142】
一実施例において、決定モジュール803は、さらに、要素ビットマップからレンダリング対象要素が検索されなかった場合、要素ビットマップの空き空間を決定し、空き空間が所定の空間より小さい場合、要素ビットマップに含まれている要素を消去し、空き空間が所定の空間以上である場合、検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画し、かつ、描画されたレンダリング対象要素の要素ビットマップにおける配置位置を決定する。
【0143】
図9に示すように、一実施例において、該要素レンダリング装置は、さらに、構築モジュール805と、関連付け格納モジュール806とを含み、決定モジュール803は、さらに、要素ビットマップに描画されたレンダリング対象要素に対応する要素コード値及び要素属性情報を決定する。構築モジュール805は、決定された要素コード値及び要素属性情報に基づいて、要素インデックスを構築する。関連付け格納モジュール806は、構築された要素インデックスと、対応するレンダリング対象要素の要素ビットマップにおける配置位置とを関連付けて格納する。
【0144】
一実施例において、決定モジュール803は、さらに、各レンダリング対象要素にそれぞれ対応する要素間隔情報を決定する。トリガーモジュール804は、さらに、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素が含まれている要素ビットマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、各レンダリング対象要素にそれぞれ対応する要素間隔情報に応じて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーする。
【0145】
一実施例において、トリガーモジュールは、さらに、各レンダリング対象要素それぞれの要素ビットマップにおける配置位置を決定した後、各レンダリング対象要素が含まれている要素ビットマップに基づいて、要素テクスチャマップを生成し、要素テクスチャマップ、及び各レンダリング対象要素それぞれの要素ビットマップにおける配置位置に基づいて、対応する目標表示位置に各レンダリング対象要素がレンダリング表示されるようにトリガーする。
【0146】
上記要素レンダリング装置は、少なくとも1つのレンダリング対象要素、及び各レンダリング対象要素に対応する目標表示位置を取得する。ローカルに格納されている要素ビットマップから各レンダリング対象要素を順に検索し、要素ビットマップからあるレンダリング対象要素が検索された場合、迅速に応答することができ、過去に描画した要素によりレンダリング表示動作の実行を直接的にトリガーし、レンダリング対象要素の描画時間を大幅に減少させる。要素ビットマップからあるレンダリング対象要素が検索されなかった場合、当該検索されなかったレンダリング対象要素を要素ビットマップの空き領域に描画して、要素ビットマップを更新する。更新された要素ビットマップ、及びレンダリング対象要素の要素ビットマップにおける配置位置により、レンダリング表示動作の実行をトリガーする。また、描画された要素が要素ビットマップに格納されるため、それ以降のレンダリングで同じ要素があった場合に、直接的にスクリーンに表示することができる。ライブラリファイル又はフォントファイルを追加することなく、任意の要素の効率的な描画レンダリングを実現することができ、柔軟かつ便利であり、実用性が高い。
【0147】
図10は、一実施例におけるコンピュータ装置の内部構成図を示す。該コンピュータ装置は、具体的に、図1の端末110又はサーバ120であってよい。図10に示すように、該コンピュータ装置は、システムバスを介して接続されるプロセッサ、メモリ、及びネットワークインターフェースを含む。メモリは、不揮発性記憶媒体及び内部メモリを含む。該コンピュータ装置の不揮発性記憶媒体には、オペレーティングシステムが記憶され、プロセッサによって実行されると、プロセッサに要素レンダリング方法を実現させるコンピュータプログラムが記憶されてもよい。該内部メモリにも、プロセッサによって実行されると、プロセッサに要素レンダリング方法を実行させるコンピュータプログラムが記憶されてもよい。
【0148】
当業者に理解されるように、図10に示した構成は、本願発明に関連する一部の構成のブロック図に過ぎず、本願発明を適用したコンピュータ装置を限定するものではない。具体的なコンピュータ装置は、図示したものよりも多いか又は少ない部材を含んでもよいし、いくつかの部材を組み合わせてもよいし、異なる部材の配置を有してもよい。
【0149】
一実施例において、本願に係る要素レンダリング装置は、図10に示されるコンピュータ装置上で実行できるコンピュータプログラムの形態で実現することができる。コンピュータ装置のメモリには、該要素レンダリング装置を構成する各プログラムモジュール、例えば、図8に示す取得モジュール、検索モジュール、決定モジュール、及びトリガーモジュールが記憶され得る。各プログラムモジュールによって構成されたコンピュータプログラムは、本明細書に記載された本願の各実施例に係る要素レンダリング方法におけるステップをプロセッサに実行させる。
【0150】
例えば、図10に示すコンピュータ装置は、図8に示すような要素レンダリング装置における取得モジュールにより、ステップS202を実行することができる。コンピュータ装置は、検索モジュールにより、ステップS204を実行することができる。コンピュータ装置は、決定モジュールにより、ステップS206及びS208を実行することができる。コンピュータ装置は、トリガーモジュールにより、ステップS210を実行することができる。
【0151】
一実施例においては、コンピュータ装置が提供される。メモリ及びプロセッサを含み、メモリにコンピュータプログラムが記憶され、コンピュータプログラムがプロセッサにより実行されると、プロセッサに上記要素レンダリング方法のステップを実行させるコンピュータ装置を提供する。ここでの要素レンダリング方法のステップは、上記各実施例の要素レンダリング方法におけるステップであってよい。
【0152】
一実施例において、プロセッサにより実行されると、プロセッサに上記要素レンダリング方法のステップを実行させるコンピュータプログラムが記憶されているコンピュータ可読記憶媒体を提供する。ここでの要素レンダリング方法のステップは、上記各実施例の要素レンダリング方法におけるステップであってもよい。
【0153】
当業者であれば、上記方法実施例の全部又は一部の流れは、コンピュータプログラムが関連ハードウェアを命令することにより実現してもよく、上記プログラムが不揮発性コンピュータ可読記憶媒体に記憶されるものであって、実行されるとき、上記各方法実施例の流れを含んでよいことを理解できるであろう。本願に係る各実施例に用いられる、メモリ、ストレージ、データベース、又は他の媒体への任意の参照は、いずれも不揮発性及び/又は揮発性記憶装置を含んでもよい。不揮発性記憶装置は、読み取り専用記憶装置(ROM)、プログラマブルROM(PROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM、)又はフラッシュメモリを含んでよい。揮発性記憶装置は、ランダムアクセス記憶装置(RAM)又は外部キャッシュを含んでよい。限定ではなく例示として、RAMは、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、シンクロナスDRAM(SDRAM)、ダブルデータレートSDRAM(DDRSDRAM)、エンハンストSDRAM(ESDRAM)、シンクロナスリンク(Synchlink)DRAM(SLDRAM)、メモリバス(Rambus)、ダイレクトRAM(RDRAM)、ダイレクトメモリバスダイナミックRAM(DRDRAM)、及びメモリバスダイナミックRAM(RDRAM)、などの多くの形態で入手可能である。
【0154】
前記のように、実施例の各技術的特徴を任意に組み合わせることができ、簡単に説明するために、上記実施例における各技術的特徴のすべての可能性のある組み合わせをいずれも説明しない。しかしながら、これらの技術的特徴の組み合わせには矛盾が存在せず、いずれも本明細書に記載の範囲に属するべきであると考えられる。上述した実施例は、本願のいくつかの実施形態のみを示し、その説明が具体的で詳細であるが、それにより、本願発明の範囲を限定されるものと理解されるべきではない。なお、当業者であれば、本願発明の構想から逸脱しない前提で、いくつかの変形及び改善を行うことができ、これらも本願発明の保護範囲に属する。したがって、本願発明の保護範囲は、添付の特許請求の範囲を基準とすべきである。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10