上面你也應該看到,將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繪製點線也非常簡單。在開始繪製點線之前有幾個函式是必須...