Time of Update: 2018-12-05
1. 深度測試a) 深度緩衝區:螢幕上每個像素點的深度資訊的一塊記憶體緩衝區.D3D通過比較當前繪製的像素點的深度和對應深度緩衝區的點的深度值來決定是否繪製當前像素.b) D3DPRESENT_PARAMETERS. AutoDepthStencilFormat = D3DFMT_D16表示深度值由16位二進位表示開啟深度測試:pDevice->SetRenderState( D3DRS_ZENABLE, TRUE );深度測試函數:D3DRS_
Time of Update: 2018-12-05
什麼是景深效果?景深效果,簡稱DOF,在人眼跟光學攝像裝置上很常見.如:簡單地來說,就是近處跟遠處的景物模糊,而焦點附近的物體則很清晰.至於為什麼會產生這樣的效果,我就懶得說了:p 那麼怎麼來實現這種效果呢?看圖:從攝像機開始,按距離分成三部分:近距離模糊,焦點範圍(清晰),遠距離模糊渲染的時候按深度(即距離)進行判斷,在焦點範圍內則是清晰的,否則就進行模糊處理.整個過程分三個Pass:1. 將情境渲染到一個RenderTarget,做為清晰版.2.
Time of Update: 2018-12-05
常見的效能瓶頸:1.檔案的讀寫和網路的操作2.CPU3.記憶體4.同步5.異常6.螢幕繪製一、程式設計和編碼1.對象的產生和大小的調整 (1)儘可能的使用靜態變數 如果類中的變數不會隨他的執行個體變化而變化,就定義為靜態,從而使它所有的執行個體都共用這個變數 (2)不要對已產生的變數做過多的改變 如儘可能不要過多改變String對象的值 (3)產生靜態對象時,要分配給它合理的空間
Time of Update: 2018-12-05
遊戲中提供很多可供配置的設定,有利用適應多種不同的硬體設定,也有利於適應用不同玩家的操作習慣.如果每次進遊戲的話都要重設一次,這顯然就失去了配置的意義,不如用一個適用範圍比較廣的預設值算了.所以,配置需要儲存.windows中就有眾多的的ini檔案,還有一些軟體會把資訊存入註冊表.但是,當配置資訊較多或是對安全性有所考慮時,這就不太適合了.而且,解析ini檔案(或XML)等文字格式設定的配置,也是一件比較麻煩的事.另一種比較方便的方法就是採用二進位儲存,直接把記憶體中的資料轉儲,下次用的時候再重
Time of Update: 2018-12-05
最先出現的是阻塞模型,這個模型是講解電腦網路時被作為例子介紹的,也是最簡單的。其基本原理是:首先建立一個socket串連,然後對其進行操作,比如,從該socket讀資料。因為網路傳輸是要一定的時間的,即使網路通暢的情況下,接受資料的操作也要花費時間。對於一個簡單的單線程程式,接收資料的過程是無法處理其他動作的。比如一個視窗程序,當你接收資料時,點擊按鈕或關閉視窗操作都不會有效。它的缺點顯而易見,一個線程你只能處理一個socket,用來教課還行,實際使用效果就不行了。為了處理多個socket串連,
Time of Update: 2018-12-05
連線導向協議的Socket編程模型:引用內容伺服器 客戶機 Socket() ↓bind() ↓listen() ↓accept() socket() ↓ ↓阻塞,等待客戶資料←建立串連---connect() ↓
Time of Update: 2018-12-05
本想用自動紋理座標產生做的,可是紅寶書上說得一點都不明白。網上有個人的課程設計是自己畫的球,就是一個個四邊形的拼個球,然後再給四邊形貼圖。這樣太麻煩了!逛啊逛,讓我找到了另一種方法,僅僅幾行代碼:// 畫地球void OpenGL::DrawEarth(void)...{ GLUquadricObj *quadObj = gluNewQuadric();//建立一個二次曲面物體 gluQuadricTexture(quadObj,GL_TRUE); //啟用該二次曲面的
Time of Update: 2018-12-05
Last Updated: 10 / 09 / 2008Shadowing is a key component for convincing, solid-looking rendering. Whether hard or soft, physically correct or perceptually satisfying, NVIDIA has been at the forefront of real-time shadowing technology. This page
Time of Update: 2018-12-05
積木表示一種有7種積木: ■ ■ ■■ ■■ ■■ ■■ ■ ■■ ■ ■■ (正反兩種) ■ ■■ ■ ■■■ ■ ■ ■■ ■ ■ ■■■ ■ ■■ ■ ■ ■ ■■■ ■■ ■■■
Time of Update: 2018-12-05
#include <boost/config/warning_disable.hpp>#include <boost/spirit/include/qi.hpp>#include <boost/bind.hpp>#include <boost/lambda/bind.hpp>#include <boost/spirit/include/phoenix.hpp>#include <iostream>struct writer{
Time of Update: 2018-12-05
沒怎麼玩WOW, 不知道這刀叫什麼名字. 於是乎我給起了一個代號: "秒大刀"(我朋友的網名@_@)這是ModelViewer裡的效果, 也是俺努力地方向: 2009/3/2: 實現Mesh繪製其實這個很簡單, 先把ModelHeader從檔案裡讀出來, 根據頂點位移和頂點數量讀取到頂點資訊,
Time of Update: 2018-12-05
文章目錄 能找出以片左右兩部分中的五處不同嗎?找不到沒關係,用程式把圖片處理一下就清楚了。結果如下: 能找出以片左右兩部分中的五處不同嗎? 找不到沒關係,用程式把圖片處理一下就清楚了。 using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Imaging;using System.Linq;using System.
Time of Update: 2018-12-05
#include <iostream>#include <stack>#include <boost/lexical_cast.hpp>//#define BOOST_SPIRIT_DEBUG#include <boost/spirit/include/classic.hpp>#include <boost/spirit/include/classic_dynamic.hpp>#include
Time of Update: 2018-12-05
對於不規則的幾何體的紋理座標, 差不多都是通過投影來算的吧冒似有個"球狀紋理"投影到一個物體上, 就像CubeMap還有一種"圓柱形紋理", 對物體一圈進行投影GPU Gems3裡有個不規則地形(X,Y,Z三個方向上都有面), 這時就沒法簡單地用X,Z座標來計算UV了對於基於高度圖的地形來說, 如果Y方向很高的話, 紋理會有明顯的展開現象這時就可以換個方向進行投影, 用於製作懸崖之類的複雜地形float4x4 matViewProjection;float scaler;struct
Time of Update: 2018-12-05
大家都知道設定WINDOWS案頭牆紙的WIN32 API是SystemParametersInfo, 使用SPI_SETDESKWALLPAPER參數便能設定牆紙:::SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, "C://ABitmap.bmp", SPIF_SENDWININICHANGE | SPIF_UPDATEINIFILE);但問題並沒有解決,因為這個WIN32 API有很大的局限性1. 無法把jpeg,
Time of Update: 2018-12-05
#include <iostream>#include <stack>#include <boost/lexical_cast.hpp>#include <boost/config/warning_disable.hpp>//#define BOOST_SPIRIT_DEBUG#include <boost/spirit/include/qi.hpp>#include
Time of Update: 2018-12-05
看了好久好逮能讓N3畫出東西來了, 感覺它的架構就是專門為DX而設計的^_^. 雖說也能編寫GL的中介層(因為N3的API是處於繼承樹的中間, 而不是最底下), 但是很多習慣一看就是DX嘛. 可能用慣API的會比較好上手點. 命令列程式都是從ConsoleApplication派生, 那麼圖形程式就是從RenderApplication派生了^_^. 先看看RenderApplication都有哪些成員:Ptr<Core::CoreServer>
Time of Update: 2018-12-05
文章目錄 C#代碼F#代碼 C#版本摘自老趙點滴 - 追求編程之美 C#代碼using System;using System.Linq;using System.Text;namespace ConsoleApplication1{ class Program { static void Print(string text, int offset) { text
Time of Update: 2018-12-05
可能是還在開發當中的緣故, 我感覺Nebula3中的lua指令碼系統不是很完善. 所有的調用都是封裝成Command來執行的, 並不像LuaBind那樣直接綁定到C++類對象; 而且, 對於C++呼叫指令碼的介面也不是很方便, 只有一個Eval()來執行一個字串. 如果要實際進行應用的話, 我想最好是自己擴充一下, 這裡有一篇不錯的文章: Integrating Lua into C++. 當然, 對於需求更高的使用者來說, 可以選擇使用LuaBind等第三方庫來整合指令碼系統.Command(
Time of Update: 2018-12-05
文章目錄 傳統方式新方式 傳統方式 1. XXDoc.h//...class CXXDoc : public CDocument{//...// Operationspublic:void Foo1();void Foo2();void Foo3();//...};2. XXDoc.cpp//...void CXXDoc::Foo1(){// Do Foo1}void CXXDoc::Foo2(){// Do Foo2}void