通常都會是長這樣
Point3 Origin; 點選投射點
Point3 Dir; 點選向量
MousePos 滑鼠座標
GetCamera()->WindowPointToRay( MousePos.x, MousePos.y, Origin, Dir );
去換到 投攝的點 和向量之後在拿去和物件 算碰撞,有碰到的物件就可以選取
在利用 BoundObject去check
當然還可以拿到目前的距離
攝影機範圍
class Frustum
{
float m_fLeft;
float m_fRight;
float m_fTop;
float m_fBottom;
float m_fNear;
float m_fFar;
bool m_bOrtho;
};
星期四, 8月 08, 2013
記憶一下
除了本來工作上的東西 ,還有些啥技術有瞭解到?
先是 Data-Driven 還有 Event-Driven ,我書讀的少,真的看完了有這些Model的東西後,才瞭解啥是啥?
拿走路來講講,Event-Driven 的方事是當你有走動時的操作時才將Event 丟到你控制移動的功能,比如說你在畫面上 有一個點在(0,0),你點下座標(100,100)時,他接收到Event之後開始走過去;Data-Driven則是,你去控制你的點的座標,讓他到達(100,100),所以走路應該是兩個系統整合起來,而達到自動行走。
有些FPS的Game ,在移動時就是用Data-Driven,client端會一直向Server去詢求更改位置的固定 protocol之後,Server確認ok後回傳給Client新座標,Clien收到procotol 改變移動需要的動作,並設定新座標。所以如果client送protocol的速度很快Server又沒去擋掉不合理的部份,別人看起來就會像飛一樣。
我知道的MMO RPG,這邊就是Event-Driven,當你在畫面上點選了座標給Server,client自動的移動過去,這時候client固定會和server在ckeck position,確定可行走後繼續移動,到達目的地之後就不會再送資料給server。並不完全精準,有可能發生client 先到Server還沒通知別的client。
兩個系統有各自需求的部份,用太多Data-Driven對Server來說是負擔,用Event-Driven,誤差就必需去算回來。
認真來講 Timer也是一種Data-Drivern,而Mouse Click則是Event-Driven。
先是 Data-Driven 還有 Event-Driven ,我書讀的少,真的看完了有這些Model的東西後,才瞭解啥是啥?
拿走路來講講,Event-Driven 的方事是當你有走動時的操作時才將Event 丟到你控制移動的功能,比如說你在畫面上 有一個點在(0,0),你點下座標(100,100)時,他接收到Event之後開始走過去;Data-Driven則是,你去控制你的點的座標,讓他到達(100,100),所以走路應該是兩個系統整合起來,而達到自動行走。
有些FPS的Game ,在移動時就是用Data-Driven,client端會一直向Server去詢求更改位置的固定 protocol之後,Server確認ok後回傳給Client新座標,Clien收到procotol 改變移動需要的動作,並設定新座標。所以如果client送protocol的速度很快Server又沒去擋掉不合理的部份,別人看起來就會像飛一樣。
我知道的MMO RPG,這邊就是Event-Driven,當你在畫面上點選了座標給Server,client自動的移動過去,這時候client固定會和server在ckeck position,確定可行走後繼續移動,到達目的地之後就不會再送資料給server。並不完全精準,有可能發生client 先到Server還沒通知別的client。
兩個系統有各自需求的部份,用太多Data-Driven對Server來說是負擔,用Event-Driven,誤差就必需去算回來。
認真來講 Timer也是一種Data-Drivern,而Mouse Click則是Event-Driven。
星期一, 12月 10, 2012
星期一, 11月 12, 2012
jar add 數位簽章
jarsigner -verify xxx .jar
可以知道有沒有簽過章
message :
jar verified.
or
jar is unsigned.
keytool -list -storetype pkcs12 -keystore xxx.pfx
輸入密碼
xxxxx-xxxx-xxxx-xx
之後出現評證指紋上的一堆字
jarsigner -storetype pkcs12 -keystore xxx.pfx xxx.jar xxxx-xxx-xxx-xxx
就簽上了
可以知道有沒有簽過章
message :
jar verified.
or
jar is unsigned.
keytool -list -storetype pkcs12 -keystore xxx.pfx
輸入密碼
xxxxx-xxxx-xxxx-xx
之後出現評證指紋上的一堆字
jarsigner -storetype pkcs12 -keystore xxx.pfx xxx.jar xxxx-xxx-xxx-xxx
就簽上了
星期四, 12月 15, 2011
python and cegui
首先是 linux 流行 python qt 的問題 時代在進步,技術不停的衍化,純 C++的方式去寫code 漸漸的被更高階的語言所取代,當然 人力 分配變的 更多的階層。
python2.7 + cegui 0.8 + boost1_4_2 + cmake 2.8 還需要裝 pySide for QT 的環境 pyopenGl
之後就開始一連串的compiler 之旅 python 2.7 預設是使用 vs 2008 VC9
但是 CMake 產生出來的 cegui 又剛好可以是2005 所以這時候使用的版本就要小心
最後把相關的 dll
pycegui.pyd 都放一起
boost_python_vc80_mt_xxxx
才可以打開CEED-gui
我轉了一圈 也裝了 ubuntu 還去學了一下python call c++
最後終於可以開python ceed-gui 了 真囧
python2.7 + cegui 0.8 + boost1_4_2 + cmake 2.8 還需要裝 pySide for QT 的環境 pyopenGl
之後就開始一連串的compiler 之旅 python 2.7 預設是使用 vs 2008 VC9
但是 CMake 產生出來的 cegui 又剛好可以是2005 所以這時候使用的版本就要小心
最後把相關的 dll
pycegui.pyd 都放一起
boost_python_vc80_mt_xxxx
才可以打開CEED-gui
我轉了一圈 也裝了 ubuntu 還去學了一下python call c++
最後終於可以開python ceed-gui 了 真囧
星期四, 8月 11, 2011
星期三, 8月 10, 2011
星期四, 3月 31, 2011
星期二, 9月 08, 2009
postgresql 對應 mysql
For those coming from MySQL:
SHOW TABLES = \d
SHOW DATABASES = \l
SHOW COLUMNS = \d table
However the \* commands only work in psql and not via other interfaces, such as queries via PHP. Similar data can be retrieved with the following SQL commands:
SHOW TABLES (\d) = SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'
SHOW DATABASES (\l) = SELECT datname FROM pg_database;
SHOW COLUMNS FROM table (\d table) = SELECT column_name FROM information_schema.columns WHERE table_name ='table';
To get the column names in their "natural" order (as in, the order they were created), use:
SELECT column_name FROM information_schema.columns WHERE table_name ='< table >' ORDER BY ordinal_position;
Alternatively you could send psql metacommands to psql directly:
SHOW TABLES -> echo "\d" | psql "database"
Use "psql -tA" for script friendly format.
SHOW TABLES = \d
SHOW DATABASES = \l
SHOW COLUMNS = \d table
However the \* commands only work in psql and not via other interfaces, such as queries via PHP. Similar data can be retrieved with the following SQL commands:
SHOW TABLES (\d) = SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'
SHOW DATABASES (\l) = SELECT datname FROM pg_database;
SHOW COLUMNS FROM table (\d table) = SELECT column_name FROM information_schema.columns WHERE table_name ='table';
To get the column names in their "natural" order (as in, the order they were created), use:
SELECT column_name FROM information_schema.columns WHERE table_name ='< table >' ORDER BY ordinal_position;
Alternatively you could send psql metacommands to psql directly:
SHOW TABLES -> echo "\d" | psql "database"
Use "psql -tA" for script friendly format.
星期四, 4月 02, 2009
抓mmmmacaddress
IP_ADAPTER_INFO AdapterInfo[16]; // Allocate information
DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer
DWORD dwStatus = GetAdaptersInfo( AdapterInfo, &dwBufLen);
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // Contains pointer to
do {
if(strcmp(pAdapterInfo->IpAddressList.IpAddress.String,"0.0.0.0")!=0)
{
int a=0;
}
pAdapterInfo = pAdapterInfo->Next; // Progress through
// linked list
}
while(pAdapterInfo); // Terminate if last adapter
DWORD dwBufLen = sizeof(AdapterInfo); // Save memory size of buffer
DWORD dwStatus = GetAdaptersInfo( AdapterInfo, &dwBufLen);
PIP_ADAPTER_INFO pAdapterInfo = AdapterInfo; // Contains pointer to
do {
if(strcmp(pAdapterInfo->IpAddressList.IpAddress.String,"0.0.0.0")!=0)
{
int a=0;
}
pAdapterInfo = pAdapterInfo->Next; // Progress through
// linked list
}
while(pAdapterInfo); // Terminate if last adapter
星期四, 3月 26, 2009
在Release 產生 code dump on windows
在Linux 上寫程式時很方便的會使用gdb 然後配合一下 core檔來Deubg,windows也是該有才對。
MSDN上也有說名
首先打開專案資料夾
再配合MiniDumper catch dump之後
HMODULE hDll = ::LoadLibrary( TEXT("DBGHELP.DLL") );
MiniDumpWriteDump
產生之後,用VS開起dmp 配合設定一下/(指定偵錯符號檔)就可以找出當的位置了。以前還在那邊算map-_-
MSDN上也有說名
首先打開專案資料夾
屬性選項
c/c++
啟用c/c++ 例外狀況
我選了 是,但有 SEH 例外狀況 (/EHa)
再配合MiniDumper catch dump之後
HMODULE hDll = ::LoadLibrary( TEXT("DBGHELP.DLL") );
MiniDumpWriteDump
產生之後,用VS開起dmp 配合設定一下/(指定偵錯符號檔)就可以找出當的位置了。以前還在那邊算map-_-
星期一, 1月 12, 2009
星期四, 10月 30, 2008
星期三, 8月 27, 2008
星期三, 8月 20, 2008
星期日, 8月 10, 2008
GCC G++
參數: -O (大寫)
說明: 在編譯過程做最佳化,以提升增快程式執行速度。
參數: -Idir_name
說明: 將目錄 'dir_name' 設定為搜尋標頭檔目錄之一。
簡化: -I
參數: -Ldir_name
說明: 將目錄 'dir_name' 設定為搜尋程式庫目錄之一。
簡化: -L
參數: -lname
說明: 聯結程式庫 libname.a 。
範例一:本例中假設你的程式檔名為test.c,數學函數如 sin等,所要聯結的程式庫為 libm.a。
gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test
範例二:本例中假設你的程式檔名為 test.c,使用到 X window 函數,所需的 include 檔放在 /usr/X11R6/include 中,所須聯結的程式庫放在 /usr/X11R6/lib,所要聯結的程式庫為 libX11.a。
gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test
提供進一步的資訊以便使用者找尋程式中的錯誤。
參數: -Wall
說明: 輸出較多的警告訊息,以便找出程式的錯誤。
參數: -g
說明: 在編譯出可執行檔時,附加執行時除錯資訊,以供 gdb 讀取 (若要使用 ABSoft 的除錯程式,則須將參數改為 -gdwarf )。
參數: -c
說明: 僅編譯成 object 檔而不進行程式庫聯結。
參數: -E
說明:展開程式中的巨集以便了解巨集是否依照預期方式展開。
聯結數個 object 成可執行檔。
參數: -o
範例: 將 'test1.o'、'test2.o' 和程式庫聯結後成為可執行檔 test。
gcc test1.o test2.o -o test
參數: -S
範例:編譯 test.c 產生對應的組合語言程式碼檔 test.s。
說明: 在編譯過程做最佳化,以提升增快程式執行速度。
參數: -Idir_name
說明: 將目錄 'dir_name' 設定為搜尋標頭檔目錄之一。
簡化: -I
參數: -Ldir_name
說明: 將目錄 'dir_name' 設定為搜尋程式庫目錄之一。
簡化: -L
參數: -lname
說明: 聯結程式庫 libname.a 。
範例一:本例中假設你的程式檔名為test.c,數學函數如 sin等,所要聯結的程式庫為 libm.a。
gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test
範例二:本例中假設你的程式檔名為 test.c,使用到 X window 函數,所需的 include 檔放在 /usr/X11R6/include 中,所須聯結的程式庫放在 /usr/X11R6/lib,所要聯結的程式庫為 libX11.a。
gcc -I/usr/X11R6/include -L/usr/X11R6/lib -lX11 test.c -o test
提供進一步的資訊以便使用者找尋程式中的錯誤。
參數: -Wall
說明: 輸出較多的警告訊息,以便找出程式的錯誤。
參數: -g
說明: 在編譯出可執行檔時,附加執行時除錯資訊,以供 gdb 讀取 (若要使用 ABSoft 的除錯程式,則須將參數改為 -gdwarf )。
參數: -c
說明: 僅編譯成 object 檔而不進行程式庫聯結。
參數: -E
說明:展開程式中的巨集以便了解巨集是否依照預期方式展開。
聯結數個 object 成可執行檔。
參數: -o
範例: 將 'test1.o'、'test2.o' 和程式庫聯結後成為可執行檔 test。
gcc test1.o test2.o -o test
參數: -S
範例:編譯 test.c 產生對應的組合語言程式碼檔 test.s。
星期二, 8月 05, 2008
訂閱:
文章 (Atom)