建立
glfw是乙個專門針對opengl的c語言庫,它提供了一些渲染物體所需的最低限度的介面。它允許使用者建立opengl上下文,定義視窗引數以及處理使用者輸入,這正是我們需要的。
#include int main()
//——————————退出——————————
/*迴圈執行完畢後,我們需要釋放前面所申請的資源*/
glfwterminate();
return 0;
}
因為opengl只是乙個標準/規範,具體的實現是由驅動開發商針對特定顯示卡實現的。由於opengl驅動版本眾多,它大多數函式的位置都無法在編譯時確定下來,需要在執行時查詢。所以任務就落在了開發者身上,開發者需要在執行時獲取函式位址並將其儲存在乙個函式指標中供以後使用。取得位址的方法因平台而異,在windows上會是類似這樣:
// 定義函式原型
typedef void (*gl_genbuffers) (glsizei, gluint*);
// 找到正確的函式並賦值給函式指標
gl_genbuffers glgenbuffers = (gl_genbuffers)wglgetprocaddress("glgenbuffers");
// 現在函式可以被正常呼叫了
gluint buffer;
glgenbuffers(1, &buffer);
你可以看到**非常複雜,而且很繁瑣,我們需要對每個可能使用的函式都要重複這個過程。幸運的是,有些庫能簡化此過程,其中glad是目前最新,也是最流行的庫。
#include //必須寫在glfw標頭檔案之前
#include #include int main()
//設定當前的視窗上下文,即讓當前視窗的環境在當前執行緒上成為當前環境
glfwmakecontextcurrent(window);
//——————————glad初始化——————————
/*一定要在設定完當前的視窗上下文之後*/
if (!gladloadglloader((gladloadproc)glfwgetprocaddress))
//——————————渲染引擎——————————
while (!glfwwindowshouldclose(window))
//——————————退出——————————
glfwterminate();
return 0;
}
opengl 學習2 第乙個程式
這個程式是我從弄下來的 include stdafx.h include void mydisplay void int main int argc,char argv 執行程式出現如圖的矩形 看下這個程式 1 標頭檔案 1.stdafx.h 這個與工程有關 和opengl無關 2.這是glut的標...
OpenGL系統設計 2 第乙個OpenGL應用
圖1 8顯示出來的實際上是乙個標準的windows視窗,和opengl好像沒有關係,儘管我們已經建立了opengl的rc。這是因為我們自己的三個主要的opengl函式glinit glmain glshutdown 都是空函式。為了真正實現opengl的功能,我們還需要將這三個函式進行填充。實際上,...
OpenGL學習筆記(一)第乙個視窗
學習一下opengl,這是做一下記錄。跟著裡面寫的第乙個視窗,做一下記錄。可能唯一的區別就是有注釋。include define glew static include includeusing namespace std void glfwinput glfwwindow window int m...