2010年8月20日 星期五

win32-接收滑鼠訊息, 抓取座標位置

首先使用visual studio 2008建立win32的程式

會有標準的window callback function - WndProc
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

在這裡面
你可以加入滑鼠的message處理

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{

case WM_LBUTTONDOWN: 
break;
case WM_LBUTTONUP: 
break;
case WM_MOUSEMOVE: 
break;

}

如何得知滑鼠左鍵點下的座標位置呢
資訊就在lParam裡面

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
case WM_LBUTTONDOWN: 
POINT pt;
pt.x = LOWORD(lParam); //滑鼠X坐標
pt.y = HIWORD(lParam); //滑鼠Y坐標

break;
case WM_LBUTTONUP: 
break;
case WM_MOUSEMOVE: 
break;

}


透過Facebook分享

2010年8月19日 星期四

gluPerspective - opengl 讓物體(or線條)有遠小近大的感覺

此網站有詳細介紹該函式的各個參數的定義
在OpenGL裡面可以使用該函式讓你的物體(or線條)有遠小近大的效果

Opengl super bible
有提供source code下載
可以參考第五章ccube

那...opengl es呢?
glFrustum 看起來可以 (參考9.080可以知道glFrustum and gluPerspective的差異)
依照"从零开始学习OpenGL ES之三 – 透视"的參數做設定
會有效果
但是旋轉起來感覺很奇怪

Update:
旋轉的方式有解嚕

感謝blig提供的solution
// replacement for gluPerspective
void setPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar){
GLdouble top, bottom, left, right;
top = zNear * tan(pi180*fovy/2);
bottom = -top;
right = aspect*top;
left = -right;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(left, right, bottom, top, zNear, zFar);
glMatrixMode(GL_MODELVIEW);
}
旋轉就有遠近效果


效果呈現1:

效果呈現2:



無遠近效果呈現:

透過Facebook分享

物體遠近關係-火車鐵軌圖來觀察

從零開始學習OpenGL ES之三 – 透視文章中的火車圖
可以看得出來
對於人的眼睛而言
物體的遠近會有大小的關係
越近越大  越遠越小
最後會連成一點
就像海平面一樣
是所謂的"透視Perspective (有消失點投影) "


Reference:
1. http://www.iphone-geek.cn/%E7%BC%96%E7%A8%8B/%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%AD%A6%E4%B9%A0opengl-es%E4%B9%8B%E4%B8%89-%E9%80%8F%E8%A7%86
2. http://blog.csdn.net/lixinso/archive/2010/01/30/5273238.aspx
3. http://blog.sina.com.cn/s/blog_4d035b080100k3dg.html

透過Facebook分享

2010年8月17日 星期二

公司完蛋前的五個徵兆

摘錄自電子工程專輯

公司完蛋5大徵兆!
        在職場中求生,「預知公司死亡紀事」是很重要的本事。與其等到公司倒閉再來哭爺叫娘,還不如早早跳船,保存自己價值。影子的朋友──海灘小孩(別號son of beach)就是此中高手,他離閞的公司幾乎都會倒閉──不是因為公司沒有他就不行(沒有他可能更好),而是因為他總是能先一步發現公司
快完蛋的徵兆。
公司要倒閉或是裁員有什麼徵兆呢?據海灘小孩的分析,有以下五點:
1.沒有賺錢這個應該算是「常識」,說白話就是指公司不賺錢,沒獲利當然要裁員。問題在於通常這樣知道已經太晚了,像英特爾今年3月一發布獲利警訊(還不是真的虧了哦),就馬上說要未來九個月內要裁員5000人,運氣最好的,還有九個月的時間找頭路。運氣不好的可能馬上就要準備草繩或是農藥了。
2.傳言不斷空穴不來風,看到公司的名字上報一定要小心。明日報結束前,市場上的傳言就一直不斷,一下子說要新產品趕貨,一下子說誰要入主,還惹得詹宏志大罵媒體太無聊。週會次數增加,負責人指桑罵槐。
3.東摳西摳
最近網路上有家公司的公告被傳來傳去,其中最好玩的是禁止員工亂傳 email,說好聽是善用公司資源,說難聽就是這個公司已經為了省錢省到神智不清了。當公司為了一塊錢兩塊錢的事在跟你斤斤計較時,你就要小心現金增資了。之前有家報社要倒前,廁所裡就常沒有衛生紙  , 最近也有一家公司更扯,據說員工要影印文件還要自備紙張…願上帝保佑他們!
4.母公司開溜
像我們這樣的小角色,如果有什麼「職務異動」,那是企業內部「合理的人力調整」,但如果是在我們之上的「董監事們」也到處「退出持股」,甚至翹頭走人,那問題就大了,像資迅人創辦人之一的薛曉嵐,1月18日才說辭職,資迅人2月底就傳出財務困境。
5.女人亂丟
「女人」就是空姐蜜書啦,公司不要你就會把你「亂丟」,美其名「職務調整」,其實是胡整瞎整,整得你七葷八素,自動投降,公司就少發一筆遣散費。當然,這樣做可能太粗暴了,不合中國人溫柔敦厚的古風,高段的經理人就會想出「優離優退」的美麗廣告詞。海灘小孩說,碰到這種,趕快拿錢走人,不然等公司拿棍趕人就難看了。
當然,除了以上的重點,個別的產業也有不同的檢測標準,例如網路業,如果你發現管理階層缺乏網路技術背景,那你也要小心了,海灘小孩說,這,就是泡沫化的徵兆。


Reference:

公司完蛋前的五個徵兆


透過Facebook分享

2010年8月16日 星期一

「OpenGLES」旋轉立方體 後方面覆蓋前方面的問題

用OpenGLES畫一個立方體
定義好空間座標位置, 旋轉, 畫座標圖, 上色
卻發現旋轉的時候, 會有面與面之間會有遮蔽的關係
像是 
在前方的A面, 旋轉180度到後方的時候, 卻會遮蔽其他面.


發現需要將深度測試的功能打開
glEnable(GL_DEPTH_TEST)


座標位置本身具有空間概念(感謝checko教學)
opengl(es)最後會做一堆的單元測試 像是深度, 光源, 顏色..
需要自行enable才能將功能啟動使用
只要glEnable(GL_DEPTH_TEST)
opengl(es)會替你計算各個面的深度關係.


Reference:
http://hi.baidu.com/xqs83/blog/item/e5914da87377c5b4ca130cfb.html
http://www.programmer-club.com.tw/ShowSameTitleN/opengl/2573.html

透過Facebook分享