Time of Update: 2018-12-04
"給變數一個初始值幾乎總是正確的,但不要求必須這樣做。當我們確定變數在第一次使用時會給變數一個新值,那就不需要建立初始值。例如,在1.2.2小節我們的第一個有意義的程式中,定義了未初始設定變數,並立即讀取值給它們。定義變數時,應該給變數賦初始值,除非確定將變數用於其他意圖之前會覆蓋這個初值。如果不能保證讀取變數之前重設變數,就應該初始設定變數。" -- 引自<<C++ Primer>>今天寫程式時遇到了變數未初始化帶來的問題: 調試時結果正確,
Time of Update: 2018-12-04
這裡介紹關於OpenCL中program函數的寫法,program函數通常是文本形式的,然後使用clCreateProgramWithSource這樣的介面load進來。在Shader編程中也經常使用這種形式書寫GPU上啟動並執行代碼,所以為了表述清楚和理解方便,這裡姑且把這些program函數的源碼文本稱為OpenCL的shader吧 下面都是寫在shader中的一些文法 1 shader是類C的語言,派生自C99標準(99年ansi C接受的標準,也是C最新的標準)不支援:
Time of Update: 2018-12-04
改進粒子系統-粒子拖尾最近美術要求粒子可以拖尾,實作類別似於《鬼武者》中的吸魂、煙花等效果。大概思路是將粒子經過的路徑記錄下來,形成一條面向攝像機的三角鏈。:參考:Ogre的BillboardChain, RibbonTrailTODO:1,粒子消失時不自然,應該是粒子等待拖尾消失後再消失。 2,支援設定1D,2D紋理。 (已解決)改進:1, 不再將2D粒子做為一種渲染器,而是做為粒子的一個屬性.
Time of Update: 2018-12-04
遊戲公測 最高同時官方網站 最高同時訪問14萬人線上,一般的程式設計和伺服器架構來說 對於普通的WEB管理者來說 簡直是個頭痛的事情, 一般的伺服器根據頂不住這個並發量,網路頻寬最大用到了1.8G ,要解決這個問題真的要做很多的工作經過大量實驗積累以下經驗與你分享: 1.網站程式設計方便,採用產生靜態Html方式, WEB應用程式採用緩衝技術 把資料載入記憶體進行處理,本地文本資料記錄等 2.採用多伺服器的網路Server Load
Time of Update: 2018-12-04
從後緩衝到顯示器 最近在看D3D的架構,在這過程中對幀率這個一直認為很簡單的東西有了更多的理解。在過去看來,幀率就是顯卡渲染一幀所用時間的倒數,現在看來遠遠不是這個樣子。要真正理解這個問題要從繪製資料從顯存中到螢幕的這一個過程來說起,就是這個過程 顯存中存在前後緩衝,前緩衝就是螢幕上最終看到的像素,而後緩衝是繪製使用,後緩衝繪製好一幀,通常就交換一次,寫給前緩衝,而顯示器則從前緩衝不斷的讀取資料。 交換幀率與重新整理幀率
Time of Update: 2018-12-04
在DEBUG模式下,使用CPU計算的骨骼動畫總是很慢,當遊戲中角色數目多的時候只有幾幀,嚴重影響工作效率。今天測試了一下,774個頂點的模型在DEBUG下混合需要10ms,RELEASE下只需要0.3ms,DEBUG比RELEASE慢了30倍。部分代碼如下: for( int i = 0; i < iNumBaseVertex; ++i ) { v3dBlendInfo &bi = m_BlendInfoVec[i]; const
Time of Update: 2018-12-04
for each face.... FaceEx *pFaceEx = pGameMesh->GetFace(faceId); // 得到位置 int vertexId = pFaceEx->vert[faceVertexId]; Point3 vertex; if( pGameMesh->GetVertex(vertexId, vertex) ) pVertexData->m_position = vertex; // 得到法向量 int normId =
Time of Update: 2018-12-04
Ogre的Manager真是多啊,就象個官僚公司,幹事的沒幾個,一堆的Manager,個個丫還都是Singleton.說自己是Singleton卻又public建構函式,讓人來new它.在第1次被new的時候,偷偷地將this賦給靜態成員ms_Singleton,第2次new它就要assert喊冤了,當然這都是叫Singleton的模板基類的那個建構函式乾的(典型的小人行徑,見不得光).Manager一多,本來不複雜的事,也變得複雜了.1.LogManagera.全域單體LogManager組合
Time of Update: 2018-12-04
首先在對話方塊類中定義該文檔類的指標變數如CTestDoc *pDoc;其次在視圖類中顯示對話方塊時加上如下語句:TwoCpDlg=new CTwoCompute;//TwoCpDlg為對話方塊類對象,CTwoCompute為對話方塊類TwoCpDlg->Create(IDD_TWOCOMPUTE,GetParent());//IDD_TWOCOMPUTE為對話方塊的ID號TwoCpDlg->twoPDoc = pDoc;//傳遞文檔類指標變數//顯示非模態對話方塊TwoCpDlg-
Time of Update: 2018-12-04
這是我第二次學習OPENGL,第一次學習是在大二的電腦圖形學課堂上,那是對opengl只是走馬觀花,現在過了兩年,我打算把opengl進行新一編完整而系統的學習,有三個目的:1.熟練掌握opengl編程,2從opegl的體系中加深對電腦圖形渲染管線的整個體系的瞭解,作為深入學習GPU編程的進階,3.製作好看的CG作品。這裡是我在學習《opengl programming guide fifth
Time of Update: 2018-12-04
再次感謝多年來協助過我的朋友:OGRE(O-O Graphics Rendering Engine)使用指南 V0.01a最後更新於2003.4.10 大家看完之後如果有什麼意見和建議請務必發Email提出,謝謝!!! 本文99%為原創內容,轉載時請只給出串連,謝謝!也希望大家不要隨便修改,謝謝! Mage小組著Email: norman_chen@163.com renwind@163.com QQ:
Time of Update: 2018-12-04
big endian和little endian big endian和little endian是CPU處理多位元組數的不同方式。例如“漢”字的Unicode編碼是6C49。那麼寫到檔案裡時,究竟是將6C寫在前面,還是將49寫在前面?如果將6C寫在前面,就是big endian。還是將49寫在前面,就是little
Time of Update: 2018-12-04
改進粒子系統今天美術提出新需求:用粒子實現介面上某些特效,如點擊按鈕濺起的火花等. 如果重新實現一套2D粒子系統,不僅要重寫相應的編輯工具,而且美術也要花時間熟悉新的概念和工具.由於時間緊,這種做法不合實際.現在唯一的做法是改進原有的3D粒子系統,使其可以渲染2D粒子. 大概思路就是去掉z軸影響,將粒子投影到平面上.將3D粒子系統指定的座標,換算到2D平面上的座標.虛擬碼:If 2d粒子渲染器 使用平行投影的攝像機計算粒子的位置,法向量等屬性.填充VertexBuffer.
Time of Update: 2018-12-04
在opengl中可以繪製二維映像,分為兩種,BITMAP和image1.bitmap和image的區別有:bitmap中對映像的每個像素只儲存一位(0或1),用來表示用使用中色彩繪製還是不繪製,而image是映像的每個像素儲存可能很多位,儲存它的各個通道的顏色資訊;bitmap是繪製在三位空間中的一群點,其中每個點都受各變換矩陣的影響,等同於一群Gl_begin(GL_POINTS)操作聯合在一起
Time of Update: 2018-12-04
就是在OpenGL中實現多個視口,每個視口對應不同的用途。My Code://視口一 左下角glEnable(GL_SCISSOR_TEST);glScissor(0,0,m_width/2-1,m_height/2-1);glClear(GL_COLOR_BUFFER_BIT |
Time of Update: 2018-12-04
廣播廣播是指在一個區域網路中向所有的網上節點發送資訊。這是UDP串連的一種廣播有一個廣播組,即只有一個廣播組內的節點才能收到發往這個廣播組的資訊。什麼決定了一個廣播組呢,就是連接埠號碼,區域網路內一個節點,如果設定了廣播屬性並監聽了連接埠號碼A後,那麼他就加入了A組廣播,這個區域網路內所有發往廣播連接埠A的資訊他都收的到。在廣播的實現中,如果一個節點想接受A組廣播資訊,那麼就要先將他綁定給地址和連接埠A,然後設定這個socket的屬性為廣播屬性。如果一個節點不想接受廣播資訊,而只想發送廣播資訊,
Time of Update: 2018-12-04
setWindowPos函數把視窗的顯示層次修改為HWND—TOPMOST,就可使指定視窗永遠不會被其它視窗覆蓋,該函式宣告為: Function Long SetWindowPos(Long hwnd,Long ord,Long x,Long y,Long dx,Long dy,Long uflag) Library
Time of Update: 2018-12-04
今天寫程式時,打算不斷的將產生的圖片檔案放入一個檔案夾中,但是每次當放入65534個檔案後就無法再存入了,起初一位是程式的bug,後來才發現原來是檔案系統對檔案數目有限制。經過查閱發現對於FAT16檔案系統,可以儲存的檔案體積最大值是 4 GB - 1 byte (2^32 bytes - 1 byte);卷的最大體積是4GB;每個卷上最多可以儲存的檔案數量是65,536個
Time of Update: 2018-12-04
在QT的程式中經常會看到只有new而不delete的情況,其實是因為QT有一套回收記憶體的機制,主要的規則如下:1.所有繼承自QOBJECT類的類,如果在new的時候指定了父親,那麼它的清理時在父親被delete的時候delete的,所以如果一個程式中,所有的QOBJECT類都指定了父親,那麼他們是會一級級的在最上面的父親清理時被清理,而不用自己清理;2.程式通常最上層會有一個根的QOBJECT,就是放在setCentralWidget()中的那個QOBJECT,這個QOBJECT在new的時候
Time of Update: 2018-12-04
讓Irrlicht支援中文後,編程過程中不免經常會用到char* 到wchar_t*的轉換,看了上次轉載的那篇關於L"xx"的文章,寫了個小函數供使用.#define xmalloc(s) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, (s))#define xfree(p) HeapFree (GetProcessHeap(), 0, (p)) wchar_t *str2wstrptr(const char *pStr){ PSTR