Time of Update: 2018-12-03
線程由兩部分構成:線程核心對象:作業系統用它來對線程實施管理。核心對象也是系統用來存放線程統計資訊的地方。線程堆棧:它用於維護線程在執行代碼時需要的所有函數參數和局部變數。 我們必需要知道一個事實-----進程(WINDOWS中)是不能被調度的。通常所說的調度,都是對線程而言的。進程僅僅是線程的容器,是系統統分配資源的單位。
Time of Update: 2018-12-03
/* hdu 1754 一道簡單的線段樹運用*/#include <cstdio>#define maxn 200005using namespace std;int n,m;int num;struct Node{ int l,r,max,mid;// mid=(l+r)/2;}node[maxn*4];void build(int x,int y, int i){// printf("i:%d x:%d y:%d\n",i,x,y);
Time of Update: 2018-12-03
只是為了能夠讓自己講清一些事!大家都知道,如果想要在在C++的函數中分配記憶體,那麼就只得使用指標的引用傳遞,或是二級指標如:void MyNew(int** p){*p = new int;}void MyNew(int*& p){p = new int;} 而通常我們在開始的學習中,都會寫成 void MyNew(int* p){ p = new
Time of Update: 2018-12-03
關於VOID Sleep(DWORD
Time of Update: 2018-12-03
WINDOWS中定義了一個CONTEXT結構,該結構包含了特定處理器上的寄存器資料。系統使用CONTEXT結構執行各種內部操作。目前,已經存在為Intel、MIPS、Alpha和PowerPC處理器定義的CONTEXT結構。若要瞭解這些結構的定義,可以去看WinNT.h。該結構並沒有說明結構體內的成員,也沒有描述這些成員是誰,因為這些成員要取決於WINDOWS運行在哪個平台上。在WINDOWS定義的所有資料結構中,CONTEXT結構是特定於CPU的唯一結構。 在CONTEXT結構中,它包含了主機
Time of Update: 2018-12-03
理清一個引擎,不得不先理清它的階層,進而理清渲染流程。 本文給出了鬼火引擎中的裝置抽象層,有助於對鬼火引擎源碼的快速閱讀。 IrrlichtDevice *device = createDevice(driverType, core::dimension2d<u32>(640, 480), 16, false, shadows);這個函數大家都很熟悉,那閑話不多說,我們就從這裡開始。。。IrrlichtDevice
Time of Update: 2018-12-03
小學弟的一個問題,不錯額#include<stdio.h>void main(){char *ch1[5];int i;char **p;p=ch1;for(i=0;i<5;i++)scanf("%s",p+i);for(i=0;i<5;i++)printf("%s",*(p+i));}指標沒有分配空間c:malloc#include<stdio.h>#include<stdlib.h>int main(){char *ch1[2];int
Time of Update: 2018-12-03
CPU為了更快的執行代碼。於是當從記憶體中讀取資料時,並不是唯讀自己想要的部分。而是讀取足夠的位元組來填入快取行。根據不同的CPU,快取行大小不同。如X86是32BYTES,而ALPHA是64BYTES。並且始終在第32個位元組或第64個位元組處對齊。這樣,當CPU訪問相鄰的資料時,就不必每次都從記憶體中讀取,提高了速度。 因為訪問記憶體要比訪問快取用的時間多得多。 但是,多核發達的年代。情況就不能那麼簡單了。試想下面這樣一個情況。1、
Time of Update: 2018-12-03
終於在VS中建了項目,寫了幾行代碼。並確定這個東西叫Blaze3D.不要誤會,這不是引擎,我還寫不來引擎那種高端玩意兒。平時在公司都只是用圖形API來寫寫渲染器啊什麼的。壓根兒就沒用過啥引擎!呵呵,說笑了。寫這個東西,主要是想把自己學到的電腦圖形學和數位影像處理方面的知識實踐一把。不然讓他們放心窩裡老覺得會忘! 就寫在這裡,一言既出,駟馬難追!不然一會兒自己又沒耐心寫下去了。寫完之後會照例公開源碼,我這人不喜歡留啥底!HOHO
Time of Update: 2018-12-03
當我們要進行訊息處理的時候,通常需要寫出一系列的訊息函數,然後再將這些函數指標賦值給一個函數指標數組。當要使用的時候,根據訊息編號確定在數組中的位置。 在C++中,成員函數指標寫著很不順手。。於是做了一個基類。。這個基類有個限制,就是只能處理兩個參數的訊息處理函數。第一個是訊息ID,第二個就是訊息內容。不過多數情況下已經夠用。。。 #include "stdafx.h"#include <iostream>#include <stdio.h>#include
Time of Update: 2018-12-03
記憶體池實現有許多種,各有不同的優缺點。這裡不是主要說記憶體池,只是覺得這個記憶體池中的指標用得很飄逸!template <class T,int AllocSize = 50>class MemPool{public:static void* operator new(size_t allocLength){if(!mStartPotinter){MyAlloc();}//將當前指向空閑記憶體起始地址作為反回地址unsigned char* p = mStartPotinter;/
Time of Update: 2018-12-03
世界真的很奇妙,分久必合,合久必分。電腦發展到今天,多國之間的交流日益廣泛,軟體本地化是重大趨勢。如果減少本地化工作就是一件值得考慮的事情。軟體本地化要解決的真正問題就是如何來處理不同的字元集。要知道,單位元組字元是一個8位的資料來表示的。 因此,它最多能表示256個字元。 全世界那麼多個國家,256個怎麼夠。 因此人們提出了雙位元組(DBCS)來解決這個問題。 單位元組與雙位元組字元集
Time of Update: 2018-12-03
冒泡排序與選擇排序的不同、快速排序與選擇排序的結合 冒泡排序可以說是最簡單的排序了。我們學習C語言迴圈的時候都會提到。可見這是一種淺而易懂的排序演算法!但不見得這種演算法就沒用處。首先,他很容易理解,這樣在各種教材中比較適合拿來“開門見山”。其次是他很穩定。 若明確知道即將排的數字很混亂,隨機性很強,則用冒泡排序也未償不可。 誰讓他始終是O(n^2)呢。冒泡排序法代碼: 1void BubbleSort(int a[],int l) 2{ 3 for(int i = 0; i< l;
Time of Update: 2018-12-03
當你需要建立、開啟和操作各種核心對象的時候,系統要建立和操作若干類型的核心對象,強如存取符號對象、事件對象、檔案對象、檔案對應物件、I/O完成連接埠對象、工作物件、信箱對象、互斥對象、管道對象、進程對象、信標對象、線程對象和等待計時器對象等等。這些對象都是通過調用函數來建立的。例如:CreateFileMapping函數可使系統能夠建立一個檔案對應物件。
Time of Update: 2018-12-03
一個軟渲染器至少應該提供3D---》2D的變換,紋理映射等功能,不然連都不好截。由於用習慣了DX,所以結構上應該和DX有點神似!!而在資料處理方式上,我還是覺得OPENGL的爽,省了一堆BUFFER。哈哈!下面是暫訂渲染器結構,大概如下: Device:由於是一個軟渲染,所以,“裝置”是一個抽象出來的東西。通過它我們能夠操作資料的繪製,就像我們真正在操作一個圖形裝置一樣! Graphic
Time of Update: 2018-12-03
1、進程核心物件控點表2、建立與關閉核心對象3、進程間核心物件控點的共用 1、進程核心物件控點表當一個進程初始化時,系統會為它分配一張核心物件控點表。這個表只用於管理核心物件控點。GDI和使用者物件不會影響到這張表。表中的每一項有4個域。 即控制代碼ID,對象記憶體位址,訪問屏蔽位,標誌位。 當一個進程初始化時,控制代碼表為空白。
Time of Update: 2018-12-03
先看這樣的代碼 1void MyNew(int *p) 2{ 3 p = new int; 4} 5 6int main() 7{ 8 int *p = NULL; 9 MyNew(p);10}開始寫了一篇函數中分配記憶體的問題,通過說明他們產生了拷貝,而導致p不能成功分配。但並未提出事實根據,下面我們來仔細看看具體原因。我們需要弄清兩點:1、main函數中的p與MyNew函數中的p是不是一樣;2、如果不一樣,是怎麼導致了不一樣的。第一點很好看,我們可以在編譯器(VC環境,我用
Time of Update: 2018-12-03
紋理內容常常是存在sRGB格式中的。關於這個格式的細節是可以被找到的。通常,像素管線假定顏色是線性以便融合(blending)操作可以線上性空間中進行。因為sRGB中的內容是Gamma較正,所以融合操作線上性空間中處理會導致錯誤的結果。顯卡在讀到有關sRGB內容的時候便會取消Gamma較正以避免錯誤的發生。然後當輸出像素的時候再將像素資訊寫回sRGB格式中。在這種情況下,所有像素管線中的操作就可以都在心線性空間中進行。Gamma校正在D3D9中。 可以指明一張紋理是不是Gamma 2.2
Time of Update: 2018-12-03
/* hdu 1026 bfs+優先隊列+記錄路徑 記錄路徑的時候要注意*/#include <cstdio>#include <queue>#include <cstring>using namespace std;#define maxn 105int n,m;int dir[4][2]={{-1,0},{0,1},{0,-1},{1,0}}; //走路的方向不要錯,不能寫成{{-1,0}{1,0},{0,-1},{0,1}},struct
Time of Update: 2018-12-03
/* poj 2533 兩種解法 第一種:狀態轉移方程:dp[i]=max(dp[j],mmax);*/#include <cstdio>#include <algorithm>#include <cstring>using namespace std;#define maxn 1004#define INF 9999999int nums[maxn];int dp[maxn];int map[maxn][maxn];int main(){