• <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>

            維爾福

            游戲開發(fā)者
            隨筆 - 26, 文章 - 0, 評論 - 10, 引用 - 0
            數(shù)據(jù)加載中……

            2012年3月9日

            D3D資源管理

            摘要

            受管貼圖(Managed textures,也就是我們通常所謂的“自動管理貼圖”),在DX6中首次被引入,經(jīng)過一系列的改進和增強,在DX9中自動管理的資源類型增加到貼圖,頂點緩沖,頂點索引緩沖,所有這些資源使用統(tǒng)一的公共接口。通過使用D3D資源管理器,應(yīng)用程序可以輕松的處理設(shè)備丟失、處理稍微過量的顯存使用。

            有時開發(fā)者在使用受管資源會遇到一些困難,這部分歸咎與系統(tǒng)的抽象特性。在大多數(shù)情況下使用受管對象是不錯的選擇,但有時出于性能考慮也會使用非托管資源。這篇文章將討論一般情況下如何處理資源,受管與非受管資源的行為差別。

             

            內(nèi)容

            l         顯示內(nèi)存

            l         受管資源

            l         驅(qū)動管制資源

            l         默認(rèn)資源

            l         系統(tǒng)內(nèi)存資源

            l         一般性的建議

             

            顯示內(nèi)存

            為了使得資源可以利用顯存,GPU需要通過內(nèi)存訪問定位他。GPU訪問(Local video memory)顯存是非常高效的,并且某些資源(例如RenderTarget,深度、模板緩沖)必須在本地顯存(Local video memory)定位。由于AGP的出現(xiàn),GPU可以直接訪問部分系統(tǒng)內(nèi)存,而這部分系統(tǒng)內(nèi)存區(qū)域就是所謂的非本地顯存(non-local video memory),當(dāng)然這部分內(nèi)存(顯存)也是不能挪做它用的。非本地顯存僅能被GPU訪問,與訪問本地顯存相比,其效率低一些。需要明確的是,所有AGP內(nèi)存在設(shè)備丟失時都會失效,都需要在恢復(fù)他們。

            一些集成顯卡使用統(tǒng)一內(nèi)存結(jié)構(gòu)(Unified Memory Architecture),這樣主內(nèi)存可以被系統(tǒng)任何一個設(shè)備尋址。D3D支持UMA而不需要修改任何代碼,這樣我們把系統(tǒng)內(nèi)存配置為本地顯存,硬件確保資源的定位就像傳統(tǒng)的結(jié)構(gòu)一樣進行工作。

            受管資源

            大部分資源應(yīng)該使用POOL_MANAGED方式創(chuàng)建,即受管資源。所有受管資源將被創(chuàng)建在系統(tǒng)內(nèi)存,在需要的時候復(fù)制到顯存。當(dāng)發(fā)生設(shè)備丟失時會自動copy系統(tǒng)內(nèi)存到顯存。既然不是所有受管資源都需要一次送入顯存,這樣你可以提交超過渲染每幀所必須使用的最小內(nèi)存容量,但是這樣會使得大量顯存內(nèi)容因為分頁操作而寫到磁盤上,這是非常耗時的。這也是為什么恢復(fù)設(shè)備如此耗時,因為需要將大量磁盤數(shù)據(jù)復(fù)制到顯存。

            DX會為每份資源在最后一次使用時加上時間戳,這樣當(dāng)顯存分配失敗時,它會釋放那些最近最少使用的資源(LRU算法)。使用SetPriority函數(shù)可以標(biāo)記資源的重要程度,重要的資源優(yōu)于時間戳的判斷,所以那些比較常用的資源應(yīng)該設(shè)置高優(yōu)先級,而不用擔(dān)心因為時間戳過期而導(dǎo)致資源被釋放。在DX9中,驅(qū)動程序提供的顯存管理信息是非常有限的,運行時可能不得不清除大量資源用于分配足夠的內(nèi)存。設(shè)置適合的優(yōu)先級是非常有用的,這樣D3D不會清除那些馬上又需要使用的資源。應(yīng)用程序可以強制調(diào)用EvictManagedResources清除所有受管資源,但是如果下一幀又需要重新加載這些資源,這將是非常耗時的,不過這個函數(shù)在那些場景明顯需要改變(比如進入下一個關(guān)卡)的情況下,還是非常有用的。

            如果“當(dāng)前幀”內(nèi)需要非常多資源用于渲染,這將是件麻煩的事情,用前面的LRU方式調(diào)度資源效率就不太理想了,這個時候使用MRU資源調(diào)度方式取代,即優(yōu)先清理那些比較活躍的資源。注意,這里“當(dāng)前幀”的概念是指BeginSceneEndScene之間的需要渲染的幀。

            開發(fā)人員如果想得到關(guān)于受管資源的更多信息,可以通過IDirect3DQuery9接口查詢,但是這個接口僅能用于調(diào)試模式(debug runtimes),在發(fā)布版本中,應(yīng)用程序不能依靠改接口的信息做任何假定。

            了解資源管理如何工作可以幫助我們調(diào)試、調(diào)整程序,重要的是應(yīng)用程序不要太過依賴當(dāng)前的運行庫(或者驅(qū)動程序)的資源管理方式,驅(qū)動更新有可能導(dǎo)致其行為發(fā)生變化,將來的D3D將會有套久經(jīng)考驗的資源管理方式。

            驅(qū)動程序管理的資源

            D3D驅(qū)動可以自由的實現(xiàn)“由驅(qū)動管理貼圖”的特性,通過D3DCAPS2_CANMANAGERESOURCE段可以查詢硬件驅(qū)動是否支持這個特性,這樣驅(qū)動將代替D3D運行庫管理資源。對于級少數(shù)的硬件是支持這個特性的,對于大多數(shù)硬件則不盡相同,你可以咨詢你的產(chǎn)品提供商獲得這方面信息。一般情況下,你可是使用D3DCREATE_DISABLE_DRIVER_MANAGEMENT方式創(chuàng)建設(shè)備,這樣將由D3D運行庫來管理資源。

            缺省資源管理(非受管資源)

            雖然受管資源非常簡單,容易使用,高效,但是有時我們希望直接往顯存里寫東西,這種情況下我們需要使用POOL_DEFAULT方式創(chuàng)建資源。使用這種方式會增加程序的復(fù)雜性,代碼需要應(yīng)付所有設(shè)備丟失的情況,并需要謹(jǐn)慎考慮何時復(fù)制數(shù)據(jù)到顯存。錯誤的指定USAGE_WRITEONLY標(biāo)記或者鎖定渲染目標(biāo)(Render Target)將嚴(yán)重影響性能。

            鎖定POOL_DEFAULT類型的資源很可能導(dǎo)致GPU停止運轉(zhuǎn),這與POOL_MANAGED類型的資源是不同的,除非使用一些特性的指示標(biāo)記。根據(jù)資源當(dāng)前的位置不同,鎖定后得到的指針也不相同,可能是一塊臨時的系統(tǒng)內(nèi)存,也可能直接指向AGP內(nèi)存。如果是臨時的系統(tǒng)內(nèi)存,Unlock后將把這段數(shù)據(jù)送入顯存,這是因為如果顯卡資源不是只寫的(write-only),Lock的時候數(shù)據(jù)將不得不被送入一段臨時的內(nèi)存;如果指向的AGP內(nèi)存區(qū)域,臨時的拷貝是可以避免的,但是cache的行為將會降低性能。

            為了避免在寫入一整行數(shù)據(jù)(a full cache line of data)進入AGP內(nèi)存區(qū)導(dǎo)致write-combing性能下降(一般是由于發(fā)生了一次讀寫周期),順序的訪問AGP內(nèi)存是推薦的做法,如果你的程序需要隨機的訪問AGP內(nèi)存,而你又不希望使用受管資源,那么你可以使用系統(tǒng)內(nèi)存作為替代方案,這樣當(dāng)你生成了數(shù)據(jù)之后,可以lock后拷貝,這樣不會帶來太大的性能損失,這里的性能損失一般是由緩沖的“寫搜索”操作引起。(注,這里關(guān)于詞匯cache write-combing譯者也不知道對應(yīng)的中文含義,只能按照字面意思翻譯,見諒)

            對于某些類型的資源,使用LOCK_NOOVERWRITE標(biāo)記會使添加數(shù)據(jù)比較有效率,但是多次的Lock,Unlock同一資源還是需要盡量避免的,適當(dāng)?shù)睦枚喾N不同的鎖定標(biāo)記對于效率優(yōu)化使非常重要的,就像填充鎖定內(nèi)存區(qū)域最好使用cache友好的(cache-friendly)數(shù)據(jù)訪問方式一樣。

            受管資源和缺省資源混合使用

            受管資源與非受管資源的混合分配使用可能導(dǎo)致顯存碎塊,并且擾亂受管資源使用的內(nèi)存區(qū)域。最好在使用受管資源前使用非受管資源,或者使用受管資源后使用EvictManagedResources函數(shù)清除那些受管資源再使用非受管資源。記住,所有非受管資源都會常駐顯存,這樣其他內(nèi)存需求就不能使用了。

            注意,與以往的DX版本不同,在顯存缺乏時,如果分配非受管資源失敗,DX9會自動清除受管資源,這有可能導(dǎo)致潛在的顯存碎塊,甚至把資源放入不適當(dāng)?shù)牡胤剑ū热绶潜镜貎?nèi)存的靜態(tài)貼圖區(qū))。所以,最好在使用受管資源之前分配全部的非受管資源。

            動態(tài)缺省資源

            如果數(shù)據(jù)需要很高頻率更新,那最好使用非受管資源,并使用USAGE_DYNAMIC標(biāo)記,這樣驅(qū)動會決定最適合的地方放置這些需要經(jīng)常更新的數(shù)據(jù)。這通常意味著放置在非本地顯存中,這樣對于GPU來說,訪問速度可能相對要慢一些。而對于UMA架構(gòu),驅(qū)動將會選擇CPU訪問效率較高的特殊地方放置這些數(shù)據(jù)。

            這種用法(動態(tài)缺省資源類型)一般用于軟蒙皮和基于CPU計算的粒子系統(tǒng)的頂點/頂點索引的Buffer填充,LOCK_DISCARD標(biāo)記可以保證資源仍被使用的時候,鎖定操作不會導(dǎo)致系統(tǒng)停止暫停工作。在這種情況下,使用受管資源會更新系統(tǒng)內(nèi)存,然后拷貝到顯存。對于系統(tǒng)的非本地內(nèi)存,多余拷貝是不需要的。

            標(biāo)準(zhǔn)的貼圖是不允許鎖定的,僅僅可以通過UpdateSurfaceUpdateTexture函數(shù)更新。一些系統(tǒng)支持動態(tài)貼圖,它可以通過配合使用LOCK_DISCARD標(biāo)記進行鎖定,但這需要檢查D3DCAPS2_DYNAMICTEXTURES硬件能力。對于高動態(tài)貼圖(如視頻、程序生成貼圖),最好使用非受管資源和系統(tǒng)內(nèi)存資源,并且通過UpdateTexture函數(shù)更新貼圖。對于高頻度的粒子更新,UpdateTexture函數(shù)可能是最好的選擇。

            在有限的總線-內(nèi)存帶寬下,靜態(tài)貼圖資源應(yīng)該使用POOL_MANAGED方式,這樣可以確保它最好的利用本地顯存,并有較好的效率。對于“半靜態(tài)”資源,使用動態(tài)類型資源有時會獲得更好的效率。

            系統(tǒng)內(nèi)存資源

            資源可以使用POOL_SYSTEMMEM方式創(chuàng)建。但他們不能用于圖形管線,他們僅能做為源數(shù)據(jù)用于更新POOL_DEFAULT類型的資源,這是通過UpdateSurfaceUpdateTexture函數(shù)完成的。他們的鎖定操作也非常簡單,盡管他們同樣可能因為前面提到的原因?qū)е孪到y(tǒng)停止運轉(zhuǎn)。

            雖然是在系統(tǒng)內(nèi)存中創(chuàng)建資源,但POOL_SYSTEMMEM所支持的資源格式和能力(比如最大尺寸)是受硬件、驅(qū)動限制的。同樣是在系統(tǒng)內(nèi)存中創(chuàng)建資源的POOL_SCRATCH則沒有這方面限制,它支持所有格式和能力,但設(shè)備卻不能直接訪問它。SCRATCH類型資源一般用于內(nèi)容創(chuàng)建工具。

            一般性的建議

            了解資源管理的技術(shù)實現(xiàn)細(xì)節(jié)對達成你的程序的性能目標(biāo)是有非常大的幫助的,規(guī)劃你的資源如何交給D3D并設(shè)計好的結(jié)構(gòu)以便能及時加載必要的數(shù)據(jù)是一件非常復(fù)雜的工作,為此我們給出一些好的實踐經(jīng)驗做為一般性的原則:

            l         預(yù)處理你的資源。不要將耗時的加載資源、資源轉(zhuǎn)換、資源優(yōu)化丟給用戶去做,雖然這樣便于開發(fā),但確讓用戶無法忍受。預(yù)處理這些資源可以加快加載,更快使用,你的用戶也會發(fā)現(xiàn)你的程序跑的更快了。

            l         避免在每幀創(chuàng)建過多的資源。對于過多的資源加載,可以把他們分到多幀里完成或者不要急于釋放那些暫時不用的資源。

            l         確保在一幀結(jié)束時已經(jīng)斷開了所有資源通道。(比如,頂點流,texture stages,頂點索引)。

            l         對于貼圖,建議使用壓縮貼圖(DXTn)格式,建議使用mip-map或者將小貼圖拼接為大貼圖使用。

            l         建議使用頂點索引,這將減少數(shù)據(jù)傳輸量。

            l         對于過渡的優(yōu)化資源管理是需要謹(jǐn)慎的。如果你的程序過分依賴驅(qū)動、硬件和操作系統(tǒng)的某些特征,那么這些程序、硬件的修改將會導(dǎo)致潛在的性能問題。
            http://www.shnenglu.com/richardhe/articles/69204.html

            posted @ 2012-03-09 15:33 weierfu 閱讀(414) | 評論 (0)編輯 收藏

            2010年11月7日

            ubuntu 安裝smb共享文件夾

                #sudo apt-get install samba
                #sudo apt-get install smbfs

                安裝完畢,從菜單進入 系統(tǒng) -> 系統(tǒng)管理 -> 共享的文件夾,打開如下圖所示的界面:

               

            ubuntu 安裝smb共享文件夾 - 仙人掌 - 聆聽寧靜的聲音

                添加準(zhǔn)備共享的文件夾。

                1. XP匿名訪問Ubuntu共享文件
                使用samba不進行任何設(shè)置時,winXP機器可以連接到Ubuntu機器但提示輸入用戶名密碼,此時不論輸入什么都不能訪問,要實現(xiàn)匿名訪問需要做如下設(shè)置:

                1) 修改配置文件smb.conf:
                   sudo vim /etc/samba/smb.conf
                   將security=user那一行前的注釋符";"去掉,然后把user改為share。
                2) 重啟samba:
                   #sudo /etc/init.d/samba restart

                2. WinXP下用用戶名和密碼訪問Ubuntu共享文件
                下面我們來共享群組可讀寫文件夾,假設(shè)你要共享的文件夾為: /home/ray/share首先創(chuàng)建這個文件夾
                代碼:
                   #mkdir /home/ray/share
                   #chmod 777 /home/ray/share

                備份并編輯smb.conf允許網(wǎng)絡(luò)用戶訪問
                代碼:
                sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
                sudo gedit /etc/samba/smb.conf

                搜尋這一行文字
                代碼:
                ; security = user

                用下面這幾行取代
                代碼:
                security = user
                username map = /etc/samba/smbusers

                將下列幾行代碼添加到文件的最后面,假設(shè)允許訪問的用戶為:newsfan。而文件夾的共享名為 Share
                代碼:
                [Share]
                comment = Shared Folder with username and password
                path = /home/ray/share
                public = yes
                writable = yes
                valid users = newsfan
                create mask = 0700
                directory mask = 0700
                force user = nobody
                force group = nogroup
                available = yes
                browseable = yes

                然后順便把這里改一下,找到[global]把 workgroup = MSHOME 改成
                代碼:
                workgroup = WORKGROUP
                display charset = UTF-8
                unix charset = UTF-8
                dos charset = cp936

                后面的三行是為了防止出現(xiàn)中文目錄亂碼的情況。其中根據(jù)你的local,UTF-8 有可能需要改成 cp936。自己看著辦吧。現(xiàn)在要添加newsfan這個網(wǎng)絡(luò)訪問帳戶。如果系統(tǒng)中當(dāng)前沒有這個帳戶,那么
                代碼:
                sudo useradd newsfan

                要注意,上面只是增加了newsfan這個用戶,卻沒有給用戶賦予本機登錄密碼。所以這個用戶將只能從遠程訪問,不能從本機登錄。而且samba的登錄密碼可以和本機登錄密碼不一樣?,F(xiàn)在要新增網(wǎng)絡(luò)使用者的帳號:
                代碼:
                #sudo smbpasswd -a newsfan
                #sudo gedit /etc/samba/smbusers

                在新建立的文件內(nèi)加入下面這一行并保存
                代碼:
                newsfan = “network username”

                如果將來需要更改newsfan的網(wǎng)絡(luò)訪問密碼,也用這個命令更改
                代碼:
                #sudo smbpasswd -a newsfan

                刪除網(wǎng)絡(luò)使用者的帳號的命令把上面的 -a 改成 -x
                代碼:
                #sudo testparm
                #sudo /etc/init.d/samba restart

            posted @ 2010-11-07 23:46 weierfu 閱讀(1259) | 評論 (0)編輯 收藏

            Ubuntu 下配置 C/C++ 開發(fā)環(huán)境

            1、配置GCC

              其實剛裝好的系統(tǒng)中已經(jīng)有GCC了,但是這個GCC什么文件都不能編譯,因為沒有一些必須的頭文件,所以要安裝build-essential這個軟件包,安裝了這個包會自動安裝上g++,libc6-dev,linux-libc-dev,libstdc++6-4.1-dev等一些必須的軟件和頭文件的庫。

            輸入命令

            Ubuntu命令
            1. sudo apt-get install build-essential  

            安裝完成后寫一個 C 語言程序 hello.c 測試一下

            C 代碼
            1. #include<stdio.h>   
            2. int main()   
            3. {   
            4.    printf("Hello Ubuntu!\n");   
            5.    return 0;   
            6. }  

            在終端輸入

            Ubuntu命令
            1. $ gcc hello.c -o hello   
            2. $ ./hello  

            顯示 
            Hello Ubuntu!
            這樣,C 語言編譯器就安裝成功了!

            2、安裝 GTK 環(huán)境

            Ubuntu命令
            1. sudo apt-get install gnome-core-devel   
            2. sudo apt-get install libglib2.0-doc libgtk2.0-doc   
            3. sudo apt-get install devhelp   
            4. sudo apt-get install glade-gnome glade-common glade-doc  

            這樣,就可以在 Ubuntu 下進行 C/C++ 程序的圖形界面設(shè)計了。

            http://www.baiba.net/blog/?action=show&id=56


            安裝完成后我們也同樣做個測試程序
            代碼:
            #include<gtk/gtk.h>
            void hello(GtkWidget *widget,gpointer data)
            {
            g_print("Hello Ubuntu!\n");
            }
            gint delete_event(GtkWidget *widget,GdkEvent *event,gpointer data)
            {
            g_print ("delete event occurred\n");
            return(TRUE);
            }
            void destroy(GtkWidget *widget,gpointer data)
            {
            gtk_main_quit();
            }
            int main( int argc, char *argv[] )
            {
            GtkWidget *window;
            GtkWidget *button;
            gtk_init (&argc, &argv);
            window=gtk_window_new (GTK_WINDOW_TOPLEVEL);
            gtk_signal_connect (GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL);
            gtk_signal_connect (GTK_OBJECT (window), "destroy",GTK_SIGNAL_FUNC (destroy), NULL);
            gtk_container_set_border_width (GTK_CONTAINER (window), 10);
            button = gtk_button_new_with_label ("Hello Ubuntu!");
            gtk_signal_connect (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (hello), NULL);
            gtk_signal_connect_object (GTK_OBJECT (button), "clicked",GTK_SIGNAL_FUNC (gtk_widget_destroy),GTK_OBJECT (window));
            gtk_container_add (GTK_CONTAINER (window), button);
            gtk_widget_show (button);
            gtk_widget_show (window);   /*顯示一個窗口*/
            gtk_main();   /*進入主循環(huán)*/
            return(0);
            }


            用下面命令編譯運行
            代碼:
            $ gcc gtkhello.c -o gtktest `pkg-config --cflags --libs gtk+-2.0`
            $ ./gtktest

            會顯示一個帶有一個按鈕的窗口,點擊按鈕以后窗口關(guān)閉,命令行顯示Hello Ubuntu!


            附件:
            文件注釋: GTK測試
            s2.png
            s2.png [ 4.79 KiB | 被瀏覽 34134 次 ] 
            文件注釋: C語言測試
            s1.png

            posted @ 2010-11-07 23:26 weierfu 閱讀(404) | 評論 (0)編輯 收藏

            Ubuntu安裝OpenSSH

            Ubuntu缺省沒有安裝SSH Server,使用以下命令安裝: 

            sudo apt-get install openssh-server openssh-client 

            不過Ubuntu缺省已經(jīng)安裝了ssh client。 

            可以通過編輯 /etc/ssh/sshd_config 文件來配置 OpenSSH 
            udo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original 
            sudo chmod a-w /etc/ssh/sshd_config.original 

            配置完成后重起: 
            sudo /etc/init.d/ssh restart

            posted @ 2010-11-07 23:19 weierfu 閱讀(526) | 評論 (0)編輯 收藏

            2010年10月7日

            【圖】Ogre渲染系統(tǒng)


            posted @ 2010-10-07 02:11 weierfu 閱讀(246) | 評論 (0)編輯 收藏

            2010年5月3日

            人際交往的3大定律

            人際交往的3大定律

            http://www.sina.com.cn  2010年04月30日 11:52  藍心心理網(wǎng)
            人際交往的3大定律
            人際交往的3大定律

              人之不同, 一如其面。各種不同的人都有適合自己的交往方式和自己的交往原則,不論其本人是否能夠意識得到。所以,如果想找出一種放之四海而皆準(zhǔn)的、和任何脾氣任何性格的人交往都適用的程序,就像劇本一樣,先說哪句話,后說哪句話,什么話應(yīng)該配什么動作,什么心情配什么表情,這肯定是不現(xiàn)實的。

              但是,人與人之間的交往,可以有一種規(guī)則,讓自己和他人溝通得更加順暢,更加自如。根據(jù)多年咨詢的經(jīng)驗,總結(jié)出一種心理調(diào)適的新思路,姑且稱作人際交往的3大定律。

              定律一:“每一個人都比你累”

              它的核心是這樣兩點,一是在于你能否體諒到,別人的勞動是一種辛苦;二是你能否理解別人對你的態(tài)度。

              比如夫妻之間,同樣是下班之后,丈夫往往寧可倒在沙發(fā)里看電視,也不愿意把家里的東西收拾整齊,妻子卻看不慣屋子里亂七八糟的樣子,就要自己收拾。但是呢,妻子就難免會心里埋怨:我忙了一天,回到家里還要在這里收拾,你居然在沙發(fā)上賴著看電視,怎么就不說來幫一把手呢?可是丈夫也在想了,一天上班我累死累活的,到了家我就沒有一點勁兒了,哪像你上班那么輕閑。要不然,怎么還有精力收拾屋子。要是兩人都這么想,看著吧,過不了多大會兒,肯定吵起來。

              可是,如果兩人都能換一種思路,又會是什么情況呢?

              妻子會覺得,他都辛苦一天了,每天上班這么累,還是讓他好好休息一會兒吧。家嘛,家不就是讓他休息放松的地方嘛。丈夫會想到,她上了一天班,下班回家還要收拾屋子,真是辛苦。這么著吧,反正我收拾過的屋子她也看不上,干脆,我去廚房把飯熱了吧。

              在做家務(wù)的不經(jīng)意中,夫妻間就產(chǎn)生了一種默契和溫馨。

              到父母家聚會,如果想起這一條,你會主動干許多事兒,而且不至于和自己的親人心生芥蒂;和朋友一齊出游,如果心里常想著這句話,你就會興高采烈滿心輕松地成為一個受朋友們歡迎的人。

              明白了第一定律的含義,自然會容易理解下面兩個推論:

              推論一:如果有人能體諒你的累,這個人必定愛護你,心疼你;如果有人愿意替你累,替你辛苦,說明這個人愛你。

              推論二:如果你能體會到其他人的累,體會到其他人的辛苦和不容易,說明你是個善良的人;如果你愿意去替別人累,去替別人承擔(dān)辛苦,說明你愛這個人。

              定律二:每一個人都比你干得活兒多掙得錢少

              定律二適用在你的日常工作之中,或者說,它或許應(yīng)該是你在通過自己努力獲得相應(yīng)的物質(zhì)或精神報酬時的一條準(zhǔn)則。

              相信你在工作中肯定會有對別人羨慕的時候:“還是張主任的工作輕松,每天看他不是請客吃飯,就是打球鍛煉,上班的時候還可以一個人關(guān)在辦公室里想干什么就干什么,錢也不少拿,多好??!”可是,你想過沒有,你羨慕的對象會不會也在心里面羨慕你呢?

              說不定哪一天,你就會聽到張主任親切地和你嘮嘮家常:“小劉啊,還是你們舒服啊,我每天都要陪別人吃飯,連和家里人一起吃晚飯的時間都沒有;上班吧,一個人在辦公室,也沒有人說說話,不像你們還可以說說笑笑的。哎,工作壓力太大了。真羨慕你們啊,要是跟你的工作換一換,我就知足了。”你會不會覺得這是領(lǐng)導(dǎo)在貓哭耗子假慈悲呢?其實不然,這絕對是對方的真實感受。

              心理學(xué)研究發(fā)現(xiàn),人們都有一種把自己的工作和付出以及別人的獲得和收入看得比實際情況要多,把自己的獲得和收入以及別人的工作和付出看得比實際情況要少的心理趨勢。

              每個人都是一樣,會覺得自己的付出太多,自己的獲得太少,于是由此而生出許多的不滿或是抱怨。其實,想想看,假如每個人都這么想的時候,你的想法與別人不同,你覺得自己的付出相對少,別人的付出比較多,那么,你自然就會不斷地自勉,還會真誠地對待別人。

              第二定律也有兩條推論:

              推論一:理解別人干得活多,或者理解別人收入少,都能使別人感動,而且惠而不費。

              推論二:不要再抱怨自己的收入。因為,當(dāng)你抱怨的時候,你肯定沒有在工作。

              定律三:每一個人都沒有義務(wù)幫助你

              這句話聽起來十分冷酷,難道我們身邊的每個人都是這樣冷漠嗎?在我們需要別人援手的時候,我們竟然那么孤立無援?

              事實上并不是這個樣子,這個世界上永遠不缺乏好心人和熱心人,但是有些時候,可能你所遇到的困難沒有被有能力幫助你的好心人看到而已。

              前些年,某個城市發(fā)生了這樣一件事兒:一個小姑娘上學(xué)途中被人撞倒,傷得很嚴(yán)重,圍觀的人群中走出一個小伙子,說愿意把姑娘送到醫(yī)院,但要求小姑娘先出一些辛苦費。小姑娘拿出身上所有的零錢還是不夠,答應(yīng)對方只要通知了自己的父母,肯定會把錢給他。趕到醫(yī)院的父母在把孩子送進手術(shù)室后轉(zhuǎn)身要付錢,小伙子不僅不要,還把零花錢還給了孩子的父母。原來他只是用這種方法證明自己不是肇事者而已。這個小伙子的擔(dān)心也正反映了一般人的看法:要不是你撞了孩子,你干嗎要把孩子送到醫(yī)院來呢?你沒有這個義務(wù)???

              與不相識的人交往,人們都會有一種戒備心理,一般地,禮下于人則必有所求,素昧平生那就應(yīng)該無功不受祿。對于沒來由地?zé)嵝膸椭约旱娜?,有時候難免心里會問個為什么。這也就造成了每個人都充滿熱心但卻擔(dān)心被拒絕而表現(xiàn)的冷漠。如果你能理解大多數(shù)人的這種心理,你就會理解別人為什么沒有對你伸出援助之手;如果你相信這個世界早晚會了解你的為人,那么你在出手助人的時候自然落落大方。

              第三定律的推論是:

              推論一:如果有人在沒有義務(wù)的情況下幫助你,那么,這個家伙,可以做,朋友。

              推論二:如果你幫助了別人,心里的快樂就是最大的酬謝,不要計較對方是否會知道,會記住,或者會回報。

              其實,第一定律說的是家庭和朋友之間的相處之道,第二定律說的是在單位的工作態(tài)度和處事方法,第三定律則是講與陌生人之間的應(yīng)對。

              很可能,熱情的你會覺得這三條定律看上去太冷,太沒有人情味兒,可是,做人,固然要熱血酬知己,也應(yīng)該冷眼觀世情。(藍心網(wǎng))

            posted @ 2010-05-03 00:27 weierfu 閱讀(415) | 評論 (0)編輯 收藏

            2009年11月26日

            DX的渲染管道圖


            http://p.blog.csdn.net/images/p_blog_csdn_net/yanonsoftware/288542/o_pipeline-9.0.png

            posted @ 2009-11-26 12:21 weierfu 閱讀(336) | 評論 (0)編輯 收藏

            2009年9月12日

            模型編輯器1

            posted @ 2009-09-12 12:47 weierfu 閱讀(248) | 評論 (0)編輯 收藏

            2009年1月5日

            【原創(chuàng)】貼幾張最近的工作文檔








            未完。。。

            posted @ 2009-01-05 16:53 weierfu 閱讀(1282) | 評論 (3)編輯 收藏

            2008年12月28日

            【原創(chuàng)】【OGRE人門教程】OGRE源碼成功編譯記081227

             

            OGRE源碼成功編譯記081227

            Made by welflau

            1 下載最新的OGRE源碼包1.6.0

             

             2 直接解壓到D盤根目錄下


             

            3 打開sln 我裝是的VS2005

             

            打開后

            4 編譯生成OgreMain


               

            5 會出錯,還沒下Dependencies

            因為鏈接器中顯示了有附加庫



             

            6 下載ogre-dependencies 注意要下載最新版

            下載地址:

            http://sourceforge.net/project/showfiles.php?group_id=2997




            下一個頁面選擇


             

            7 解壓到D:\ogre-l.6.0\ogre




             

            解壓完后,再重新編譯生成

            OgreMain編譯得要一段時間

            而且編譯后Obj文件有1.6G左右的大小,所以編譯之前要保證你的硬盤有足夠的空間

            【注意】還有一個Samples文件夾也要覆蓋到Ogre目錄下



             

            里面是執(zhí)行時所需的dll文件

            終于編譯完后,不過還是有錯,少文件

             

            我去 Dependencies\include\zzip 目錄下看的確沒這個文件

            我又下了Dependencies其他版本OgreDependencies_VC8SP1_Eihort_20070323

            發(fā)現(xiàn)有該文件



            8
            可能是版本不對再到OGRE官方網(wǎng)站
            http://www.ogre3d.org/index.php?option=com_content&task=view&id=412&Itemid=132


             

            下載紅框所示那個包:OgreDependencies_VC8SP1_Eihort_20071227.zip

            解壓到OGRE目錄D:\ogre-l.6.0\ogre下到重新覆蓋一遍

            再編譯生成

            終于成功生成



            生成的libdll如下圖



             

            其中OgreMain生成的目標(biāo)文件有1.53G


             

            【游戲開發(fā)】【原創(chuàng)教程連載】WelfGame【第7講】(08120803按鈕顏色可控)

            【游戲開發(fā)】【原創(chuàng)教程連載】WelfGame【第6講】(08120702加入皮膚對話框)

            【游戲開發(fā)】【原創(chuàng)教程連載】WelfGame【第5講】(WelfGame(08120302三維操作)

            【游戲開發(fā)】【原創(chuàng)教程連載】WelfGame【第4講】(08120301導(dǎo)入三維數(shù)據(jù)文件 .x)

            【游戲開發(fā)】WelfGame【第3講】(08120203圖像透明及顏色)

            【游戲開發(fā)】WelfGame【第2講】(08120202繪制文字和圖像)

            【游戲開發(fā)】原創(chuàng):我的游戲開發(fā)學(xué)習(xí)過程(連載中...)(第一講)

            posted @ 2008-12-28 17:54 weierfu 閱讀(4943) | 評論 (7)編輯 收藏

            99热都是精品久久久久久| 久久久久亚洲AV无码观看| 国产成人综合久久久久久| 亚洲成人精品久久| 超级97碰碰碰碰久久久久最新| 亚洲乱码中文字幕久久孕妇黑人| 2021少妇久久久久久久久久| 精品久久久久久久中文字幕| 国内精品久久久久影院薰衣草| 一本伊大人香蕉久久网手机| 久久无码AV一区二区三区| 久久99精品国产麻豆宅宅| 亚洲精品tv久久久久久久久久| 精品久久8x国产免费观看| 亚洲国产成人久久综合碰| 国产精品久久免费| 97精品依人久久久大香线蕉97| 亚洲午夜久久影院| 9久久9久久精品| 97久久国产露脸精品国产| 亚洲午夜久久久| 久久精品?ⅴ无码中文字幕| 精品国产91久久久久久久| 亚洲国产精品无码成人片久久| 日韩久久久久中文字幕人妻| 久久国产精品99久久久久久老狼| 精品久久久久久中文字幕大豆网| 久久精品国产亚洲AV不卡| 国产高潮国产高潮久久久91 | 国产精品一区二区久久国产| 久久国产精品偷99| 国产一级做a爰片久久毛片| 久久人妻少妇嫩草AV无码专区| 亚洲午夜福利精品久久| 久久无码精品一区二区三区| 人人狠狠综合久久亚洲婷婷| 精品国产91久久久久久久| 色综合久久最新中文字幕| 久久综合久久综合九色| 99久久精品无码一区二区毛片| 亚洲午夜精品久久久久久人妖|