void baseinit()
glfwmakecontextcurrent(glwindow);
if (!gladloadglloader((gladloadproc)glfwgetprocaddress))
畫乙個普通的正方形
void normalsquare()
; //索引
unsigned int indices = ;
//編譯著色器
shader ourshader("vertex_1.vs", "fragment_1.fs");
ourshader.use();//gluseprogram(shaderprogram);
unsigned int vao;
//頂點陣列
glgenvertexarrays(1, &vao);
glbindvertexarray(vao);
//繫結頂點陣列快取
unsigned int vbo;
glgenbuffers(1, &vbo);
glbindbuffer(gl_array_buffer, vbo);
glbufferdata(gl_array_buffer, sizeof(vertices), vertices, gl_static_draw);
//繫結索引快取
unsigned int ebo;
glgenbuffers(1, &ebo);
glbindbuffer(gl_element_array_buffer, ebo);
glbufferdata(gl_element_array_buffer, sizeof(indices), indices, gl_static_draw);
// 位置屬性
glvertexattribpointer(0, 3, gl_float, gl_false, 3 * sizeof(float), (void*)0);
glenablevertexattribarray(0);
while (!glfwwindowshouldclose(glwindow))
gldeletevertexarrays(1, &vao);
gldeletebuffers(1, &vbo);
gldeletebuffers(1, &ebo);
glfwterminate();
}
最終效果
和上乙個筆記裡畫彩色三角形的邏輯一樣,在頂點屬性後面加上顏色屬性,設定資料訪問指標的屬性,記得頂點著色器要加上顏色的輸入(步長和相位)
//彩色正方形
void colourfulsquare()
; //索引
unsigned int indices = ;
//編譯著色器
shader ourshader("vertex_4.vs", "fragment_4.fs");
ourshader.use();//gluseprogram(shaderprogram);
unsigned int vao;
//頂點陣列
glgenvertexarrays(1, &vao);
glbindvertexarray(vao);
//繫結頂點陣列快取
unsigned int vbo;
glgenbuffers(1, &vbo);
glbindbuffer(gl_array_buffer, vbo);
glbufferdata(gl_array_buffer, sizeof(vertices), vertices, gl_static_draw);
//繫結索引快取
unsigned int ebo;
glgenbuffers(1, &ebo);
glbindbuffer(gl_element_array_buffer, ebo);
glbufferdata(gl_element_array_buffer, sizeof(indices), indices, gl_static_draw);
// 位置屬性
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);
while (!glfwwindowshouldclose(glwindow))
gldeletevertexarrays(1, &vao);
gldeletebuffers(1, &vbo);
gldeletebuffers(1, &ebo);
glfwterminate();
}
最終效果
可以試試線框模式,在while之前加上
glpolygonmode(gl_front_and_back, gl_line);
效果圖
OpenGL學習之路2 畫乙個點
放在github上 這一節比上一節 開啟乙個視窗 多了需要使用glew庫和3d數學庫 glew是opengl的擴充套件庫,用於幫助c c 開發者初始化擴充套件 opengl擴充套件功能 並書寫可移植的應用程式。這個可以通過上網搜教程自行安裝引用。3d函式庫可以用網上的,也可以用源教程裡的。這裡我是根...
OpenGL學習筆記 2 畫乙個正方形
void baseinit glfwmakecontextcurrent glwindow if gladloadglloader gladloadproc glfwgetprocaddress 畫乙個普通的正方形 void normalsquare 索引 unsigned int indices ...
OPENGL學習筆記(一)畫乙隻dinosaur
opengl這個庫好,比起之前用過的opencv,cuda等開放庫,opengl才幾兆,不用安裝,而且相對於vtk來說,opengl封裝好的函式較為底層,靈活度較高,也可以更好地體現自己編寫的演算法的好壞。opengl寫程式先要opengl的標頭檔案,lib,dll相關配置可以在網上找到,這裡不再累...