GLFW繪製兩個三角形拼接為乙個矩形

2021-10-25 15:26:40 字數 4239 閱讀 7984

#include

#include

#include

#include

/*改變視窗大小

引數列表

視窗指標,修改後的寬,高

*/void

framebuffer

(glfwwindow* window,

int w,

int h)

// 輸入監聽

void

input

(glfwwindow* window)

//else if (glfwgetkey(window, glfw_key_space) == glfw_press)

//else

}int

main()

//建立視窗

glfwmakecontextcurrent

(window)

;//初始化gladif(

gladloadglloader

((gladloadproc)glfwgetprocaddress)==0

)// 設定視口

glviewport(0

,0,800

,600);

//註冊視窗監聽

//使用framebuffer函式來監聽視窗window

glfwsetframebuffersizecallback

(window, framebuffer)

;// 頂點陣列

float vertices=

;// 索引陣列

unsigned

int indeces=

;// 建立索引緩衝物件

unsigned

int ebo;

glgenbuffers(1

,&ebo)

;// 生成vbo物件

unsigned

int vbo;

unsigned

int vao;

glgenvertexarrays(1

,&vao)

;glgenbuffers(1

,&vbo)

;// 繫結vao

glbindvertexarray

(vao)

;// 繫結緩衝到目標

glbindbuffer

(gl_array_buffer, vbo)

;// 傳遞資料到緩衝

glbufferdata

(gl_array_buffer,

sizeof

(vertices)

, vertices, gl_static_draw)

;glbindbuffer

(gl_element_array_buffer, ebo)

;glbufferdata

(gl_element_array_buffer,

sizeof

(vertices)

, indeces, gl_static_draw)

;// 頂點著色器程式 330 對應opengl 3.3版本

const

char

* vertexshadersuorce =

"#version 330 core\n"

// 對應使用核心版本

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

// 宣告輸入頂點屬性

"void main()"

;// 片段著色器

const

char

* fragmentshadersource =

"#version 330 core\n"

"out vec4 fragcolor;\n"

// 輸出變數 表示最終的顏色

"void main()"

;// 編譯著色器

unsigned

int vertexshader;

unsigned

int fragmentshader;

// 建立著色器物件

vertexshader =

glcreateshader

(gl_vertex_shader)

; fragmentshader =

glcreateshader

(gl_fragment_shader)

;// 附加頂點著色器原始碼到著色器物件上

glshadersource

(vertexshader,1,

&vertexshadersuorce,

null);

// 附加片段著色器原始碼到著色器物件上

glshadersource

(fragmentshader,1,

&fragmentshadersource,

null);

//編譯著色器

glcompileshader

(vertexshader)

;glcompileshader

(fragmentshader)

;// 檢查編譯是否成功

int success;

// 檢測是否成功

char infolog[

512]

;// 儲存錯誤資訊

// 獲取頂點著色器編譯狀態

glgetshaderiv

(vertexshader, gl_compile_status,

&success)

;// 如果頂點著色器編譯失敗

if(success ==0)

// 獲取片段著色器編譯狀態

glgetshaderiv

(fragmentshader, gl_compile_status,

&success)

;// 如果編譯失敗

if(success ==0)

// 鏈結為乙個著色器程式

// 建立乙個程式物件

unsigned

int shaderprogram;

shaderprogram =

glcreateprogram()

;// 將編譯的著色器附加到程式物件上

glattachshader

(shaderprogram, vertexshader)

;glattachshader

(shaderprogram, fragmentshader)

;// 鏈結著色器

gllinkprogram

(shaderprogram)

;// 檢測鏈結是否成功

// 獲取鏈結狀態

glgetprogramiv

(shaderprogram, gl_link_status,

&success)

;// 如果鏈結失敗

if(success ==0)

// 使用著色器物件

gluseprogram

(shaderprogram)

;// 刪除之前鏈結前的著色器物件

gldeleteshader

(vertexshader)

;gldeleteshader

(fragmentshader)

;// 設定如何解析頂點資料

//從資料的第0個位置開始,三個資料一組為乙個頂點,型別為float型別,是否希望資料被標準化處理(是:gl_true,否:gl_false),每個頂點資料的長度

glvertexattribpointer(0

,3, gl_float, gl_false,3*

sizeof

(float),

(void*)

null);

// 啟用頂點屬性

glenablevertexattribarray(0

);// 繫結buffer

glbindbuffer

(gl_array_buffer,0)

;glbindvertexarray(0

);// 使用線框模式繪製

// 引數1 對所有圖形使用

// 引數2 使用線條繪製

// glpolygonmode(gl_front_and_back, gl_line);

// 渲染迴圈

while

(glfwwindowshouldclose

(window)==0

)// 刪除/釋放資源

glfwterminate()

;return0;

}

css繪製向左三角形 CSS繪製三角形

1.繪製乙個外邊框 div 2.重定義外邊框樣式 當外邊框有了寬度,不知大家是否想乙個問題,相鄰的線條邊界在哪,下面通過把外邊框相鄰側邊設定不同顏色來觀察 使用下面的語句替換上面的border定義 border bottom 50px solid 555555 border top 50px sol...

使用Opengl繪製兩個三角形 Python注釋版

環境搭建可參考之前在anaconda下搭建環境一直報錯,後來使用pycharm並將直譯器路徑設定到anaconda下就好了 於 閱讀了c 板的 opengl程式設計指南 原書第9版 pdf 後,根據理解寫了一些 注釋,有錯誤請指正,謝謝 glfw 02.py author dalong10 desc...

CSS繪製三角形

利用css繪製三角形 並應用在相應的場景中,減少的使用,可提高載入速率,降低http請求次數 在同一方向上,大致有三種繪製方式,繪製出來的有兩種規格 在保持寬度不變的情況下 對比圖 假定給第乙個三角形命名為 1,則第二第三個分別為 2,3 先從第三個最小面積的說起,如下 height 0 width...