OpenCL 學習step by step (3) 儲存kernel檔案為二進位

     在教程2中,我們通過函數convertToString,把kernel源檔案讀到一個string串中,然後用函數clCreateProgramWithSource裝入程式對象,再調用函數clBuildProgram編譯器對象。其實我們也可以直接調用二進位kernel檔案,這樣,當不想把kernel檔案給別人看的時候,起到一定的保密作用。在本教程中,我們會把讀入的源檔案儲存體一個二進位檔案中,並且還會建立一個計時器類,用來記錄數組加法在cpu和gpu端分別執行的時間。    

Directx11教程37 紋理映射(7)

    本章是在教程35、36的基礎上來實現一個光照紋理結合的程式,就是把情境中旋轉的cube加上紋理。   lighttex.vs中頂點的結構現在為:struct VertexInputType {     float4 position : POSITION;     float3 normal : NORMAL;     float2 tex : TEXCOORD0; //紋理座標     float4 Kd : DIFFUSE;

Directx11教程(56) 建立一個skydome

      本章建立一個skydome(天空穹),主要學習如何使用cube mapping。     cube map就是把六張紋理當作一個cube的六個面,而cube的中心,則是座標軸,而六個面則是垂直於座標軸某個軸,如所示,在cube mapping中,我們不在使用二維紋理座標,而是用(u,v,w)三維紋理座標,用這個座標產生一個查詢向量,這個向量和cube 紋理的交點,即為該頂點對應的紋理texel。            可以通過微軟的Directx Texture

opengl 教程(11) 平移/旋轉/縮放

原帖地址:http://ogldev.atspace.co.uk/www/tutorial11/tutorial11.html      在前面的教程中,我們通過矩陣變化實現了物體在三維空間的平移、旋轉、縮放操作。在本篇教程中,我們來實現這三種的變化的組合操作。通常情況下,我們會先縮放3D

Directx11教程(47) alpha blend(4)-霧的實現

     除了用來實現透明效果之外,我們還可以用alpha blend來實現霧(fog)的效果。通過逐漸清晰的霧氣效果,可以增加情境的真實感。     霧的效果實現很簡單,首先我們要一種顏色來表示霧,通常使用用灰色。     其實霧的效果和視點有很大關係,距離視點越近,霧就越淡,距離越遠,霧就越濃。     最終物體顏色是霧的顏色和計算出的pixel顏色的混合,我們使用的公式如下:     Final Color = FogFactor * computed pixel color + (1.0

D3D的投影矩陣推導[轉貼]

原帖地址:http://blog.csdn.net/popy007/article/details/4091967      上一篇文章中我們討論了透視投影變換的原理,分析了OpenGL所使用的透視投影矩陣的產生方法。正如我們所說,不同的圖形API因為左右手座標系、行向量列向量矩陣以及變換範圍等等的不同導致了矩陣的差異,可以有幾十個不同的透視投影矩陣,但它們的原理大同小異。這次我們準備討論一下Direct3D(以下簡稱D3D)的透視投影矩陣,主要出於以下幾個目的:(1)

Directx11教程36 紋理映射(6)

   本章主要是整理代碼,做以下兩件事情:1、把全局座標矩陣的計算,放在GraphicsClass的渲染函數中,之前放在D3DClass中,而且只是返回一個單位矩陣,沒任何作用。如果要使其起作用,就要對每個model類都單獨設定,很麻煩,比如我要畫2個顏色立方體,豈不是要建立兩個model類,而只是全局座標矩陣不同。    放在Render函數中後,我們主要通過一些D3D的矩陣變化函數來計算全局座標系。比如:    //執行平移操作,得到最終的模型世界矩陣    

opengl 教程(4) shader(1)

     原帖地址:http://ogldev.atspace.co.uk/www/tutorial04/tutorial04.html     本章開始學習shader的使用,以前大家常使用OpenGL固定管線來做一些程式,shader相對來說使用較少,而現代gpu編程,shader應用少不了,雖然使用shader編程,代碼多一點,但是卻更靈活。    

Directx11教程(46) alpha blend(3)

      現在我們嘗試改變box的貼圖,使用一張帶alpha的dds檔案wirefence.dds,用directx texture tool開啟檔案介面如下:      實際上,這幅圖中一些像素有alpha值,一些像素alpha值為0,我們點擊View-alpha channel only,可以看到下面的圖,其中黑色部分的alpha值為0:     現在我們把這幅圖貼到box上,程式運行效果如下:我們在lighttex.ps中增加以下代碼,需要注意clip函數的使用。float3 N =

opengl 教程(10) index draw

原帖地址:http://ogldev.atspace.co.uk/www/tutorial10/tutorial10.html       OpenGL提供了幾個draw函數: 之前用的 glDrawArrays() 稱作ordered draws(順序的draw調用),如果指定draw體元為線,則頂點緩衝中按排列順序,每2個頂點解釋為線,如果體元為三角形,每三個頂點解釋為三角形,在這裡並沒有共用的概念,比如要渲染一個四邊形,就要畫2個三角形,需要6個頂點。通過indexed

OpenCL 學習step by step (5) 使用二維NDRange workgroup

      在本教程中,我們使用二維NDRange來設定workgroup,這樣在opencl中,workitme的組織形式是二維的,Kernel中 的代碼也要做相應的改變,我們先看一下clEnqueueNDRangeKernel函數的變化。首先我們指定了workgroup size為localx*localy,通常這個值為64的倍數,但最好不要超過256。//執行kernel,Range用2維,work itmes size為width*height, cl_event ev;

Directx11教程(59) tessellation學習(1)

      在D3D11管線中,新增加了3個stage, Hull shader, Tessellator, Domain shader,用來實現細分操作,就是在gpu中把低細節的表面細分成高細節的體元。在gpu中把低模通過tessellation轉化為高模,在獲得高細節模型的同時,可以有效降低把頂點資料從system memory傳到 video memory的頻寬消耗。     下面我們看看這三個階段到底做些什麼,輸入是什麼,輸出是什嗎?先畫一張圖。1、Hull shader階段     

深入探索投影變換[轉貼]

原帖地址: http://blog.csdn.net/popy007/article/details/1797121             透視投影是3D固定流水線的重要組成部分,是將相機空間中的點從視錐體(frustum)變換到規則觀察體(Canonical View Volume)中,待裁剪完畢後進行透視除法的行為。在演算法中它是通過透視矩陣乘法和透視除法兩步完成的。     

opengl 教程(9) 頂點屬性插值

原帖地址:http://ogldev.atspace.co.uk/www/tutorial09/tutorial09.html       本章我們瞭解3D管線的一個重要特性,在光柵化階段的頂點屬性插值。從前面的教程我們知道,為了在螢幕上輸出渲染的物體,我們在頂點shader中輸出gl_Position,這是一個四維向量,表示齊次空間的頂點座標,x,y,z都經過了透視除法,除以了w值,x、y的範圍是[-1,1],而z的範圍是[0,1],而w則成為了1.0(因為w/w的緣故),接著會進行視口變化,

OpenCL 學習step by step (9) 灰階圖Histogram計算(3)

     在opencl編程中,特別是基於gpu的opencl的編程,提高程式效能最主要的方法就是想法提高memory的利用率:一個是提高global memory的合并讀寫效率,另一個就是減少local memory的bank conflit。下面我們分析一下教程7中的代碼,其的memory利用率如何?    首先我們用amd的opencl profiler分析一下程式效能(不會找不到用吧,點擊view-other windows-app profiler…,然後就看到了…)。    

OpenCL 學習step by step (11) 數組求和(reduction)

     本篇教程中,我們學習一下如何用opencl有效實現數組求和,也就是通常所說的reduction問題。     在程式中,我們設定workgroup size為256,kernel的輸入、輸出緩衝參數都用uint4的格式,這樣我們原始求和的數組大小為256*4的倍數,資料類型為uint。我們設定每個workgroup處理處理512個uint,即2048個uint     為了簡便期間,我們輸出數組長度定為4096,即需要2個workgruop來處理。   

OpenCL 學習step by step (4) 讀入二進位kernel檔案

本教程中,我們使用上一篇教程中產生的二進位kernel檔案vecadd.bin作為輸入來建立程式對象,程式碼如下://kernel檔案為vecadd.bin gclFile kernelFile; if(!kernelFile.readBinaryFromFile("vecadd.bin"))     {     printf("Failed to load binary file \n");     exit(0);  

OpenCV中矩陣的歸一化

原帖地址:http://windrocblog.sinaapp.com/?p=486     影像處理中,圖片像素點單通道值一般是[0-255]的unsigned

Directx11教程(57) 環境映射

      建好skydome後,如果我們想讓其中的某個物體,比如那個球體來映射出周圍環境的藍天白雲(不包括自己附近的物體),該怎麼做呢?此時可以把這個球體當成一面鏡子,把我們視點看這個物體上某個頂點p時的反射向量當作cube map查詢向量v,得到紋理texel,然後p點的顏色可以用blend的方式,混合使用中色彩和採樣的紋理texel,就可以實現我們想要的效果。    

Directx11教程(48) depth/stencil buffer的作用

     在D3D11中,有depth/stencil buffer,它們和framebuffer相對應,如所示,framebuffer中一個像素,有相對應的depth buffer和stencil buffer值:       D3D11中,depth buffer和stencil buffer一起定義,比如DXGI_FORMAT_D24_UNORM_S8_UINT,是指用一個無符號24位的值做為像素的深度緩衝值,並把它映射到[0,1],用一個8位的值表示像素stencil值,並把它映射到[0

總頁數: 61357 1 .... 10195 10196 10197 10198 10199 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.