- 在线时间
- 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头文件.
7 H* g$ P+ t2 G' a$ H$ r# V$ |看代码吧!</P>/ F4 M) j! F7 x
< >//头文件1 R: \1 C1 H* E7 V+ k2 B! L$ S
#ifndef TEXTURE_H
$ i" O/ O% J3 l+ @( O2 g) t#define TEXTURE_H</P>
1 ~" |9 k2 }- a9 S< >class Texture" D6 i4 w% i4 J5 j; S3 w8 j
{' U7 s/ F& O- w5 I) v6 c
private:
3 ]: P' N# g- L& }$ |+ R unsigned int m_Index;
$ Y1 W3 z& f- z+ @% U' h bool m_Empty;1 X" O" C% o# G5 T3 j# n
float m_Width;
4 _* n$ \% x3 F7 D7 j float m_Height;
2 L5 f' E; h7 ?0 i( `% m8 b: @public:
. c; u3 _5 O% M8 t Texture();" W* F8 @& Q. i7 `7 i+ n2 V
~Texture();</P>
, y1 w0 R; ~% d3 r9 p- {( w8 h< > void Clear();
3 v+ B" X1 X/ g' X void LoadFile(char*fn);. L$ F% o$ x& N& X( V- H
void Draw(float x,float y);1 H/ F7 v0 I8 j. N7 b+ V
};</P>
" Y J% \4 ]/ F# {( O* V6 i4 e) i< >#endif//TEXTURE_H
/ G+ c$ E. v, S3 J: _/ }" M3 t/ D0 w$ \+ b$ A6 i. [
+ z V" ~1 g, @; _$ |; ?
: L# S- k; R8 a) m//CPP文件; ~# z) M2 t2 S0 L8 v& X
#include "Texture.h"
7 k1 d/ M- O; z& u- A3 [#include <windows.h>% J( L8 `9 j$ ~# @: _: Y) J9 t" O6 o
#include <gl/gl.h>) [7 R' i v' ^: b
#include <gl/glaux.h></P>
* t3 k# |7 x4 y: I, U< >#pragma comment(lib,"glaux.lib")</P>7 D3 g6 @9 }) C. V& M
< >Texture::Texture()8 r# h5 L. D/ |5 F8 R6 d, m! R
{
* m; r& _% G. I4 `6 [. y m_Empty=true;2 c; a4 j$ T& `$ i. d/ {" V5 n
}</P># ^# K$ T: i a6 s9 E- j' y. G
< >Texture::~Texture()9 X& o+ C/ N: G) m% p# U3 y+ h% u
{% x5 L% F3 d' z4 R9 _ _0 k( D
Clear();
" G2 r0 _6 Q* I+ Q; B7 t+ @}</P>
# z) A5 { K: r< >void Texture: oadFile(char*fn)
( Z$ [8 k8 n6 V" @0 M6 q& R' B K' k{
: Q5 o5 H3 @) |) T% H. [ AUX_RGBImageRec*image;
# n! \) S# r! b; o6 b; I image=NULL;</P>7 {0 f% B) `+ f. @2 b; ?, `3 @; J* `
< > image=auxDIBImageLoad(fn);</P># p( l& [9 {& i n7 N. x" y
< > if(image!=NULL)/ X, x8 l9 S1 P
{
1 x1 M a& G0 Q; o( W8 E$ [& x glGenTextures(1,&m_Index);
# H" D- I' ~0 X8 F3 [ M8 Y glBindTexture(GL_TEXTURE_2D,m_Index);7 N v# M; @- N' P
glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,; G f) [& e2 o6 _
image->data);
3 ~8 j# D) L. e0 s5 a glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);$ a) _3 B$ v- F
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>
/ @1 ?( X& N7 ^! C) |< > m_Width=image->sizeX;5 s( m, Z9 O' S+ ]1 @, L2 u
m_Height=image->sizeY;</P>
) J Z9 t/ }1 x) d. W< > if(image)' y- W6 ?1 R1 {! S
{
2 K/ \7 P) r! }. Z) @ if(image->data)+ Z; U4 [1 T. h
free(image->data);</P>5 |. C6 J( t( Q4 i1 _5 l/ G
< > free(image);# v5 S. f# p/ N% X |+ a, H
}</P>
5 y( p* x9 y0 @- }" S8 ?< > m_Empty=false;/ z$ ?! w+ E% \/ @6 P5 \0 X; O3 y0 O
}
# B, x8 R$ x$ g5 i9 [; U}</P>2 `) A" P6 {7 Z$ @4 f. K7 r
< >void Texture: raw(float x,float y)" I ^+ H0 V$ a2 X0 c) A
{$ d9 r" y6 e$ Y" C: P( o- s
glEnable(GL_TEXTURE_2D);. n3 I( ]9 I; A! @; G8 f
glBindTexture(GL_TEXTURE_2D,m_Index);</P>2 i7 p V1 H8 O3 ^( p/ ?
< > glPushMatrix();
* \# M& y9 C1 [- O3 H7 B, U! F- ` glTranslatef(x,y,0);
9 V" }& z1 W# d5 j- l5 Y glBegin(GL_QUADS);
$ F: j& L$ B0 N4 X4 @" r glTexCoord2f(0,1);glVertex2f(0 ,0);
5 G/ j5 t' X( m0 l* ^ glTexCoord2f(0,0);glVertex2f(0 ,m_Height);% {& ^! I% p9 D& Q7 l$ h
glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);
2 a( z8 |& v# F& ^& S5 ~ glTexCoord2f(1,1);glVertex2f(m_Width,0);
p4 {- o Q- A$ a glEnd();& x& M. f! P; k3 B3 b9 r, a" t
glPopMatrix();4 _$ O2 M" x8 ~. b# a
glDisable(GL_TEXTURE_2D);
+ s3 u h: V0 s4 f}</P>
, v6 i# b1 n8 w$ v< >void Texture::Clear()
+ g* g' u0 R7 k: a9 q+ r: c. h8 h{" z. V+ k! z% W7 s. O1 `( Q/ [& b
if(m_Empty)return;</P>5 @& z' s/ T) c( q! Y
< > glDeleteTextures(1,&m_Index);</P>
5 p; s9 r2 ^, k$ g* m+ y< > m_Empty=true;
) G7 l3 N9 M: r5 U; B! }, s}. S( ]2 x. f" U
, B7 v% {* w+ \/ t) V& X7 `; e
Z8 | B( _; u9 o
0 w. w" w7 ~1 j0 K7 C$ ?/ f使用也很简单..直接Texture t;</P>3 |8 @' q0 Z( ]% U8 W
< >t.LoadFile(FileName);</P>/ \6 t+ r4 T9 H6 t+ J
< >然后在Draw里,t.draw(x,y);</P>7 m) D) h, d& E% M, @/ g4 c9 O, }
< >就可以了.
- a0 ?9 Q; k6 d3 J% D+ G9 O$ _& V! G8 S
以下是效果图:</P> |
zan
|