OpenGL學習筆記(四)編寫自己的shader類

2021-09-26 10:46:22 字數 1969 閱讀 8356

上面你也應該看到,將shader寫成:

const char* vertexshadersource =

"#version 330 core \n"

"out vec4 vertexcolor; \n"//out 就是提示要傳出引數

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

"layout(location = 4) in vec3 acol; \n"

"void main()\n";

是真的不好增添,那只是我們的乙個權宜之計。現在開始寫我們自己的shader類,然後就可以在txt檔案中修改自己的shader了。

首先我們先新建乙個shader類:

然後就是確定三連。

之後是傅老師神筆鎮樓:

上面這幅圖講述的是io轉化shader檔案的過程。

首先io需要先從磁碟,也就是右邊的那個圓柱體裡面拿取到資料,然後放到綠色區域檔案緩衝區fileb,再到字串緩衝區stringb,再從字串緩衝區中拿出資料做成string,然後才是轉成我們要的char*.由於opengl是基於c語言的,所以它只認char*,不認string.因此我們才要轉這麼一趟。

編寫我們的shader.h

#pragma once

#includeclass shader

;

然後是shader.cpp

#include "shader.h"

#include #include#include#define glew_static

#include #includeshader::shader(const char* vertexpath,const char* fragmentpath)

vertexsstream 然後新建兩個txt檔案

然後是main.cpp

你可以刪除那些多餘的**,

就是一開始宣告的那些vertexshader,fragmentshader,shaderprogram之類的。

shader* myshader = new shader("vertexsource.txt", "fragmentsource.txt");

while (!glfwwindowshouldclose(window))

執行之後依舊是老醜老醜的梯形。

你也可以在vertexsource.txt中亂寫一些東西來看報錯。

OpenGL學習筆記(四)

接下來我們將學習影象旋轉。影象的旋轉通過呼叫glrotatef angle,xvector,yvector,zvector 實現。angle表示旋轉角度 注意是角度不是弧度 xvector表示沿x軸旋轉,yvector表示沿著y軸旋轉,zvector表示沿著z軸旋轉。注意旋轉角度和rgb設定不一樣,...

OpenGL入門筆記(四)

前面一直在畫二維圖形,其實三維圖形的繪製就是以其為基礎,可以說二維不過是三維的一種特例 相當與z 0 比如說要畫乙個正方體,它有上下左右前後共六個面組成,也就是要畫出六個正方形就可以了,只是要注意繪製時應該按逆時針繪製 好像是進行紋理對映時需要的。我們必須將opengl螢幕想象成一張很大的畫紙,後面...

OpenGL學習筆記四(多邊形)

在qt中的opengl模組中,使用opengl是比較簡單的,只需要在你建立的專案中新增 qopenglwidget 和qopenglfunctions就可以使用opengl基本上所有的功能。include include 在qt中使用opengl繪製點線也非常簡單。在開始繪製點線之前有幾個函式是必須...