一,影象顯示部分
#include
#include
#include
#include
#include
"shader/shader.h"
using
namespace std;
// 按鍵檢測
void
processinput
(glfwwindow* window)
}int
main
(int argc,
char
const
*ar**)
;//頂點索引
unsigned
int indexs=
;//定義windows
glfwwindow* window =
glfwcreatewindow
(800
,800
,"**** you"
,null
,null);
if(window ==
null
)glfwmakecontextcurrent
(window)
;// 啟動gladif(
!gladloadglloader
((gladloadproc)glfwgetprocaddress)
)//渲染視窗
glviewport(0
,0,800
,800);
//頂點資料管理
unsigned
int vao;
glgenvertexarrays(1
,&vao)
;//繫結vao
glbindvertexarray
(vao)
;//頂點資料緩衝區
unsigned
int vbo;
glgenbuffers(1
,&vbo)
;glbindbuffer
(gl_array_buffer,vbo)
;glbufferdata
(gl_array_buffer,
sizeof
(vertices)
,vertices,gl_static_draw)
;//索引資料緩衝區
unsigned
int ebo;
glgenbuffers(1
,&ebo)
;glbindbuffer
(gl_element_array_buffer,ebo)
;glbufferdata
(gl_element_array_buffer,
sizeof
(indexs)
,indexs,gl_static_draw)
;//shader program 生成
unsigned
int shaderprogram;
shader mshader (
"../shaders/vertexshader.txt"
,"../shaders/fragmentshader.txt");
shaderprogram = mshader.program;
//獲取資料管理vao中的頂點
glvertexattribpointer(1
,3,gl_float,gl_false,6*
sizeof
(float),
(void*)
0);glenablevertexattribarray(1
);glvertexattribpointer(2
,3,gl_float,gl_false,6*
sizeof
(float),
(void*)
(3*sizeof
(float))
);glenablevertexattribarray(2
);float currenttime =0;
float greenvalue =0;
while(!
glfwwindowshouldclose
(window)
)// 終止
glfwterminate()
;return-1
;return0;
}
二,shader的實現
#include
class
shader
;#include
"shader.h"
#include
#include
#include
#include
#include
shader::
shader
(std::string vertexpath,std::string fragmentpath)
void shader::
generateprogram()
}catch
(const
char
* e)
}unsigned
int shader::
generateshader
(int code)
else
if(code ==
this
->fragment_shader_code)
glcompileshader
(shader)
;glgetshaderiv
(shader,gl_compile_status,
&success);if
(!success)
}catch
(const
char
* e)
return shader;
}std::string shader::
readfile
(std::string path)
shaderstr << shaderfile.
rdbuf()
; shadersource = shaderstr.
str();
shaderfile.
close()
;}catch
(std::ifstream::failure e)
catch
(const
char
* e)
return shadersource;
}
MFC搭建OpenGL框架示例
本文以sdi文件結構為例,列出繪製opengl圖形的關鍵步驟 1 在單文件視窗的建立過程中設定好顯示的畫素格式,並按opengl的要求設定好視窗的屬性和風格 2 獲得windows裝置描述表cdc的成員變數,然後將其與opengl的繪製描述表rc聯絡起來 3 呼叫opengl命令進行圖形繪製 4 退...
QT開發OpenGL程式框架
1.開發平台 win7系統,qt creator5.7.0社群版 2.環境配置 2 分別將opengl開發庫中的.h檔案 如glut.h 拷貝至qt的安裝路徑 include qtopengl 目錄下 3 分別將opengl開發庫中的.lib檔案 如glut.lib,glut32.lib 拷貝至qt...
Qt中建立OpenGL基本框架
1 建立qt設計介面類 2 在.pro檔案中加入opengl,以及加入需要用到的libs 3 修改widget的父類繼承qglwidget,並匯入qglwidget虛函式initializegl resizegl paintgl 如有需要其它函式根據實際情況繼續匯入。widget.h 如下 ifnd...