Opengl練習執行框架

2021-10-02 21:36:35 字數 3281 閱讀 1482

一,影象顯示部分

#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...