- 在线时间
- 0 小时
- 最后登录
- 2005-9-21
- 注册时间
- 2004-4-27
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 1027 点
- 威望
- 0 点
- 阅读权限
- 40
- 积分
- 385
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 153
- 主题
- 43
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   28.33% 该用户从未签到
国际赛参赛者
 |
< >这个类使用了Glu.h头文件.
+ w& ?% E! P m$ ]* \看代码吧!</P># `) @ J9 I3 L7 @
< >//头文件
& d1 m) r3 q1 o8 k4 J#ifndef TEXTURE_H* C/ w ^1 M! f, L, ?6 H
#define TEXTURE_H</P>
" ~: N7 _5 @7 v* m- M/ o# z% P9 Z< >class Texture2 s6 T8 W5 v* x# f4 V, X
{
* e6 |* P4 J: G7 k! x# O Uprivate:: w8 O- w" b( A: z2 W
unsigned int m_Index;
/ B- d0 ?* t$ P0 o4 @ bool m_Empty;
) l' I! t, Q/ i; `0 Q float m_Width;$ J8 t: ]' n% U! W7 z6 U1 j
float m_Height;. u' x% Z& p6 |& f* z
public:
5 f% p0 G* O; R Texture();
5 F3 I7 T2 Z" w, X+ ? ~Texture();</P>7 R. C! | u$ Q0 c& r: _
< > void Clear();2 E2 E! C7 e* B; ~
void LoadFile(char*fn);
C% s7 E1 r3 I$ a3 A* N void Draw(float x,float y);( y. l) w6 Q/ x) T7 T) F
};</P>
0 J# G& m5 }/ }- a# Y$ Z9 U/ C: S< >#endif//TEXTURE_H
1 R# ], g9 I, V: z, _7 s% U* Z. R1 a& B' H9 i, @1 a+ D
5 I* g3 R; H% g7 f4 u- F( r" e
9 B5 L. T, C) R# j+ s. E//CPP文件! f* v" _' J( x0 K4 R1 V
#include "Texture.h"# A7 h8 ~' L7 N$ C9 M9 n" ?( t
#include <windows.h>
9 A5 P8 s H9 _. j- [( I#include <gl/gl.h>
8 F% t' {7 [$ u" w* |8 b: Y S#include <gl/glaux.h></P>
' L; \9 H* D% u< >#pragma comment(lib,"glaux.lib")</P>
0 |, u( I2 K1 J. o, N' T% Z4 m' R< >Texture::Texture()
' h: U" j; j6 P, { d9 B{3 T/ l) I3 ?+ b4 G( r
m_Empty=true;) ]; l, F) O% |0 q) X8 W
}</P>! o% c' b9 o' A; ]* D2 s9 |8 L
< >Texture::~Texture()
5 m( [( x4 q; r( `! q{2 T% c- E8 E' h$ G3 ]
Clear();
$ R& N/ l. G$ N7 B$ X1 @" Q}</P>
' F5 i2 |5 M6 t% P" Y< >void Texture: oadFile(char*fn)
% m. v! |; x3 D& z$ d% t2 j{. _8 |9 Q5 P( s
AUX_RGBImageRec*image;
9 F2 k. }( y5 c7 g& W! f image=NULL;</P>
3 [; o5 s" V! K. P, t3 s< > image=auxDIBImageLoad(fn);</P>' [) ?! q; g+ }2 k" G
< > if(image!=NULL)4 R' V% i9 e( w- [
{9 K6 q1 I% U. K$ o1 j' y
glGenTextures(1,&m_Index);
2 F) k9 J" p2 l' P" R, _3 b glBindTexture(GL_TEXTURE_2D,m_Index);9 X/ F- r% ~- c Y& J
glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,% p) y% k% H. `' q2 r
image->data);# l3 z, q8 U, ?( v. g
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
1 i; f& U) D; k. R! X. o. L glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>3 ^7 H1 y7 R2 k1 Q8 _
< > m_Width=image->sizeX;
& {( U* m& e/ u( A a8 t m_Height=image->sizeY;</P>9 D3 f7 h8 a0 b* K1 A$ o( F" b$ z
< > if(image)
6 e+ _! b1 d5 R {: U1 ]: I. {% u1 ^% M* F
if(image->data)' F! R4 l" P) n2 }- B n7 m
free(image->data);</P>: h ?' x( V: T2 l- x- c+ t+ n/ y
< > free(image);$ X% V2 I5 g# D
}</P>
t$ X8 c }- ~) `9 b( Y7 K< > m_Empty=false;1 \4 ?% p+ @" ]) C n1 P
}9 Y: @0 `! }; @( c; ^( K' P1 _
}</P>
9 f+ @ B4 m H# f; ]4 P9 n< >void Texture: raw(float x,float y)4 K$ A: ]4 R2 q1 {; r0 k
{, g; o: D5 u3 j; V1 u0 T
glEnable(GL_TEXTURE_2D);1 E. j5 _3 u- E5 `. |( m
glBindTexture(GL_TEXTURE_2D,m_Index);</P>8 N6 J8 E7 |8 ]6 J2 f
< > glPushMatrix();3 Q) m" D% p' ?$ t- m
glTranslatef(x,y,0);
# _% H% f# F& c+ X+ v x" i/ w glBegin(GL_QUADS);
. V8 x; j n/ `1 O glTexCoord2f(0,1);glVertex2f(0 ,0);
& i" x, o8 V) _% n9 l2 v glTexCoord2f(0,0);glVertex2f(0 ,m_Height);
3 V- I; F$ g3 ]0 `! o V, F( } glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);2 p2 c: H7 U6 }6 T& P; ~, p
glTexCoord2f(1,1);glVertex2f(m_Width,0);2 _# B5 I0 w0 l8 b( E
glEnd();+ w+ @* e6 g) f' K4 b
glPopMatrix();
{2 I% e \& g: h7 j0 b9 \ glDisable(GL_TEXTURE_2D);
) n. n; \0 D2 l. R* s2 _0 z}</P>
+ V: ~* a5 ^& Y; a< >void Texture::Clear()* N2 G+ ~0 h' N
{
1 l8 t5 A- S# f, |) R* F( z2 } if(m_Empty)return;</P>
) Q1 P; u2 u" _* k) p< > glDeleteTextures(1,&m_Index);</P>
" u% M; m/ j! f0 K# }9 S< > m_Empty=true;
s* w, @0 d3 e: T7 x" u}1 w, F+ S6 B7 u \0 [' b3 r. w
) f" `; Y. h$ Y8 J+ {; x9 M
" {: A7 `2 d! |* v
7 W+ N5 X; j9 j8 R& e
使用也很简单..直接Texture t;</P>
5 q3 r4 U" ?7 U" C: [< >t.LoadFile(FileName);</P>
- P R/ C4 ~- z' ^* ?7 T( S( u- B, l< >然后在Draw里,t.draw(x,y);</P>
; ^; Y$ Q7 _/ c0 `- N. _+ S0 }6 K< >就可以了.* x# T3 s! m2 n& Q
l. s- u" t/ ^; s以下是效果图:</P> |
zan
|