在頂點資料中,不僅可以新增頂點座標,還可以新增顏色
float vertices=
;
由於資料的改變,對應的vao也就要發生變化。
// 位置屬性
glvertexattribpointer(0
,3, gl_float, gl_false,6*
sizeof
(float),
(void*)
0);glenablevertexattribarray(0
);// 顏色屬性
glvertexattribpointer(1
,3, gl_float, gl_false,6*
sizeof
(float),
(void*)
(3*sizeof
(float))
);glenablevertexattribarray(1
);
在兩種屬性中步長都變成了6,在顏色屬性中,由於前三個是位置,所以要設定偏移量為3。我們把位置屬性和顏色屬性的location值分別設為0和1,方便使用。
至此,兩種屬性已經設定好了,下面就要編寫相應的shader了
首先是頂點著色器,將兩種屬性輸入,輸出顏色
#version 330 core
layout (location =
0) in vec3 apos;
// 位置變數的屬性位置值為 0
layout (location =
1) in vec3 acolor;
// 顏色變數的屬性位置值為 1
out vec3 ourcolor;
// 向片段著色器輸出乙個顏色
void
main()
然後是片段著色器,輸入顏色,輸出片段顏色
#version 330 core
out vec4 fragcolor;
in vec3 ourcolor;
void
main()
最後我們就可以看到乙個漸變三角形了,之所以會出現漸變效果,是在片段著色器中進行的所謂片段插值(fragment interpolation)的結果。當渲染乙個三角形時,光柵化(rasterization)階段通常會造成比原指定頂點更多的片段。光柵會根據每個片段在三角形形狀上所處相對位置決定這些片段的位置。 LearnOpenGL 繪製迴圈變色的三角形
include include include void processinput glfwwindow window void framebuffer size callback glfwwindow window,int width,int height int main glfwmakecon...
LearnOpenGL 渲染乙個三角形
學習opengl的筆記。原資料 圖形渲染管線的第乙個部分是頂點著色器 vertex shader 它把乙個單獨的頂點作為輸入。頂點著色器主要的目的是把3d座標轉為另一種3d座標 後面會解釋 同時頂點著色器允許我們對頂點屬性進行一些基本處理。圖元裝配 primitive assembly 階段將頂點著...
上三角矩陣下三角矩陣
要求給定矩陣,輸出其上三角矩陣或下三角矩陣 源 如下 include include include include const int m 5 void proc int array m m void main printf n proc a printf result array is n fo...