LUA 學習筆記 02

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 /* Style Definitions */

LUA 學習筆記 03

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 /* Style Definitions */

關於尾遞迴調用消除

 1. 尾遞迴,就是把遞迴函式中需要的“所有狀態”通過參數傳入下一次調用中。   於是本次方法中留在堆棧中的資料可以完全清除。2. 樣本// 一般的遞迴調用,本函數並沒有結束,還在棧上保留著資訊。int fr(int n){ if(n<2)return n; return fr(n-1) + fr(n-2); // 這裡返回的是值!}// 尾遞迴調用完全把本函數轉移到下一個函數,清除了本函數棧資訊。int frTail(int n, int acc1, int acc2){

使用裁剪測試進行多視窗渲染

在一個視口中,通過使用裁剪測試,將視窗分割成若干地區。不同地區使用不同的攝像機視角,然後分別渲染。(UI可以獨立在情境之外,進行一次渲染即可。)下面是實現,情境元素:一個天空盒,一個地面,一個包含1000粒子的系統,另外10個茶壺(一下子把我的6600LE拖到了10幀之內,暈~)  減少到5個茶壺,FPS明顯改善,提高50%  看看這茶壺(glutSolidTeapot)到底有多少頂點 看來還是我的顯卡太老了,等攢了$就去換新的~~

static 和 extern 比較

聲明:本文屬於原創,如需轉載請註明出處!如有問題請聯絡作者(eplaylity@gmail.com)!1. cpp源檔案中:聲明:static 變數: static int st_var = 123; (預設為0)extern 變數: int ex_var = 456; (預設為0)使用:static 變數: 本cpp源檔案extern 變數: 本cpp源檔案,其他先聲明"extern int ex_var;"(此句一般放檔案頭部,非必須)2. hpp標頭檔中:聲明:static 變數:

Ogre Shadow 筆記

1. SHADOWTYPE_NONE: 不產生任何陰影及遮擋效果   SHADOWTYPE_STENCIL_MODULATIVE: 模板調製   SHADOWTYPE_STENCIL_ADDITIVE: 模板疊加   SHADOWTYPE_TEXTURE_MODULATIVE: 貼圖調製   SHADOWTYPE_TEXTURE_ADDITIVE: 貼圖疊加2. 調製:降低被陰影遮蓋處的亮度,即,產生陰影   疊加:被陰影遮蓋處不接收此光光照,即,不產生陰影(遮擋光照)3.

Ogre3D 實現角色換裝

一個角色由多個模型組成,這些模型掛在同一個主節點上,由同一個骨骼動畫控制著。換裝就是剔除或添加一些模型,如果只是刪增模型,那樣只可以實現一起平移和旋轉。因為裝備,如衣服都是要和身體一起發生形變的。所以,模型之間要統一這些發生形變的方式,那就是骨骼。分類:1. 武器屬於掛接物體,不屬於換裝範疇,建立一個節點綁定到某塊骨頭就可以了。2. 換裝實現方式:全換,換部分模型,換材質等。OGRE實現: 1. 掛接的實現: TagPoint *Entity* createEntity(const

關於模板緩衝的一些實驗

OPENGL的許多測試處處彰顯著“偉大”的可操作性,最常見的ALPHA測試,裁剪測試,深度測試。。但是他們都各有用途,有一個模板測試,參數比較“複雜”。看了紅皮書,也不得其解,紅皮書搞那個例子真的不敢多說什麼,確實很不具有代表性。網上google了一把,全是不透徹的理解(尤其是那些直接複製別人代碼的朋友,我對其堅持誤解的毅力表示由衷的讚賞~~)。畢竟這玩意兒是美國的SGI首發,還是老美的資料比較切實、能夠深入本質。最後在OGL的官網(http://www.opengl.org/code)上找到了

Ubuntu9.10 Codeblocks8.02 環境編譯 Ogre1.64

     這兩天剛裝好Ubunut9.10,忙著做案頭和google的一些應用。所以,沒怎麼寫代碼。不過收穫還蠻大的,Prism/google docs/google reader/google notebooks。。還有firefox add-on read it later。。。讓我的學習和研究一下子方便了許多,而且google的服務還是可以和手機同步的。    

OIS 緩衝與非緩衝輸入方式

網上有很多人說過此類問題,可我總覺得有些說法不太合適。於是就自己實驗了一下。下面是筆記:1. 只有緩衝IO才能用於KeyListener/MouseListener,   也就是Keyboard::setEventCallback()設定的監聽器。2. 因為緩衝IO時,檢測的是按鍵狀態,所以就有按下和釋放兩個事件。3. 把IO事件和幀渲染分開,利於管理,但是容易造成冗餘。  

手動排列視窗控制項之像素對齊問題

CEGUI使用了UDim做長度度量。UDim包含縮放比例和像素位移兩部分。因為使用了相對於父視窗的比例,所以轉換為像素時就不一定是整數了。比如,父視窗寬800pixels,則相對於父視窗寬的0.001就是0.8pixel。但是,像素也不能是0.8個啊。所以,最終繪製的時候,CEGUI進行了四捨五入。 因此,當要手動去排列一些控制項時。一定要使用絕對像素,而不能用按比例縮放。因為要自己進行四捨五入,否則控制項之間要麼間隔一個像素,要麼掩蓋一個像素。 註:四捨五入,這個很簡單。比如,int

NxOgre 筆記01

1. 去NV官網下載並安裝PhysX的SDK。(好像還要安裝PhysX系統軟體以便運行時需要,因為我前段時間安裝了JX3,就不用了)2. 設定PhysX SDK標頭檔及庫的搜尋路徑設定環境變數PHYSX_DIR。(我的是D:/Program Files/NVIDIA Corporation/NVIDIA PhysX SDK/v2.8.1)因為要用到標頭檔搜素路徑:-SDKs/Physics/include-SDKs/Foundation/include-SDKs/Cooking/include-

OpenGL 實現的粒子系統、自由攝像機及Billboard

重新回到OGL的感覺真好,尤其使用過一段時間的OGRE3D。好多東西都想自己去實現一下。目前在win32下使用OGL的進度,如下:(有些是很早之前做過的,在重新溫習一下~) 1. CEGUI介面2. 幀率計算機3. 自有攝像機4. 天空盒5. 點與軸Billboard6. 粒子系統 目前粒子系統的參數,如下:(以後可能還得修改~) 1. 粒子類屬性:是否啟用、大小、生命值、衰變率、顏色、位置、速度、加速度方法:更新、渲染 2.

SDL學習筆記之二

1. 載入BMP圖片,返回一個表面指標:SDL_LoadBMP()   SDL_Surface *image = SDL_LoadBMP("image.bmp");2. 從一個表面,進行塊複製到另一個表面:SDL_BlitSurface()   int SDL_BlitSurface(SDL_Surface *src,SDL_Rect *sr,SDL_Surfae *dst,SDL_Rect *dr);   第二個參數指定要傳送表面的矩形地區,NULL傳送整個表面。3.

NxOgre 筆記02

1. 單位聲明    NxOgre使用“米-千克-第二 系統”,以米為長度單位,千克為品質單位,秒為時間單位。2. 初始化代碼2.1 最頂層類World,單一實例。最大容納32個Scene。不同情境之間的物體不能互動。2.2 每個情境都有很多Actor,這個數目僅受限於你的機器配置。這些Actor在World中表現成一個物理對象,但他們都是不可見的。    想看到他們,需要使用一個Body,一個簡單的Actor,它通過RenderSystem渲染到你的螢幕。   

NxOgre 筆記03

1. 一個全域的VisualDebugger執行個體,以RenderableType_VisualDebugger建立一個可渲染對象。   將此渲染對象綁定到一個SceneNode上,然後,每一幀VisualDebugger::draw()/SceneNode::needUpdate()   這個好像在OGRE3DRenderSystem的advance()裡有封裝。2. SceneNode繼承了Node的needUpdate()來標識這個節點及其父節點的狀態更新。3. 實現步驟    //

域限定符解決子類中調用父類重名函數問題

如果一個類C繼承了A和B,並且AB擁有一個同名同類型函數。而C沒重寫AB這個函數時,該會繼承哪一個呢?還是連個都繼承?如果兩個都繼承,該如何調用?看下面的例子代碼: #include <iostream>using namespace std;// 類 Aclass A{public:void show(){cout<<"in A."<<endl;}};// 類 Bclass B{public:void show(){cout<<"in

NxOgre 筆記04

1. Volume是一個任意形狀的不可見的物理對象。並且不能動。常被用作trigger。   當一個物理對象進入/沒入/離開它時,會觸發一個程式指定的動作。2. 在情境中建立一個Volume步驟    2.1 外形,比如,一個5x5x5的盒子    2.2 位置    2.3 一個Callback類的對象    2.4 回調行為(事件發生時調用onVolumeEvent())    NxOgre::Scene::createVolume(new NxOgre::Box(5),       

使用虛繼承消除繼承二義性

問題描述: 1. 假設有基類CBase2. 類CInherit1繼承了此基類3. 類CInherit2繼承了此基類4. 類CFinalInherit同時繼承了CInherit1和CInherit2//5. 如今要用CBase *p指標指向new CFinalInherit對象 代碼如下:#include <iostream>using namespace std;// 基類class CBase{public:CBase(){ cout<<"CBase

NxOgre 筆記05

1. Kinematics是些特殊的物理對象,它可以影響別的物體,卻卻不受別的物體影響。   他們可見、可移動,是升降機的一種最佳實現。2. NxOgre中,Actor只是一個物理對象的物理表達,是不可見的。   然而,一個Body是一個Actor加上一個可視化的東西(比如,通過Ogre的Entity).   KinematicActor與KinematicBody也是同樣的關係。3. 移動、設定KinematicBody的位置   

總頁數: 61357 1 .... 20525 20526 20527 20528 20529 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.