shader輸入輸出 以及uniform

2021-10-08 17:09:22 字數 2730 閱讀 7247

#include

using

namespace std;

#include

#include

void

processinput

(glfwwindow *window)

;float vertices=

;unsigned

int indices=

;const

char

* vertexshadersource =

"#version 330 core\n"

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

"out vec4 vertexcolor; \n"

"void main()\n"

"\0"

;const

char

* fragshadersource =

"#version 330 core\n"

"in vec4 vertexcolor;\n"

"out vec4 fragcolor;\n"

"uniform vec4 ourcolor;\n"

"void main()\n"

"\0"

;int

main()

glfwmakecontextcurrent

(window)

;//init glew

//glewexperimental = gl_true; //使用有問題 注釋掉if(

glewinit()

!= glew_ok)

glviewport(0

,0,800

,600);

//glpolygonmode(gl_front_and_back, gl_line);

//建立vao並且繫結

unsigned

int vao;

glgenvertexarrays(1

,&vao)

;glbindvertexarray

(vao)

;//建立vbo

unsigned

int vbo;

glgenbuffers(1

,&vbo)

;glbindbuffer

(gl_array_buffer, vbo)

;//資料寫入記憶體

glbufferdata

(gl_array_buffer,

sizeof

(vertices)

, vertices, gl_static_draw)

;//建立ebo

unsigned

int ebo;

glgenbuffers(1

,&ebo)

;glbindbuffer

(gl_element_array_buffer, ebo)

;//資料寫入記憶體

glbufferdata

(gl_element_array_buffer,

sizeof

(indices)

, indices, gl_static_draw)

;//建立頂點著色器 編譯

unsigned

int vertexshader;

vertexshader =

glcreateshader

(gl_vertex_shader)

;glshadersource

(vertexshader,1,

&vertexshadersource,

null);

glcompileshader

(vertexshader)

;//建立片段著色器 編譯

unsigned

int fragshader;

fragshader =

glcreateshader

(gl_fragment_shader)

;glshadersource

(fragshader,1,

&fragshadersource,

null);

glcompileshader

(fragshader)

;//shader program 著色器和在一起 按順序輸入輸出 鏈結

unsigned

int shaderprogram;

shaderprogram =

glcreateprogram()

;glattachshader

(shaderprogram, vertexshader)

;glattachshader

(shaderprogram, fragshader)

;gllinkprogram

(shaderprogram)

;//頂點屬性

glvertexattribpointer(0

,3, gl_float, gl_false,3*

sizeof

(float),

(void*)

0);glenablevertexattribarray(0

);while(!

glfwwindowshouldclose

(window)

)return0;

}void

processinput

(glfwwindow *window)

}

linux vim以及管理輸入輸出

vim 是vi的高階版 vim是linux中的乙個文字處理器,具有程式編輯能力,而且可以自動以顏色辨別語法錯誤。1.vim的三種模式 命令模式,插入模式,退出模式 2.命令模式下配置vim的工作方式 set nu 設定行號 set nonu 取消行號 set mouse 新增滑鼠選擇 set cur...

常用技巧 輸入輸出優化 輸入輸出外掛程式

我們知道cin cout是比較慢的,不過它們可以加速。在 中加入這兩句即可 std ios sync with stdio false std cin.tie 0 加速過後cin的速度與scanf的速度近似 當然,加速過後就不要混用print和cout,scanf和cin了。因為不同步,後果會很嚴重...

Linux輸入輸出重定向以及管道

和程式的標準輸出重定向一樣,程式的錯誤輸出也可以重新定向。使用符號2 或追加符號2 表示對錯誤輸出裝置重定向。例如下面的命令 ls usr tmp 2 err.file 可在螢幕上看到程式的正常輸出結果,但又將程式的任何錯誤資訊送到檔案err.file中,以備將來檢查用。如果你對 2 感到很迷惑,這...