Sublimetext 3 中文側欄與黑側欄

文前說明

經過數年,Sublimetext3官方依然沒有對不同解析度中文字體的解決方案,網路上指流傳著一個一定要屈服才可顯示中文的方法"dpi_scale" : 1.0,逼著大螢幕的中文程式設計師使用小到極致的字體來用這套完美的軟體。而如今終於有專家提出藥方,接下來就跟著本篇慢慢實裝到自己的環境吧!

老方法

首先大家知道的老方法還是提一下,就是Preferences -> Settings-User 裡面增加一行文字:

1
2
3
{
"dpi_scale": 1.0
}

抱歉,舊方法實在太令我印象深刻了,如果有人因為這行滿意就不用往下看下去。

Read More

OpenGL之沒有蠢問題 1 - Uniform

閒談

最近在正藉由開發遊戲引擎將以往學過的各種技巧逐步整合起來,像是PhongNormal MappinggBufferAssimpInstancingParallax Mapping…等。然後參閱網路上神人的概念,左吸收右吐納總算是有點雛形,但其中遇到最Impress的問題是glGetUniformLocation,就由它來做蠢問題系列的第一集主角吧!

Read More

OpenGL 藍寶入門教學 5: 資料型態

開始前介紹

本篇將會大略的提及OpenGL中Buffer,Unifrom還有一點點Shader Storage Block的部分,而關於Atomic或同步問題,就先略過。如果對Shader中GPU與CPU不熟,可能會對本篇閱讀有礙。畢竟藍寶書竟然將Shader的部分放在後頭,Shader連結部分都還不熟,就先切入細節Buffer,Uniform的部分。

Read More

OpenGL 關於藍寶入門教學

關於本篇說明

藍寶書本來認為是一本適合入門者的書,但是漸漸的發現,完全跟入門無緣。因此標題從「OpenGL 入門教學」更改為「OpenGL 藍寶入門教學」,跟著藍寶書走馬看花,真的想用藍寶書學習者可以跟著教學走。打個遊戲的比方來說,如果說學習OpenGL有分為簡單、普通、困難、極難來講,Dowen認為本書屬於困難到極難的等級,而自己是普通的一周目玩家,要通關這本書,可能要技巧性的完成,比方說將一些艱深,身為初學者根本用不到且體會不到的部分先略過,僅提及而不深究。

自己照著藍寶的教學,隨興才會寫,目前Dowen打算先自己看完,教學先擱置,如果有讀者需要幫助可以留言詢問,或許會促進我發文的動力。終於體會到論壇中,「你的回覆是我發文的最大動力」這句話了XD

OpenGL 藍寶入門教學 4: 數學

開始前介紹

這一章節主要是介紹一些數學的基礎,如果發現哪個部分不熟的話,最好能親自磨練一下,因為以後常常需要的時候,如果不懂箇中原理,那麼在偵錯或是實作上,會遇到一些麻煩。當然領悟過後能寫起來是最推薦的方式,以後忘了的時候瞟一眼就行了。初學者如果看不懂本篇的話,可以暫且跳過無妨,當有用到再回頭看,因為現在的文章是搭配官方藍寶書的章節推進,而藍寶書比較適合中階以上閱讀者,所以本篇對初學者來說應該很吃力。
接下來會介紹的內容基本上有:

  • 向量
  • 反射與折射
  • 矩陣
  • 相關座標系統
  • 攝影機
  • 透視投影與正交投影
  • 直線與曲線
  • GLM

Read More

OpenGL 藍寶入門教學 3: Pipeline

開始前介紹

為了讓有興趣的初學者能踏入這個領域,Dowen把以前觀念上不清楚的部分全部在pipeline中補齊許多。縱使如此也是可能有疑點的部分,如果有疑問盡量在文章下方留言,有空一定回覆:D。

CPU到GPU第一階段 - Vertex Shader的資料傳送

GPU在開始執行Vertex Shader前面,有一個動作稱為Vertex Fetching,這個動作會將我們在程式中寫的一個稱為Vertex Attribute的部分讀出來,而後傳送至GPU處。其中GPU必須由 layout (location = 0) in 來定義輸入要從GPU的哪個位置中取出,而CPU則是藉由 glVertexAttribXXX(0, data) 來將資料填入記憶體等待Vertex Fetching到GPU中layout的部分。

Read More

OpenGL 藍寶入門教學 2: Strat With Triangle

開始前介紹

本系列文將使用OpenGL 4.5版本,並以作者能理解的方式教學,如有細節誤解或是講錯的部分,或跳太快應先講什麼後講什麼的地方,請不吝多多指教!謝謝!

從點開始

要畫一個三角形之前,總要會在畫面上畫出一個點來。在那之前,由於使用的是Modern版OpenGL,所以做任何事都要準備兩個東西,其中一個是「Vertex Array Object」,簡稱VAO,另一個則是Shader,包含基礎的兩個稱為Vertex Shader與Fragment Shader。

  • Shader: 其實並不只有Vertex Shader與Fragment Shader,還有Geomerty Shader、Tessellation Control Shader、Tessellation Evaluation Shader,由於屬於初階文章,所以暫不探討。而Shader其中必寫的其實只有Fragment就好,詳細請上網考查。

首先在了解畫一個點需要準備貌似很多東西時,會認為很繁瑣。當深入一點後,將了解僅是一連串常用的手續,以後只要複製貼上加修改。而這裡就先示意部分的OpenGL pipeline,也就是讀者將碰到的pipeline,倘若一次列出全部流程,會猶豫一陣子。

上方的流程是說明,使用者可以以某種方式將一些資料傳給Vertex Shader,本文章目前不會先做傳資料的動作,先給一個小概念。 而傳完之後Vertex Shader仍會以某種方式將資料傳給流程中的下一個Shader,就是Fragment Shader,最後Fragment Shader 跑完之後會將圖片輸出到螢幕上。

理解到OpenGL基礎流程後,接下來就是從實作中學習,如果沒有環境的讀者可以參考上篇中的Code來建立基礎環境。

Read More

OpenGL 藍寶入門教學 1: Setting up Environment

環境準備

開始之前還是要先講一下,讀者可以選擇各種不同的 Framework 與 Library ,像是SDL,FREEGLUT,GLFW之類的,不過不管選擇哪一種,主要的OpenGL流程都是一樣的,只是有些不同的Code或Lib必須要在官方網站自行去看,本篇要講的是GLFW+GLEW在Visual Stuido 2015中的環境建置,如果不是來建置環境的讀者可以跳過本篇,或是對GLFW與GLEW有興趣再往下閱讀。

GLFW

GLFW主要是將在不同平台( Linux, Windows, Mac ) 間常用的一些使用者需求給獨立出來,這些使用者需求像是Keyboard的資訊、Mouse資訊、視窗建置….等等。將這些不同的使用者需求都統整成一個API就是其中一個GLFW在做的事,此外另一個工作是將OpenGL繪製的東西從buffer顯示到螢幕上的工作,還有一些零零總總的細節操作,最重要的是用了GLFW其實已包含OpenGL的Header,當建置好後,直接可以撰寫OpenGL的Code。

首先先到GLFW官方下載中找一個名為「32-bit Windows binaries」的元件 ( 注意! 64-bit Windows binaries的建議不要使用,Dowen我在建置的時候會遇到非常多問題),抓下來後接下來就照著以下的圖片設置。

將GLFW放到任何認為合適的地方,之後再點選VS的專案->屬性,再點選VC++目錄,然後我們主要要變動的有以下兩個,Include目錄與程式庫目錄。

設定好Include與Library。

Read More

OpenGL 藍寶入門教學 0: Introduce

前言:

不管開始任何事情之前,必須先對要做的事情先有個了解才能開始,學習OpenGL也不例外。開始前,先說一下我做教學文的風格,由於這是我以一個學中教,教中學的角度來製作,所以可能會有些不精確,希望哪裡有錯誤可以幫忙改正或指教,謝謝。

簡介:

首先OpenGL(Graphics Library)是一個API,也就是說他是一個幫助我們在不同的顯示卡配備之間做一個橋樑。聽起來很籠統,更詳細又簡單的說,即是說每張顯示卡在製作的時候,都有不同數量的繪圖處理器與不同晶片(ex.GTX970 1080)。而你不必擔心到底要如何針對不同顯示卡的規格(Spec)而寫那些控制不同機器的語法就是OpenGL的工作。

歷史:

而身為一個OpenGL的使用者也需要知曉一點他的過去與未來,過去OpenGL是源自Silicon Graphics這家公司,當時這家公司專門製作繪圖電腦,又貴又大而且寫繪圖語言的時候,不同的繪圖電腦會有不同的寫法,完全沒有一個統一的規範。經過了一段時間,終於想到解法,就是將針對系統部分的程式碼拿掉後,也就是拿掉只能在規格完全符合才可操作API的部分,之後就開發了OpenGL 1.0版本。這個歷史告訴我們,找出邏輯中相同與不同的部分獨立出來,可以增進事務的美好。

Read More

Windows10-音量控制問題

前言:
Windows 10問題連連,假設你跟Dowen一樣想玩踩地雷,但是從Windows App載完後發現音量超級大聲,且假設說你喜歡聽自己的音樂,又想聽Windows App的特效的時候,就會發現「什麼?不能調音量!!」,因為Win10在Modern UI的這些Metro App中沒有加入適當API,所以在音量混合器中沒有這個選項。
因此,繼透明度、Classic Shell…等,為Win10裝插件之旅又開始了。

正題開始:
EarTrumpet的Release中下載最新版本。
如果無法安裝,顯示This program does not support the version of Windows your computer is running
則以下這部分就必須依賴有Visual Studio的人,載下Source Code後,自行編譯出來的.EXE跟.DLL放到一個固定位置。
將.EXE的捷徑放到啟動中,這樣以後就能隨時開機就自動開啟這個軟體了。
這軟體大勝Windows內建的Mixer啊!!!

如果有人有需求,我在附上自己編譯出來的檔案以供使用。

Sublimetext 3 中文側欄與黑側欄

文前說明

經過數年,Sublimetext3官方依然沒有對不同解析度中文字體的解決方案,網路上指流傳著一個一定要屈服才可顯示中文的方法"dpi_scale" : 1.0,逼著大螢幕的中文程式設計師使用小到極致的字體來用這套完美的軟體。而如今終於有專家提出藥方,接下來就跟著本篇慢慢實裝到自己的環境吧!

老方法

首先大家知道的老方法還是提一下,就是Preferences -> Settings-User 裡面增加一行文字:

1
2
3
{
"dpi_scale": 1.0
}

抱歉,舊方法實在太令我印象深刻了,如果有人因為這行滿意就不用往下看下去。

Read More

OpenGL之沒有蠢問題 1 - Uniform

閒談

最近在正藉由開發遊戲引擎將以往學過的各種技巧逐步整合起來,像是PhongNormal MappinggBufferAssimpInstancingParallax Mapping…等。然後參閱網路上神人的概念,左吸收右吐納總算是有點雛形,但其中遇到最Impress的問題是glGetUniformLocation,就由它來做蠢問題系列的第一集主角吧!

Read More

OpenGL 藍寶入門教學 5: 資料型態

開始前介紹

本篇將會大略的提及OpenGL中Buffer,Unifrom還有一點點Shader Storage Block的部分,而關於Atomic或同步問題,就先略過。如果對Shader中GPU與CPU不熟,可能會對本篇閱讀有礙。畢竟藍寶書竟然將Shader的部分放在後頭,Shader連結部分都還不熟,就先切入細節Buffer,Uniform的部分。

Read More

OpenGL 關於藍寶入門教學

關於本篇說明

藍寶書本來認為是一本適合入門者的書,但是漸漸的發現,完全跟入門無緣。因此標題從「OpenGL 入門教學」更改為「OpenGL 藍寶入門教學」,跟著藍寶書走馬看花,真的想用藍寶書學習者可以跟著教學走。打個遊戲的比方來說,如果說學習OpenGL有分為簡單、普通、困難、極難來講,Dowen認為本書屬於困難到極難的等級,而自己是普通的一周目玩家,要通關這本書,可能要技巧性的完成,比方說將一些艱深,身為初學者根本用不到且體會不到的部分先略過,僅提及而不深究。

自己照著藍寶的教學,隨興才會寫,目前Dowen打算先自己看完,教學先擱置,如果有讀者需要幫助可以留言詢問,或許會促進我發文的動力。終於體會到論壇中,「你的回覆是我發文的最大動力」這句話了XD

OpenGL 藍寶入門教學 4: 數學

開始前介紹

這一章節主要是介紹一些數學的基礎,如果發現哪個部分不熟的話,最好能親自磨練一下,因為以後常常需要的時候,如果不懂箇中原理,那麼在偵錯或是實作上,會遇到一些麻煩。當然領悟過後能寫起來是最推薦的方式,以後忘了的時候瞟一眼就行了。初學者如果看不懂本篇的話,可以暫且跳過無妨,當有用到再回頭看,因為現在的文章是搭配官方藍寶書的章節推進,而藍寶書比較適合中階以上閱讀者,所以本篇對初學者來說應該很吃力。
接下來會介紹的內容基本上有:

  • 向量
  • 反射與折射
  • 矩陣
  • 相關座標系統
  • 攝影機
  • 透視投影與正交投影
  • 直線與曲線
  • GLM

Read More

OpenGL 藍寶入門教學 3: Pipeline

開始前介紹

為了讓有興趣的初學者能踏入這個領域,Dowen把以前觀念上不清楚的部分全部在pipeline中補齊許多。縱使如此也是可能有疑點的部分,如果有疑問盡量在文章下方留言,有空一定回覆:D。

CPU到GPU第一階段 - Vertex Shader的資料傳送

GPU在開始執行Vertex Shader前面,有一個動作稱為Vertex Fetching,這個動作會將我們在程式中寫的一個稱為Vertex Attribute的部分讀出來,而後傳送至GPU處。其中GPU必須由 layout (location = 0) in 來定義輸入要從GPU的哪個位置中取出,而CPU則是藉由 glVertexAttribXXX(0, data) 來將資料填入記憶體等待Vertex Fetching到GPU中layout的部分。

Read More

OpenGL 藍寶入門教學 2: Strat With Triangle

開始前介紹

本系列文將使用OpenGL 4.5版本,並以作者能理解的方式教學,如有細節誤解或是講錯的部分,或跳太快應先講什麼後講什麼的地方,請不吝多多指教!謝謝!

從點開始

要畫一個三角形之前,總要會在畫面上畫出一個點來。在那之前,由於使用的是Modern版OpenGL,所以做任何事都要準備兩個東西,其中一個是「Vertex Array Object」,簡稱VAO,另一個則是Shader,包含基礎的兩個稱為Vertex Shader與Fragment Shader。

  • Shader: 其實並不只有Vertex Shader與Fragment Shader,還有Geomerty Shader、Tessellation Control Shader、Tessellation Evaluation Shader,由於屬於初階文章,所以暫不探討。而Shader其中必寫的其實只有Fragment就好,詳細請上網考查。

首先在了解畫一個點需要準備貌似很多東西時,會認為很繁瑣。當深入一點後,將了解僅是一連串常用的手續,以後只要複製貼上加修改。而這裡就先示意部分的OpenGL pipeline,也就是讀者將碰到的pipeline,倘若一次列出全部流程,會猶豫一陣子。

上方的流程是說明,使用者可以以某種方式將一些資料傳給Vertex Shader,本文章目前不會先做傳資料的動作,先給一個小概念。 而傳完之後Vertex Shader仍會以某種方式將資料傳給流程中的下一個Shader,就是Fragment Shader,最後Fragment Shader 跑完之後會將圖片輸出到螢幕上。

理解到OpenGL基礎流程後,接下來就是從實作中學習,如果沒有環境的讀者可以參考上篇中的Code來建立基礎環境。

Read More

OpenGL 藍寶入門教學 1: Setting up Environment

環境準備

開始之前還是要先講一下,讀者可以選擇各種不同的 Framework 與 Library ,像是SDL,FREEGLUT,GLFW之類的,不過不管選擇哪一種,主要的OpenGL流程都是一樣的,只是有些不同的Code或Lib必須要在官方網站自行去看,本篇要講的是GLFW+GLEW在Visual Stuido 2015中的環境建置,如果不是來建置環境的讀者可以跳過本篇,或是對GLFW與GLEW有興趣再往下閱讀。

GLFW

GLFW主要是將在不同平台( Linux, Windows, Mac ) 間常用的一些使用者需求給獨立出來,這些使用者需求像是Keyboard的資訊、Mouse資訊、視窗建置….等等。將這些不同的使用者需求都統整成一個API就是其中一個GLFW在做的事,此外另一個工作是將OpenGL繪製的東西從buffer顯示到螢幕上的工作,還有一些零零總總的細節操作,最重要的是用了GLFW其實已包含OpenGL的Header,當建置好後,直接可以撰寫OpenGL的Code。

首先先到GLFW官方下載中找一個名為「32-bit Windows binaries」的元件 ( 注意! 64-bit Windows binaries的建議不要使用,Dowen我在建置的時候會遇到非常多問題),抓下來後接下來就照著以下的圖片設置。

將GLFW放到任何認為合適的地方,之後再點選VS的專案->屬性,再點選VC++目錄,然後我們主要要變動的有以下兩個,Include目錄與程式庫目錄。

設定好Include與Library。

Read More

OpenGL 藍寶入門教學 0: Introduce

前言:

不管開始任何事情之前,必須先對要做的事情先有個了解才能開始,學習OpenGL也不例外。開始前,先說一下我做教學文的風格,由於這是我以一個學中教,教中學的角度來製作,所以可能會有些不精確,希望哪裡有錯誤可以幫忙改正或指教,謝謝。

簡介:

首先OpenGL(Graphics Library)是一個API,也就是說他是一個幫助我們在不同的顯示卡配備之間做一個橋樑。聽起來很籠統,更詳細又簡單的說,即是說每張顯示卡在製作的時候,都有不同數量的繪圖處理器與不同晶片(ex.GTX970 1080)。而你不必擔心到底要如何針對不同顯示卡的規格(Spec)而寫那些控制不同機器的語法就是OpenGL的工作。

歷史:

而身為一個OpenGL的使用者也需要知曉一點他的過去與未來,過去OpenGL是源自Silicon Graphics這家公司,當時這家公司專門製作繪圖電腦,又貴又大而且寫繪圖語言的時候,不同的繪圖電腦會有不同的寫法,完全沒有一個統一的規範。經過了一段時間,終於想到解法,就是將針對系統部分的程式碼拿掉後,也就是拿掉只能在規格完全符合才可操作API的部分,之後就開發了OpenGL 1.0版本。這個歷史告訴我們,找出邏輯中相同與不同的部分獨立出來,可以增進事務的美好。

Read More

Windows10-音量控制問題

前言:
Windows 10問題連連,假設你跟Dowen一樣想玩踩地雷,但是從Windows App載完後發現音量超級大聲,且假設說你喜歡聽自己的音樂,又想聽Windows App的特效的時候,就會發現「什麼?不能調音量!!」,因為Win10在Modern UI的這些Metro App中沒有加入適當API,所以在音量混合器中沒有這個選項。
因此,繼透明度、Classic Shell…等,為Win10裝插件之旅又開始了。

正題開始:
EarTrumpet的Release中下載最新版本。
如果無法安裝,顯示This program does not support the version of Windows your computer is running
則以下這部分就必須依賴有Visual Studio的人,載下Source Code後,自行編譯出來的.EXE跟.DLL放到一個固定位置。
將.EXE的捷徑放到啟動中,這樣以後就能隨時開機就自動開啟這個軟體了。
這軟體大勝Windows內建的Mixer啊!!!

如果有人有需求,我在附上自己編譯出來的檔案以供使用。