原创 擁塞避免算法、快重傳、快恢復、慢啓動

慢啓動 初始cwnd=1,然後: 當cwnd<ssthresh時,慢啓動門限之前成倍增加 當cwnd=ssthresh,都可以 當cwnd>ssthresh,啓用擁塞避免算法(線性增長) 當網絡出現擁塞:發送方沒即使收到接收方的確認時,s

原创 Unity Drawcall、渲染順序、打包圖集、特效清理、代碼優化

什麼是DrawCall drawcall是CPU對底層圖形繪製接口的調用命令GPU執行渲染操作,渲染流程採用流水線實現,CPU和GPU並行工作,它們之間通過命令緩衝區連接,CPU向其中發送渲染命令,GPU接收並執行對應的渲染命令。 Draw

原创 printf是如何實現變長參數的

因爲參數是從右向左入棧的,那麼也就是說如果知道最左邊的起點以及類型就可以實現變長參數

原创 圖集的作用

減少draw call: 多張圖片需要多次draw call,合成了一張大圖則只需要一次draw call。 減少內存佔用:OpenGL ES中每張貼圖都需要設置成2的n次方纔能使用。比如你有一張寬高爲100x100和一張寬高爲10

原创 (*(void(*)())0)();

分析 void(*)()是一個函數指針 *(void(*)())0是說取0這個地址的函數 (*(void(*)())0)()表明函數調用

原创 C++ static_cast和dynamic_cast

使用場景 static_cast 靜態類型轉換。如int轉化成char reinterpret_cast 重新解釋類型 dynamic_cast 命名上理解是動態類型轉換,如子類和父類之間的多態類型轉換 const_cast 字面上理解就是

原创 Unity中協程和線程的區別

協程(協同程序): 同一時間只能執行某個協程。開闢多個協程開銷不大。協程適合對某任務進行分時處理。 線程: 同一時間可以同時執行多個線程。開闢多條線程開銷很大。線程適合多任務同時處理。 參考:https://www.cnblogs.com/

原创 UGUI遮罩

MASK Mask(遮罩)是一種不可見的UI組件,它可以用來修改子物體的外觀。遮罩將子物體限制爲父物體的形狀。如果子物體大於父物體將只顯示和父物體大小相同的那一部分。

原创 unity中的協程

參考: https://www.iteye.com/blog/dsqiu-2029701 https://www.cnblogs.com/zblade/p/9857808.html 關鍵詞 IEnumerator public interf

原创 c/c++編譯的程序佔用的內存分配

一個由c/c++編譯的程序佔用的內存分爲以下幾個部分: 棧區 由編譯器自動分配釋放,存放函數的參數值,局部變量的值等。 堆區 一般由程序員分配釋放,若程序員不釋放,程序結束時可能由os回收。 全局區(靜態區) 全局變量和靜態變量的存儲是放在

原创 右值引用、移動構造函數和move

右值引用 右值一般指的是無法用&取到存儲地址的。比如常量10 那麼我們可以使用&&來獲得右值 int &&j=10; int e=10; int &&j=e;//錯誤,因爲e是左值 移動構造函數 #include <iostream> u

原创 GAMES101 Rasteriztion

光柵化 光柵化描述的主要過程就是將點繪製在屏幕上。我們將屏幕劃分成m*n個像素 採樣 假設我們想把一個三角形顯示在屏幕上,我們需要知道是哪些像素在三角形中。因此,我們一般將像素中心點對三角形相交的位置進行採樣(如果在其中就認爲這個像素是被填

原创 GAMES101 Transformation Cont.

3D Transformation 旋轉矩陣是正交矩陣 (A的逆=A的轉置,則A是正交矩陣) Viewing Transformation Model Transformation View Transformation 位置、朝向(Loo

原创 Games101 Tansformer

線性變換 線性變換是指對數乘和加法封閉 對圖像的操作包括縮放(Scale)、旋轉(rotation)、錯切(shear)、翻轉(flip) 仿射變換 線性變換+平移 二維情況 (x,y,w) 我們的目標:使用一個矩陣A,使得變換後的

原创 c++ strcmp函數

對兩個字符串進行比較 如果返回值小於 0,則表示 str1 小於 str2。 如果返回值大於 0,則表示 str1 大於 str2。 如果返回值等於 0,則表示 str1 等於 str2。