原创 繪製一個球體並貼紋理,加載bmp圖片

效果圖: 紋理圖: 源碼: #include <iostream> #include <stdlib.h> #include <fstream> #include <assert.h> #include <GL/freeglu

原创 對一個整整和它自身減1進行&操作----產生隨機數

int a = 100; int b = 0; while(a > 0){ b++; a = a&(a-1); } b=? b的值爲a轉爲二進制中1的個數 static unsigned long next =

原创 Opengl中給矩形添加紋理

效果圖: 源碼: #include <stdio.h> #include <string.h> #include <GL/glew.h> #include <GL/freeglut.h> #include <string> #i

原创 CUDA相關

Simple Reference Basic CUDA samples for beginners that illustrate key concepts with using CUDA and CUDA runtime API

原创 Vulkan學習--19.創建紋理圖像視圖和採樣器

採樣器: 在着色器中是可以直接訪問圖像數據,但當圖像被作爲紋理時,我們通常不這樣做。通常我們使用採樣器來訪問紋理數據,採樣器可以自動地對紋理數據進行過濾和變換處理. 採樣器進行的過濾操作可以很好地處理紋理採樣過密的問題。考慮一個被映射

原创 Vulkan學習--21.添加深度緩衝

深度緩衝: 繪製多個圖像時,會按順序進行繪製並顯示,而不是按空間座標的關係,有兩種方式可以解決這個問題: • 按照深度座標對繪製調用進行排序 • 使用深度測試 通常我們使用第一種方式來繪製需要透明的對象。使用第二種方式來繪製一般對象。

原创 Vulkan學習--22.加載模型

載入模型: 使用 tinyobjloader 庫來從 OBJ 文件加載頂點數據。tinyobjloader 庫是一個簡單易用的單文件 OBJ 加載器,我們只需要下載 tiny_obj_loader.h 文件,然後在代碼中包含這一頭文件

原创 Vulkan學習--20.組合圖像採樣器--實現矩形紋理貼圖

組合圖像採樣器: 一種新的描述符類型,着色器可以通過這一類型的描述符訪問圖像資源. 1.修改描述符佈局,描述符池和描述符集來使用組合圖像採樣器描述符 2.添加紋理座標信息到 Vertex 結構體 3.修改片段着色器從紋理中讀取顏色數據

原创 Vulkan學習--15.暫存緩衝

目的:暫存緩衝可以提升性能 現在我們創建的頂點緩衝已經可以使用了,但我們的頂點緩衝使用的內存類型並不是適合顯卡讀取的最佳內存類型。最適合顯卡讀取的內存類型具有 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT 標

原创 Vulkan學習--17.描述符佈局、緩衝、描述符池和描述符集

現在,我們已經可以傳遞頂點屬性給頂點着色器,但對於一些所有頂點都共享的屬性,比如頂點的變換矩陣,將它們作爲頂點屬性爲每個頂點都傳遞一份顯然是非常浪費的。 Vulkan 提供了資源描述符來解決這一問題。描述符是用來在着色器中訪問緩衝和圖

原创 Vulkan學習--16.創建索引緩衝

繪製一個矩形可以通過繪製兩個三角形來實現,如果不共享頂點,就需要 6 個頂點。共享頂點的話,只需要 4 個頂點就可以。可以想象對於更加複雜的三維網格,通過共享頂點可以節約大量內存資源。 索引緩衝是一個包含了指向頂點緩衝中頂點數據的索

原创 Vulkan學習--18.使用紋理圖像

在我們的程序中使用紋理,需要採取下面的步驟: • 創建設備內存 (顯存) 支持的圖像對象 • 加載圖像文件的像素數據 • 創建圖像採樣器 • 使用圖像採樣器描述符采樣紋理數據 之前,我們對圖像對象已經有所熟悉,我們的渲染操作是在我們獲

原创 Vulkan學習--10.創建幀緩衝對象

我們在創建渲染流程對象時指定使用的附着需要綁定在幀緩衝對象上使用。幀緩衝對象引用了用於表示附着的 VkImageView 對象。對於我們的程序,我們只使用了一個顏色附着。但這並不意味着我們只需要使用一張圖像,每個附着對應的圖像個數依賴

原创 Vulkan學習--12.渲染和呈現

子流程依賴: 渲染流程的子流程會自動進行圖像佈局變換。這一變換過程由子流程的依賴所決定。子流程的依賴包括子流程之間的內存和執行的依賴關係。雖然我們現在只使用了一個子流程,但子流程執行之前和子流程執行之後 的操作也被算作隱含的子流程。在

原创 Vulkan學習--9.創建圖像管線

在進行管線創建之前,我們還需要設置用於渲染的幀緩衝附着。渲染流程對象 創建圖像管線 可編程階段: 1.載入着色器 2.創建着色器模塊 3.創建着色器階段 固定功能階段: 在 Vulkan 不存在默認狀態,所有狀態必須被顯式地設置,無論