OpenCV、OpenCL、OpenGL、OpenPCL
??????? 對(duì)于幾個(gè)開(kāi)源庫(kù)的總結(jié),作為標(biāo)記,以前看過(guò),現(xiàn)在開(kāi)始重視起來(lái)!更詳細(xì)資料請(qǐng)移步 開(kāi)源中國(guó)社區(qū)!
涉及:OpenCV,OpenCL,OpenGL,OpenPCL
截止到目前:
??????? OpenGL的最新版本為4.4,NVIDIA顯卡系列已提供了基于4.4版本的驅(qū)動(dòng);
??? ? ? OpenGL ES的最新版本為3.0,高通處理器圖形芯片已經(jīng)可以支持;
??????? OpenCV的最新發(fā)行版本為2.4.6,? 另外3,0版本在14年2月發(fā)布,有興趣可以查看OpenCV官方里程碑圖;
?? ???? OpenPCL的最新發(fā)行版為1.7.1的源代碼,不過(guò)編譯成功的人是少數(shù),總之我是一個(gè)失敗的案例!
??????? OpenCL的最新版本為2.0,OpenCL全稱(chēng)Open Computing Language,是第一個(gè)面向異構(gòu)系統(tǒng)通用目的并行編程的開(kāi)放式、免費(fèi)標(biāo)準(zhǔn),也是一個(gè)統(tǒng)一的編程環(huán)境,便于軟件開(kāi)發(fā)人員為高性能計(jì)算服務(wù)器、桌面計(jì)算系統(tǒng)、手持設(shè)備編寫(xiě)高效輕便的代碼,而且廣泛適用于多核心處理器(CPU)、圖形處理器(GPU)、Cell類(lèi)型架構(gòu)以及數(shù)字信號(hào)處理器(DSP)等其他并行處理器,在游戲、娛樂(lè)、科研、醫(yī)療等各種領(lǐng)域都有廣闊的發(fā)展前景。
一、OpenCL框架組成 (轉(zhuǎn)自于華章IT官方博客)
原文鏈接:http://blog.csdn.net/hzbooks/article/details/8206571
下面是Copy:
OpenCL框架組成
本文主要討論OpenCL框架,其組成可劃分為以下三個(gè)部分:
- OpenCL平臺(tái)API:平臺(tái)API定義了宿主機(jī)程序發(fā)現(xiàn)OpenCL設(shè)備所用的函數(shù)以及這些函數(shù)的功能,另外還定義了為OpenCL應(yīng)用創(chuàng)建上下文的函數(shù)。
- OpenCL運(yùn)行時(shí)API:這個(gè)API管理上下文來(lái)創(chuàng)建命令隊(duì)列以及運(yùn)行時(shí)發(fā)生的其他操作。例如,將命令提交到命令隊(duì)列的函數(shù)就來(lái)自O(shè)penCL運(yùn)行時(shí)API。
- OpenCL編程語(yǔ)言:這是用來(lái)編寫(xiě)內(nèi)核代碼的編程語(yǔ)言。它基于ISO C99標(biāo)準(zhǔn)的一個(gè)擴(kuò)展子集,因此通常稱(chēng)為OpenCL C編程語(yǔ)言。
在后面的小節(jié)中,我們將為以上各個(gè)部分提供一個(gè)高層的概述。詳細(xì)內(nèi)容留待本書(shū)后面介紹,不過(guò)使用OpenCL時(shí)先有一個(gè)高層認(rèn)識(shí)會(huì)很有幫助。
1. 平臺(tái)API
平臺(tái)(platform)一詞在OpenCL中有非常特定的含義。它表示宿主機(jī)、OpenCL設(shè)備和OpenCL框架的組合。一個(gè)異構(gòu)計(jì)算機(jī)上可以同時(shí)存在多個(gè)OpenCL平臺(tái)。例如,CPU開(kāi)發(fā)商和GPU開(kāi)發(fā)商可以在一個(gè)系統(tǒng)上分別定義自己的OpenCL框架。程序員需要一種方法查詢(xún)系統(tǒng)中可用的OpenCL框架。他們需要查找哪些OpenCL設(shè)備可用,這些OpenCL設(shè)備有什么特性。另外,他們還需要控制這些框架和設(shè)備的哪個(gè)子集構(gòu)成給定OpenCL應(yīng)用中使用的平臺(tái)。
這些功能由OpenCL平臺(tái)API中的函數(shù)解決。在后面的章節(jié)中將會(huì)看到,我們重點(diǎn)討論OpenCL程序員為宿主機(jī)程序編寫(xiě)代碼時(shí),每個(gè)OpenCL應(yīng)用程序都以類(lèi)似的方式打開(kāi),調(diào)用平臺(tái)API的函數(shù)為OpenCL計(jì)算定義上下文。
2. 運(yùn)行時(shí)API
平臺(tái)API中的函數(shù)為OpenCL應(yīng)用定義上下文。運(yùn)行時(shí)API則強(qiáng)調(diào)使用這個(gè)上下文滿(mǎn)足應(yīng)用需求的函數(shù)。這是一個(gè)龐大而且確實(shí)相當(dāng)復(fù)雜的函數(shù)集。
運(yùn)行時(shí)API的第一個(gè)任務(wù)是建立命令隊(duì)列。可以將命令隊(duì)列關(guān)聯(lián)到一個(gè)設(shè)備,不過(guò)一個(gè)上下文中可以同時(shí)有多個(gè)活動(dòng)的命令隊(duì)列。
有了命令隊(duì)列,就可以使用運(yùn)行時(shí)API來(lái)定義內(nèi)存對(duì)象和管理內(nèi)存對(duì)象所需要的所有其他對(duì)象(如對(duì)于圖像對(duì)象還需要采樣器對(duì)象)。管理內(nèi)存對(duì)象是一個(gè)很重要的任務(wù)。為了支持垃圾回收,OpenCL會(huì)跟蹤多少個(gè)內(nèi)核實(shí)例使用這些對(duì)象(也就是說(shuō),持有一個(gè)內(nèi)存對(duì)象),以及內(nèi)核何時(shí)用完一個(gè)內(nèi)存對(duì)象(即釋放一個(gè)內(nèi)存對(duì)象)。
運(yùn)行時(shí)API管理的另一個(gè)任務(wù)是創(chuàng)建構(gòu)建動(dòng)態(tài)庫(kù)所用的程序?qū)ο?#xff0c;內(nèi)核就由這些動(dòng)態(tài)庫(kù)定義。程序?qū)ο蟆⒕幾g程序?qū)ο蟮木幾g器以及內(nèi)核定義都在運(yùn)行時(shí)層處理。
最后,與命令隊(duì)列交互的命令都由運(yùn)行時(shí)層的函數(shù)發(fā)出。管理數(shù)據(jù)共享和對(duì)內(nèi)核執(zhí)行施加約束的同步點(diǎn)也由運(yùn)行時(shí)API處理。
可以看到,運(yùn)行時(shí)API函數(shù)完成了宿主機(jī)程序的大部分具體工作。要想一次掌握運(yùn)行時(shí)API,從第一個(gè)函數(shù)開(kāi)始學(xué)完所有函數(shù),這是很有壓力的。我們發(fā)現(xiàn),更好的做法是使用一種實(shí)用的方法。掌握真正要使用的函數(shù)。過(guò)一段時(shí)間,你就會(huì)把它們?nèi)娓采w到,并完全掌握,不過(guò)要根據(jù)OpenCL應(yīng)用的具體需要來(lái)學(xué)習(xí)這些函數(shù)。
3. 內(nèi)核編程語(yǔ)言
宿主機(jī)程序非常重要,不過(guò)完成OpenCL中實(shí)際工作的是內(nèi)核。有些OpenCL實(shí)現(xiàn)允許你與非OpenCL編寫(xiě)的原生內(nèi)核交互,不過(guò),大多數(shù)情況下都需要編寫(xiě)內(nèi)核來(lái)完成應(yīng)用中的特定工作。
OpenCL中的內(nèi)核編程語(yǔ)言稱(chēng)為OpenCL C編程語(yǔ)言,因?yàn)槲覀兿M^(guò)一段時(shí)間后可以定義符合規(guī)范的其他語(yǔ)言。它由ISO C99語(yǔ)言派生而來(lái)。
在OpenCL中,要對(duì)支持可移植性特別當(dāng)心。這要求我們標(biāo)準(zhǔn)化不同類(lèi)的OpenCL設(shè)備之間的最小公共子集。由于C99中有些特性只有CPU能夠支持,所以在定義OpenCL C編程語(yǔ)言時(shí),我們?nèi)サ袅薈99的一些語(yǔ)言特性。刪除的主要語(yǔ)言特性包括:
- 遞歸函數(shù)。
- 函數(shù)指針。
- 位域。
另外,我們不支持完整的標(biāo)準(zhǔn)庫(kù)集合。OpenCL編程語(yǔ)言中不支持的標(biāo)準(zhǔn)頭文件很多,不過(guò)程序員最有可能遺漏的是stdio.h和stdlib.h。再次說(shuō)明,一旦不再將通用處理器作為OpenCL設(shè)備,這些庫(kù)將很難獲得支持。
由于需要保持OpenCL核心抽象的真實(shí)性,所以會(huì)帶來(lái)另外一些限制。例如,OpenCL定義了一組內(nèi)存地址空間。聯(lián)合(union)或結(jié)構(gòu)(structure)不能混合類(lèi)型。另外,OpenCL還定義了一些不透明的類(lèi)型,例如,支持圖像的內(nèi)存對(duì)象。OpenCL C編程語(yǔ)言除了允許將這些類(lèi)型作為參數(shù)傳遞給函數(shù)外,不允許對(duì)它們做任何其他處理。
我們將OpenCL C編程語(yǔ)言限制為只滿(mǎn)足用于OpenCL的關(guān)鍵OpenCL設(shè)備的需求。出于同樣的原因,促使我們擴(kuò)展語(yǔ)言以及以下方面:
- 矢量類(lèi)型和這些類(lèi)型實(shí)例上的操作。
- 地址空間限定符,支持OpenCL對(duì)多個(gè)地址空間的控制。
- 一組豐富的內(nèi)置函數(shù),支持OpenCL應(yīng)用中通常需要的功能。
- 全局和局部?jī)?nèi)存中處理無(wú)符號(hào)整數(shù)和單精度標(biāo)量變量的原子函數(shù)。
大多數(shù)編程語(yǔ)言忽略浮點(diǎn)算術(shù)系統(tǒng)的特定細(xì)節(jié)。它們只是從硬件導(dǎo)入算術(shù)系統(tǒng),從而完全避開(kāi)這個(gè)問(wèn)題。由于所有主流CPU都支持IEEE 754和IEEE 854標(biāo)準(zhǔn),所以這個(gè)策略是可行的。實(shí)際上,通過(guò)集中研究這些浮點(diǎn)標(biāo)準(zhǔn),硬件開(kāi)發(fā)商在為語(yǔ)言開(kāi)發(fā)商解決浮點(diǎn)定義的有關(guān)問(wèn)題。
不過(guò),在異構(gòu)世界中,如果脫離CPU,那么對(duì)浮點(diǎn)算術(shù)運(yùn)算的支持會(huì)有更多的選擇。過(guò)去通過(guò)與硬件開(kāi)發(fā)商的緊密合作,我們希望大力推動(dòng)他們完善對(duì)IEEE浮點(diǎn)標(biāo)準(zhǔn)的支持。與此同時(shí),我們不希望對(duì)這些開(kāi)發(fā)商過(guò)于苛刻,所以賦予他們一定的靈活性可以避開(kāi)IEEE標(biāo)準(zhǔn)中一些不常使用但實(shí)現(xiàn)很困難的特性。后面會(huì)詳細(xì)討論有關(guān)細(xì)節(jié),不過(guò)從高層可以總結(jié)為OpenCL需要以下特性:
- 對(duì)IEEE 754格式的全面支持。雙精度是可選的,不過(guò)如果提供雙精度,也必須符合IEEE 754格式。
- 支持默認(rèn)的IEEE 754舍入模式,即“舍入為最近整數(shù)”。其他舍入模式盡管值得推薦(因?yàn)閿?shù)值分析學(xué)者需要這些模式),但它們是可選的。
- 盡管IEEE規(guī)范要求動(dòng)態(tài)改變舍入模式,但OpenCL中的舍入模式是靜態(tài)設(shè)置的。
- 必須支持特殊值INF(無(wú)窮大)和NaN(非數(shù)字),不過(guò)不要求提示NaN(通常反映并發(fā)系統(tǒng)中的問(wèn)題)。
- 非規(guī)格化數(shù)(小于1的數(shù)乘以所支持的最大負(fù)指數(shù))可以化簡(jiǎn)為0。如果你還不了解為什么這很重要,不用擔(dān)心,很多人都與你一樣。這也是數(shù)值分析學(xué)者很依賴(lài)但很少有程序員了解的另一個(gè)特性。
關(guān)于浮點(diǎn)數(shù)異常還有很多其他規(guī)則,不過(guò)它們對(duì)大多數(shù)人來(lái)說(shuō)都過(guò)于復(fù)雜、過(guò)于深?yuàn)W,沒(méi)有必要在這里多做說(shuō)明。關(guān)鍵是要了解我們已努力滿(mǎn)足IEEE 754的大多數(shù)內(nèi)容,同時(shí)省略了很少使用而且(在配有矢量單元的異構(gòu)平臺(tái)上)難以支持的一些特性。
OpenCL規(guī)范并不僅限于IEEE標(biāo)準(zhǔn)。在OpenCL規(guī)范中,還有一些表格詳盡地定義了數(shù)學(xué)函數(shù)中允許的相對(duì)誤差。要想了解所有這些錯(cuò)誤確實(shí)難度很大,不過(guò)對(duì)于編寫(xiě)詳細(xì)數(shù)值代碼的程序員來(lái)說(shuō),定義這些錯(cuò)誤是至關(guān)重要的。
綜合以上浮點(diǎn)數(shù)需求、限制和擴(kuò)展,就得到了一個(gè)非常適合當(dāng)前異構(gòu)平臺(tái)的編程語(yǔ)言,隨著這些平臺(tái)中使用的處理器繼續(xù)發(fā)展,并變得更為通用,OpenCL C編程語(yǔ)言也會(huì)隨之發(fā)展。
4. 小結(jié)
我們已經(jīng)介紹了核心OpenCL框架的基本組成。要單獨(dú)地了解這些組成部分(我們介紹時(shí)就主要采用了這種方式)很重要。為了把這些單獨(dú)的部分匯集起來(lái),形成OpenCL的一個(gè)全景圖,下面對(duì)應(yīng)用在OpenCL框架中的基本工作流做個(gè)小結(jié),如圖1-9所示。
圖1-9 這個(gè)模塊圖總結(jié)了OpenCL的組成以及一個(gè)OpenCL應(yīng)用執(zhí)行期間在宿主機(jī)上發(fā)生的動(dòng)作
首先是一個(gè)定義上下文的宿主機(jī)程序。圖1-9中的上下文包含兩個(gè)OpenCL設(shè)備、一個(gè)CPU和一個(gè)GPU。接下來(lái)定義了命令隊(duì)列。這里有兩個(gè)隊(duì)列,一個(gè)是面向GPU的有序命令隊(duì)列,另一個(gè)是面向CPU的亂序命令隊(duì)列。然后宿主機(jī)程序定義一個(gè)程序?qū)ο?#xff0c;這個(gè)程序?qū)ο缶幾g后將為兩個(gè)OpenCL設(shè)備(CPU和GPU)生成內(nèi)核。接下來(lái)宿主機(jī)程序定義程序所需的內(nèi)存對(duì)象,并把它們映射到內(nèi)核的參數(shù)。最后,宿主機(jī)程序?qū)⒚罘湃朊铌?duì)列來(lái)執(zhí)行這些內(nèi)核。
-----------------------------
本文節(jié)選自《OpenCL編程指南》
原書(shū)名:OpenCL Programming Guide
作者:Aaftab Munshi / Benedict R. Gaster / Timothy G. Mattson / James Fung / Dan Ginsburg
本書(shū)由五位OpenCL核心設(shè)計(jì)人員攜手打造,不僅詳細(xì)而完整地解讀了枯燥的OpenCL規(guī)范,而且通過(guò)一些重要的案例展示了如何利用OpenCL實(shí)現(xiàn)大量并行算法、編寫(xiě)復(fù)雜的并行程序、對(duì)OpenCL進(jìn)行性能優(yōu)化,以及探查硬件和針對(duì)硬件進(jìn)行調(diào)整,是系統(tǒng)學(xué)習(xí)OpenCL的經(jīng)典參考書(shū)。
閱讀本書(shū)PDF樣章,請(qǐng)?jiān)L問(wèn)http://download.csdn.net/detail/hzbooks/4791805
豆瓣收藏本書(shū),請(qǐng)?jiān)L問(wèn) http://book.douban.com/subject/20385439/
二、OpenGL簡(jiǎn)介:
原文鏈接:http://blog.csdn.net/barnett_zhubo/article/details/6460789
OpenGL(Open Graphics Library)定義了一個(gè)跨編程語(yǔ)言、跨平臺(tái)的編程接口的規(guī)格,是一個(gè)性能卓越的三維圖形標(biāo)準(zhǔn)。OpenGL是一個(gè)專(zhuān)業(yè)的圖形程序接口,是一個(gè)功能強(qiáng)大、調(diào)用方便的底層圖形庫(kù)。OpenGL的前身是SGI公司為其圖形工作站開(kāi)發(fā)的IRIS GL。IRIS GL是一個(gè)工業(yè)標(biāo)準(zhǔn)的3D圖形軟件接口,SGI公司便在IRIS GL的基礎(chǔ)上開(kāi)發(fā)了OpenGL。
?
OpenGL與OpenGL ES的區(qū)別
OpenGL ES是專(zhuān)為內(nèi)嵌和移動(dòng)設(shè)備設(shè)計(jì)的一個(gè)2D/3D輕量圖形庫(kù),它是基于OpenGL API設(shè)計(jì)的,是OpenGL 三維圖形API的子集,針對(duì)手機(jī)、PDA和游戲主機(jī)等嵌入式設(shè)備而設(shè)計(jì)。該API由Khronos集團(tuán)定義、推廣,Khronos是一個(gè)圖形軟硬件行業(yè)協(xié)會(huì)。
?
OpenGL ES的版本
OpenGL ES現(xiàn)在主要有兩個(gè)版本:OpenGL 1.x 針對(duì)固定管線硬件,OpenGL 2.x針對(duì)可編程管線硬件。
OpenGL ES 是從 OpenGL 裁剪定制而來(lái)的,去除了 glBegin/glEnd,四邊形(GL_QUADS)、多邊形(GL_POLYGONS)等復(fù)雜圖元等許多非絕對(duì)必要的特性。經(jīng)過(guò)多年發(fā)展,現(xiàn)在主要有兩個(gè)版本,OpenGL ES 1.x 針對(duì)固定管線硬件的,OpenGL ES 2.x 針對(duì)可編程管線硬件。OpenGL ES 1.0 是以 OpenGL 1.3 規(guī)范為基礎(chǔ)的,OpenGL ES 1.1 是以 OpenGL 1.5 規(guī)范為基礎(chǔ)的,它們分別又支持 common 和 common lite 兩種profile。lite profile只支持定點(diǎn)定點(diǎn)實(shí)數(shù),而common profile既支持定點(diǎn)數(shù)又支持浮點(diǎn)數(shù)。 OpenGL ES 2.0 則是參照 OpenGL 2.0 規(guī)范定義的,common profile發(fā)布于2005-8,引入了對(duì)可編程管線的支持。
下面是我們列舉的一些被Opengl ES裁剪掉的Opengl功能,因此大家在使用api時(shí)需要注意,不能使用以下這些api:
1. glBegin/glEnd?
2. glArrayElement?
3. 顯示列表?
4. 求值器?
5. 索引色模式?
6. 自定義裁剪平面?
7. glRect?
8. 圖像處理(這個(gè)一般顯卡也沒(méi)有,FireGL/Quadro顯卡有)?
9. 反饋緩沖?
10. 選擇緩沖?
11. 累積緩沖?
12. 邊界標(biāo)志?
13. glPolygonMode?
14. GL_QUADS、GL_QUAD_STRIP、GL_POLYGON
15. glPushAttrib、PopAttrib、glPushClientAttrib、glPopClientAttrib?
16. TEXTURE_1D、TEXTURE_3D、TEXTURE_RECT、TEXTURE_CUBE_MAP?
17. GL_COMBINE?
18. 自動(dòng)紋理坐標(biāo)生成?
19. 紋理邊界?
20. GL_CLAMP、GL_CLAMP_TO_BORDER?
21. 消失紋理代表?
22. 紋理LOD限定?
23. 紋理偏好限定?
24. 紋理自動(dòng)壓縮、解壓縮?
25. glDrawPixels、glPixelTransfer、glPixelZoom?
26. glReadBuffer、glDrawBuffer、glCopyPixels
由于篇幅關(guān)系,這里我們列舉的可能不是全部,更多詳細(xì)內(nèi)容大家可以參考www.khronos.org/opengles/。
三、Android中的OpenGL ES簡(jiǎn)介?
原文鏈接:http://blog.csdn.net/jusang486/article/details/8978112
OpenGL ES軟件層次棧,本章介紹了Android系統(tǒng)中OpenGL ES的調(diào)用層次棧,詳細(xì)分析了庫(kù)之間如何通過(guò)鉤子(hook)實(shí)現(xiàn)API調(diào)用關(guān)聯(lián),讓我們明白各個(gè)庫(kù)之間的依賴(lài)關(guān)系。本節(jié)為Android中的OpenGL ES簡(jiǎn)介。
Android中的OpenGL ES簡(jiǎn)介
Android支持使用OpenGL(Open Graphics Library)API進(jìn)行2D和3D圖形的繪制 ,尤其使用OpenGL ES(Embedded System) API。OpenGL是一個(gè)跨平臺(tái)的圖形API規(guī)范,它為3D圖形處理硬件定義了一套標(biāo)準(zhǔn)的軟件接口。OpenGL ES是在OpenGL API的基礎(chǔ)上專(zhuān)為嵌入式設(shè)備選取的一套API規(guī)范。自早期的版本Android 1.0就開(kāi)始支持OpenGL ES 1.0和1.1規(guī)范,自Android 2.2版本開(kāi)始支持OpenGL ES 2.0規(guī)范。Android提供的OpenGL ES API類(lèi)似于J2ME JSR239標(biāo)準(zhǔn),但不同。
我們既可通過(guò)Android Framework中提供的API,也可以通過(guò)Native層(Native Development Kit ,NDK)的API去使用OpenGL。開(kāi)發(fā)者可以使用Framework中兩個(gè)基本的類(lèi)GLSurfaceView和GLSurfaceView。Renderer在Android應(yīng)用程序中進(jìn)行圖形繪制操作,也就是在Renderer中使用OpenGL API在GLSurfaceView上進(jìn)行繪制,具體如何使用它們,詳見(jiàn)官方文檔 、 。
在使用GLSurfaceView和GLSurfaceView.Renderer進(jìn)行繪制時(shí),可以使用下面這些OpenGL ES API包。
(1)包javax.microedition.khronos.opengles提供OpenGL ES 1.0/1.1標(biāo)準(zhǔn)實(shí)現(xiàn),可以使用的API類(lèi)包括:GL10、 GL10Ext、 GL11、 GL11Ext和GL11ExtensionPack。
(2)包android.opengl,提供了一套靜態(tài)函數(shù)接口,包括OpenGL ES 1.0/1.1和2.0,其性能優(yōu)于包javax.microedition.khronos.opengles。支持OpenGL ES 1.0/1.1的類(lèi)包括:GLES10、 GLES10Ext、 GLES11和GLES10Ext;支持OpenGL ES 2.0的API類(lèi)是:android.opengl.GLES20 (自Android 2.2開(kāi)始)。
由于Android支持OpenGL ES 1.0/1.1、2.0,且由于二者有顯著差異。那么該選擇哪個(gè)版本呢?在本節(jié)參考的Google文檔里的"Choosing an OpenGL API Version"部分列出了四項(xiàng)因素,介紹如下。
(1)性能 :通常,OpenGL ES 2.0能比ES 1.0/1.1提供較快的性能。但是,這最終依賴(lài)于Android設(shè)備,不同的設(shè)備平臺(tái)OpenGL的實(shí)現(xiàn)不同。
(2)設(shè)備兼容性:開(kāi)發(fā)者開(kāi)發(fā)的應(yīng)用程序需要考慮Android設(shè)備類(lèi)型,不同的Android版本對(duì)OpenGL版本支持不同,如OpenGL ES 2.0自Android 2.2才開(kāi)始支持。
(3)編碼便利性:OpenGL ES 1.0/1.1 API編程較為方便,2.0版本相對(duì)復(fù)雜些。
(4)圖形控制:通過(guò)使用shaders,OpenGL ES 2.0對(duì)圖形繪制能提供較多的控制,可以創(chuàng)建更好的效果,在1.0/1.1版本上則很難達(dá)到。
總結(jié)
以上是生活随笔為你收集整理的OpenCV、OpenCL、OpenGL、OpenPCL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 大班教案《出生的秘密》反思
- 下一篇: 专业程序员必知必会技巧:驯服复杂代码