原创 Uniform Buffer Objects (UBO) using the std140 layout specification

If we have information we need to set for multiple programs, we can either set the uniform each time we use a new prog

原创 關於TextureBuffer作爲輸出的一個小細節

glsl中要將結果輸出到一塊texture buffer上時,在每一幀前都要進行紋理空間的重新分配,如下代碼中的glTexBufferRange, glBindTexture(GL_TEXTURE_BUFFER, uiTex

原创 解析“extern”

解析“extern” 1、 聲明外部變量 現代編譯器一般採用按文件編譯的方式,因此在編譯時,各個文件中定義的全局變量是 互相透明的,也就是說,在編譯時,全局變量的可見域限制在文件內部。下面舉一個簡單的例子。創建一個工程,裏面含有A.cpp

原创 GPU架構“征途之旅”即日起航

GPU架構“征途之旅”即日起航     GPU架構“征途之旅”即日起航     顯卡GPU架構之爭永遠是DIY玩家最津津樂道的話題之一,而對於衆多普通玩家來說經常也就看看熱鬧而已。大多數玩家在購買顯卡的時候其實想的是這款顯卡是否

原创 OpenGL的回調函數

void glutDisplayFunc(void (*func)(void));註冊當前窗口的顯示回調函數參數:func:形爲void func()的函數,完成具體的繪製操作這個函數告訴GLUT當窗口內容必須被繪製時,那個函數將被調用.

原创 C++語言的15個晦澀特性

這個列表收集了 C++ 語言的一些晦澀(Obscure)特性,是我經年累月研究這門語言的各個方面收集起來的。C++非常龐大,我總是能學到一些新知識。即使你對C++已瞭如指掌,也希望你能從列表中學到一些東西。下面列舉的特性,根據晦澀程度

原创 GLUT鍵盤輸入

GLUT教程              鍵盤輸入 GLUT允許我們編寫程序,在裏面加入鍵盤輸入控制,包括了普通鍵,和其他特殊鍵(如F1,UP)。在這一章裏我們將學習如何去檢測哪個鍵被按下,可以從GLUT裏得到些什麼信息,和如何處理鍵

原创 C++重載類型轉換操作符

在需要做數據類型轉換時,一般顯式的寫法是: [cpp] view plaincopy <span style="font-size:18px;">type1 i;   type2 d;   i = (type1)d

原创 代碼行下憂鬱着青春

每次被問及職業的時候,我都不好意思告訴別人我是個程序員,真正的原因不是因爲我覺得程序員這個職業有多麼屌絲,而是因爲我覺得自己稱不上是我心目中的程序員。前不久在網上看到一段關於碼農和程序員區別的話,大抵是這樣的:碼農是編死的、沒有思想的代碼

原创 開源項目之C++界面庫 GLUI

GLUI是一個C++界面庫,它提供了buttons, checkboxes, radio buttons, 等常用控件,以及OPENGL支持。GLUI界面系統依賴於GLUT來處理窗口、和鼠標管理等,而繪製部分採用OPENGL繪製。工程如

原创 模板類聲明和定義爲何要寫一起

前言 常遇到詢問使用模板到底是否容易的問題,我的回答是:“模板的使用是容易的,但組織編寫卻不容易”。看看我們幾乎每天都能遇到的模板類吧,如STL, ATL, WTL, 以及Boost的模板類,都能體會到這樣的滋味:接口簡單,操作複雜。

原创 c中如何輸出一個宏定義的字符串?

做如下宏定義: #define Macro Test #define PrintStr(str) #str #define PrintMacro(str) PrintStr(str) 則 PrintMacro(Macro)即爲“Test”