導航:首頁 > 編程知識 > 用c語言編程之後渲染是什麼意思

用c語言編程之後渲染是什麼意思

發布時間:2023-06-04 02:59:46

㈠ C語言編程技術的優勢和劣勢

隨著互聯網編程技術的不斷發展,現在大多數的軟體開發都是通過編程語言來實現的,今天我們就一起來了解一下C語言編程開發技術都有哪些優勢和劣勢。



C語言的一些好的體驗


一次通過閱讀POV-Ray源代碼學會如何在C語言中實現面向對象編程。


通過閱讀GTK+源代碼了解C語言代碼的清晰、干凈和可維護性。


通過閱讀SIOD和Guile的源代碼,知道如何使用C語言實現Scheme解析器。


使用C語言寫出GNOMEEye的初始版本,並對MicroTile渲染進行調優。


C語言的一些不好的體驗


在Evolution團隊時,很多東西老是崩潰。那個時候還沒有Valgrind,為了得到Purify這個軟體,需要購買一台Solaris機器。


調試gnome-vfs線程死鎖問題。


調試Mesa,卻無果。


接手Nautilus-share的初始版本,卻發現代碼裡面居然沒有使用free()。


想要重構代碼,卻不知道該如何管理好內存。灶行


想要打包代碼,卻發現到處是全局變數,而且沒有靜態函數。


但不管怎樣,還是來說說那些Rust里有但C語言里沒有的東西吧。


自動資源管理


Rust從C++那裡借鑒了一些想法,如RAII(,資源獲取即初始化)和智能指針,並加入了值的單一所有權原則,還提供了自動化的決策性資源管理機制。


自動化:不需要手動調用free()。內存使用完後會自動釋放,文件使用完後會自動關閉,互斥鎖在作用域之外會自動釋放。如果要封裝外部資源,基本上只要實現Drop這個trait就可以了。封裝過的資源就像是編程語言的一部分,因為你不需要去管理它的生命周期。


決策性:資源被創建(內存分配、初始化、打開文件等),然後在作用域之外被銷毀。根本不存在垃圾收集這回事:代碼執行完就都結束了。程序數據的生命周期看起來就像是函數調用樹。


如果在寫代碼時老是忘記調用這些方法(free/close/destroy),或者發現以前寫的代碼已經忘記調用,甚至錯誤地調用,那麼以後我再也不想使用這些方法了。


泛型


Vec真的就是元素T的vector,而不只是對象指針的數組。在經過編譯之後,它只能用來存放類型T的對象。


在C語言里需要些很多代碼才能實現類似的功能,所以我不想再這么幹了。


trait不只是interface


Rust並不是一門類似那樣的面向對象編程語言,它有trait,看隱散嘩起來就像是里的interface——可以用來實現動態綁定。如果一個對象實現了Drawable,那麼就可以肯定該對象帶有draw()方法。


不過不管怎樣,trait的威力可不止這掘凱些。


依賴管理


以前實現依賴管理需要:


手動調用或通過自動化工具宏來調用g-config。


指定頭文件和庫文件路徑。


基本上需要人為確保安裝了正確版本的庫文件。


而在Rust里,只需要編寫一個Cargo.toml文件,然後在文件里指明依賴庫的版本。這些依賴庫會被自動下載下來,或者從某個指定的地方獲取。


測試


C語言的單元測試非常困難,原因如下:


內部函數通常都是靜態的。也就是說,它們無法被外部文件調用。測試程序需要使用#include指令把源文件包含進來,或者使用#ifdefs在測試過程中移除這些靜態函數。


需要編寫Makefile文件將測試程序鏈接到其中的部分依賴庫或部分代碼。


需要使用測試框架,並把測試用例注冊到框架上,還要學會如何使用這些框架。


衛生宏(HygienicMacro)


Rust的衛生宏避免了C語言宏可能存在的問題,比如宏中的一些東西會掩蓋掉代碼里的標識符。Rust並不要求宏中所有的符號都必須使用括弧,比如max(5+3,4)。


沒有自動轉型


在C語言里,南邵北大青鳥發現很多bug都是因為在無意中將int轉成short或char而導致,而在Rust里就不會出現這種情況,因為它要求顯示轉型。


不會出現整型溢出


這個就不用再多作解釋了。


㈡ 求一個C語言圖形變換程序,先進行圖形繪制,後能進行圖形復制、移動、縮放、旋轉,跪求啦。。。

從這一部分開始,進入了圖形編程的比較煩瑣的部分,要真正對圖形編程有所了解,這一部分的內容是必須要掌握的。

在計算機繪圖過程中,經常需要進行繪圖變換,主要包括二維圖形變換和三維圖形變換。這一部分討論二維圖形變換,其內容有用戶坐標到屏幕坐標的變換、圖形的比例變換、對稱變換、錯切變換、旋轉變換、平移變換和復合變換等。後面講到了二維剪裁,即線段裁剪與多邊形裁剪。

第一節 用戶坐標到屏幕坐標變換

假設紙上有一個圖形,要用計算機把它在屏幕上畫出來。那麼首先遇到的問題是,紙上的圖形採用的坐標是實數域域中的直角坐標系或是極坐標系,統稱為用戶坐標系。而屏幕上採用的坐標系是整數域中直角坐標系,這類坐標系統稱為設備坐標系。因此用戶坐標系中圖形需要經過變換才能繪制在屏幕上,顯然這個變換的內容包括: 1)將用戶坐標系中任意范圍區域轉換到屏幕某個范圍區域,從而用戶坐標系此范圍區域內的圖形也轉換到屏幕上該范圍區域內。 2)用戶坐標系此區域內圖形上的坐標值轉換到屏幕上該范圍區域內後不一定是整數,取整後才成為該范圍區域內的屏幕坐標值。 3)用戶坐標右手繫到屏幕坐標左手系的坐標軸方向變換。 4)當屏幕坐標系水平方向與垂直方向刻度不等(即像素間距不等)時,為保持圖形不走樣,還要進行比例變換。下面介紹這些內容的具體計算問題。

1.窗口到視口的變換

更確切地說,是實際圖形到屏幕圖形的轉換。有時也稱為數據規格化。

在用戶坐標系中,指定一矩形域以確定要顯示(或繪制)的圖形部分,這個矩形區域稱為窗口。在屏幕上可任選一矩形域以顯示(或繪制)窗口內的圖形,該域稱為視口。如圖2-1所示。

一般視窗口的四條邊界分別為:

左邊界 x=x1、右邊界 x=x2.下邊界 y=y1,上邊界y=y2。

視口的四條邊界分別為:

左邊界sx=sx1,右邊界sx=sx2,上邊界sy=sy1,下邊界sy=sy2。

經變換後應有,窗口的上邊界線段(或下邊界線段)長x2-x1變換成視口上邊界線段(或下邊界線段)長sx2-sx1。設其比例變換因子為k1,則可得

k1*(x2-x1)=sx2-sx1

k1=(sx2-sx1)/(x2-x1)

對窗口內任一x坐標(x1<=x<=x2)變換後為視口內水平方向sx坐標(sx1<=sx<=sx2)。由上述有:

k1*(x-x1)=sx-sx1

sx=sx1+k1*(x-x1)

=sx1+(x-x1)*(sx2-sx1)/(x2-x1)

同樣,經變換後窗口的左邊界線段(或右邊界線段)長y2-y1變換成視口左邊界線段(或右邊界線段)長sy2-sy1。設其比例變換因子為k2,則可得

k2*(y2-y1)=sy2-sy1

k2=(sy2-sy1)/(y2-y1)

對窗口內任一y坐標(y1<=y<=y2)變換後為視口內垂直sy坐標(sy1<=sy<=sy2),應有

k2*(y-y1)=sy-sy1

sy=sy1+k2*(y-y1)

=sy1+(y-y1)*(sy2-sy1)/(y2-y1)

於是對窗口內圖形上任一點坐標(x,y)變換到屏幕上視口內成為(sx,sy),則

sx=sx1+(x-x1)*(sx2-sx1)/(x2-x1)

sy=sy1+(y-y1)*(sy2-sy1)/(y2-y1)

寫成簡式

sx=k1*x+a

sy=k2*y+b

這里

a=sx1-k1*x1

b-sy1-k2*y1

k1=(sx2-sx1)/(x2-x1)

k2=(sy2-sy1)/(y2-y1)

2. 實型值到整型值的變換

上面對窗口內圖形上任一點坐標(x,y)變換到屏幕上視口內成為(sx,sy),

sx=k1*x+a

sy=k2*y+b k1,k2,a,b同上

這樣計算出來的sx,sy一般是實型值,而屏幕上視口內屏幕坐標是整型值,因此要將sx,sy實型值轉換成屏幕坐標系的整型值。這可以通過四捨五入的方法將實型值的絕對值圓整化。由於C語言中已經替我們想到了這點,它提供的函數可以自動取整,因此用戶在調用標准函數在屏幕上繪圖時一般不需要考慮這個問題。當然也可以用賦值的類型轉換規則來實現實型值到整型值的變換。

3. y坐標值方向變換

一般屏幕坐標系是直角左手系,y軸方向向下為正,原點在屏幕的左上角,如圖2-2所示。

窗口內圖形上任一點(x,y)變換到視口內成為(sx,xy),而(x,y)是相對用戶坐標系(直角右手系)的。(sx,sy)是相對屏幕坐標系(直角左手系)的,因此y軸方向相反。為使窗口內圖形變換到視口上圖形其形狀一致,需將視口上圖形y軸方向變換成窗口內圖形y軸方向。這只要將求得的視口內各點的sy整型坐標均用sy2去減,即sy2-sy(整型)代替sy(整型)即可,經這樣的坐標軸方向變換後得到的視口內圖形與窗口內圖形一致。

4.長寬比例變換

屏幕坐標系x方向與y方向上的刻度可能不一樣,這取決於水平方向像素間距與垂直方向偈素間距大小是否一致。如果兩個方向的刻度不相等,那麼用戶坐標系下一個正方形將顯示(或繪制)成為一個長方形有,一個圓將成為一個橢圓。

為保持原圖形的長寬比。使圖形顯示(或繪制)後不走樣,需求出屏幕上兩侍標軸刻度的比值(即縱橫比)。可以用函數getaspectratio()(見前文所述)返回x方向和y方向的比例數,從而求得這個比值。再瘵原圖形y方向坐標乘以該比值,這樣顯示(或繪制)出來的圖形應不走樣。若不考慮圖形的走樣,就不必作這個變換。

第二節 二維幾何變換

圖形的幾何變換一般是指對圖形的幾何信息經過變換後產生新的圖形,圖形幾何變換既可以看作是坐標系不動而圖形變動,變動後的圖形在坐標系中的坐標值發生變化;出可以看作圖形不動而坐標系變動,變動後的圖形在新坐標系下具有新的坐標值。這兩種情況本質上都是一樣的,都是圖形由新的坐標值表示,因此是新產生的圖形。圖形幾何變換包括比例變換、對稱變換、錯切變換、旋轉變換、平移變換及其復合變換。圖形上所有的點在幾何變換前後的坐標關系一般用解析幾何方法可以求得,但這些幾何關系用矩陣方法表示,運算更為方便。

一、基本變換

圖形基本幾何變換是指比例變換、對稱變換、錯切變換、旋轉變換和平移變換等。除平移變換外,這里其它四種幾何變換都可以用組成圖形的點向量(或稱1×2階矩陣)和2×2階變換矩陣相乘表示,而平移變換需引入新方法來實現。

1、比例變換

設圖形上一點P(x,y),經比例變換後成為新的菜上一點P'(x',y'),即有

x'=a*x

y'=d*y

式中a,d為比例因子

將此比例變換式寫成矩陣式得

a 0

[x' y']=[x y] = [x y] * T

0 d

a 0

這里 T= 叫做比例變換矩陣。若a=d,則x,y坐標按同一比例變換。

0 d

當a=d>1時,圖形放大;當0<a=d<1時,圖形縮小。

若a≠d,則x,y坐標按各自不同比例變換。

3 0

例 1: 設有比例變換矩陣 T= , 三角形abc經過比例變換成為三角形a'b'c'。

0 1

如圖2-3所示。

3 0

a [1 2] = [3 2] a'

0 1

3 0

b [2 2] = [6 2] b'

0 1

3 0

c [2 3] = [6 3] c'

0 1

2. 對稱變換

圖形上一點P(x,y)經關於原點對稱變換後成為新圖形上一點P'(x',y'),則

x' = -x

y' = -y

寫成矩陣形式成為

-1 0

[x' y'] = [x y] = [x y] * T

0 -1

-1 0

這里 T = 為關於原點對稱變換矩陣。

0 -1

若關於x軸對稱,則對稱變換的矩陣表示為

1 0

[x' y'] = [x y] = [x y] * T

0 -1

1 0

於是關於x軸對稱變換矩陣 T =

0 -1

若關於y軸對稱,則對稱變換的矩陣表示為

-1 0

[x' y'] = [x y] = [x y] * T

0 1

-1 0

於是關於y軸對稱變換矩陣 T =

0 1

若關於直線y = -x對稱,則對稱變換矩陣表示為

0 -1

[x' y'] = [x y] = [x y] * T

-1 0

0 1

於是關於直線 y = x對稱變換矩陣 T =

1 0

各種對稱變換的圖形均可由實常式序繪出,參見實常式序圖形。

3. 錯切變換

對圖形的任一點P(x,y),作線性變換如下

x' = x + by

y' = y + dx

式中b,d為不全為零的常 數,點P'(x',y')為新圖形上相應的點,這個變換稱為圖形的錯切變換。

錯切變換的矩陣表示為

1 d

[x' y'] = [x y] = [x y] * T

b 1

1 d

T = 叫做錯切變換矩陣(b,d不全為零)。

b 1

① 當d=0時,x'=x+by,y'=y,這時圖形的y坐標不變,x坐標值隨(x,y)及系數b作線性變化。若b>0時,圖形沿x軸作錯切位移;若b<0,圖形沿x軸負向作錯切位移。

② 當b=0時,x'=x,y'=dx+y,此時圖形的x坐標不變y坐標隨(x,y)及系數d作線性變化。如d>0,圖形沿y軸正向作錯切位移;如d<0,圖形沿y軸負向作錯切位移。

③ 當b≠0且d≠0時,x'=x+by,y'=y+dx,圖形沿x,y兩個方向作錯切位移。

1 2

例 2: 設有錯切變換 矩陣 T = ,正方形abcd經此錯切變換成為四邊形a'b'c'd',

0 1

如圖2-4所示。

1 2

a [0 0] = [0 0] a'

0 1

1 2

b [1 0] = [1 2] b'

0 1

1 2

c [1 1] = [1 3] c'

0 1

1 2

d [0 1] = [0 1] d'

0 1

4. 旋轉變換

設圖形上一點P(x,y)繞原點逆時針旋轉θ角後成為新的圖形上一點P'(x',y'),則由解析幾何方法可得

x' = xcosθ + ysinθ

y' = -xsinθ + ycosθ

用矩陣表示為

cosθ -sinθ

[x' y'] = [x y] = [x y] * T

sinθ cosθ

cosθ -sinθ

這里 T = 為繞原點逆時針變換矩陣。若順時針旋轉時,θ角為負值。

sinθ cosθ

5. 平移變換

若圖形上一點P(x,y)沿x軸平移 l距離,沿y軸平移m距離後成為新的圖形上一點P'(x',y'),則有

x' = x + l

y' = y + m

式中l,m不全為零,這稱為平移變換。但此變換無法用組成圖形的點向量和2×2階變換矩陣相乘來實現。

用二維點向量和2×2階矩陣相乘不能表示圖形的平移變換,那麼自然會想到用三維點向量和3×3階矩陣相乘來實現圖形的平移變換。因此對圖形上二個坐標的點向量需要添加一個坐標,使之成為三維點向量以便與三階矩陣相乘,進而實現用矩陣表示平移變換。實際上就是對上面的二個坐標變換式添加第三個坐標變換式,即成為

x' = x + l

y' = y + m

k = k

這第三個坐標變換式(即k=k)必須是恆等式,因為不需作變換,本質上是為了進行矩陣運算而引入的。

將此三個變換式(仍然是圖形的平移變換,不妨將k = k取成1=1)寫成矩陣得

1 0 0

[x' y' l] = [x y l] 0 1 0 = [x y 1] * T

l m 1

1 0 0

顯然 T = 0 1 0 為圖形的平移變換矩陣。

l m 1

這里通過對原圖形上二維點向量引進第三個坐標成為三維點向量,從而使原圖形的平移變換 能用矩陣表示。同樣其它基本變換也可以如此用矩陣表示。因此圖形的基本變換都可以在這樣的三維點向量下統一、整齊用矩陣表示。這樣的三維點向量稱為齊次點向量,也叫三維齊次坐標點,簡稱三維齊次坐標。只有在三維齊次坐標下,二維幾何變換才都可以用矩陣表示。下面再進一步討論一下齊次坐標的優點。

引用齊次坐標後,可將上面各種基本變換矩陣統一在一個三階矩陣中。即

a b 0

T = c d 0

l m 1

式中左上角二階矩陣實現比例、對稱、錯切、旋轉等變換,左下角1×2階矩陣實現平移變換,其中a,b,c,d,l,m只要賦以相應的值,並建立圖形上點的齊次坐標(即在圖形上點的坐標後引入第三個坐標1),這樣就可以用圖形上點的三維齊次坐標與此三階矩陣相乘來表示三維圖形的基本幾何變換了。而變換後,不用考慮第三個坐標1,前面兩個坐標就反映了圖形的整個變換情況。

用齊次坐標表示一個圖形上的點,可以有多種表示,如(6,8,1)、(12,16,2)、(30,40,5)等均表示圖形上同一個點(6,8)。這樣,齊次坐標可以表示計算機無法容納的數。例如當計算機的字長為16位時,它能表示的最大整數為216-1=32767。若點坐標為(80 000,40 000),則計算機無法表示。但用齊次坐標可表示為(20 000,10 000,1/4),經過處理後再用第三個坐標支除前面兩個坐標,從而得到原來通常的坐標。

齊次坐標優點很多,在計算機繪圖中都採用這種表示來處理圖形。下面介紹的圖形復合幾何變換就是如此。

二、復合變換

圖形的復合幾何變換是指圖形作一次以上的基本幾何變換,變換結果是每次基本變換矩陣的乘積。圖殂的復合幾何變換簡稱復合變換。

1. 復合平移

若對圖形首先作平移變換 T1,然後再作平移變換T2,相應的平移變換矩陣分別為

1 0 0

T1 = 0 1 0

l1 m1 1

1 0 0

T2 = 0 1 0

l2 m2 1

則變換結果為復合平移變換T,其復合平移變換矩陣為

T = T1 * T2

1 0 0 1 0 0

= 0 1 0 * 0 1 0

l1 m1 1 l2 m2 1

1 0 0

= 0 1 0

l1+l2 m1|m2 1

㈢ c語言編程什麼意思

C語言是Combined
Language(組合語言)的中英混合簡稱。是一種計算機程序設計語言。它既具有高級語言的特點,又具有匯編語言的特點。它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬體的應用程序。因此,它的應用范圍廣泛,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,具體應用比如單片機以及嵌入式系統開發。
C語言編程就是用C語言編寫程序
C語言較常用編譯軟體有Microsoft的Visual
Studio,Win-TC……

㈣ C語言編程是什麼

C語言是一種計算機程序設計語言。既有高級語言的特點,又具有匯編語言的特點。簡單來說,就像我們平常說話用文字一樣,我們日常用的軟體,就是用好多個代碼轉變過來的。C語言編程就是輸入各種語句、運算符等,使其運行,達到我們想要的結果。

㈤ 別踩白塊c語言程序編譯

只是禪模式的,如果是學慣用的,知道一個模式的應該其他也會了,如果是想玩的話下正版吧= =

#include "SDL2/SDL.h"
#include "SDL2/SDL_ttf.h"
#include<string.h>
// 使用的頭文件
int W; // 窗口寬
int H; // 窗口高
int PH; // 游戲區的高
int i, df = 0; // 定義的變數
char sorry[] = "游戲不適合你的手機", win[9] = "You win!", lose[10] =
"You lose", str[19] = "得分:";
Uint32 began = 0;
float time = 0.0; // 定義的計時變數
bool quit = false; // 退出標志
float X = 0, Y = 0; // 用於獲取觸控位置的坐標
SDL_Event event;
// 定義一個事件
SDL_Window *w = NULL; // 創建一個窗口指針
SDL_Renderer *ren = NULL; // 創建一個渲染器指針
SDL_Surface *sur = NULL; // 表面
SDL_Surface *sur1 = NULL; // 得分表面
SDL_Surface *text = NULL; // 標題文本區表面
SDL_Texture *tex = NULL; // 畫刷
SDL_Texture *tex1 = NULL; // 畫刷
SDL_Texture *tex2 = NULL; // 畫刷
TTF_Font *font = NULL; // 定義一個字體
SDL_Color color, fontcolor; // 定義字體顏色
SDL_Rect rect[4]; // 屏幕出現的四個黑塊
SDL_Rect title; // 標題區
SDL_Rect pp, over;
void change(); // 使方塊動起來
void init(); // 啟動sdl及相關
void draw(); // 畫圖
void start(); // 初始化相關數據
void end(); // 游戲結尾
int main(int argc, char **argv)
{ // 主函數
init();
start();
began = SDL_GetTicks(); // 得到開始時間
while (quit == false)
{
draw(); // 畫圖
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_FINGERDOWN:
X = event.tfinger.x * W;
Y = event.tfinger.y * H;
// 獲取x,y的坐標
if (Y > rect[0].y)
if ((X > rect[0].x) && (X < (W / 4 + rect[0].x))) // 判斷坐標
{
change();
df = df + 1;
}
else // 如果觸屏位置不對
{
quit = true;
if (df < 3)
sur1 = TTF_RenderUTF8_Blended(font, sorry, color);
else
sur1 = TTF_RenderUTF8_Blended(font, lose, color);
}
break;
case SDL_FINGERUP:
break;
default:;
}
if (df > 100) // 如果在30秒內得分超過100
{
quit = true;
sur1 = TTF_RenderUTF8_Blended(font, win, color);
}
}
time = 30 - ((SDL_GetTicks() - began) / 1000); // 計算剩餘時間
if (time == 0.0) // 當時間結束
{
quit = true;
sprintf(str, "時間到,得分:%d", df);
sur1 = TTF_RenderUTF8_Blended(font, str, color);
}
}
tex1 = SDL_CreateTextureFromSurface(ren, sur1); // 把表面轉換成畫刷
SDL_RenderCopy(ren, tex1, NULL, &over);
SDL_RenderPresent(ren);
SDL_Delay(3000); // 暫停3秒
end();
return 0;
}

void change()
{
for (int i = 0; i < 3; i++)
rect[i].x = rect[i + 1].x;
rect[3].x = (random() % 4) * W / 4; // 最上層產生隨機的黑塊
}

void init()
{
SDL_Init(SDL_INIT_EVERYTHING);
w = SDL_CreateWindow("別踩白塊兒", 0, 0, W, H, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_BORDERLESS); // 配置窗口參數並創建
//
//
ren = SDL_CreateRenderer(w, -1, SDL_RENDERER_PRESENTVSYNC); // 為創建的窗口配置渲染器
TTF_Init(); // 啟動font
font = TTF_OpenFont("/system/fonts/DroidSansFallback.ttf", 60); // 打開系統自帶字體並設置大小為60
}

void draw()
{
sur = SDL_CreateRGBSurface(0, W, H, 32, 0, 0, 0, 0); // 先把表面刷白
SDL_FillRect(sur, NULL, 0xffffff);
for (int i = 0; i < 4; i++)
SDL_FillRect(sur, &rect[i], 0x00000); // 再把黑塊逐個貼上表面
tex = SDL_CreateTextureFromSurface(ren, sur); // 把表面轉換成畫刷*/
sprintf(str, "得分:%d", df);
sur1 = TTF_RenderUTF8_Blended(font, str, color);
tex1 = SDL_CreateTextureFromSurface(ren, sur1); // 把表面轉換成畫刷
sprintf(str, "時間:%.2f\"", time);
text = TTF_RenderUTF8_Blended(font, str, fontcolor);
tex2 = SDL_CreateTextureFromSurface(ren, text); // 把表面轉換成畫刷
SDL_RenderCopy(ren, tex, NULL, NULL);
SDL_RenderCopy(ren, tex2, NULL, &title);
SDL_RenderCopy(ren, tex1, NULL, &pp);
SDL_RenderPresent(ren);
SDL_FreeSurface(sur);
SDL_DestroyTexture(tex);
SDL_FreeSurface(sur1);
SDL_FreeSurface(text);
SDL_DestroyTexture(tex1);
SDL_DestroyTexture(tex2);
}

void start()
{
SDL_GetWindowSize(w, &W, &H); // 得到屏幕解析度
PH = H * 7 / 8;
color =
{
255, 215, 0};
fontcolor =
{
0, 0, 0}; // 字體顏色賦值
float a = PH * 3 / 4 + H / 8;
float wight = W / 4;
float hight = PH / 4;
rect[0].x = 0;
rect[0].y = a;
rect[1].x = wight;
rect[1].y = a - hight;
rect[2].x = wight * 2;
rect[2].y = a - 2 * hight;
rect[3].x = 3 * wight;
rect[3].y = a - 3 * hight;
for (int i = 0; i < 4; i++)
{ // 為黑塊的高和寬賦值
rect[i].h = hight;
rect[i].w = wight;
}
title =
{
1.10, 0, W / 2, W / 8};
pp =
{
W / 2, 0, W / 2, W / 8};
over =
{
0, H / 4, W, H / 4};
}

void end()
{
TTF_CloseFont(font);
TTF_Quit();

閱讀全文

與用c語言編程之後渲染是什麼意思相關的資料

熱點內容
java調用hessian 瀏覽:486
福建聚合網路公司怎麼樣 瀏覽:302
魅族手機備份文件夾 瀏覽:204
電腦c盤騰訊文件夾有什麼用 瀏覽:467
編程語言哪個最好就業 瀏覽:912
能不能找到cad之前打開的文件 瀏覽:259
怎樣設置文件夾許可權 瀏覽:60
oppo手機如何把圖片壓縮成文件 瀏覽:808
載入語言文件失敗 瀏覽:884
招聘plc編程屬於什麼職位類別 瀏覽:580
appstore改區後購買記錄 瀏覽:538
win10管理該文件沒有與之關聯的程序 瀏覽:799
手機里qt是什麼文件夾 瀏覽:48
筆記本關閉開機密碼 瀏覽:672
無法定位程序輸入點inetntop 瀏覽:22
java修改文件編碼 瀏覽:12
js判斷火狐 瀏覽:229
微信開發支持https介面 瀏覽:779
為什麼文件上傳到一半卡住不動了 瀏覽:375
蘋果平板怎麼查看app消費記錄 瀏覽:98

友情鏈接