OpenGL入門之繪製兩個相連的三角形

2021-09-27 13:22:25 字數 3893 閱讀 7598

使用不同的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 設定螢幕上的繪圖區...