主板之微星(MSI)B350 GAMING PLUS

主板之微星(MSI)B350 GAMING PLUS
主板之微星(MSI)B350 GAMING PLUS

本想購買華碩(Asus)PRIME B350-PLUS但細梯之下此主板尺寸是30.5CM23.7CM(6個鑼絲固定孔)非標準ATX大板,而華碩稍貴點的主板尺寸都是30.4CM24.3CM(9個鑼絲固定孔)標準ATX大板,光從這點就可梯出華碩小氣.有朋友總是迷信華碩認為它的質量就是最好.但多年經驗告訴我並非這樣.

之後注意到微星(MSI)B350 GAMING PLUS這塊標準的ATX大板.整塊主版以紅黑色設計給人感觀非常好.最重要介面齊全,連舊式的串口和並口都支援(需外接埠).小小失望的是缺小IDE介面,幸好有PCI介面可插IDE擴展卡.但我又怕拖慢開機速度.

介面 簡介
CPU 支持AM4封裝AMD RYZEN

我不太注重CPU速度.買左盒裝銳龍1500X/3.5GHz/4核.

晶片組 AMD B350晶片組
內存 4條DDR4內存插槽雙通道內存構架.

安裝四條單條16GB剛好64GB內存

擴展插槽 一條PCIe3.0x16插槽(需要安裝RYZEN(銳龍)CPU)

一條PCIe2.0x16插槽

兩條PCIe2.0x1插槽

兩條PCI插槽.是我買它最重要原因,可以安裝我的PCI創新聲卡

USB後置面板

 

兩個USB2.0

四個USB3.1

一個USB3.1 TYPE-C

加上內置的USB插口,就無需再使用USB分線器.因為它經常接觸不良

交叉火力 支援安裝兩個相同的AMD顯卡

買左迪蘭恒進(ATALAND)RX550酷能4G

存儲 四個SATA 6Gb/s埠,安裝兩個硬盤一個DVD光驅剛剛夠用.

一個M.2介面

 

CPU之AMD RYZEN安裝

CPU之AMD RYZEN安裝
CPU之AMD RYZEN安裝
CPU之AMD RYZEN安裝

現在的CPU尺寸小而且針腳多.SOCKET AM4就有1331腳.若裝反會損毀CPU.是吾是想起SOCKET-1和SOCKET-A的年代呢.

安裝SOCKET AM4步驟

  1. 關閉電源並移除電源線.
  2. 輕撥並抬起AM插座杆至90度(垂直)
  3. AM4的CPU的表面有黃色三角標識.代表PIN1
  4. SOCKET AM4插槽的也有三角標識
  5. 將兩個三角形對齊把CPU平放插入插槽
  6. 把插槽杆拔回原位鎖定CPU
  7. 在CPU表面塗抹散熱矽膠,增加CPU與散熱器接觸面.
  8. 拆除用於安裝散熱器扣勾架(固定模塊)的四粒鑼絲(逆時針轉),露出用於鎖定散熱器的底板
  9. 把原裝幽靈風扇的鑼絲對散熱器底板鑼絲孔.
  10. 使用十字鑼絲批,四粒鑼絲要分開逐次拎,鑼絲不要一次拎緊. (順時針轉)
  11. 把四針風扇插頭插入主板的CPU_FAN1插座

CPU之AMD RYZEN5銳龍1500X

CPU之AMD RYZEN5銳龍1500X
CPU之AMD RYZEN5銳龍1500X
CPU之AMD RYZEN5銳龍1500X

以前好似無買過盒裝的CPU.都是買散裝CPU外加個散熱器.因為現在網購方便乾脆買個盒裝CPU.本想買個Intel八代酷睿I5但需要300系列主機板.CPU同樣是1151腳.但卻要新的晶片組支援.Intel這種作為實在吾好.

繼而把目光轉向AMD RYZEN(銳龍)5-1500X.擁有4個核芯.基頻3.5GHz而且不鎖頻.就這點就比Intel有誠意.

有很吾識多任務操作系統原理的人認為CPU速度比核芯個數重要.其實並非這樣.每個進程(Process)都有一個主線程(thread).瀏覽器+播放機+圖形介面+後臺任務.分分幾十個進程(Process)等代CPU時間片運行.如果你有多CPU核芯操作系統就會均勻的給CPU核芯分配時片.如果遊戲或程式創建多個線程(thread).更能充分的發繪多核CPU性能.最明顯的是兩核芯CPU一出現就令Windows假死現象消失,因為在單CPU年代如果某個進程嚴重佔用CPU資源,Windows圖形介面就變得很慢很慢.

所以在未有多核CPU出現前.解決辦法是購買雙CPU的主版加兩個CPU.但多核芯系統依然比不上多核芯多CPU系統,因為單個CPU的主版的多個核芯同時間只有單個可以訪問內存(RAM).而多CPU的主版則可以同時訪問內存(RAM).但多核的CPU核芯同時間依然只有單核個可以訪問內存(RAM).但我之前幾塊雙CPU的主版都無法啟動!_!

性能 產品規格
CPU AM4介面1331針

AMD RYZEN銳龍1500X不集成顯卡

核芯 4芯核8線程
頻率 基頻3.5GHz最高3.7GHz
緩存 L2=2MB

L3=16MB

風扇 原裝幽靈風扇
電壓 1.264V
基頻(CPU Base Clock) 100MHZ(基頻只有100超133有D希望)

 

記憶體之DDR4安裝

記憶體之DDR4安裝

以前主版的記憶體(RAM)插槽是隨便插的.但DDR4主機板會有記憶體(RAM)安裝建議.如下:

數量 插槽
一條 DIMMA2
兩條(雙通道) DIMMA2與DIMMB2
四條(雙通道) DIMMA1與DIMMB1

DIMMA2與DIMMB2

  1. 先通過接觸其它金屬物體釋放自身靜電,已免靜電損壞記憶體(RAM)
  2. 先拔開記憶體(RAM)插槽的扣勾
  3. 插的時候要注意記憶體(RAM)的缺口位.
  4. 將記憶體(RAM) 對準插槽用力按下,直到記憶體(RAM)完全到位.
  5. 如果記憶體(RAM)的金手指氧化接觸不良,可使用膠擦擦.

 

記憶體(RAM)之DDR4-64GB

記憶體(RAM)之DDR4-64GB
記憶體(RAM)之DDR4-64GB BIOS

在市面上無論原裝機、相容機還是平板電腦.最高我只見過是16GB的記憶體(RAM).用戶採用最強勁CPU最大硬盤.而往往忽略記憶體(RAM)容量嚴重不足的重要性.

在現代操作系統把記憶體(RAM)空間劃分成一頁(PAGE)一頁(PAGE)使用,如果沒有足夠記憶體(RAM)空間,操作系統會把以載入數據的記憶體(RAM)分頁(PAGE)寫入磁盤(DISK),以騰出足夠記憶體(RAM)空間.以免造成記憶體(RAM)溢出.但問題是磁盤(DISK)讀寫比記憶體(RAM)慢內太多.在多個程式(APP)切換時記憶體分頁(RAM PAGE)要在記憶體(RAM)和磁盤(DISK)之間不斷傳送.在瀏覽較大的PDF文檔時記憶體(RAM)不斷分配(malloc)和釋放(free)也會造成很大的延時.現代的網絡瀏覽器耗記憶體(RAM)更為利害,網絡影片再打開若干個網站.而後在各瀏覽頁面切換造成很大的延時. CPU再快都幫唔到你. 所以記憶體(RAM) 係多多益善.

VASEKY雖然是雜牌但勝在價格低廉,而且還裝有散熱器.但記憶體(RAM)發熱量不大對於超頻意義不大.只用作美觀和保護晶片.但比起其它大廠有誠意得多.安裝四條16GB共64GB是我這塊B350主版的極限.

參數 簡介
DDR4 2400MHZ(PC19200)
電壓 1.2V
容量 單條16GB

 

 

 

顯卡之迪蘭恒進(ATALAND)RX550酷能4G

顯卡之迪蘭恒進(ATALAND)RX550酷能4G
顯卡之迪蘭恒進(ATALAND)RX550酷能4G

本人對顯卡並無太多要求.能運行SolidWorks與Maya即可以.本想購買的XFX訊景R5-240無貨.而且又擔心4K影片支持.現在顯卡大多都被買去挖礦造成顯卡缺貨.幸好迪蘭恒進(ATALAND)RX550酷能4GB剛剛到貨馬上落單.

迪蘭恒進(ATALAND)RX550酷能4G 簡介
晶片組 RX550
內存 128BIT/DDR5/4GB
輸出 DVI-D/HDMI/DP

現在的顯卡以4GB顯存起步,回想起我第一塊顯卡只有1MB的顯存.更加認證左.硬體只是過眼雲煙.演算法才能久流傳.

3DMARK11 Entry(E) 1024×600 Performance(P)1280×720 Extrema(x)1920X1080
總分 E9283 P6332 X1398
圖形分數 9527 5929 1241
物理分數 8958 8922 8960
結合分數 8390 6844 1688
GT1 38.29幀 23.66幀 7.16幀
GT2 45.03幀 26.75幀 6.94幀
GT3 63.62幀 39.09幀 6.44幀
GT4 30.75幀 20.04幀 3.31幀
PT 28.44幀 28.32幀 28.45幀
CT 39.03幀 31.83幀 7.85幀

大量的光照對於GPU要求還是有點高,Extrema測試基本吾上10幀.

OpenGL之載入地形文檔

OpenGL之載入地形文檔

地形文檔就是256色位圖文檔,因為位圖即點陣圖.點的數值越大地形越高,數值越低形成低窪地帶.最終生成高山、湖水.

地形演示程式:下載

  1. 按+/-鍵移動煙霧距離
  2. 按{}鍵升高或降低湖水高度
  3. OPEN/FILE載入地形文檔,支持拖放.
  4. 只支持RAW格式
  5. 按ESC鍵重置聚地形文檔
  6. 壓縮包內的terrain目錄附有三個地形文檔

繪畫地形思路如下:

  1. 設地形的最大高度為10
  2. 湖水平面設為1
  3. 因為像素8Bit最大256色, 所以縮放因子等於256除以地形的最大高度scale=256/10
  4. 地形由三角形所組成, 遍曆所有像素生成三角形.
  5. 地形的顏色由綠色分量組成,Y座標越高顏色越明亮.
  6. 通過像素的索引生成三角形XZ座標
  7. 通過像素的顏色值生成三角形Y座標,Y=像素顏色/縮放因子
  8. 繪畫藍色湖水平面覆蓋低窪地帶

成生地形RAW文檔

  1. 打開Photoshop並載入高空拍攝圖
  2. 大小轉換為64*64像素
  3. 圖像/模式/灰度
  4. 圖像/模式/8位通道
  5. 儲存為.RAW文檔

繪畫地形的函式示例

void Draw_Terrain (PBYTE data,int height,int width)

{

for(int z=0;z < height-1; ++z)

{

glBegin(GL_TRIANGLE_STRIP);// 繪畫三角形

for(int x=0;x < width; ++x)

{

float scaled_height1 = data[ z   * width + x] / (256.0f / 10.0f);

float scaled_height2 = data[(z+1)* width + x] / (256.0f / 10.0f);

glColor3f(0.1f, 0.5f + 0.5f * scaled_height1 / 10, 0.1f);// 山地的顏色,地勢越高綠色分量越大

glVertex3f((x – width/2.0f), scaled_height1,(z – height/2.0f));

glColor3f(0.1f, 0.5f + 0.5f * scaled_height2 / 10, 0.1f);// 山地的顏色,地勢越高綠色分量越大

glVertex3f((x – width/2.0f), scaled_height2, ((z+1) – height/2.0f));

}

glEnd();

}

// 繪畫湖面

glColor3f(0.0, 0.0, 0.8f);// 藍色湖水

glBegin(GL_QUADS);

glVertex3f(-width/2.1f, 1,  height/2.1f);

glVertex3f( width/2.1f, 1,  height/2.1f);

glVertex3f( width/2.1f, 1, -height/2.1f);

glVertex3f(-width/2.1f, 1, -height/2.1f);

glEnd();

}

Windows資源文檔的編譯與讀取

Windows資源文檔的編譯與讀取

Windows程式就是單獨的.exe執行文件.但若程式需要讀取文檔才能運行.可以將其與.exe文件一起放置,但這樣就失去保密性.更好處理方法是將文檔編譯進.exe執行文件.這樣執行程式就無需附帶其它文檔.以VC為例:

把資源文檔編譯進.exe執行文件

  1. 在VC工程目錄創建名為”res”的目錄(其它名都可以)
  2. 把資源文檔當拷貝進”res”的目錄
  3. 以文本方式編輯rc文檔,寫入資源文檔的路徑
  4. name/ID flag   path
  5. 編譯器把所以資源文檔編譯成.RES文檔,最後與其它.obj文檔連接並生.exe執行文件
定義資源文檔 簡介
resources.rc

Heightmap  RAW  “res\\heightmap.raw”

通過字符串名定義

RAW為類型名

Heightmap為資源名

resource.h

#define  ID_MAP   1500

resources.rc

ID_MAP  RAW  “res\\heightmap.raw”

通過整數標識符定義

ID_MAP為資源ID

也可直接使用數字

讀取資源文檔示例

  1. 查找資源FindResource()
  2. 加載資源LoadResource()
  3. 獲取文檔的長度SizeofResource()
  4. 鎖定資源並獲取指針LockResource()

C代碼版本

hInstance:程式的實例句柄

filename:資源文檔名

type:類型名

PBYTE Read_RES(HINSTANCE hInstance,char *filename,char * type)

{//  查找資源

HRSRC hRsrc =::FindResource((HMODULE)hInstance,filename,type);

if(hRsrc == NULL)

return false;

//加載資源

HMODULE hGlobal = (HMODULE)::LoadResource((HMODULE)hInstance,hRsrc);

// 獲取文檔的字節長度

int size =::SizeofResource((HMODULE)hInstance,hRsrc);

// 鎖定資源並獲取指針

PBYTE res = (PBYTE) ::LockResource(hGlobal);

// 分配內存空間

PBYTE data = (PBYTE)malloc(size);

// 拷貝數據

memcpy(data,res,size);

if(hGlobal)

FreeResource(hGlobal); // 釋放資源句柄

return data;

}

OpenGL之煙霧

OpenGL之煙霧

煙霧(Fog)使遠距離的物體變暗,近距離的物體變得清晰.是遊戲中常用特效.OpenGL煙霧將每個像素煙霧色進行混合處理.

煙霧演示程式:下載

  1. 按+/-鍵移動煙霧距離
  2. 按ESC鍵重置聚煙霧

煙霧函式演示:

  1. glEnable(GL_FOG);
  2. GLfloat fogColor[] = { 0f, 0.0f, 0.0f };
  3. glFogfv(GL_FOG_COLOR, fogColor);
  4. glFogi(GL_FOG_MODE, GL_LINEAR);
  5. glFogi(GL_FOG_COORD_SRC,GL_FRAGMENT_DEPTH);
  6. glFogf(GL_FOG_START, start);
  7. glFogf(GL_FOG_END, end);
  8. glFogf(GL_FOG_DENSITY, 2f);
  9. Draw_Terrain();
  10. glDisable(GL_FOG);

OpenGL通過glFog()函式設定的距離、顏色、密度生成煙霧

參數 簡介
glFogi(GL_FOG_MODE, GL_LINEAR); 設定混合方程式

GL_LINEAR:線性混合

GL_EXP:指數混合(默認值)

GL_EXP2:二次指數指數混合

glFogf(GL_FOG_DENSITY, 1.2f); 煙霧的單位密度,數值需為正,默認值為1.0
glFogf(GL_FOG_START, start); 煙霧距離視口的近端距離
glFogf(GL_FOG_END, end); 煙霧距離視口的遠端距離
glFogi(GL_FOG_INDEX, 0); 設定煙霧顏色8位調色版索引
GLfloat fogColor[] = { 0.5f, 0.5f, 0.5f };

glFogfv(GL_FOG_COLOR, fogColor);

設定煙霧顏色(RGB),默認為黑色.
glFogi(GL_FOG_COORD_SRC,

GL_FRAGMENT_DEPTH);

深度值

GL_FRAGMENT_DEPTH:視口與煙霧的距離(默認值)

GL_FOG_COORD:使用glFogCoordf();設定煙霧坐標

 

混合方程式 簡介
Color=blendFactor*in + (1-blendFactor)*fog 混合方程式
blendFactor 混合因子
in 輸入顏色
fog 煙霧顏色
Color 輸出顏色

 

混合因子方程式 簡介
GL_LINEAR 線性混合

blendFactor=(end-depth)/(end-start)

GL_EXP 指數混合(默認值)

blendFactor= EXP (e, -density*depth)

GL_EXP2 二次指數指數混合

blendFactor= EXP(EXP (e, -density*depth),2)

 

Windows菜單之多選與單選

Windows菜單之多選與單選

Windows菜單可以通過實現單選(點選)與多選(勾選)展現當前狀態.你無需更改MENU結構,只需運行時更改菜單項MENUITEM的標記.

菜單多選與單選(函式示例) 簡介
HMENU menu = GetSubMenu(main_menu,1); 獲取子菜單句柄
CheckMenuRadioItem(

menu,

ID_FIRST,

ID_LAST,

ID_CHECK,

MF_BYCOMMAND);

單項選擇

ID_FIRST第一個菜單

ID_LAST最後一個菜單ID

ID_CHECK單選(點選)菜單ID

 

CheckMenuItem(menu,

ID_CHECK,

MF_BYCOMMAND|MF_CHECKED);

選擇多個菜單項(多項選擇)
CheckMenuItem(menu,

ID_CHECK,

MF_BYCOMMAND|MF_UNCHECKED);

取消選擇菜單項(多項選擇)