基於屬性的編輯器架構

看了Ogitor的代碼後, 自己又實踐了一把, 結合N3中學到的一些技巧, 在編輯器中得到了驗證.雖說做的是情境編輯器, 但是其它編輯器也可以用的, 畢竟思想都差不多.對於一個編輯器, 通常是由一個個的"實體"組成, 或者叫"對象". 而"對象"又是由各種"屬性"所組成.以情境編輯器為例, 我們通常會涉及以下操作:刷地形, 刷紋理擺模型, 設定模型參數擺光源, 設定光源參數擺特效/音效, 設定參數擺NPC, 設定相應參數...可以看到, 除了地形之外, 其它的操作都差不多. 如果把地形把塊對待,

Load flash from memory stream

http://stackoverflow.com/questions/423166/flash-activex-how-to-load-movie-from-memory-or-resource-or-streamvoid flash_load_memory(FlashWidget* w, void* data, ULONG size) { FlashMemoryStream fStream = FlashMemoryStream(data, size);

高效的網路訊息類實現

感謝gogoplayer提供的思路。 事情的經過是這樣的:幾天前gogoplayer跟我提到想用引用計數來解決訊息廣播時拷貝多份的問題,順帶提到boost::shared_ptr的引用計數是安全執行緒的。這一點跟我的記憶有出入,於是查boost的手冊確認了一下,發現從1.33.0開始shared_ptr就用了lock-free來實現安全執行緒,相當高效。 於是就想把原本的NetMessage隊列改為shared_ptr<NetMessage>隊列。這時回顧之前的實現方式,發現存在記憶

Flash在DirectX中的繪製

這裡使用的是之前我說過的OLE控制項在Direct3D中的渲染方法, 自己不進行swf的解析, 這不現實. 前提條件: COM編程, OLE編程, DirectX編程, ActionScript/Flash(可選).

Protobuf生態圈(上)簡介和資料庫粘合層

 關於Protobuf    protobuf是google的一個開源序列化架構,基於位元據交換格式,兼顧了效率和靈活性。詳見http://code.google.com/p/protobuf/。   

基於法線的邊緣檢測

在邊緣高亮效果中我提到過兩種方法, 各有優缺點吧 映像空間域的邊緣檢測效果比較好, 中間沒有多餘的線條. 缺點是PS中計算比較慢第二種把模型"放大"(其實是變胖)的做法, 可以在VS中完成, 不需要額外的RenderTarget, 適合低端顯卡使用, 適應性好. 不如果模型法線資訊不對的話, 會造成畫面錯亂. 實際使用時可以根據W值(不用Z深度)來畫出遠近粗細一樣的線條 這次提到的基於法線的方法, 其實跟2D的空間域邊緣檢測很相似, 如果要求結果是繪製物體的線條圖而不僅僅是一個邊緣輪廓時,

Nebula3中的屬性

Attr命名空間下實現了Mangalore裡的動態屬性. 屬性是編譯期間型別安全的key/value對, 這是資料庫(database)子系統的基礎. , AttrId相於屬性類型, 而AttributeDefinition是屬性類型的定義, 其中包含了屬性名稱, 屬性的四位元組碼, 實值型別和訪問類型(讀/寫). 也就是說, AttrId是AttributeDefinition的執行個體.實際使用時我們關心的是Attribute類. 那麼使用Attribute有什麼好處呢?

整合protobuf、boost::iostreams和NetMessage類

範例程式碼見http://eddyserver.googlecode.com/svn/trunk/common/tests/messagetest.cc NetMessage類提供了相容stl的介面,通過boost::iostreams樣本的ContainerDevice可以方便的與boost::iostreams::stream結合起來。而boost::iostreams::stream繼承自std::stream,可以像標準流一樣操作。protobuf提供了序列化到流和從流中還原序列化的介面

protobuf訊息的自動派發

google protobuf訊息序列化後的資料是沒有類型資訊的。而一般網路應用要求序列化後發送到對端,還原出類型,還原序列化,再派發給相應的訊息處理函數。以下代碼簡單實現了自動派發的機制。新增protobuf訊息只要增加一行聲明的代碼和相應的處理函數就可以了。http://eddyserver.googlecode.com/svn/trunk/common/tests/protoserver.cc  #define DECLARE_MESSAGE(x) case k##x##ID: /

從Native到Web(一), NaCl學習筆記: 環境搭建

下載 Native Client SDKhttps://developers.google.com/native-client/sdk/download需要設定兩個環境變數, Python2.7.3的安裝路徑加到PATH裡, NACL_SDK_ROOT設定為對應版本目錄CHROME_PATH這個是後面VS調試用的, 如果不用VS開發, 可以不設定C++

《OpenGL 3 & DirectX 11: The War Is Over》:繪圖 API 終戰之日?

(圖片來源:www.cnblogs.com)原文出處:OpenGL 3 & DirectX 11: The War Is Over現今在 DirectX 與 OpenGL 皆已相當普及的年代裡,我們似乎也逐漸淡忘了兩者從前的那段江湖恩怨。在著名硬體網站 Tom’s Hardware 的這篇專欄文章裡,作者帶領我們重新回顧這場「繪圖 API 戰爭」中的起伏轉折,以及 OpenGL 3 與 DirectX 11 的未來展望,是篇值得仔細閱讀的好文章。「DirectX

WOW小地圖產生

參考wowmapview寫了一個小地圖查看的控制項, 可以載入*.wdl檔案解析出一張類似於"衛星圖"的東西WDL檔案儲存的是WOW地圖的低精度高度資料, 冒似用來做遠處的LOD的每個地圖最大是64*64個tile, 而一個tile它儲存了17*17 + 16*16個16位的高度資料. 如果產生一張512*512大小的小地圖的話, 每個tile就只有8*8個像素因此, 我們只取17*17中的偶數點 下面這張是Kalimdor的產生效果#pragma once using namespace

引擎工具開發的一些總結

參數編輯可以說, 引擎工具在除了一些特定操作外, 80%的事情都是在進行參數的編輯與儲存等. 從我接觸工具開發開始, 就一直在學習如何簡化這麼部分的工作. 因為我見過很多業餘的編輯器, 大多都是每加一個參數就在UI層寫一些代碼, 在IO層加一些版本相容代碼等. 而這些代碼常常都是大同小異的, 很多都是Ctrl+C, Ctrl+V出來的. 說起來, 這個探索過程中我也走了不少的彎路, 順便寫出來當教訓吧最早是從java/.net轉來寫C++, 所以對於C++的UI開發十分的不滿.

近期工作與學習技術總結

色彩表現力這個是一些小引擎容易忽略的地方. 可能引擎各種功能都有, 但是為什麼做出來的東西不夠出彩呢? 除去美術自身的原因, 程式也要好好與美術進行溝通. 很多時候美術有一些很不錯的想法, 確總是做不出來, 這個就是程式的責任了. 以WOW的技術為一個起始點, 我想可以從這些方面來改善:法線貼圖. 這個只是用來做一些假的幾何細節, 最重要的是高光的體現. 不過從另一個角度來說, 高光太多雖然畫面看著很"次世代", 但是容易讓玩家眼睛疲勞, 需要把握一個度. 更換光照模型.

WPF工具開發: 第三庫選擇

PropertyGrid Winforms's PropertyGrid 非WPF原生支援, 需要藉助WinFormHost風格不可定製PropertyInspectorView算是"官方"庫, 風格不可定製WPF Property Grid開源功能還不夠完善可以定製風格PropertyEditor for WPF開源功能比較實用, 有自己的特色Actipro PropertyGrid商業控制項Mindscape WPF Property

Google面試的20題

 1. Solve this cryptic equation, realizing of course that values for M and E could be interchanged. No leading zeros are allowed. WWWDOT - GOOGLE = DOTCOM 2. Write a haiku describing possible methods for predicting search traffic seasonality. 3. 1 1

Some sample about infinite sum

First, let we see a infinite sum: S = 1+1/2+1/4+1/8+1/16+..... is equal to 2,beacause if we get 2S = 2+1+1/2+1/4+1/8+...=2+S => S= 2. On the other hand,this same reasoning suggests that we ought to define T=1+2+4+8+16= -1,because 2T = 2+4+8+16+32+

Zernike 矩簡介

在模式識別中,一個重要的問題是對目標的方向性變化也能進行識別。Zernike 矩是一組正交矩,具有旋轉不變性的特性,即旋轉目標並不改變其模值。。由於Zernike 矩可以構造任意高階矩,所以Zernike 矩的識別效果優於其他方法.Zernike 提出了一組多項式{ V nm ( x , y) } 。這組多項式在單位圓{ x2 + y2 ≤1} 內是正交的,具有如下形式: V nm ( x , y) = V nm (ρ,θ) = Rnm (ρ) exp ( jmθ) ,並且滿足   ∫∫ x^2

LightMap的建立與產生

      為了增加情境的表現力,在渲染中添加光照效果必不可少。首先用某種演算法對整個情境產生光照渲染效果,然後再將光照渲染效果以紋理的方式來儲存,將情境中各個多邊形所對應的光照效果存於光照貼圖中,這樣的話在即時渲染時,只需要對情境在原有紋理渲染的基礎上添加多紋理的融合即可渲染出光照效果。然而這樣得到的光照貼圖是和情境中每個單一多邊形相對應的,因此若情境中有N個多邊形就需要對應N個光照貼圖,這樣在渲染時就需要對每個多邊形進行紋理綁定操作,受限於硬體的性質,這個操作是比較耗時,因此就影響了整個渲染

Five levels of problems that might appear in books about mathematics

Level 1. Given an explicit object x and an explicit property p(x),prove that p(x) is true. Level 2. Given an explicit set X and an explicit property p(x),prove that p(x) is true for all x in X. Level 3. Given an explicit set X and an explicit

總頁數: 61357 1 .... 26293 26294 26295 26296 26297 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.