使用不同的vao和vbo繪製兩個彼此相連的三角形
#include
#include
#include
void
framebuffer_size_callback
(glfwwindow* window,
int width,
int height)
;void
processinput
(glfwwindow *window)
;const
unsigned
int scr_width =
800;
const
unsigned
int scr_height =
600;
const
char
*vertexshadersource =
"#version 330 core\n"
"layout (location = 0) in vec3 apos;\n"
"void main()\n"
"\0"
;const
char
*fragmentshadersource =
"#version 330 core\n"
"out vec4 fragcolor;\n"
"void main()\n"
"\n\0"
;int
main()
glfwmakecontextcurrent
(window)
;//設定上下文
glfwsetframebuffersizecallback
(window, framebuffer_size_callback);if
(!gladloadglloader
((gladloadproc)glfwgetprocaddress)
)// 建立著色器 progroam
// ------------------------------------
// 頂點著色器
int vertexshader =
glcreateshader
(gl_vertex_shader)
;glshadersource
(vertexshader,1,
&vertexshadersource,
null);
glcompileshader
(vertexshader)
;int success;
char infolog[
512]
;glgetshaderiv
(vertexshader, gl_compile_status,
&success);if
(!success)
// 片元著色器
int fragmentshader =
glcreateshader
(gl_fragment_shader)
;glshadersource
(fragmentshader,1,
&fragmentshadersource,
null);
glcompileshader
(fragmentshader)
;// check for shader compile errors
glgetshaderiv
(fragmentshader, gl_compile_status,
&success);if
(!success)
// 建立著色器程式
int shaderprogram =
glcreateprogram()
;glattachshader
(shaderprogram, vertexshader)
;glattachshader
(shaderprogram, fragmentshader)
;gllinkprogram
(shaderprogram)
;// 檢查連線
glgetprogramiv
(shaderprogram, gl_link_status,
&success);if
(!success)
gldeleteshader
(vertexshader)
;gldeleteshader
(fragmentshader)
;float first********=
;float second********=
;unsigned
int vbos[2]
, vaos[2]
;glgenvertexarrays(2
, vaos)
;//生成vao物件
glgenbuffers(2
, vbos)
;//生成vbo物件
glbindvertexarray
(vaos[0]
);//繫結vao物件
glbindbuffer
(gl_array_buffer, vbos[0]
);glbufferdata
(gl_array_buffer,
sizeof
(first********)
, first********, gl_static_draw)
;glvertexattribpointer(0
,3, gl_float, gl_false,3*
sizeof
(float),
(void*)
0);//設定頂點屬性指標
glenablevertexattribarray(0
);//把使用者定義的資料複製到當前繫結緩衝的函式。
//它的第乙個引數是目標緩衝的型別:頂點緩衝物件當前繫結到gl_array_buffer目標上。
//第二個引數指定傳輸資料的大小(以位元組為單位);用乙個簡單的sizeof計算出頂點資料大小就行。
//第三個引數是我們希望傳送的實際資料。
glbindvertexarray
(vaos[1]
);//繫結vao物件
glbindbuffer
(gl_array_buffer, vbos[1]
);glbufferdata
(gl_array_buffer,
sizeof
(second********)
, second********, gl_static_draw)
;glvertexattribpointer(0
,3, gl_float, gl_false,3*
sizeof
(float),
(void*)
0);glenablevertexattribarray(0
);glbindbuffer
(gl_array_buffer,0)
;glbindvertexarray(0
);while(!
glfwwindowshouldclose
(window)
)gldeletevertexarrays(2
, vaos)
;gldeletebuffers(2
, vbos)
;glfwterminate()
;return0;
}void
processinput
(glfwwindow *window)
void
framebuffer_size_callback
(glfwwindow* window,
int width,
int height)
ios 實現兩個地點畫線相連
1 建立地理編碼物件 2 呼叫方法去獲取地標 3 獲取clplacemark物件 4 建立mkplacemark 5 建立mkmapitem起點位置 6 建立mkmapitem終點的位置 7 建立方向請求的物件 8.建立方向物件 9 計算兩個點之間的路線,去獲取路線的資訊,route中有個polyl...
使用Opengl繪製兩個三角形 Python注釋版
環境搭建可參考之前在anaconda下搭建環境一直報錯,後來使用pycharm並將直譯器路徑設定到anaconda下就好了 於 閱讀了c 板的 opengl程式設計指南 原書第9版 pdf 後,根據理解寫了一些 注釋,有錯誤請指正,謝謝 glfw 02.py author dalong10 desc...
opengl學習筆記二之繪製乙個矩形
main.cpp helloworld created by zhouxu on 14 7 15.include include void setuprc void void renderscene void void changesize glsizei w,glsizei h 設定螢幕上的繪圖區...