青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

孔雀開發小屋

專注并致力于手機客戶端開發
<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統計

  • 隨筆 - 103
  • 文章 - 0
  • 評論 - 251
  • 引用 - 0

常用鏈接

留言簿(38)

隨筆分類

隨筆檔案

關注的博客

朋友的博客

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

對“雷軍的終極思考”的思考

     摘要: 若想成大事,雷軍認為有三條秘訣:預判未來、在對的時間做對的事情、順勢而為。頗為贊同,自己也有一些思考,記錄下來。  閱讀全文

posted @ 2010-10-09 23:30 孔雀 閱讀(2346) | 評論 (2)編輯 收藏
OpenGL學習的兩個利器

     摘要: 對于OpenGL的初學者來說,有兩個不應該成為困難點的困難點。一個是編寫OpenGL程序需要依賴特定平臺的窗體系統。另外一個是OpenGL的擴展機制需要我們自己去處理。


這里推薦兩個利器來解決這兩個問題。讓我們可以更加專注和有效的學習OpenGL。分別是GLUT和GLEW  閱讀全文

posted @ 2010-10-04 18:12 孔雀 閱讀(3421) | 評論 (3)編輯 收藏
Android OpenGL ES尚未實現的接口總結

     摘要: 最近在Android平臺上寫NDK程序,使用OpenGL ES(注意:這里是OpenGL ES 1.0和1.1版本),發現程序在運行過程中出現如下錯誤:


通過log,在android的源碼中的\frameworks\base\opengl\libs\EGL\目錄下有Loader.cpp文件,通過這 個文件我們可以發現,我們的OpenGL的調用都是通過加載實現了OpenGL ES的dll,然后在該dll中查找我們調用的接口,如果接口沒有找到,EGL就會打印出log,如上所示。
  閱讀全文

posted @ 2010-08-27 16:53 孔雀 閱讀(3897) | 評論 (4)編輯 收藏
Android模擬器啟動失敗解決方案(ERROR: the user data image is used by another emulator. aborting)

今天突然發現ANDROID模擬器啟動失敗,log顯示如下錯誤信息:

ERROR: the user data image is used by another emulator. aborting

問題原因:avd的加鎖機制使然。 .lock是加鎖,如果程序崩潰等原因導致無法清除這些以.lock結尾的文件夾,就會出現這個問題,也就是這個avd的鎖沒有被釋放,導致avd manager以為這個avd正在使用當中。

解決辦法:刪除C:\Documents and Settings\@USER@\.android\avd.找到該目錄下與模擬器對應的avd,然后刪除其中的.lock文件即可。


posted @ 2010-08-26 15:16 孔雀 閱讀(2494) | 評論 (2)編輯 收藏
OpenGL中FBO的概念及其應用

     摘要: OpenGL中的Frame Buffer Object(FBO)擴展,被推薦用于把數據渲染到紋理對像。相對于其它同類技術,如數據拷貝或交換緩沖區等,使用FBO技術會更高效并且更容易實現。
FBO一個最常見的應用就是:渲染到紋理(render to texture),通過這項技術可以實現發光效果,環境映射,陰影映射等很炫的效果。

在OpenGL渲染管線中,幾何數據和紋理最終都是以2d像素繪制到屏幕上。最后一步的渲染目標在OpenGL渲染管線中被稱為幀緩存(frame buffer)。幀緩存是顏色緩存、深度緩存、模板緩存、累積緩存的集合。默認情況下, OpenGL使用的幀緩存是由窗體系統創建和管理的。

在OpenGL擴展中,GL_EXT_framebuffer_object擴展提供了一個創建額外幀緩存對象(FBO)的接口。這個幀緩存的創建和控制完全是由OpenGL完成的,有別于窗體系統創建的默認的幀緩存。與系統默認的幀緩存類似,一個FBO也是顏色緩存、深度緩存、模板緩存的集合(FBO不包括累積緩存),然后OpenGL程序就可以把渲染重定向到FBO  閱讀全文

posted @ 2010-08-26 04:33 孔雀 閱讀(15391) | 評論 (5)編輯 收藏
Vim中使用NERD插件注釋代碼

這段時間使用vim,寫了不少測試代碼,既然是測試代碼,注釋測試代碼,取消注釋就是一個經常性的操作,到今天才動手去找了一個vim的注釋代碼的插件。

下載地址:NERD Commenter

下載以后解壓。把doc放doc目錄下,NERD_commenter.vim放plugin目錄下,啟動vim,OK了。

注釋代碼:
在可視模式下,選擇要注釋的代碼,輸入:  ,cc

取消注釋: 選擇要取消注釋的代碼,輸入: ,cu

不錯的插件。

posted @ 2010-08-25 19:52 孔雀 閱讀(2547) | 評論 (0)編輯 收藏
OpenGL ES中實現gluPerspective函數

在OpenGL中我們可以使用gluPerspective來設置視椎體。但是在OpenGL ES中卻沒有提供這樣的實用庫支持,其實我們可以自己來完成這個函數的功能。代碼如下:

 1 
 2 void __gluPerspective(double fovy, double aspect, double zNear, double zFar)
 3 {
 4     glMatrixMode(GL_PROJECTION);
 5     glLoadIdentity();
 6 
 7     double xmin, xmax, ymin, ymax;
 8     ymax = zNear * tan(fovy * KPI / 360);
 9     ymin = -ymax;
10     xmin = ymin * aspect;
11     xmax = ymax * aspect;
12 
13     glFrustumf(xmin, xmax, ymin, ymax, zNear, zFar);
14 }
15 
16 

在需要調用gluPerspective的地方,用該函數替換即可。


posted @ 2010-08-19 00:14 孔雀 閱讀(2943) | 評論 (4)編輯 收藏
四元數概念及其應用

學習3D編程,四元數是不得不學的。其概念的引入和定義都比較抽象,今學了,總結歸納如下:

介紹四元數之前,先做如下約定:

1.采用右手坐標系(OpenGL)

2.旋轉次序:x->y->z

3.  矩陣是列優先存儲


1.
什么是四元數?

直接用數學上的定義來解釋,因為我很難在現實生活中找到可以描述明白的例子。

 

i, j, k 為虛數

Q = w + xi + yj + zk

其中w是實數,而x,y,z為復數。

另外一種常見的表達方式是:

Q = [w, v]

其中v=(x,y,z)稱為矢量部(雖然稱為矢量,但是這個不是三維空間中的矢量,而是四維空間的,想象吧L),w稱為標量部。


2.
四元數可以做什么?

有了四元數的概念還不行,四元數可以干什么?四元數可以用來描述方向。

先來看下如何求取四元數的長度:

||q|| = Norm(q) = sqrt(w2 + x2 + y2 + z2)

單位長度的四元數有以下屬性:

w2 + x2 + y2 + z2 = 1

所以我們使用如下方法來標準化(Normalize)一個四元數:

q = q / ||q|| = q / sqrt(w2 + x2 + y2 + z2)

 

使用一個單位四元數來描述方向,請記住必須是單位四元數才可以描述方向。


3.
四元數的乘法

因為一個單位四元數可以代表一個三維空間中的方向,那么兩個四元數相乘得到的結果仍然是一個四元數,這個四元素依舊可以標識一個方向。

 

給定兩個四元數:

Q1 = (w1, x1, y1, z1)

Q2 = (w2, x2, y2, z2)

 

Q1 * Q2 = (w1.w2 – v1.v2, w1.v2 + w2.v1 + v1 x v2)

注意:.代表向量間的點積,x代表叉積。v1=(x1, y1, z1)  v2=(x2, y2, z2)

 

優化一下:

w=w1w2 - x1x2 - y1y2 - z1z2
x = w1x2 + x1w2 + y1z2 - z1y2
y = w1y2 + y1w2 + z1x2 - x1z2
z = w1z2 + z1w2 + x1y2 - y1x2

 

4.四元數的轉換

       為什么要轉換,因為我們還不能直接使用四元數來進行3D物體的旋轉。在OpenGL中和Direct3D中都是通過矩陣來描述3D旋轉的。


4.1 四元數到矩陣的轉換

 

使用單位四元數轉換到矩陣:

Matrix = [ 1 - 2y2 - 2z2   2xy - 2wz      2xz + 2wy
             2xy + 2wz      1 - 2x2 - 2z2   2yz - 2wx
             2xz - 2wy      2yz + 2wx      1 - 2x2 - 2y2 ]

 

4.2 四元數到軸角的轉換

軸角也是一種表達空間旋轉的方式。

如果旋轉軸是:(ax, ay, az)

旋轉角度是:angle (單位:弧度)

那么四元數與軸角之間的轉換關系如下:

 

angle = 2 * acos(w)

ax = x / scale

ay = y / scale

az = y / scale

其中scale = sqrt(x2 + y2 + z2)


  4.3
軸角到四元數的轉換

假設旋轉軸是(ax, ay, az),記得必須是一個單位向量。

旋轉角度是theta. (單位:弧度)

那么轉換如下:

w = cos(theta / 2 )

x = ax * sin(theta / 2)

y = ay * sin(theta / 2)

z = az * sin(theta / 2 )


  4.4
歐拉角到四元數的轉換

如果你的歐拉角為(a, b, c)那么就可以形成三個獨立的四元數,如下:

 

Qx = [ cos(a/2), (sin(a/2), 0, 0)]
Qy = [ cos(b/2), (0, sin(b/2), 0)]
Qz = [ cos(c/2), (0, 0, sin(c/2))]


最終的四元數是Qx * Qy * Qz的乘積的結果。

 

 
5.
使用四元數來避免Gimbal Lock

 

基本思路如下:

1)  使用一個四元數來標識一個方向

2)  創建一個臨時的四元數來標識當前方向到新方向的變化

3)  右乘臨時的四元數和初始四元數,結果是一個合并了兩個四元數的新的四元數

4)  將四元數轉換成矩陣


6.
更深入的學習四元數

SLERP:球狀線性插值對于三位模型進行動畫處理非常有用,因為這種方式在模型的各種方向之間提供了平滑的轉換。



posted @ 2010-08-18 14:01 孔雀 閱讀(5808) | 評論 (1)編輯 收藏
google C++風格指南筆記(二):類

     摘要: 如果對象需要進行有意義的(non-trival)初始化,考慮使用明確的init()的方法來進行初始化操作。因為如果在構造函數中進行有意義的初始化操作,一旦這些操作失敗,對象將進入不確定的狀態。symbian編程中廣泛使用一種稱為“兩階段構造法”的方法來解決這個問題,值得借鑒。  閱讀全文

posted @ 2010-08-11 13:21 孔雀 閱讀(2239) | 評論 (1)編輯 收藏
google C++風格指南筆記(一)

     摘要:   閱讀全文

posted @ 2010-07-28 10:59 孔雀 閱讀(3042) | 評論 (5)編輯 收藏
僅列出標題
共11頁: First 3 4 5 6 7 8 9 10 11 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久国产精品一区二区| 免费亚洲视频| 亚洲一卡久久| 亚洲图片欧美日产| 精品999在线播放| 欧美日韩成人一区二区三区| 噜噜噜躁狠狠躁狠狠精品视频 | 亚洲精品日韩在线| 日韩视频第一页| 一区二区三区久久精品| 亚洲一区欧美一区| 久久久久国产一区二区三区| 免费在线欧美视频| 国产精品男人爽免费视频1| 国产一区二区三区四区三区四| 99re66热这里只有精品4| 中文高清一区| 久久婷婷人人澡人人喊人人爽 | 女同一区二区| 亚洲日本成人网| 亚洲人成啪啪网站| 香蕉久久国产| 欧美成人a∨高清免费观看| 国产精品少妇自拍| 亚洲日本成人| 久久九九精品99国产精品| 91久久久久久| 久久久久国产精品一区二区| 国产精品扒开腿做爽爽爽视频| 亚洲高清不卡在线观看| 欧美亚洲一区二区在线| 亚洲片区在线| 久久中文久久字幕| 国产精品亚洲аv天堂网| 在线观看91精品国产麻豆| 亚洲欧美影音先锋| 亚洲国产日本| 久久精品国产综合| 国产精品一区二区a| 亚洲美女一区| 91久久精品一区| 麻豆久久精品| 狠狠色狠色综合曰曰| 亚洲欧美中文另类| 日韩视频免费在线观看| 欧美成人a视频| 最新成人在线| 欧美aⅴ一区二区三区视频| 午夜精品久久久久久久99热浪潮| 欧美视频一区二| 亚洲视频网在线直播| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产精品久久久久久久久久久久| 亚洲黄色影片| 欧美成人资源| 免费成人av在线| 黄色一区二区在线| 久久久综合视频| 久久精品欧美日韩| 激情成人综合网| 欧美高清视频一区| 狂野欧美一区| 亚洲精品在线一区二区| 亚洲国产成人精品久久久国产成人一区| 久久久www成人免费毛片麻豆| 狠狠色丁香久久婷婷综合丁香 | 欧美一区二区三区视频在线观看| 欧美日韩精品综合在线| 夜夜嗨av一区二区三区中文字幕| 亚洲国产一区二区在线| 欧美福利一区| 一区二区三区日韩在线观看| 日韩网站在线观看| 国产精品久久久999| 欧美一区二区三区精品 | 久久精品综合网| 在线看一区二区| 亚洲第一福利在线观看| 欧美精品成人91久久久久久久| 一区二区av在线| 一本色道久久88综合日韩精品| 国产精品视频免费观看www| 欧美在线视频一区二区三区| 久久久91精品国产一区二区精品| 一区二区亚洲精品国产| 亚洲欧洲日韩在线| 国产精品一区二区三区观看| 男人的天堂亚洲| 欧美日韩中文在线| 免费高清在线一区| 欧美日韩视频| 免费在线欧美黄色| 国产精品高潮呻吟久久| 免费欧美电影| 国产精品在线看| 亚洲欧洲综合| 一区二区三区自拍| 99亚洲精品| 亚洲国产精品999| 亚洲你懂的在线视频| 亚洲国产欧美一区| 香蕉国产精品偷在线观看不卡| 亚洲最新视频在线| 久久天堂av综合合色| 亚洲香蕉在线观看| 久久久水蜜桃| 亚洲欧美日本国产专区一区| 蜜臀av性久久久久蜜臀aⅴ| 午夜在线精品偷拍| 欧美国产精品劲爆| 久久伊人免费视频| 国产精品一区二区三区四区| 亚洲欧洲精品天堂一级| **欧美日韩vr在线| 久久精品日韩欧美| 欧美一级艳片视频免费观看| 欧美精品一区二区在线观看| 欧美不卡视频一区发布| 韩国欧美一区| 欧美在线综合视频| 久久精品国内一区二区三区| 欧美日韩国产美女| 亚洲国产福利在线| 在线日韩欧美视频| 免费视频一区二区三区在线观看| 麻豆国产精品一区二区三区 | 国产综合自拍| 亚洲国产91精品在线观看| 亚洲天堂第二页| 亚洲美女色禁图| 毛片一区二区| 欧美成人福利视频| 亚洲丰满少妇videoshd| 久久久www成人免费无遮挡大片| 欧美在线三区| 国产日韩欧美一区| 午夜精品久久久久久久99水蜜桃| 亚洲欧美日本国产专区一区| 国产精品v欧美精品v日本精品动漫| 亚洲激情一区二区三区| 日韩视频一区二区| 欧美日韩午夜剧场| 99精品欧美一区二区三区综合在线| 亚洲精品在线观看免费| 欧美日本中文字幕| 在线亚洲欧美专区二区| 午夜视频在线观看一区| 国产日本欧洲亚洲| 久久爱www| 欧美成人免费全部| 亚洲三级国产| 欧美三级视频在线播放| 亚洲在线一区二区| 久久婷婷激情| 亚洲美女区一区| 国产精品日韩二区| 久久精品成人一区二区三区蜜臀| 美女被久久久| 99精品视频一区| 国产精品男女猛烈高潮激情| 久久久999| 99亚洲一区二区| 久久精品综合| 亚洲最黄网站| 一区在线影院| 欧美日韩综合视频网址| 久久er精品视频| aaa亚洲精品一二三区| 久久精品国产亚洲5555| 亚洲免费观看视频| 国产亚洲亚洲| 欧美日韩国产小视频在线观看| 亚洲欧美日韩高清| 亚洲韩国一区二区三区| 久久黄金**| 中文国产一区| 亚洲国产日韩精品| 国产精品色一区二区三区| 欧美成人第一页| 午夜精品亚洲| 99视频精品免费观看| 欧美电影电视剧在线观看| 亚洲淫性视频| 亚洲每日在线| 亚洲国产精品传媒在线观看 | 亚洲一区二区三区视频播放| 狠狠久久五月精品中文字幕| 国产精品任我爽爆在线播放 | 欧美成人精品福利| 欧美在线观看视频一区二区| 欧美sm重口味系列视频在线观看| 欧美在线亚洲一区| 美女视频一区免费观看| 一区二区三区欧美| 影音先锋一区| 国产一区二区三区日韩| 国产精品伦子伦免费视频| 欧美日韩国产免费观看| 欧美成人精品一区二区| 久久野战av|