本發(fā)明涉及圖形數(shù)據(jù)處理,且更具體地說(shuō),涉及用于立體視圖的圖形數(shù)據(jù)處理。
背景技術(shù):立體視圖指代表現(xiàn)為涵蓋3維(3D)體積的所感知圖像。為了產(chǎn)生立體視圖,裝置在顯示器的2維(2D)區(qū)域上顯示兩個(gè)圖像。這兩個(gè)圖像包含大體上類似的內(nèi)容,但沿著所述兩個(gè)圖像中的一或多個(gè)對(duì)應(yīng)像素的水平軸線具有稍微的位移。在2D區(qū)域上這兩個(gè)圖像的同時(shí)觀看致使觀看者感知到被彈出或推入正顯示所述兩個(gè)圖像的2D顯示的圖像。以此方式,雖然所述兩個(gè)圖像顯示于顯示器的2D區(qū)域上,但觀看者感知到表現(xiàn)為涵蓋3D體積的圖像。立體視圖的所述兩個(gè)圖像分別稱為左眼圖像和右眼圖像。左眼圖像可由觀看者的左眼觀看,且右眼圖像不可由觀看者的左眼觀看。類似地,右眼圖像可由觀看者的右眼觀看,且左眼圖像不可由觀看者的右眼觀看。舉例來(lái)說(shuō),觀看者可佩戴專用眼鏡,其中所述眼鏡的左鏡片阻擋右眼圖像且通過(guò)左眼圖像,且所述眼鏡的右鏡片阻擋左眼圖像且通過(guò)右眼圖像。因?yàn)樽笱酆陀已蹐D像包含沿著水平軸線具有稍微位移的大體上類似的內(nèi)容,但不可由觀看者的雙眼同時(shí)觀看(例如,由于所述專用眼鏡),所以觀看者的大腦通過(guò)混合所述兩個(gè)圖像來(lái)解析對(duì)應(yīng)像素之間的稍微位移。所述混合致使觀看者將所述兩個(gè)圖像感知為具有3D體積的圖像。
技術(shù)實(shí)現(xiàn)要素:一般來(lái)說(shuō),本發(fā)明的技術(shù)是針對(duì)修改產(chǎn)生單視圖的指令以致使圖形處理單元(GPU)產(chǎn)生立體視圖。GPU的著色器程序可經(jīng)設(shè)計(jì)以產(chǎn)生單視圖。本發(fā)明中描述的技術(shù)至少基于觀看角度修改此著色器程序的指令以產(chǎn)生立體視圖。舉例來(lái)說(shuō),所述技術(shù)修改著色器程序的指令以針對(duì)立體視圖的視圖中的一者沿一個(gè)方向移位像素的位置,且針對(duì)立體視圖的另一視圖沿另一方向移位所述像素的位置。經(jīng)修改著色器程序使像素的位置移位的方向是基于觀看角度。在一個(gè)實(shí)例中,本發(fā)明描述用于圖形處理的方法。所述方法包含:以處理器確定相對(duì)于顯示器的觀看角度;以所述處理器接收用于經(jīng)配置以對(duì)單視圖的圖像操作的頂點(diǎn)著色器的指令;以及以所述處理器基于所述觀看角度將用于所述頂點(diǎn)著色器的所述指令修改為包含一或多個(gè)指令以產(chǎn)生經(jīng)修改頂點(diǎn)著色器。在此實(shí)例中,所述經(jīng)修改頂點(diǎn)著色器當(dāng)經(jīng)執(zhí)行時(shí)產(chǎn)生立體視圖的頂點(diǎn)的頂點(diǎn)坐標(biāo)。所述方法還包含以所述處理器指示圖形處理單元(GPU)執(zhí)行所述經(jīng)修改頂點(diǎn)著色器。在一個(gè)實(shí)例中,本發(fā)明描述一種設(shè)備。所述設(shè)備包含圖形處理單元(GPU)和處理器。所述處理器經(jīng)配置以確定相對(duì)于顯示器的觀看角度,且基于所述觀看角度將用于頂點(diǎn)著色器的指令修改為包含一或多個(gè)指令以產(chǎn)生經(jīng)修改頂點(diǎn)著色器。在此實(shí)例中,所述經(jīng)修改頂點(diǎn)著色器當(dāng)經(jīng)執(zhí)行時(shí)產(chǎn)生立體視圖的頂點(diǎn)的頂點(diǎn)坐標(biāo)。所述處理器還經(jīng)配置以指示所述GPU執(zhí)行所述經(jīng)修改頂點(diǎn)著色器。在一個(gè)實(shí)例中,本發(fā)明描述一種處理器。所述處理器經(jīng)配置以確定相對(duì)于顯示器的觀看角度,接收用于經(jīng)配置以對(duì)單視圖的圖像操作的頂點(diǎn)著色器的指令,以及基于所述觀看角度將用于所述頂點(diǎn)著色器的所述指令修改為包含一或多個(gè)指令以產(chǎn)生經(jīng)修改頂點(diǎn)著色器。在此實(shí)例中,所述經(jīng)修改頂點(diǎn)著色器當(dāng)經(jīng)執(zhí)行時(shí)產(chǎn)生立體視圖的頂點(diǎn)的頂點(diǎn)坐標(biāo)。所述處理器還經(jīng)配置以指示圖形處理單元GPU執(zhí)行所述經(jīng)修改頂點(diǎn)著色器。在一個(gè)實(shí)例中,本發(fā)明描述一種設(shè)備,其包含:圖形處理單元(GPU);用于確定相對(duì)于顯示器的觀看角度的裝置;用于接收用于經(jīng)配置以對(duì)單視圖的圖像操作的頂點(diǎn)著色器的指令的裝置;以及用于基于所述觀看角度將用于所述頂點(diǎn)著色器的所述指令修改為包含一或多個(gè)指令以產(chǎn)生經(jīng)修改頂點(diǎn)著色器的裝置。在此實(shí)例中,所述經(jīng)修改頂點(diǎn)著色器當(dāng)經(jīng)執(zhí)行時(shí)產(chǎn)生立體視圖的頂點(diǎn)的頂點(diǎn)坐標(biāo)。所述設(shè)備還包含用于指示所述GPU執(zhí)行所述經(jīng)修改頂點(diǎn)著色器的裝置。在一個(gè)實(shí)例中,本發(fā)明描述一種其上存儲(chǔ)有指令的計(jì)算機(jī)可讀存儲(chǔ)媒體,所述指令在被執(zhí)行時(shí)致使一或多個(gè)處理器:確定相對(duì)于顯示器的觀看角度;接收用于經(jīng)配置以對(duì)單視圖的圖像操作的頂點(diǎn)著色器的指令;以及基于所述觀看角度將用于所述頂點(diǎn)著色器的所述指令修改為包含一或多個(gè)指令以產(chǎn)生經(jīng)修改頂點(diǎn)著色器。在此實(shí)例中,所述經(jīng)修改頂點(diǎn)著色器當(dāng)經(jīng)執(zhí)行時(shí)產(chǎn)生立體視圖的頂點(diǎn)的頂點(diǎn)坐標(biāo)。所述指令進(jìn)一步致使所述一或多個(gè)處理器指示圖形處理單元(GPU)執(zhí)行所述經(jīng)修改頂點(diǎn)著色器。在隨附圖式及以下描述中闡述本發(fā)明的一或多個(gè)方面的細(xì)節(jié)。本發(fā)明的其它特征、目標(biāo)和優(yōu)點(diǎn)將從所述描述和圖式以及權(quán)利要求書而顯而易見(jiàn)。附圖說(shuō)明圖1是說(shuō)明根據(jù)本發(fā)明中所描述的一或多個(gè)實(shí)例的顯示立體視圖的顯示器的概念圖。圖2是說(shuō)明不同觀看角度的概念圖。圖3是說(shuō)明觀看者的眼睛和頭定向的檢測(cè)的概念圖。圖4是說(shuō)明觀看角度的實(shí)例的概念圖。圖5是說(shuō)明可實(shí)施本發(fā)明中描述的一或多個(gè)實(shí)例技術(shù)的裝置的實(shí)例的框圖。圖6是說(shuō)明零視差平面的位置的概念圖。圖7是說(shuō)明根據(jù)本發(fā)明中描述的一或多個(gè)實(shí)例技術(shù)的左眼圖像與右眼圖像之間的水平視差的概念圖。圖8是說(shuō)明可實(shí)施本發(fā)明中描述的一或多個(gè)實(shí)例技術(shù)的圖形處理單元(GPU)的實(shí)例的框圖。圖9是說(shuō)明可實(shí)施本發(fā)明中描述的一或多個(gè)實(shí)例技術(shù)的圖形處理單元(GPU)的另一實(shí)例的框圖。圖10A-10C是說(shuō)明根據(jù)本發(fā)明中描述的一或多種技術(shù)的實(shí)例結(jié)果的概念圖。圖11是進(jìn)一步詳細(xì)說(shuō)明圖5的實(shí)例裝置的框圖。圖12是說(shuō)明根據(jù)本發(fā)明中所描述的一或多個(gè)實(shí)例技術(shù)的實(shí)例操作的流程圖。具體實(shí)施方式本發(fā)明中描述的實(shí)例技術(shù)是針對(duì)在執(zhí)行或運(yùn)行時(shí)間期間再現(xiàn)立體3維(S3D)圖形。舉例來(lái)說(shuō),應(yīng)用程序可產(chǎn)生將由用于顯示的圖形處理單元(GPU)再現(xiàn)的單視圖圖像。本發(fā)明中描述的技術(shù)可在應(yīng)用程序的執(zhí)行期間(即,在運(yùn)行時(shí)間期間)將單視圖圖像轉(zhuǎn)換為立體視圖圖像。在一些實(shí)例中,所述技術(shù)可再現(xiàn)S3D圖形而不需要對(duì)產(chǎn)生圖形的應(yīng)用程序或GPU的任何修改。在一些實(shí)例中,本發(fā)明中描述的技術(shù)可由應(yīng)用程序處理器實(shí)施,所述應(yīng)用程序處理器執(zhí)行到圖形驅(qū)動(dòng)器的包裝器。到圖形驅(qū)動(dòng)器的包裝器可視為根據(jù)本發(fā)明中描述的技術(shù)修改對(duì)先前產(chǎn)生的圖形驅(qū)動(dòng)器的輸入或修改先前產(chǎn)生的圖形驅(qū)動(dòng)器的輸出的程序。以此方式,本發(fā)明中描述的技術(shù)可提供GPU來(lái)產(chǎn)生S3D圖形而不需要修改在應(yīng)用程序處理器上執(zhí)行的圖形驅(qū)動(dòng)器。然而,產(chǎn)生新圖形驅(qū)動(dòng)器或修改先前產(chǎn)生的圖形驅(qū)動(dòng)器以使得應(yīng)用程序處理器響應(yīng)于圖形驅(qū)動(dòng)器的執(zhí)行而實(shí)施本發(fā)明中描述的實(shí)例技術(shù)可為可能的。出于說(shuō)明的目的,將所述技術(shù)描述為由執(zhí)行圖形驅(qū)動(dòng)器包裝器的應(yīng)用程序處理器執(zhí)行。從應(yīng)用程序的角度,執(zhí)行應(yīng)用程序的應(yīng)用程序處理器可輸出用于GPU的常規(guī)3D圖形再現(xiàn)的應(yīng)用程序的圖形數(shù)據(jù)和命令。在應(yīng)用程序處理器上執(zhí)行的圖形驅(qū)動(dòng)器包裝器可修改所述命令以及由GPU執(zhí)行的指令以使得GPU在S3D顯示器上再現(xiàn)S3D圖形。在本發(fā)明中,術(shù)語(yǔ)“命令”和“指令”可互換地使用。以此方式,GPU可再現(xiàn)S3D圖形而無(wú)需對(duì)產(chǎn)生圖形的應(yīng)用程序或GPU的任何改變。因此,本發(fā)明中描述的技術(shù)可允許觀看者體驗(yàn)由未經(jīng)設(shè)計(jì)以產(chǎn)生S3D圖形的應(yīng)用程序產(chǎn)生的圖像內(nèi)容的S3D圖形。此外,本發(fā)明中描述的技術(shù)可考慮觀看角度(即,觀看者觀看顯示器所處的角度)以確定應(yīng)用程序處理器經(jīng)由圖形驅(qū)動(dòng)器包裝器修改由GPU執(zhí)行的指令的方式。通過(guò)考慮觀看角度,即使顯示器傾斜或觀看者的頭傾斜,觀看者也可體驗(yàn)高質(zhì)量S3D圖形。在常規(guī)3D圖形再現(xiàn)中,GPU從單個(gè)視點(diǎn)(例如,單視圖)產(chǎn)生3D圖形。此單個(gè)視點(diǎn)可意味著可由觀看者的右眼和左眼觀看的單個(gè)圖像。S3D圖形不同于3D圖形之處在于S3D圖形產(chǎn)生立體視圖。術(shù)語(yǔ)立體視圖指代從雙眼視點(diǎn)產(chǎn)生的圖像。在雙眼視點(diǎn)中,可存在兩個(gè)圖像,其中一個(gè)圖像可由一只眼睛觀看且不可由另一只眼睛觀看,且反之亦然。舉例來(lái)說(shuō),當(dāng)觀看者佩戴專用眼鏡時(shí),通過(guò)眼鏡的左鏡片進(jìn)入的光可由左眼觀看且不可由右眼觀看,且反之亦然。雙眼視點(diǎn)可被稱為立體視圖。舉例來(lái)說(shuō),在S3D圖形中,GPU可產(chǎn)生用于左眼的圖像和用于右眼的另一圖像(即,立體視圖)。左眼圖像被阻擋于觀看者的右眼且僅被引導(dǎo)到左眼。右眼圖像被阻擋于觀看者的左眼且僅被引導(dǎo)到右眼。術(shù)語(yǔ)立體視圖指代各自顯示于顯示器上的兩個(gè)圖像(例如,左眼圖像和右眼圖像),而單視圖指代顯示于顯示器上的單個(gè)圖像。左眼圖像和右眼圖像的組合可對(duì)觀看者表現(xiàn)為如同所述圖像是彈出或推入正顯示所述圖像的顯示器。這可導(dǎo)致更實(shí)際且豐富的觀看體驗(yàn)。在本發(fā)明中,S3D圖像(例如,立體視圖)和3D圖像(例如,單視圖)的概念不應(yīng)混淆。3D圖像是被限制于顯示器的2維(2D)區(qū)域的圖像。舉例來(lái)說(shuō),在3D圖形處理中,應(yīng)用程序界定3D基元,其中所述基元形成應(yīng)用程序內(nèi)容的各種對(duì)象。這些對(duì)象形成被限制于顯示器的2D區(qū)域的單個(gè)圖像(例如,單視圖)。舉例來(lái)說(shuō),3D圖像內(nèi)的對(duì)象可表現(xiàn)為與3D圖像內(nèi)的其它對(duì)象相比更遠(yuǎn)離或更接近。然而,所有這些對(duì)象限于顯示器的2D區(qū)域。S3D圖像是由組合右眼和左眼圖像的觀看者的大腦產(chǎn)生的感知圖像。所得圖像(即,S3D圖像)表現(xiàn)為不限制于顯示器的2D區(qū)域。而是,S3D圖像表現(xiàn)為涵蓋3D體積,其中所述圖像表現(xiàn)為彈出或推入顯示器。舉例來(lái)說(shuō),S3D圖像內(nèi)的對(duì)象表現(xiàn)為與3D體積內(nèi)的其它對(duì)象相比更遠(yuǎn)離或更接近,而不是像3D圖像的情況那樣在2D區(qū)域內(nèi)。換句話說(shuō),3D圖形處理指代產(chǎn)生表現(xiàn)為被限制于顯示器的2D區(qū)域的3D圖像(例如,通過(guò)由應(yīng)用程序定義的3D基元)。此3D圖像稱為單視圖。S3D指代用于立體視圖的創(chuàng)建的再現(xiàn)而不是單視圖。在立體視圖中,右眼和左眼圖像被限制于2D顯示器;然而,當(dāng)觀看者觀看立體視圖時(shí),所述圖像表現(xiàn)為涵蓋3D體積。一起形成S3D圖像的右眼和左眼圖像可為3D圖像。是觀看者的大腦致使觀看者在大腦組合3D右眼圖像和3D左眼圖像時(shí)感知到S3D圖像。舉例來(lái)說(shuō),當(dāng)觀看者同時(shí)觀看右眼和左眼圖像時(shí),觀看者可基于人的雙眼視覺(jué)感知場(chǎng)景的深度。右眼圖像和左眼圖像的內(nèi)容可大體類似于單個(gè)3D圖像的內(nèi)容。為了高質(zhì)量立體效果,左眼圖像與右眼圖像之間可僅存在水平視差。舉例來(lái)說(shuō),左眼圖像中的對(duì)象的位置和右眼圖像中的所述對(duì)象的位置可不同。然而,差異可僅在水平方向上,且不在垂直方向上。是對(duì)象之間的水平視差致使觀看者的雙眼視覺(jué)組合左眼圖像和右眼圖像以使得對(duì)象表現(xiàn)為彈出或推入顯示器。對(duì)象之間的任何垂直視差可削弱S3D效果。本發(fā)明中描述的技術(shù),執(zhí)行圖形驅(qū)動(dòng)器或圖形驅(qū)動(dòng)器包裝器的應(yīng)用程序處理器可將致使GPU產(chǎn)生用于單視圖的圖形內(nèi)容的指令修改為致使GPU產(chǎn)生用于立體視圖的圖形內(nèi)容的指令。換句話說(shuō),在修改之前,指令可致使GPU產(chǎn)生單個(gè)3D圖像。在修改之后,指令可致使GPU產(chǎn)生立體視圖的兩個(gè)3D圖像(例如,3D左眼圖像和3D右眼圖像)。應(yīng)注意雖然本發(fā)明中描述的技術(shù)大體上是針對(duì)3D圖像所揭示,但本發(fā)明的方面不限于此。本發(fā)明的技術(shù)還可延伸到2D圖形。舉例來(lái)說(shuō),單視圖的單個(gè)圖像可為2D圖像,且本發(fā)明的技術(shù)可修改指令以致使GPU產(chǎn)生用于立體視圖的兩個(gè)2D圖像。在此情況下,觀看者將感知到彈出或推入正顯示用于立體視圖的兩個(gè)圖像的顯示器的單個(gè)圖像。為避免混淆,下文描述的技術(shù)涉及用于單視圖的單個(gè)圖像以及用于立體視圖的左眼和右眼圖像,應(yīng)了解這些圖像可為3D圖像或2D圖像。本發(fā)明中描述的實(shí)例技術(shù),應(yīng)用程序處理器經(jīng)由圖形驅(qū)動(dòng)器或圖形驅(qū)動(dòng)器包裝器可修改由待由GPU執(zhí)行的應(yīng)用程序發(fā)出的指令以及待由GPU執(zhí)行的頂點(diǎn)著色器程序的指令。舉例來(lái)說(shuō),應(yīng)用程序處理器可執(zhí)行應(yīng)用程序。應(yīng)用程序可能已經(jīng)設(shè)計(jì)以產(chǎn)生單個(gè)圖像(例如,單視圖),且可將所述單個(gè)圖像的圖形內(nèi)容產(chǎn)生為多個(gè)基元。另外,應(yīng)用程序可確定基元的每一頂點(diǎn)的像素值,例如顏色、透明度和坐標(biāo)值。在應(yīng)用程序的執(zhí)行期間(例如,在運(yùn)行時(shí)間中),應(yīng)用程序經(jīng)由應(yīng)用程序處理器發(fā)出命令以檢索頂點(diǎn)著色器程序的指令。頂點(diǎn)著色器程序當(dāng)經(jīng)執(zhí)行時(shí)的輸出可為由應(yīng)用程序?yàn)閱蝹€(gè)圖像(例如,單視圖)產(chǎn)生的基元的頂點(diǎn)的裁剪坐標(biāo)。實(shí)例技術(shù)可修改頂點(diǎn)著色器程序的指令來(lái)產(chǎn)生用于左眼圖像和右眼圖像(例如,立體視圖)的基元的頂點(diǎn)的裁剪坐標(biāo)。用于左眼圖像和右眼圖像的基元的頂點(diǎn)的裁剪坐標(biāo)可基于觀看角度。觀看角度指代在應(yīng)用程序的執(zhí)行期間觀看者正觀看左眼和右眼圖像正顯示于其上的顯示器的角度(即,觀看者相對(duì)于顯示器的觀看定向)??纱嬖诖_定觀看角度的許多不同方式。本發(fā)明中描述的技術(shù)不限于確定觀看角度的任何特定方式。并且,在應(yīng)用程序的執(zhí)行期間,應(yīng)用程序經(jīng)由應(yīng)用程序處理器發(fā)出繪制指令到GPU以指示GPU繪制單個(gè)圖像內(nèi)的基元中的一或多者。舉例來(lái)說(shuō),在本發(fā)明的技術(shù)中,在應(yīng)用程序處理器上執(zhí)行的應(yīng)用程序如同GPU即將產(chǎn)生用于單個(gè)圖像的圖形內(nèi)容那樣輸出指令。本文所描述的技術(shù)修改由應(yīng)用程序發(fā)出的指令(例如繪制指令)來(lái)產(chǎn)生用于左眼和右眼圖像的圖形內(nèi)容。以此方式,從應(yīng)用程序的角度來(lái)看不存在對(duì)指令的修改。舉例來(lái)說(shuō),應(yīng)用程序處理器經(jīng)由圖形驅(qū)動(dòng)器包裝器監(jiān)視由應(yīng)用程序發(fā)出的指令。當(dāng)應(yīng)用程序發(fā)出繪制指令時(shí),圖形驅(qū)動(dòng)器包裝器俘獲此繪制指令且發(fā)出兩個(gè)繪制指令,其中一個(gè)指令是基于觀看角度產(chǎn)生用于左眼圖像的圖形內(nèi)容且一個(gè)指令是基于觀看角度產(chǎn)生用于右眼圖像的圖形內(nèi)容。觀看角度可不保持恒定。舉例來(lái)說(shuō),在應(yīng)用程序的執(zhí)行期間,觀看者可傾斜裝置,可傾斜他或她的頭,或這兩種情況。為了考慮觀看角度的改變的可能性,應(yīng)用程序處理器可周期性地確定觀看角度。作為一個(gè)實(shí)例,在GPU輸出左眼圖像和右眼圖像的一個(gè)組合之后,所述技術(shù)可確定觀看角度。在此實(shí)例中,圖形驅(qū)動(dòng)器包裝器可修改頂點(diǎn)著色器的指令以考慮由GPU再現(xiàn)的左眼圖像和右眼圖像的下一組合的觀看角度的改變。或者,處理器可連續(xù)地確定觀看角度,且圖形驅(qū)動(dòng)器包裝器可利用當(dāng)前觀看角度來(lái)確定修改頂點(diǎn)著色器的指令的方式。如上文所描述,圖形驅(qū)動(dòng)器包裝器可修改頂點(diǎn)著色器的指令以產(chǎn)生用于左眼圖像和右眼圖像兩者的基元的頂點(diǎn)。舉例來(lái)說(shuō),所述技術(shù)可致使經(jīng)修改頂點(diǎn)著色器執(zhí)行兩次。在第一執(zhí)行實(shí)例中,經(jīng)修改頂點(diǎn)著色器可基于觀看角度在第一方向上使頂點(diǎn)的裁剪坐標(biāo)移位,且在第二執(zhí)行實(shí)例中,經(jīng)修改頂點(diǎn)著色器可基于觀看角度在第二方向上使頂點(diǎn)的裁剪坐標(biāo)移位。GPU可處理在第一方向上移位的頂點(diǎn)以再現(xiàn)左眼圖像,且可處理在第二方向上移位的頂點(diǎn)以再現(xiàn)右眼圖像。然而,在第一方向上使所有裁剪坐標(biāo)移位且隨后在第二方向上使所有裁剪坐標(biāo)移位可得到立體視圖,其中由應(yīng)用程序產(chǎn)生的單個(gè)圖像的所有對(duì)象表現(xiàn)為彈出或推入正在顯示左眼圖像和右眼圖像的顯示器。舉例來(lái)說(shuō),由應(yīng)用程序產(chǎn)生的基元可形成不同對(duì)象。通過(guò)在第一方向上使所有基元的裁剪坐標(biāo)移位來(lái)產(chǎn)生左眼圖像,且在第二方向上使所有基元的裁剪坐標(biāo)移位來(lái)產(chǎn)生右眼圖像,所有對(duì)象可表現(xiàn)為彈出或推入顯示器。此結(jié)果對(duì)于人雙眼視覺(jué)可能不是理想的。舉例來(lái)說(shuō),觀看者可能希望一些對(duì)象比其它對(duì)象彈出更多。作為另一實(shí)例,即使所有對(duì)象彈出或推入顯示器達(dá)相同量,觀看者也可能希望控制所述對(duì)象彈出或推入顯示器的量。如更詳細(xì)地描述,應(yīng)用程序處理器經(jīng)由圖形驅(qū)動(dòng)器包裝器還可修改頂點(diǎn)著色器的指令以使得一些對(duì)象比其它對(duì)象彈出或推入顯示器更多。在一些實(shí)例中,除修改頂點(diǎn)著色器的指令以允許一些對(duì)象比其它對(duì)象彈出或推入顯示器更多之外或替代于修改頂點(diǎn)著色器的指令以允許一些對(duì)象比其它對(duì)象彈出或推入顯示器更多,應(yīng)用程序處理器經(jīng)由圖形驅(qū)動(dòng)器包裝器可修改增加或減小左眼圖像與右眼圖像之間的水平視差的指令。以此方式,觀看者可能夠控制立體視圖彈出或推入顯示器的量。圖1是說(shuō)明根據(jù)本發(fā)明中所描述的一或多個(gè)實(shí)例的顯示立體視圖的顯示器的概念圖。圖1說(shuō)明裝置10。裝置10的實(shí)例包含(但不限于)移動(dòng)無(wú)線電話、個(gè)人數(shù)字助理(PDA)、包含視頻顯示器的視頻游戲控制臺(tái)、移動(dòng)視頻會(huì)議單元、膝上型計(jì)算機(jī)、桌上型計(jì)算機(jī)、電視機(jī)機(jī)頂盒、數(shù)字媒體播放器、平板計(jì)算裝置、智能電話及類似物。裝置10包含顯示器12。顯示器12的實(shí)例包含(但不限于)液晶顯示器(LCD)、有機(jī)發(fā)光二極管顯示器(OLED)、陰極射線管(CRT)顯示器、等離子顯示器、極化顯示器或另一種類型的顯示裝置。顯示器12可為經(jīng)配置以顯示立體視圖(例如,左眼圖像和右眼圖像)的任何類型的顯示器。如所示,顯示器12顯示3D圖像14A和3D圖像14B。圖1將圖像14A說(shuō)明為實(shí)線框,且將圖像14B說(shuō)明為虛線框。圖像14A和圖像14B可各自為3D圖像。舉例來(lái)說(shuō),如果個(gè)別地觀看圖像14A和14B中的每一者,那么圖像14A和14B將不會(huì)表現(xiàn)為彈出或推入顯示器12(例如,表現(xiàn)為如同單視圖)。然而,當(dāng)一起觀看圖像14A和圖像14B時(shí),圖像14A和圖像14B一起形成立體視圖。舉例來(lái)說(shuō),圖像14A和圖像14B可包含相似圖像內(nèi)容,但在顯示器12上移位。由觀看者佩戴的專用眼鏡可阻擋觀看者的右眼看到圖像14A,且允許觀看者的左眼看見(jiàn)圖像14B。所述專用眼鏡還可阻擋觀看者的左眼看到圖像14B,且允許觀看者的右眼看見(jiàn)圖像14A。當(dāng)觀看者一起觀看圖像14A和14B時(shí),圖像14A與14B之間的水平視差可導(dǎo)致觀看者感知到S3D圖像(即,表現(xiàn)為在顯示器12后方或顯示器12前方且包含3D體積的圖像)。換句話說(shuō),圖像14A是立體視圖的左眼圖像,且圖像14B是立體視圖的右眼圖像。在裝置10的處理器上執(zhí)行的應(yīng)用程序可產(chǎn)生單個(gè)圖像(例如,單視圖)。舉例來(lái)說(shuō),執(zhí)行應(yīng)用程序的處理器可將單個(gè)圖像的圖像內(nèi)容產(chǎn)生為多個(gè)基元。此單個(gè)圖像的圖像內(nèi)容可類似于圖像14A和圖像14B的圖像內(nèi)容。另外,執(zhí)行應(yīng)用程序的處理器可確定基元的每一頂點(diǎn)的像素值,例如顏色、透明度和坐標(biāo)值?;南袼刂悼杀环Q為圖像數(shù)據(jù)。執(zhí)行應(yīng)用程序的處理器可將圖像數(shù)據(jù)和指令輸出到裝置10的圖形處理單元(GPU),指示所述GPU再現(xiàn)單個(gè)圖像。根據(jù)本發(fā)明中描述的技術(shù),處理器可將命令俘獲到GPU,其命令GPU再現(xiàn)單個(gè)圖像。舉例來(lái)說(shuō),處理器可執(zhí)行圖形驅(qū)動(dòng)器或圖形驅(qū)動(dòng)器包裝器,且處理器可經(jīng)由所述圖形驅(qū)動(dòng)器或圖形驅(qū)動(dòng)器包裝器將命令俘獲到GPU以再現(xiàn)單個(gè)圖像。出于說(shuō)明的目的,將所述技術(shù)描述為由執(zhí)行圖形驅(qū)動(dòng)器包裝器的處理器執(zhí)行。一般來(lái)說(shuō),為易于描述,所述技術(shù)描述執(zhí)行各種功能的圖形驅(qū)動(dòng)器包裝器。然而,應(yīng)理解處理器是經(jīng)由圖形驅(qū)動(dòng)器包裝器的執(zhí)行實(shí)施所述技術(shù)。舉例來(lái)說(shuō),圖形驅(qū)動(dòng)器包裝器可為在處理器上執(zhí)行的程序。圖形驅(qū)動(dòng)器包裝器可修改圖形驅(qū)動(dòng)器接收的指令或圖形驅(qū)動(dòng)器輸出的指令以使得經(jīng)修改指令致使GPU再現(xiàn)立體視圖。因此,本發(fā)明中描述的技術(shù)可不需要對(duì)圖形驅(qū)動(dòng)器的任何修改。而是,處理器可執(zhí)行圖形驅(qū)動(dòng)器包裝器且執(zhí)行先前開發(fā)的圖形驅(qū)動(dòng)器。然而,修改現(xiàn)有圖形驅(qū)動(dòng)器或產(chǎn)生新圖形驅(qū)動(dòng)器以實(shí)施本發(fā)明中描述的技術(shù)可為可能的。執(zhí)行圖形驅(qū)動(dòng)器包裝器的處理器可修改由處理器發(fā)出的命令且致使GPU再現(xiàn)形成立體視圖的兩個(gè)圖像(例如,圖像14A和圖像14B)。另外,執(zhí)行圖形驅(qū)動(dòng)器包裝器的處理器可修改在GPU上執(zhí)行的著色器程序(例如,頂點(diǎn)著色器)的指令。舉例來(lái)說(shuō),圖形驅(qū)動(dòng)器包裝器可修改頂點(diǎn)著色器的指令以使得經(jīng)修改頂點(diǎn)著色器當(dāng)在GPU上經(jīng)執(zhí)行時(shí)使由在處理器上執(zhí)行的應(yīng)用程序產(chǎn)生的單個(gè)圖像中的像素的位置移位。圖形驅(qū)動(dòng)器包裝器可致使GPU執(zhí)行經(jīng)修改頂點(diǎn)著色器兩次。在經(jīng)修改頂點(diǎn)著色器的第一執(zhí)行中,經(jīng)修改頂點(diǎn)著色器在一個(gè)方向上使單個(gè)圖像中的像素的位置移位。在經(jīng)修改頂點(diǎn)著色器的第二執(zhí)行中,經(jīng)修改頂點(diǎn)著色器在第二執(zhí)行中在另一方向上使單個(gè)圖像中的像素的位置移位。圖像14A可為從頂點(diǎn)著色器在一個(gè)方向上使單個(gè)圖像的像素移位而得到的圖像。圖像14B可為從頂點(diǎn)著色器在另一方向上使單個(gè)圖像的像素移位而得到的圖像。在修改頂點(diǎn)著色器的指令中,執(zhí)行圖形驅(qū)動(dòng)器包裝器的處理器可考慮觀看角度。觀看角度是觀看者觀看顯示器12所處的角度。舉例來(lái)說(shuō),在圖1中,顯示器12可以認(rèn)為是在橫向模式中。如果觀看者筆直向前觀看顯示器12(即,觀看者未傾斜他或她的頭),那么觀看角度可以認(rèn)為是0。然而,如果觀看者傾斜裝置10或傾斜他或她的頭,那么觀看角度可不再為0。舉例來(lái)說(shuō),如果觀看者將裝置10旋轉(zhuǎn)為處于縱向模式(例如,將裝置10傾斜90°),那么觀看角度可為90°。應(yīng)理解觀看角度在橫向模式中為0且在縱向模式中為90°是出于說(shuō)明的目的而提供且不應(yīng)被視為具限制性。本發(fā)明中描述的技術(shù)也適用于其中觀看角度在縱向模式中是0且在橫向模式中是90°的情形或橫向與縱向模式之間的任何模式。一般來(lái)說(shuō),裝置10的處理器可確定觀看角度,且處理器經(jīng)由在處理器上執(zhí)行的圖形驅(qū)動(dòng)器包裝器可基于觀看角度而修改由應(yīng)用程序輸出到GPU的指令和在GPU上執(zhí)行的著色器程序的指令。圖形驅(qū)動(dòng)器包裝器可修改所述指令以使得GPU再現(xiàn)形成立體視圖的兩個(gè)圖像而不是形成單視圖的單個(gè)圖像。圖2是說(shuō)明不同觀看角度的概念圖。出于說(shuō)明的目的,圖2說(shuō)明觀看者可傾斜裝置10的不同角度。然而,本發(fā)明中描述的技術(shù)也可以擴(kuò)展到其中觀看者并不傾斜裝置10而是傾斜他或她的頭或兩者的組合的實(shí)例。大多數(shù)立體3D顯示器必須與裝置定向上的約束一起使用。舉例來(lái)說(shuō),多數(shù)全部3D電視是在橫向模式中觀看。這對(duì)于經(jīng)設(shè)置用于在水平表面上使用(TV機(jī)柜、桌面等)的許多裝置是合理的。然而,對(duì)于例如電話和平板計(jì)算機(jī)等手持式裝置,觀看者可在橫向或縱向模式中或甚至以任何角定向觀看顯示器。舉例來(lái)說(shuō),在位置18A中,裝置10處于橫向模式。為易于描述,圖2說(shuō)明定向點(diǎn)16,當(dāng)裝置10處于橫向模式時(shí)其定位于裝置10的右上角處。觀看者可將裝置10傾斜45°(即,從位置18A到位置18B)。在此情況下,圖2說(shuō)明在位置18B的定向點(diǎn)16相對(duì)于在位置18A的定向點(diǎn)在右下方向上移動(dòng)。在此實(shí)例中,觀看角度可視為45°。作為另一實(shí)例,觀看者可將裝置10傾斜-45°(即,從位置18A到位置18C)。在此情況下,圖2說(shuō)明在位置18C的定向點(diǎn)16相對(duì)于在位置18A的定向點(diǎn)在左上方向上移動(dòng)。在此實(shí)例中,觀看角度可視為-45°。因?yàn)橛^看者可將裝置10傾斜任何量,所以觀看角度可從-180°到180°變動(dòng)。舉例來(lái)說(shuō),橫向和縱向是兩個(gè)典型顯示模式(例如,觀看者將裝置10從橫向更多地旋轉(zhuǎn)到縱向模式,或反之亦然)。在這些情況下,裝置10可確定裝置10是否處于橫向模式或縱向模式,且處理器經(jīng)由圖形驅(qū)動(dòng)器包裝器可修改指令以致使GPU再現(xiàn)用于橫向模式或縱向模式的左眼圖像和右眼圖像。然而,觀看者可將裝置10定向在任何角度,且不僅是在橫向模式或縱向模式中。因此,處理器可考慮觀看角度以確定修改在GPU上執(zhí)行的指令的方式??纱嬖诖_定觀看角度的各種方式。舉例來(lái)說(shuō),裝置10可包含裝置10用來(lái)確定是否從橫向模式切換到縱向模式的加速度計(jì)。裝置10還可包含加速度計(jì)的單軸或多軸模型以檢測(cè)恰當(dāng)加速度的量值和方向。此加速度計(jì)可基于重量改變的方向而輸出定向。裝置10的處理器可基于輸出定向確定觀看角度。作為另一實(shí)例,裝置10可包含陀螺儀。陀螺儀可基于角度動(dòng)量守恒的原理提供定向的測(cè)量。裝置10的處理器可基于由陀螺儀提供的定向的測(cè)量而確定觀看角度。基于其它操作原理的陀螺儀也存在,例如在消費(fèi)者電子裝置中使用的電子微芯片封裝MEMS陀螺儀裝置。陀螺儀可提供比加速度計(jì)更準(zhǔn)確的3D空間內(nèi)的移動(dòng)辨識(shí)。加速度計(jì)或陀螺儀的輸出可允許處理器確定觀看角度的合理的估計(jì)。然而,觀看角度的估計(jì)可基于觀看者以例如垂直(例如,觀看者并不傾斜他或她的頭)等特定方式定向的假設(shè)。換句話說(shuō),加速度計(jì)或陀螺儀可提供顯示器定向的準(zhǔn)確測(cè)量,其可足以確定觀看角度的合理的估計(jì)但不可提供觀看者定向的準(zhǔn)確測(cè)量。在一些實(shí)例中,裝置10的處理器確定觀看者的定向(例如,觀看者是否垂直定向,或觀看者是否傾斜他或她的頭)可為可能的。舉例來(lái)說(shuō),顯示器12或裝置10可包含內(nèi)建式面向前方的相機(jī)。通過(guò)面向前方的相機(jī),相機(jī)處理器可檢測(cè)觀看者的眼睛或觀看者相對(duì)于顯示器12的頭定向。裝置10的處理器可基于如由相機(jī)處理器檢測(cè)的所檢測(cè)的眼睛或頭定向而確定觀看角度。除正常光學(xué)相機(jī)以外,其它傳感器也可經(jīng)配置以檢測(cè)觀看者的眼睛或頭定向。一般來(lái)說(shuō),本發(fā)明中描述的技術(shù)可利用任何技術(shù)來(lái)確定觀看角度,包含不必依賴于檢測(cè)用戶的眼睛或頭的技術(shù)。本發(fā)明中描述的技術(shù)不應(yīng)被視為限于上文描述的用于確定觀看角度的實(shí)例。舉例來(lái)說(shuō),本發(fā)明中描述的技術(shù)可僅基于加速度計(jì)和/或陀螺儀的輸出確定觀看角度。作為另一實(shí)例,本發(fā)明中描述的技術(shù)可僅基于所檢測(cè)的用戶的眼睛或頭而確定觀看角度。作為另一實(shí)例,本發(fā)明中描述的技術(shù)可基于加速度計(jì)和/或陀螺儀的輸出且基于所檢測(cè)的用戶的眼睛或頭而確定觀看角度。作為另一實(shí)例,所述技術(shù)可基于加速度計(jì)和/或陀螺儀的輸出且基于經(jīng)配置以確定用戶的觀看定向的一或多個(gè)其它傳感器而確定觀看角度。上文的任何排列和組合以及任何其它技術(shù)可用以確定觀看角度。圖3是說(shuō)明觀看者的眼睛和頭定向的檢測(cè)的概念圖。在圖3中,裝置10的顯示器12顯示由裝置10的相機(jī)俘獲的面。應(yīng)理解顯示器12并不需要顯示由相機(jī)俘獲的圖像以確定觀看角度,且圖3為便于圖示而說(shuō)明顯示器12顯示由相機(jī)俘獲的面。如圖3中所示,裝置10處于橫向模式;然而,觀看者的頭傾斜。在此情況下,裝置10的相機(jī)處理器可檢測(cè)眼睛20A和20B的定向,且將眼睛20A和20B的定向發(fā)射到裝置10的處理器?;谘劬?0A和20B的定向,裝置10的處理器可確定觀看角度。根據(jù)本發(fā)明中描述的技術(shù),圖形驅(qū)動(dòng)器包裝器可基于所確定的觀看角度修改在GPU上執(zhí)行的指令。圖4是說(shuō)明觀看角度的實(shí)例的概念圖。在圖4中,觀看角度標(biāo)記為阿爾法(α)。觀看角度是觀看者的觀看定向與顯示器的定向之間的關(guān)系。舉例來(lái)說(shuō),α是由眼睛的水平方向和顯示器的水平方向形成的角度的測(cè)量。顯示器的水平方向指代相對(duì)于顯示器的定向的水平平面,且眼睛的水平方向指代相對(duì)于觀看者的眼睛20A和20B的定向的水平平面。在圖4中,觀看者筆直觀看顯示器12(例如,不存在觀看者的頭的傾斜)。因此,眼睛的水平方向是水平直線。在圖4中,裝置10以一角度傾斜,且不在橫向模式或縱向模式中。因此,顯示器的水平方向是相對(duì)于裝置10水平,但相對(duì)于眼睛的水平方向?yàn)槌山嵌鹊木€。圖5是說(shuō)明可實(shí)施本發(fā)明中描述的一或多個(gè)實(shí)例技術(shù)的裝置的實(shí)例的框圖。舉例來(lái)說(shuō),圖5進(jìn)一步詳細(xì)說(shuō)明裝置10。如圖5中所示,裝置10可包含應(yīng)用程序處理器22、圖形處理單元(GPU)30、系統(tǒng)存儲(chǔ)器36、一或多個(gè)傳感器42和相機(jī)處理器44。裝置10可包含除圖5中說(shuō)明的那些組件之外的組件。此外,在一些實(shí)例中,應(yīng)用程序處理器22、GPU30和相機(jī)處理器44可形成為容納在單個(gè)電路封裝內(nèi)的共同集成電路(例如,形成為共同處理器)。然而,本發(fā)明的方面不限于此,且應(yīng)用程序處理器22、GPU30和相機(jī)處理器44中的一或多者可為容納在單獨(dú)的電路封裝中的單獨(dú)的集成電路。一或多個(gè)傳感器42可經(jīng)配置以將裝置10的定向的測(cè)量輸出到應(yīng)用程序處理器22。一或多個(gè)傳感器42的實(shí)例包含加速度計(jì)和陀螺儀。相機(jī)處理器44可從由裝置10的相機(jī)(未圖示)或顯示器12的相機(jī)(未圖示)俘獲的圖像接收?qǐng)D像數(shù)據(jù)。在本發(fā)明中描述的技術(shù)中,相機(jī)可經(jīng)配置以在無(wú)用戶干預(yù)的情況下且在后臺(tái)中連續(xù)地俘獲圖像。舉例來(lái)說(shuō),所俘獲圖像不需要顯示或存儲(chǔ)以用于稍后檢索。相機(jī)處理器44可從所俘獲圖像確定觀看者的定向。相機(jī)處理器44可確定觀看者的眼睛的定向以確定觀看者的定向。相機(jī)處理器44可實(shí)施任何技術(shù)以識(shí)別觀看者的眼睛,相機(jī)處理器44從中確定觀看者的眼睛的定向。許多當(dāng)前相機(jī)處理器經(jīng)配置以識(shí)別觀看者的眼睛,且這些當(dāng)前相機(jī)處理器可為相機(jī)處理器44的一個(gè)實(shí)例。一或多個(gè)傳感器42可將裝置10的定向的測(cè)量輸出到應(yīng)用程序處理器22。相機(jī)處理器44可將觀看者定向的測(cè)量輸出到應(yīng)用程序處理器22。應(yīng)用程序處理器22可至少基于裝置10的定向的測(cè)量和觀看者的定向的測(cè)量確定觀看角度。舉例來(lái)說(shuō),應(yīng)用程序處理器22可將觀看角度確定為裝置10的定向與觀看者的定向之間的角度。如更詳細(xì)地描述,應(yīng)用程序處理器22可利用觀看角度來(lái)確定修改頂點(diǎn)著色器38的指令的方式。相機(jī)處理器44可能不是在每個(gè)實(shí)例中都是必要的。舉例來(lái)說(shuō),裝置10的定向的測(cè)量對(duì)于應(yīng)用程序處理器22確定觀看角度可為足夠的。在這些實(shí)例中,應(yīng)用程序處理器22可以觀看者定向的測(cè)量預(yù)配置。應(yīng)用程序處理器22可基于裝置10的定向的測(cè)量和觀看者定向的預(yù)配置測(cè)量而確定觀看角度。作為另一實(shí)例,應(yīng)用程序處理器22可基于觀看者的定向的測(cè)量而確定觀看角度而無(wú)需使用一或多個(gè)傳感器42的輸出。在此實(shí)例中,應(yīng)用程序處理器22可以裝置10的定向預(yù)配置(例如,可經(jīng)預(yù)配置以當(dāng)不使用一或多個(gè)傳感器42的輸出時(shí)確定裝置10的定向是橫向)。利用一或多個(gè)傳感器42和相機(jī)處理器44確定觀看角度是僅出于說(shuō)明的目的而提供且不應(yīng)被視為具限制性。可存在應(yīng)用程序處理器22可確定觀看角度的其它方式,且本發(fā)明中描述的技術(shù)可擴(kuò)展到此些其它技術(shù)。在一些實(shí)例中,應(yīng)用程序處理器22可在每次立體視圖的產(chǎn)生確定觀看角度一次,因?yàn)橛^看者可改變觀看角度。舉例來(lái)說(shuō),GPU30可輸出經(jīng)再現(xiàn)圖像,例如立體視圖的左眼圖像和右眼圖像。在左眼圖像和右眼圖像兩者的每次輸出之后,應(yīng)用程序處理器22可確定觀看角度。作為另一實(shí)例,應(yīng)用程序處理器22可連續(xù)地確定觀看角度。如更詳細(xì)地描述,應(yīng)用程序處理器22經(jīng)由圖形驅(qū)動(dòng)器包裝器26可基于當(dāng)前所確定的觀看角度修改頂點(diǎn)著色器38的指令以使得當(dāng)頂點(diǎn)著色器38處理下一圖像時(shí),頂點(diǎn)著色器38可產(chǎn)生如由應(yīng)用程序處理器22所確定的下一左眼圖像和下一右眼圖像的裁剪坐標(biāo)。應(yīng)用程序處理器22可為裝置10的中央處理單元(CPU)。GPU30可為可操作以輸出圖形數(shù)據(jù)以供在顯示器上呈現(xiàn)的處理單元。應(yīng)用程序處理器22、GPU30和相機(jī)處理器44的實(shí)例包含(但不限于)數(shù)字信號(hào)處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程邏輯陣列(FPGA)或其它等效集成或離散邏輯電路。在一些實(shí)例中GPU30可為經(jīng)具體設(shè)計(jì)用于圖形處理的專用硬件。舉例來(lái)說(shuō),圖形處理可需要快速并行處理,且GPU30可經(jīng)具體設(shè)計(jì)用于此些快速并行處理。GPU30執(zhí)行除圖形處理之外的任務(wù)可為可能的,例如一般處理任務(wù)。因此,GPU30可視為一般處理GPU(GPGPU)。本發(fā)明中描述的技術(shù)可應(yīng)用于其中GPU30僅執(zhí)行圖形相關(guān)任務(wù)的實(shí)例或其中GPU30是GPGPU的實(shí)例。系統(tǒng)存儲(chǔ)器36可為計(jì)算機(jī)可讀存儲(chǔ)媒體的實(shí)例。舉例來(lái)說(shuō),系統(tǒng)存儲(chǔ)器36可存儲(chǔ)致使應(yīng)用程序處理器22和GPU30執(zhí)行歸于本發(fā)明中的每一者的功能的指令。系統(tǒng)存儲(chǔ)器36可視為包括致使一或多個(gè)處理器(例如,應(yīng)用程序處理器22或GPU30)執(zhí)行各種功能的指令的計(jì)算機(jī)可讀存儲(chǔ)媒體。系統(tǒng)存儲(chǔ)器36的實(shí)例包含但不限于隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、CD-ROM或其它光盤存儲(chǔ)裝置、磁盤存儲(chǔ)裝置或其它磁性存儲(chǔ)裝置、快閃存儲(chǔ)器,或可用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式攜載或存儲(chǔ)所要的程序代碼且可由計(jì)算機(jī)或處理器存取的任何其它媒體。在一些實(shí)例中,系統(tǒng)存儲(chǔ)器36可被視為非暫時(shí)性存儲(chǔ)媒體。術(shù)語(yǔ)“非暫時(shí)性”可指示存儲(chǔ)媒體不體現(xiàn)于載波或傳播信號(hào)中。然而,術(shù)語(yǔ)“非暫時(shí)性”不應(yīng)解釋為意指系統(tǒng)存儲(chǔ)器36是不可移動(dòng)的。作為一個(gè)實(shí)例,可從裝置10移除系統(tǒng)存儲(chǔ)器36,及將所述系統(tǒng)存儲(chǔ)器移動(dòng)到另一裝置。作為另一實(shí)例,實(shí)質(zhì)上類似于系統(tǒng)存儲(chǔ)器36的存儲(chǔ)裝置可插入到裝置10中。在某些實(shí)例中,非暫時(shí)性存儲(chǔ)媒體可存儲(chǔ)可隨時(shí)間改變的數(shù)據(jù)(例如,在RAM中)。GPU30可包含著色器處理器32和固定功能管線34。有時(shí)稱為著色器核心的著色器處理器32可為GPU30的核心,例如頂點(diǎn)著色器和片段著色器等著色器程序在其上執(zhí)行。固定功能管線34可包含執(zhí)行固定功能的硬件單元。換句話說(shuō),例如頂點(diǎn)著色器和片段著色器等著色器程序可為在著色器處理器32上執(zhí)行且允許功能靈活性的軟件單元,而固定功能管線34包含具有固定功能和最小功能靈活性的硬件單元。舉例來(lái)說(shuō),GPU的一些較早版本僅包含圖形管線中的固定功能單元。在GPU30中,GPU的較早版本的固定功能圖形管線部分地被頂點(diǎn)著色器(例如頂點(diǎn)著色器38)和片段著色器代替。舉例來(lái)說(shuō),頂點(diǎn)著色器38可執(zhí)行例如模型視圖變換、照明和投影等功能,其由GPU的較早版本中的固定功能單元執(zhí)行。片段著色器可執(zhí)行GPU的較早版本中的固定功能單元的片段級(jí)的功能。本發(fā)明中描述的實(shí)例技術(shù)可修改經(jīng)設(shè)計(jì)以產(chǎn)生單個(gè)三維(3D)圖像(例如,用于單視圖)的著色器程序,以使得當(dāng)經(jīng)修改著色器程序在著色器處理器32上執(zhí)行時(shí),GPU30基于觀看角度產(chǎn)生用于S3D圖像(例如,立體視圖)的圖形數(shù)據(jù)。再次,如上文所論述,立體視圖包含左眼圖像和右眼圖像。左眼圖像和右眼圖像包含與單視圖圖像大體上類似的圖形內(nèi)容;然而,左眼和右眼圖像的一或多個(gè)對(duì)應(yīng)像素可相對(duì)于彼此沿著水平軸線移位。舉例來(lái)說(shuō),設(shè)想右眼圖像放置在左眼圖像之上。在此情況下,右眼圖像中的所有內(nèi)容可能不與左眼圖像中的相同內(nèi)容完美地對(duì)齊。而是,右眼中的一或多個(gè)對(duì)象可在左眼圖像中的相同對(duì)象的左邊或右邊(例如,右眼圖像與左眼圖像中的對(duì)象之間可存在水平視差)。為了高質(zhì)量立體效果,右眼圖像與左眼圖像中的對(duì)象之間可不存在垂直視差。左眼圖像可由觀看者的左眼觀看,且右眼圖像被阻擋于觀看者的左眼。右眼圖像可由觀看者的右眼觀看,且左眼圖像被阻擋于觀看者的右眼。在一些實(shí)例中,觀看者可佩戴專用眼鏡,其阻擋左眼圖像由右眼觀看且阻擋右眼圖像由左眼觀看。然而,本發(fā)明的方面不必需要觀看者佩戴專用眼鏡。舉例來(lái)說(shuō),一些顯示器并不需要觀看者佩戴專用眼鏡來(lái)體驗(yàn)立體視圖。本發(fā)明的技術(shù)可延伸到此些顯示器。GPU30可產(chǎn)生用于左眼圖像和右眼圖像的圖形數(shù)據(jù)以使得當(dāng)觀看者同時(shí)觀看左眼圖像和右眼圖像時(shí),觀看者的大腦致使觀看者感知到彈出或推入正在顯示所述兩個(gè)圖像的顯示器的圖像(例如,表現(xiàn)為在顯示器前方或后方)。此彈出或推入是由于觀看者的大腦解析立體視圖的具有大體上類似內(nèi)容的兩個(gè)圖像中的水平差異。舉例來(lái)說(shuō),觀看者的雙眼視覺(jué)致使觀看者同時(shí)觀看左眼圖像和右眼圖像兩者,且觀看者通過(guò)感知深度來(lái)解析左眼和右眼圖像中的水平差異。作為一實(shí)例,應(yīng)用程序處理器22可執(zhí)行存儲(chǔ)在系統(tǒng)存儲(chǔ)器36中的一或多個(gè)應(yīng)用程序,例如應(yīng)用程序42。應(yīng)用程序32的實(shí)例包含(但不限于)網(wǎng)絡(luò)瀏覽器、用戶接口、電子郵件應(yīng)用程序、電子表格應(yīng)用程序、文字處理應(yīng)用程序、圖形創(chuàng)作應(yīng)用程序、視頻游戲或產(chǎn)生用于顯示的可觀看對(duì)象的其它應(yīng)用程序。舉例來(lái)說(shuō),應(yīng)用程序42可為當(dāng)經(jīng)執(zhí)行時(shí)輸出顯示于顯示器上的圖形內(nèi)容的視頻游戲。應(yīng)用程序42可由開發(fā)者針對(duì)單視圖而設(shè)計(jì)。舉例來(lái)說(shuō),應(yīng)用程序42在執(zhí)行后可即刻產(chǎn)生3D圖形內(nèi)容,其中3D圖形內(nèi)容被限制于顯示器的2D區(qū)域。應(yīng)用程序42在應(yīng)用程序處理器22上執(zhí)行后可將產(chǎn)生的3D圖形內(nèi)容劃分為基元,例如三角形、矩形或其它類型的多邊形。這些基元中的每一者可包含將在顯示器上顯示的像素。舉例來(lái)說(shuō),這些基元可形成圖像內(nèi)的對(duì)象。應(yīng)用程序42在應(yīng)用程序處理器22上執(zhí)行后還可即刻對(duì)基元的頂點(diǎn)中的每一者指派像素值。舉例來(lái)說(shuō),像素值可包含頂點(diǎn)的3D坐標(biāo)、頂點(diǎn)的顏色值以及頂點(diǎn)的透明度值。像素值不需要在本發(fā)明的每個(gè)方面中都包含所有以上實(shí)例組件。應(yīng)用程序處理器22可隨后將頂點(diǎn)的像素值轉(zhuǎn)發(fā)到GPU30用于進(jìn)一步處理。舉例來(lái)說(shuō),應(yīng)用程序處理器22可包含圖形驅(qū)動(dòng)器24,其可為在應(yīng)用程序處理器22上執(zhí)行的軟件。應(yīng)用程序處理器經(jīng)由圖形驅(qū)動(dòng)器24可經(jīng)配置以將命令發(fā)射到GPU30,且作為響應(yīng),GPU30可根據(jù)所接收的命令執(zhí)行功能。舉例來(lái)說(shuō),圖形驅(qū)動(dòng)器24充當(dāng)GPU30與應(yīng)用程序處理器22之間的接口。當(dāng)應(yīng)用程序處理器22發(fā)出命令到GPU30時(shí),GPU30是通過(guò)圖形驅(qū)動(dòng)器24接收所述命令。舉例來(lái)說(shuō),在應(yīng)用程序處理器22上執(zhí)行的應(yīng)用程序42可指示GPU30執(zhí)行特定任務(wù)。在此情況下,圖形驅(qū)動(dòng)器24可從應(yīng)用程序42接收用于特定任務(wù)的指令,且應(yīng)用程序處理器22可將指令提供到GPU30。作為響應(yīng),GPU30可執(zhí)行所述任務(wù)。在一些實(shí)例中,可根據(jù)特定應(yīng)用程序編程接口(API)設(shè)計(jì)圖形驅(qū)動(dòng)器24。舉例來(lái)說(shuō),圖形驅(qū)動(dòng)器24可根據(jù)OpenGL或OpenGLES(嵌入式系統(tǒng))API而設(shè)計(jì),其為柯羅諾斯團(tuán)隊(duì)(KhronosGroup)的API且其規(guī)范是公開可用的。然而,本發(fā)明的技術(shù)可擴(kuò)展到微軟DirectX系統(tǒng),例如DirectX9、10或11,或任何其它基于著色器的圖形系統(tǒng)和API。出于說(shuō)明的目的,在其中API是OpenGLES2.0API的上下文中描述本發(fā)明的技術(shù)。然而,本發(fā)明的方面不限于此,且可延伸到其它API或基于著色器的圖形系統(tǒng)。為了再現(xiàn)從應(yīng)用程序處理器22接收的基元,GPU30的著色器處理器32可執(zhí)行例如頂點(diǎn)著色器和片段著色器等一或多個(gè)著色器程序來(lái)產(chǎn)生顯示器的像素的像素值。開發(fā)者可根據(jù)例如出于說(shuō)明的目的在本發(fā)明中使用的OpenGLES2.0API的API而開發(fā)這些頂點(diǎn)著色器和片段著色器。用于這些頂點(diǎn)和片段著色器的源代碼可存儲(chǔ)在系統(tǒng)存儲(chǔ)器36中。舉例來(lái)說(shuō),應(yīng)用程序42可利用頂點(diǎn)著色器38,其可經(jīng)配置以對(duì)由應(yīng)用程序42產(chǎn)生的單視圖的圖像操作。由應(yīng)用程序42產(chǎn)生的單視圖的圖像的像素值可需要由著色器處理器32使用頂點(diǎn)著色器38處理。作為一個(gè)實(shí)例,頂點(diǎn)著色器38可為在應(yīng)用程序42在應(yīng)用程序處理器22上的執(zhí)行期間具體來(lái)說(shuō)由應(yīng)用程序42調(diào)用的頂點(diǎn)著色器。頂點(diǎn)著色器38可在GPU20的著色器處理器32上執(zhí)行,且應(yīng)用程序42可在應(yīng)用程序處理器22上執(zhí)行,但頂點(diǎn)著色器38和應(yīng)用程序42可出于顯示由應(yīng)用程序42產(chǎn)生的圖像的目的而互相關(guān)。頂點(diǎn)著色器38的源代碼可存儲(chǔ)在系統(tǒng)存儲(chǔ)器36中。應(yīng)用程序處理器22經(jīng)由圖形驅(qū)動(dòng)器24可檢索頂點(diǎn)著色器38的源代碼且將用于頂點(diǎn)著色器38的源代碼提供到編譯器28。編譯器28可編譯頂點(diǎn)著色器38的源代碼來(lái)產(chǎn)生頂點(diǎn)著色器38的目標(biāo)代碼,且將目標(biāo)代碼存儲(chǔ)在系統(tǒng)存儲(chǔ)器38中。應(yīng)用程序處理器22經(jīng)由圖形驅(qū)動(dòng)器34可隨后指示GPU30從系統(tǒng)存儲(chǔ)器36檢索頂點(diǎn)著色器38的目標(biāo)代碼,且指示GPU30在著色器處理器32上執(zhí)行頂點(diǎn)著色器38的目標(biāo)代碼。著色器處理器32可隨后執(zhí)行頂點(diǎn)著色器38的目標(biāo)代碼以處理由應(yīng)用程序42的執(zhí)行產(chǎn)生的頂點(diǎn)的像素值。GPU30與固定功能管線34和著色器處理器32結(jié)合可產(chǎn)生用于應(yīng)用程序42的圖形內(nèi)容供顯示。雖然系統(tǒng)存儲(chǔ)器36展示為存儲(chǔ)用于僅一個(gè)頂點(diǎn)著色器38的源代碼,但本發(fā)明的方面不限于此。舉例來(lái)說(shuō),應(yīng)用程序42可能利用多個(gè)不同頂點(diǎn)著色器,且用于這些頂點(diǎn)著色器中的每一者的源代碼可存儲(chǔ)在系統(tǒng)存儲(chǔ)器36中。舉例來(lái)說(shuō),頂點(diǎn)著色器可為內(nèi)容相依的且甚至場(chǎng)景相依的,且應(yīng)用程序42可基于待再現(xiàn)的圖像的內(nèi)容或場(chǎng)景而利用特定著色器。并且,應(yīng)用程序42可需要頂點(diǎn)著色器38的多個(gè)示例的執(zhí)行。舉例來(lái)說(shuō),著色器處理器32可同時(shí)(例如,并行)執(zhí)行頂點(diǎn)著色器38的多個(gè)示例,其中頂點(diǎn)著色器38的每一示例執(zhí)行大體上類似功能但是在不同像素值上執(zhí)行。系統(tǒng)存儲(chǔ)器36可類似地存儲(chǔ)用于片段著色器的源代碼。圖形驅(qū)動(dòng)器34可檢索用于片段著色器的源代碼,且編譯器28可以類似于上文對(duì)于頂點(diǎn)著色器38所述方式的方式編譯所述源代碼來(lái)產(chǎn)生用于片段著色器的目標(biāo)代碼。如將進(jìn)一步詳細(xì)描述,本發(fā)明的一或多個(gè)實(shí)例技術(shù)可在編譯之前基于觀看角度修改頂點(diǎn)著色器38(例如,頂點(diǎn)著色器38的源代碼)。編譯器28可編譯經(jīng)修改源代碼來(lái)產(chǎn)生經(jīng)修改頂點(diǎn)著色器40的目標(biāo)代碼。著色器處理器32可執(zhí)行經(jīng)修改頂點(diǎn)著色器40的目標(biāo)代碼,其可致使GPU30產(chǎn)生立體3D圖形內(nèi)容(例如,用于S3D的左眼圖像和右眼圖像的圖形內(nèi)容)。然而,在描述對(duì)頂點(diǎn)著色器38的修改之前,以下描述頂點(diǎn)著色器38的實(shí)例功能性,其可輔助理解應(yīng)用于頂點(diǎn)著色器38的源代碼的修改。此外,在本發(fā)明中術(shù)語(yǔ)“命令”和“指令”可互換地使用。如上文所描述,應(yīng)用程序處理器22經(jīng)由應(yīng)用程序42可產(chǎn)生基元的頂點(diǎn)的坐標(biāo)。這些坐標(biāo)可被稱為世界坐標(biāo),且可對(duì)應(yīng)用程序42為特定的。換句話說(shuō),如由應(yīng)用程序42定義的頂點(diǎn)的坐標(biāo)可不必為基元顯示于其上的顯示器的坐標(biāo),且也可能為在可觀看區(qū)域之外的頂點(diǎn)的坐標(biāo)。頂點(diǎn)著色器38可經(jīng)設(shè)計(jì)以將可在3D中的世界坐標(biāo)轉(zhuǎn)換為顯示器的2D坐標(biāo)(例如,顯示器坐標(biāo))。為了執(zhí)行此功能,頂點(diǎn)著色器38可將世界坐標(biāo)變換為眼睛坐標(biāo),且隨后變換為裁剪坐標(biāo)。舉例來(lái)說(shuō),頂點(diǎn)著色器38當(dāng)經(jīng)執(zhí)行時(shí)的輸出可為頂點(diǎn)的裁剪坐標(biāo)。作為固定功能管線34的部分,隨后可確定最終顯示器坐標(biāo)(例如,顯示器的坐標(biāo))。裁剪坐標(biāo)可界定視圖錐臺(tái)。視圖錐臺(tái)可界定3D圖形內(nèi)容的可觀看區(qū)域。GPU30可利用視圖錐臺(tái)來(lái)剔除駐留在視圖錐臺(tái)外部的像素。舉例來(lái)說(shuō),固定功能管線34的固定功能單元(例如,固定功能管線24的錐臺(tái)單元)可剔除駐留在如由頂點(diǎn)著色器38產(chǎn)生的裁剪坐標(biāo)定義的視圖錐臺(tái)外部的像素。從世界坐標(biāo)計(jì)算裁剪坐標(biāo)的等式可為:V裁剪=PRJ*V眼睛=PRJ*MVT*V世界,(等式1)其中V裁剪是頂點(diǎn)裁剪坐標(biāo),V眼睛是頂點(diǎn)眼睛坐標(biāo),V世界是由應(yīng)用程序42提供的頂點(diǎn)世界坐標(biāo),PRJ是投影矩陣,且MVT是模型視圖變換矩陣(或世界視圖變換矩陣)。在一些實(shí)例中,PRJ和MVT矩陣可組合為單個(gè)矩陣。然而,為便于理解,單獨(dú)地描述這些矩陣。投影矩陣(PRJ)和模型視圖或世界視圖變換矩陣(MVT)可由API定義。術(shù)語(yǔ)模型視圖和世界視圖可互換地使用。V裁剪、V眼睛和V世界可包含四個(gè)分量(例如,x、y、z和w坐標(biāo))。V裁剪、V眼睛和V世界矩陣可表示為:具有可編程著色器的OpenGL、OpenGLES和OpenGLES2.0API將PRJ矩陣界定為:其中L和R分別指定左和右垂直裁剪平面的坐標(biāo),B和T分別指定底部和頂部水平裁剪平面的坐標(biāo),且z近和z遠(yuǎn)分別指定到近和遠(yuǎn)深度裁剪平面的距離。在一些實(shí)例中,裁剪平面可為對(duì)稱的。舉例來(lái)說(shuō),-L可等于R,且-B可等于T。在這些情況下,PRJ矩陣可簡(jiǎn)化到:具有可編程著色器的OpenGL、OpenGLES和OpenGLES2.0API將MVT矩陣界定為:(等式5)PRJ和MVT矩陣的所有變量可由在應(yīng)用程序處理器22上執(zhí)行的應(yīng)用程序42定義,且圖形驅(qū)動(dòng)器24可將這些變量提供到執(zhí)行頂點(diǎn)著色器38的目標(biāo)代碼的著色器處理器32。從等式1、4和5可以看出,通過(guò)這些變量,頂點(diǎn)著色器38可確定頂點(diǎn)中的每一者的V裁剪坐標(biāo)。GPU30可利用頂點(diǎn)的裁剪坐標(biāo)且執(zhí)行進(jìn)一步功能性結(jié)合固定功能管線34和片段著色器的功能性來(lái)再現(xiàn)用于顯示的圖像。以此方式,GPU30可產(chǎn)生用于由應(yīng)用程序42產(chǎn)生的圖形內(nèi)容的單視圖。根據(jù)本發(fā)明的技術(shù),雖然頂點(diǎn)著色器38可利用MVT和PRJ矩陣的變量來(lái)確定V裁剪坐標(biāo),但可不需要MVT和PRJ矩陣來(lái)修改頂點(diǎn)著色器38(例如,修改頂點(diǎn)著色器38的源代碼)來(lái)產(chǎn)生立體視圖。換句話說(shuō),本發(fā)明中描述的技術(shù)修改的指令可不需要MVT和PRJ矩陣的特定值。舉例來(lái)說(shuō),可存在設(shè)計(jì)頂點(diǎn)著色器38的許多方式,且頂點(diǎn)著色器38可為內(nèi)容且甚至場(chǎng)景相依的,從而允許內(nèi)容開發(fā)者利用許多不同方式來(lái)對(duì)頂點(diǎn)著色器38進(jìn)行編程。因此,確定MVT和PRJ矩陣由開發(fā)者定義的特定方式可能是不可行的。然而,本發(fā)明中描述的技術(shù)并不需要知道開發(fā)者開發(fā)頂點(diǎn)著色器38的方式或開發(fā)者界定MVT和PRJ矩陣的方式。上文實(shí)例描述確定單視圖的V裁剪坐標(biāo)的一種方法。可存在許多不同技術(shù)來(lái)計(jì)算裁剪坐標(biāo),且一般來(lái)說(shuō),用以計(jì)算裁剪坐標(biāo)的特定技術(shù)可為不重要的。然而,在任何情況下,對(duì)于3D圖形內(nèi)容,不管用以計(jì)算裁剪坐標(biāo)的技術(shù)如何都可能需要計(jì)算裁剪坐標(biāo)(V裁剪)。舉例來(lái)說(shuō),甚至可能應(yīng)用程序處理器22確定裁剪坐標(biāo),且圖形驅(qū)動(dòng)器24可將裁剪坐標(biāo)提供到執(zhí)行頂點(diǎn)著色器38的目標(biāo)代碼的著色器處理器32。在此實(shí)例中,PRJ和MVT矩陣可為單位矩陣。舉例來(lái)說(shuō),應(yīng)用程序處理器22可執(zhí)行等式1的矩陣乘法且將結(jié)果提供到著色器處理器32。在此實(shí)例中,著色器處理器32可將所接收值與單位矩陣相乘來(lái)產(chǎn)生由應(yīng)用程序42產(chǎn)生的頂點(diǎn)中的每一者的V裁剪坐標(biāo)。然而,在任何情況下(例如,其中執(zhí)行頂點(diǎn)著色器38的著色器處理器32確定裁剪坐標(biāo)或其中執(zhí)行頂點(diǎn)著色器38的著色器處理器32接收裁剪坐標(biāo)),頂點(diǎn)著色器38可利用特定變量來(lái)存儲(chǔ)裁剪坐標(biāo)。所述特定變量可對(duì)頂點(diǎn)著色器38針對(duì)其設(shè)計(jì)的API為特定的。舉例來(lái)說(shuō),如果根據(jù)具有可編程著色器的OpenGL、OpenGLES或OpenGLES2.0API設(shè)計(jì)頂點(diǎn)著色器38,那么頂點(diǎn)著色器38可將裁剪坐標(biāo)存儲(chǔ)在gl_Position變量中。可自動(dòng)聲明gl_Position變量。在其它圖形API中可存在相似變量。如果根據(jù)具有可編程著色器的OpenGL、OpenGLES或OpenGLES2.0API設(shè)計(jì)頂點(diǎn)著色器38,那么頂點(diǎn)著色器38可包含例如以下指令:gl_Position.x=x裁剪,gl_Postion.y=y(tǒng)裁剪,gl_Position.z=z裁剪,且gl_Position.w=w裁剪,其中如上文等式2中所指出,在本發(fā)明中描述的一或多個(gè)實(shí)例技術(shù)中,可為在應(yīng)用程序處理器22上執(zhí)行的軟件的圖形驅(qū)動(dòng)器包裝器26可修改頂點(diǎn)著色器38的界定用于單視圖的裁剪坐標(biāo)的指令,以界定用于立體視圖的裁剪坐標(biāo)(例如,用于左眼圖像和裁剪坐標(biāo)和用于右眼圖像的裁剪坐標(biāo))。舉例來(lái)說(shuō),圖形驅(qū)動(dòng)器包裝器26可從應(yīng)用程序處理器22接收所確定的觀看角度。應(yīng)用程序處理器22由于圖形驅(qū)動(dòng)器包裝器26的執(zhí)行可經(jīng)配置以基于由應(yīng)用程序處理器22所確定的觀看角度而修改頂點(diǎn)著色器38的指令以界定用于立體視圖的裁剪坐標(biāo)。舉例來(lái)說(shuō),應(yīng)用程序處理器22經(jīng)由圖形驅(qū)動(dòng)器包裝器26可修改頂點(diǎn)著色器38的指令以使得當(dāng)頂點(diǎn)著色器38的經(jīng)修改指令由著色器處理器32第一次執(zhí)行時(shí),頂點(diǎn)著色器38的經(jīng)修改指令基于觀看角度在一個(gè)方向上使裁剪坐標(biāo)移位,且當(dāng)頂點(diǎn)著色器38的經(jīng)修改指令由著色器處理器32第二次執(zhí)行時(shí),頂點(diǎn)著色器的經(jīng)修改指令基于觀看角度在另一方向上使同一裁剪坐標(biāo)移位。然而,簡(jiǎn)單地在不同方向上使裁剪坐標(biāo)移位且再現(xiàn)所得圖像可致使立體視圖始終以某一固定量彈出顯示器12或始終以某一固定量推入顯示器12。此結(jié)果對(duì)觀看者可為不合意的。舉例來(lái)說(shuō),假定立體視圖彈出顯示器12。在此情況下,觀看者可感知到在顯示器12的前方某一距離的平面上的立體視圖。觀看者感知到立體視圖的此平面可被稱為零視差平面(ZDP)。然而,觀看者可需要感知到處于不同于當(dāng)前零視差平面的距離處的...