#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...