OpenGL隨筆二 opengl繪製三角形

2021-10-04 06:41:55 字數 1975 閱讀 5100

#define glew_static 1

#include

#include

#include

//vbo繪製兩個共邊的三角形需要六個點

float vertices = ;

const char* vertexshadersource =

「#version 330 core \n」

「layout(location=0) in vec3 apos; \n」

「void main()\n」;

const char* fragmentshadersource =

"#version 330 core "

"out vec4 fragcolor; "

" ""void main() "

" ";

//輸入控制函式宣告

void processinput(glfwwindow* window);

int main()

//繫結視窗到當前執行緒

glfwmakecontextcurrent(window);

if (glewinit()!=glew_ok)

//設定繪圖區域

glviewport(0, 0, 800, 600);

//設定背面剔除 逆時針繪製為正面

//glenable(gl_cull_face);

//glcullface(gl_back);

//設定只繪製線條

glpolygonmode(gl_front_and_back, gl_line);

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 vertexshader;

vertexshader = glcreateshader(gl_vertex_shader);

glshadersource(vertexshader, 1, &vertexshadersource, null);

glcompileshader(vertexshader);

unsigned int fragmentshader;

fragmentshader = glcreateshader(gl_fragment_shader);

glshadersource(fragmentshader, 1, &fragmentshadersource, null);

glcompileshader(fragmentshader);

unsigned int shaderprogram;

shaderprogram = glcreateprogram();

glattachshader(shaderprogram, vertexshader);

glattachshader(shaderprogram, fragmentshader);

gllinkprogram(shaderprogram);

glvertexattribpointer(0, 3, gl_float, gl_false, 3 * sizeof(float), (void*)0);

glenablevertexattribarray(0);

while (!glfwwindowshouldclose(window))

//結束繪製

glfwterminate();

return 0;

void processinput(glfwwindow* window)

}

OpenGL學習隨筆 十三

因為工作原因,有一段時間沒玩opengl了。今天開始重新拾起。這一年來接觸了些opengl es的chip provider,感覺大家都開始發力了,mobile 3d產業要爆發了。之前一直在看1.x系列,現在從2.x開始,雖然1.x還有不少內容沒玩過。2.x系列最大的變化就是引入了可程式設計pipe...

OpenGL學習隨筆 四

久違了,我的blog。這幾天被透視投影卡住了,雖然到現在也沒有完全搞明白,但也還是應該階段性總結一下。3d影象在2d平面顯示要經過以下幾個步驟,1.資料配置環節,配置頂點 顏色等資料,確定了物體的大小和外觀。2.指定模型視點變換引數,將物體到3d場景中,並確定我們的觀察點,也就是人眼的位置。3.指定...

OpenGL學習隨筆 七

很多時候,知識難以常握是因為我們只知其表不知其裡,或者說不了解歷史就不能理解現在。所以在學習到一定程度之後一定要去分析和實現opengl,之後才能真正理解和掌握opengl。每天在不斷學習新的內容時,我都會選擇重寫測試 而不是在之前的 上修改,原因是想找出一些思維定勢和盲區。今天嘗試用push和po...