国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

做網(wǎng)站600網(wǎng)絡(luò)營銷模式有哪些

做網(wǎng)站600,網(wǎng)絡(luò)營銷模式有哪些,廣告視頻網(wǎng)站,wordpress 優(yōu)享一、OpenGL概念 OpenGL (Open Graphics Library,譯名:開放式圖形庫開放式圖形庫) 是一種用于渲染 2D 和 3D 圖形的跨語言、跨平臺(tái)的編程接口(API)。 二、OpenGL跨語言 OpenGL 是一個(gè) C 語言庫,因此理解 C 語言(或 C)的…

一、OpenGL概念

? ? ? ? OpenGL (Open Graphics Library,譯名:開放式圖形庫開放式圖形庫) 是一種用于渲染 2D 和 3D 圖形跨語言、跨平臺(tái)編程接口(API)。

二、OpenGL跨語言

? ? ? ?OpenGL 是一個(gè) C 語言庫,因此理解 C 語言(或 C++)的基本知識(shí)是非常有用的。然而,許多其他語言也有 OpenGL 的綁定,值得一提的包括:

(1)JavaScript綁定的WebGL(基于OpenGL ES 2.0在Web瀏覽器中的進(jìn)行3D渲染的API);

(2)C綁定的WGL、GLX和CGL;

(3)iOS提供的C綁定;

(4)Android提供的Java和C綁定;

所以你可以選擇你最熟悉的語言來學(xué)習(xí)。

三、OpenGL跨平臺(tái)

? ? ? ? OpenGL 提供了一組底層的圖形渲染函數(shù),嚴(yán)格規(guī)定了每個(gè)函數(shù)該如何執(zhí)行,以及它們的輸出值,這些函數(shù)可以直接與圖形硬件交互,實(shí)現(xiàn)高效的圖形渲染。至于內(nèi)部具體每個(gè)函數(shù)是如何實(shí)現(xiàn)(Implement)的,將由OpenGL庫的開發(fā)者(通常是顯卡的生產(chǎn)商)自行決定。???

? ? ?OpenGL被設(shè)計(jì)為只有輸出的,只提供渲染功能,核心API沒有窗口系統(tǒng)、音頻、打印、鍵盤/鼠標(biāo)或其他輸入設(shè)備的概念,也正是這種限制使得OpenGL允許進(jìn)行渲染的代碼完全獨(dú)立于它運(yùn)行的操作系統(tǒng),允許跨平臺(tái)開發(fā)。

? ??OpenGL沒有提供著色器編譯器,而是由顯卡驅(qū)動(dòng)來完成著色器的編譯工作,也就是說,只要顯卡驅(qū)動(dòng)支持對(duì)GLSL的編譯它就能運(yùn)行,所以能夠跨平臺(tái)。具有強(qiáng)大的通用性和可移植性,可以將其輕松的移植在多個(gè)不同的平臺(tái)上進(jìn)行二次開發(fā)。因?yàn)镺penGL本身是一個(gè)與硬件無關(guān)的軟件接口,所以,通用于市面上較為流行的平臺(tái):比如,Windows、Unix、Linux、MacOS等。

四、OpenGL擴(kuò)展特性

? ? ? ?OpenGL的一大特性就是對(duì)擴(kuò)展(Extension)的支持,當(dāng)一個(gè)顯卡公司提出一個(gè)新特性或者渲染上的大優(yōu)化,通常會(huì)以擴(kuò)展的方式在驅(qū)動(dòng)中實(shí)現(xiàn)。擴(kuò)展可能會(huì)引入新功能和新常量,并且可能放松或取消現(xiàn)有的OpenGL函數(shù)的限制。然后一個(gè)擴(kuò)展就分成兩部分發(fā)布:包含擴(kuò)展函數(shù)原型
頭文件和作為廠商的設(shè)備驅(qū)動(dòng)。供應(yīng)商使用擴(kuò)展公開自定義的API而無需獲得其他供應(yīng)商或Khronos Group的支持,這大大增加了OpenGL的靈活性。

? ? 每個(gè)擴(kuò)展都與一個(gè)簡短的標(biāo)識(shí)符
關(guān)系,該標(biāo)識(shí)符基于開發(fā)公司的名稱。例如,英偉達(dá)(nVidia)的標(biāo)識(shí)符是NV。如果多個(gè)供應(yīng)商同意使用相同的API來實(shí)現(xiàn)相同的功能,那么就用EXT標(biāo)志符。這種情況更進(jìn)一步,Khronos Group的架構(gòu)評(píng)審委員(Architecture Review Board,ARB)正式批準(zhǔn)該擴(kuò)展,那么這就被稱為一個(gè)“標(biāo)準(zhǔn)擴(kuò)展”,標(biāo)識(shí)符使用ARB。

? ? ? ?OpenGL是一個(gè)不斷進(jìn)化的API,新版OpenGL規(guī)范會(huì)定期由Khronos Group發(fā)布,新版本通過擴(kuò)展API來支持各種新功能。OpenGL 更像是一種顯卡驅(qū)動(dòng)標(biāo)準(zhǔn),由各個(gè)硬件廠家適配,各個(gè)硬件廠商根據(jù) OpenGL 接口規(guī)范編撰對(duì)應(yīng)的驅(qū)動(dòng),換句話說,對(duì)于各個(gè)硬件廠商 OpenGL 確實(shí)是一個(gè)基于 GPU 的軟件實(shí)現(xiàn),但是對(duì)于普通的應(yīng)用層開發(fā)者 OpenGL 就是一個(gè)由硬件廠商提供的驅(qū)動(dòng)程序罷了。

? ? ? ?在OpenGL的發(fā)展歷程中,總是兼顧向下兼容的特性,但是到了一定的程度之后,這些舊有的OpenGL API不再適應(yīng)時(shí)代的需要,還有一些擴(kuò)展并不是驅(qū)動(dòng)一定要實(shí)現(xiàn)的擴(kuò)展,這些被統(tǒng)一劃入可選的Compatibility Profile;而由OpenGL規(guī)范規(guī)定必須支持的擴(kuò)展,則是Core Profile,想要支持先進(jìn)的OpenGL,相應(yīng)的Core Profile擴(kuò)展必須被實(shí)現(xiàn)。

五、OpenGL 上下文

5.1、Context上下文的理解

? ?OpenGL Context,中文解釋就是OpenGL的上下文。OpenGL只是圖形API,它只負(fù)責(zé)渲染,渲染指令執(zhí)行所需要的那些東西就是Context。

? ? ?OpenGL在渲染的時(shí)候需要一個(gè)Context來記錄了OpenGL渲染需要的所有信息和狀態(tài),可以把它理解成一個(gè)大的結(jié)構(gòu)體,它里面記錄了當(dāng)前繪制使用的顏色、是否有光照計(jì)算以及開啟的光源等。

? ? ? ?對(duì)于OpenGL的上下文的理解看到一個(gè)比較形象的比喻:好比一個(gè)畫家在畫圖,OpenGL就是這個(gè)畫家(可以發(fā)出各種指令),而畫家作畫需要用到的畫筆、畫布等東西就是Context,Context的切換就像畫家同時(shí)作多幅畫,當(dāng)要畫另外一幅畫的時(shí)候,畫家需要放下原來的畫筆,拿起了另外一幅畫所需要的畫筆。

5.2、Context上下文的歷史版本

? ? ?(1)在OpenGL 3.0版本之前,OpenGL創(chuàng)建Context都是一致的;

? ? ?(2)但是從OpenGL 3.0開始,為了擺脫歷史的“包袱”,OpenGL想要徹底的廢棄掉之前的許多特性,但是無奈市面上已經(jīng)有大量依賴OpenGL之前版本的代碼,導(dǎo)致OpenGL維護(hù)小組的這一想法難以付諸實(shí)施,?OpenGL 3.0 引入了廢棄機(jī)制,標(biāo)記了許多OpenGL的函數(shù)是廢棄的(但是3.0并沒有真正移除它們,也就是說3.0版本仍然是一個(gè)可以向后兼容的Context);

? ? (3)在OpenGL 3.1的發(fā)布刪除了之前3.0標(biāo)記的過時(shí)函數(shù)(固定管線相關(guān)的函數(shù)),但是為了之前的OpenGL代碼可用, 引入了一個(gè)擴(kuò)展ARB_compatibility,這個(gè)擴(kuò)展可以讓OpenGL 3.1支持之前的OpenGL固定管線的內(nèi)容,

? (4)OpenGL 3.2中開始引入了OpenGL Context的一些分類,正式引入了模式的概念(Profile),之后隨著版本發(fā)展到OpenGL 3.3,一切算是確定下來。

? ? (5)到了OpenGL3.3之后,OpenGL的context profile分為了兩個(gè)版本,core pfofile和compatibility profile,前者表示刪除任何標(biāo)記為deprecated(棄用)的功能,后者則表示不刪除任何功能。

? 5.3、創(chuàng)建上下文context使用的圖形界面框架

? ? ?不同的操作系統(tǒng),都有各自的上下文創(chuàng)建方法和設(shè)置當(dāng)前上下文的API,最簡單的上下文可以通過Glut或是Glfw創(chuàng)建,相比較而言glfw是一個(gè)輕量級(jí)的圖形界面框架,托管在?www.glfw.org,現(xiàn)在非常的活躍,如果新入門可以優(yōu)先考慮glfw,相關(guān)的教程網(wǎng)上也比較多。

? 使用glfw創(chuàng)建一個(gè)窗口,并使該窗口的上下文成為當(dāng)前上下文:

 // 設(shè)置窗口提示glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // OpenGL主版本號(hào)glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); // OpenGL次版本號(hào)glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 使用核心模式// 創(chuàng)建窗口GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);if (window == NULL) {glfwTerminate();return -1;}// 使窗口上下文當(dāng)前上下文glfwMakeContextCurrent(window);

? ??創(chuàng)建了繪制上下文,并設(shè)置為當(dāng)前上下文以后,還不能使用OpenGL最新的特性,

一般我們使用Glfw庫,首先初始化GLFW庫,即需要調(diào)用glfwInit(),:得到OpenGL隨顯卡驅(qū)動(dòng)一起發(fā)布的新特性的函數(shù)入口地址。

   //初始化GLFW,得到OpenGL隨顯卡驅(qū)動(dòng)一起發(fā)布的新特性的函數(shù)入口地址glfwInit();//下面glfwWindowHint函數(shù)配置GLFW====================glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);//設(shè)置主板本號(hào)為3glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);//設(shè)置副版本號(hào)為3glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);//核心模式(Core-profile)//參數(shù)1:選項(xiàng)的名稱。可以從很多以GLFW_開頭的枚舉值中選擇//參數(shù)2:接受一個(gè)整型,用來設(shè)置這個(gè)選項(xiàng)的值//設(shè)置版本號(hào)為3.3版本,需要告訴GLFW我們要使用的OpenGL版本是3.3//GLFW會(huì)在創(chuàng)建OpenGL上下文時(shí)做出適當(dāng)?shù)恼{(diào)整。//這也可以確保用戶在沒有適當(dāng)?shù)腛penGL版本支持的情況下無法運(yùn)行//如果你使用的是Mac OS X系統(tǒng),你還需要解除下面這行代碼的注釋//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);// 創(chuàng)建窗口對(duì)象GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);if (window == NULL) {//創(chuàng)建窗口對(duì)象失敗,打印錯(cuò)誤信息std::cout << "Failed to create GLFW window" << std::endl;//需要引用iostream頭文件//終止GLFWglfwTerminate();return -1;}//參數(shù)1:窗口寬//參數(shù)2:窗口高//參數(shù)3:窗口標(biāo)題(名字)//參數(shù)4,參數(shù)5暫時(shí)忽略//返回值類型:GLFWwindow*:我們會(huì)在其它的GLFW操作中使用到// 使窗口上下文當(dāng)前上下文glfwMakeContextCurrent(window);

?5.4、線程私有

? ? ? ? OpenGL的繪制命令都是作用在當(dāng)前的Context上,這個(gè)Current Context是一個(gè)線程私有(thread-local)的變量,也就是說如果我們?cè)诰€程中繪制,那么需要為該線程制定一個(gè)Current Context的,當(dāng)多個(gè)線程參與繪制任務(wù)時(shí),需要原線程解綁再重新綁定新的線程。多個(gè)線程不能同時(shí)指定同一個(gè)Context為Current Context,否則會(huì)導(dǎo)致崩潰。

六、OpenGL的開發(fā)模式

6.1、立即渲染模式 (Compatibility Profile)

? ? ?Compatibility Profile兼容之前的OpenGL固定管線的內(nèi)容,也可以使用Core Profile中的內(nèi)容。

? ? ? 早期的OpenGL使用立即渲染模式(Immediate mode,也就是固定渲染管線),OpenGL 3.2版本以前都是該模式,該模式固定以glBegin開始繪制,以glEnd結(jié)束繪制,明確規(guī)定了先做什么后做什么,有一套固定的函數(shù)和執(zhí)行流程,開發(fā)者可以“傻瓜式”的使用這些函數(shù)來實(shí)現(xiàn)渲染效果,它面向過程,比較簡單、易于理解,但是靈活性(固定的執(zhí)行流程)和性能都較差(CPU與GPU通信頻繁)。

6.2、?核心模式(Core Profile)

? ? ? ? ??核心模式即著色器渲染模式,從3.2版本開始廢棄了立即渲染模式,開發(fā)者通過編寫shader來完成圖形的渲染,常見的shader有vertex shader和fragment shader,這種模式較為靈活和高效,但是比較復(fù)雜。

? ? 從OpenGL3.2開始,規(guī)范文檔開始廢棄立即渲染模式,并鼓勵(lì)開發(fā)者在OpenGL的核心模式(Core-profile)下進(jìn)行開發(fā),這個(gè)分支的規(guī)范完全移除了舊的特性。當(dāng)使用OpenGL的核心模式時(shí),OpenGL迫使我們使用現(xiàn)代的函數(shù)。當(dāng)我們?cè)噲D使用一個(gè)已廢棄的函數(shù)時(shí),OpenGL會(huì)拋出一個(gè)錯(cuò)誤并終止繪圖。

? ?現(xiàn)今,更高版本的OpenGL已經(jīng)發(fā)布(寫作時(shí)最新版本為4.6),你可能會(huì)問:既然OpenGL 4.6 都出來了,為什么我們還要學(xué)習(xí)OpenGL 3.3?答案很簡單,?所有OpenGL的更高的版本都是在3.3的基礎(chǔ)上,引入了額外的功能,并沒有改動(dòng)核心架構(gòu)。?新版本只是引入了一些更有效率或更有用的方式去完成同樣的功能。因此,所有的概念和技術(shù)在現(xiàn)代OpenGL版本里都保持一致。當(dāng)你的經(jīng)驗(yàn)足夠,你可以輕松使用來自更高版本OpenGL的新特性。


? ? 除了core profile(核心渲染模式)和compatibility profile(立即渲染模式)外,還有一種模式:foward compatibility,這個(gè)表示所有標(biāo)記為deprecated的函數(shù)都禁用,這個(gè)模式只對(duì)opengl3.0及以上的版本有效。但這個(gè)選項(xiàng)對(duì)OpenGL 3.2+ compatibility Profile Context沒有任何作用。

七、OpenGL需要了解的技術(shù)和知識(shí)

1、計(jì)算機(jī)圖形學(xué)基礎(chǔ):理解基本的計(jì)算機(jī)圖形學(xué)概念,如向量、矩陣、變換、光照、紋理等,可以幫助你更好地理解和使用 OpenGL。這些主題通常在計(jì)算機(jī)圖形學(xué)的入門課程中介紹。
2、線性代數(shù):在計(jì)算機(jī)圖形學(xué)中,我們經(jīng)常需要處理 2D 或 3D 空間中的點(diǎn)和向量,這需要一些線性代數(shù)的知識(shí)。至少要熟悉向量的加法、減法和點(diǎn)積,以及如何使用矩陣進(jìn)行變換。
3、計(jì)算機(jī)硬件:理解計(jì)算機(jī)硬件,特別是圖形處理器 (GPU) 的基本工作原理,可以幫助你理解 OpenGL 的許多設(shè)計(jì)決策,以及為什么某些操作比其他操作更快。
4、IDE 和調(diào)試工具:熟悉一個(gè)集成開發(fā)環(huán)境(如 Visual Studio、Eclipse 或者 PyCharm)將會(huì)對(duì)你編寫和調(diào)試代碼非常有幫助。此外,學(xué)習(xí)使用像 gDEBugger 或者 RenderDoc 這樣的 OpenGL 調(diào)試工具也是很有用的。
5、API 文檔和教程:熟悉 OpenGL 的官方文檔(或你正在使用的語言綁定的文檔)。這將是你在學(xué)習(xí)和使用 OpenGL 時(shí)的重要資源。同時(shí),還有許多優(yōu)秀的在線教程,如https://learnopengl.com/Getting-started/OpenGL;https://learnopengl-cn.github.io/.

http://m.aloenet.com.cn/news/32138.html

相關(guān)文章:

  • 網(wǎng)站制作的一般步驟是什么百度百科搜索入口
  • 利用別人域名做自己的網(wǎng)站可以免費(fèi)推廣的平臺(tái)
  • 公司網(wǎng)站設(shè)計(jì)怎么做b站視頻推廣怎么買
  • 上海做網(wǎng)站比較有名的公司百度q3財(cái)報(bào)減虧170億
  • 如何在分類信息網(wǎng)站做推廣軟文推廣代寫代發(fā)
  • 網(wǎng)站策劃過程怎樣推廣品牌
  • 湛江制作企業(yè)網(wǎng)站站長工具使用
  • wordpress 影響力泰州seo外包
  • 手機(jī)開發(fā)工具有哪些長沙seo報(bào)價(jià)
  • 對(duì)網(wǎng)站備案的認(rèn)識(shí)濟(jì)南疫情最新情況
  • 網(wǎng)頁欣賞怎樣做關(guān)鍵詞排名優(yōu)化
  • 基于wed的網(wǎng)站開發(fā)房地產(chǎn)營銷策略有哪些
  • 單位網(wǎng)站建設(shè)存在問題情況匯報(bào)智能網(wǎng)站排名優(yōu)化
  • 興國做網(wǎng)站網(wǎng)絡(luò)營銷方案的制定
  • 政府網(wǎng)站建設(shè)十強(qiáng)百度seo公司興田德潤
  • 做網(wǎng)站如何將一張圖片直接變體馮耀宗seo視頻教程
  • 邢臺(tái)網(wǎng)站建設(shè)的公司湖南網(wǎng)絡(luò)推廣排名
  • apt-get install wordpress深圳外包seo
  • 吉安網(wǎng)站建設(shè)0796abc百度小說搜索風(fēng)云榜總榜
  • 室內(nèi)設(shè)計(jì)網(wǎng)站知乎南京響應(yīng)式網(wǎng)站建設(shè)
  • 網(wǎng)站專業(yè)術(shù)語中seo意思是網(wǎng)站制作基本流程
  • 做mv主題網(wǎng)站媒體發(fā)稿費(fèi)用
  • 嘉興做網(wǎng)站的銷售培訓(xùn)課程一般有哪些
  • 網(wǎng)站流量的重要性seo推廣軟件代理
  • web網(wǎng)站開發(fā)報(bào)告深圳seo優(yōu)化
  • 豐臺(tái)網(wǎng)站建設(shè)小程序開發(fā)哪家更靠譜
  • 天津網(wǎng)站制作計(jì)劃電商項(xiàng)目策劃書
  • 湖南省人民政府駐深圳辦事處江門網(wǎng)站優(yōu)化公司
  • 寶安做棋牌網(wǎng)站建設(shè)找哪家公司好上海網(wǎng)站優(yōu)化
  • 電商網(wǎng)站開發(fā)價(jià)格優(yōu)化網(wǎng)站seo策略