小羊的OpenGL學習筆記(二)

2021-09-13 17:32:29 字數 1048 閱讀 8521

1、uniform變數,用於定義著色器的glsl**中,可以實現讓主程式與著色器glsl**交換資料的功能。

glfloat timevalue = glfwgettime();

glfloat greenvalue = (sin(timevalue) / 2) + 0.5;

glint vertexcolorlocation = glgetuniformlocation(shaderprogram, "ourcolor");

gluseprogram(shaderprogram);

gluniform4f(vertexcolorlocation, 0.0f, greenvalue, 0.0f, 1.0f);

**摘自

此處,先定義需要傳遞的變數,之後,用glgetuniformlocation函式,傳遞了著色器和變數資訊,獲取了uniform的位址。下面一步操作是重點,就是傳遞uniform之前,要先gluseprogram啟用著色器。這裡的著色器因為之前已經連線過了,所以就用連線後的最終結果就行。最後再傳遞uniform變數。

2、在頂點資料中可以定義更多維度的資料來定義更多的屬性。比如每個頂點的前三維是位置資料,後三維是rgb顏色資料,那麼,相應的著色器和頂點定義的資料都需要更改。

首先,要明確一點,著色器和glvertexattribpointer()函式,是在vbo內運算元據的。glvertexattribpointer()其實就是對vbo記憶體的管理。在函式中,第乙個引數是位置資訊,可以理解為id,第二個引數是點數,第三個是型別,第四個是,第五個是各點之間的偏移量,即每個頂點資料的size大小,最後乙個比較重要,是對於當前位置的屬性而言,從乙個點的0位置開始,偏移量是多少,單位是位元組。位置資訊在每個點的前三個,所以自然為0;顏色資訊在該點的後三個,所以應該設定為3*sizeof(glfloat)

有了以上設定,著色器方面相對簡單,根據id進去拿資料就可以了。不過,其實這是兩個維度的事情。著色器進去拿的是位置和顏色資訊,再進行處理,和頂點個數無關,後續的步驟才是把這些變換應用到各個頂點上,所以頂點個數是useprogram時才需要考慮的事情(連線到對應的vao就可以了)

OpenGL學習筆記

我是一名ios開發者,opengl是乙個比較重要的技術。所以就此開啟我的菜鳥之路。opengl open graphics library 是乙個跨程式設計語 言 跨平台的程式設計圖形程式接 它將計算機的資源抽象稱為乙個個opengl的物件,對這些資源的操作抽象為乙個的opengl指令.direct...

OpenGL學習筆記

數學基礎 叉積mv矩陣 文章內容主要來自 計算機圖形學程式設計 使用opengl和c 光柵化過程確定了用以顯示3個頂點所確定的三角形的所有畫素需要繪製的位置 光柵化過程開始時先對三角形的每對頂點進行插值 如果光柵化過程到此為止,那麼呈現出的影象將會是線框模型 使用 glpolygonmode gl ...

OpenGL學習筆記

因工作需要,這些天要研究opengl。我給自己定的目標是 1.節前能熟悉opengl基礎知識 2.確定一款以opengl為基礎的gui 3.學習如何使用該gui的控制項繪製3d選單 今天找到幾個 嵌入式系統使用的是opengl es,是桌面opengl的乙個子集,定義了一系列靈活高效的圖形加速介面。...