- 在线时间
- 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头文件.& c" e: q/ n. M
看代码吧!</P>$ R& u2 G8 P7 w- R- P
< >//头文件/ E: L; h6 i5 j0 }! a% v5 M% z
#ifndef TEXTURE_H
1 p m9 E3 p% X& L0 j, h#define TEXTURE_H</P>4 v- B0 l6 n# T. Z: W6 u3 x% a' Q, b' R
< >class Texture; s; X1 ]. S- I7 n5 a9 {4 j! I
{- ^! n) x! x4 {- Z
private:
4 \3 z+ a/ S U. M unsigned int m_Index;* f& G; }4 q2 i% V) w! O+ b
bool m_Empty;
1 v8 g& W/ K/ g) z2 W) J- w5 ? float m_Width;$ b% v2 s0 b$ V; J3 W9 P$ ^
float m_Height;
6 ]: l: M: t5 D1 v& ^: h- gpublic:
! G& }# N) d( K) M* I% I' M Texture();
4 E& s: B/ ~4 r* z: R ~Texture();</P>6 O: e! j. w. X! u+ P9 U% V, `
< > void Clear();
' _, l8 I f; ^9 q% p1 W0 I void LoadFile(char*fn);
9 G5 h2 |: s# C2 q3 u# I* H7 j: t void Draw(float x,float y);
- }8 h+ T, u, C# y3 W9 Z};</P>
! u8 O% A) a0 i, g, ~< >#endif//TEXTURE_H0 ^: x' v2 E: k* R
; {. b+ M3 ?8 ?( }( `( d0 b1 ]0 I
% E$ p) {* i- R/ D* C- s, }1 Q1 [- Y, v) `2 y+ S* `" E
//CPP文件/ F. ]7 e+ W7 _2 A9 _+ G' r; d
#include "Texture.h"- ?/ j7 L9 J) A( V7 E9 B
#include <windows.h>4 p- x; j/ t4 Y4 q& h# Y
#include <gl/gl.h>" g# X% v$ B, n
#include <gl/glaux.h></P>
7 A* ?; M) R& {; |5 v< >#pragma comment(lib,"glaux.lib")</P> b: s0 V# T$ k1 B1 @% v* l
< >Texture::Texture()
# c8 s$ k' ^% S{0 Q( u7 G5 U% _( N1 v, A
m_Empty=true;
& K7 f9 v9 Y9 x9 O X7 W4 X! c% q}</P>
' o8 B. a0 ?- V5 G< >Texture::~Texture()
; y* V6 }6 l0 y+ C" b/ [: Y{. w* I6 P' y% f
Clear();
" [* }# d }8 R8 x' k; U! @7 N}</P>
" c" x' j: n6 c& D- L< >void Texture: oadFile(char*fn)
# B' t3 _! `. d7 ~. H8 a: z- r6 u{( |: w; Z& Q0 o. d: F
AUX_RGBImageRec*image;
' x8 {0 Q* u& Y4 {1 q9 u# P% V R image=NULL;</P>1 b) \& ]3 `- L0 U4 ~- N" S0 B
< > image=auxDIBImageLoad(fn);</P>- q/ L9 U/ w& i E( J
< > if(image!=NULL)
2 @5 E/ a, v4 x) e! V# h {1 @: S U! Q0 h/ S) W0 H2 c
glGenTextures(1,&m_Index);# _2 S* d- \' |1 m1 K# n
glBindTexture(GL_TEXTURE_2D,m_Index);8 d, M: R: n5 o3 W# U7 M
glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,7 J; h" ~ }# C% r5 f ~
image->data);
6 f; k. A8 o6 T- k glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
4 D: W6 [9 p2 m- ` glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>
9 D, Y+ ~! H: v7 f, G c9 \< > m_Width=image->sizeX;& \9 H" q+ t' p. n+ V9 \
m_Height=image->sizeY;</P>4 x, h) ^$ X& t; @
< > if(image)
8 a5 m$ S& e3 r' S% l4 A' h9 P {6 I+ D4 Z" @* U- R" E" x5 n4 z
if(image->data): S; W& l* g3 l' E
free(image->data);</P>
" |6 v) H& h1 L# Q v* P0 e< > free(image);1 Z) m' c/ \3 d5 U3 f' \* e
}</P>
+ l' m; C6 N. K% V4 e$ ^: B9 C< > m_Empty=false;0 m& L# y c8 n( E
}+ |% e: C1 d+ J1 x$ s" o [0 t) b3 |
}</P>2 b2 P% j) I# W/ r# B( {
< >void Texture: raw(float x,float y)
9 ?% S2 Y- u; I$ G4 S/ \5 v# e{0 \% j8 Y) q! H' d6 X2 ?: J( ]' a
glEnable(GL_TEXTURE_2D);* V8 E) G: d" `3 h( @- I) ` R
glBindTexture(GL_TEXTURE_2D,m_Index);</P># x1 K( H& W+ c
< > glPushMatrix();) y5 j2 b% W5 {2 g; M/ q
glTranslatef(x,y,0);
$ s1 z1 T$ W3 N+ \ glBegin(GL_QUADS);) Q4 o* m: j1 B2 T$ J! [
glTexCoord2f(0,1);glVertex2f(0 ,0);
, D- Q, P8 v& b6 a! p' i glTexCoord2f(0,0);glVertex2f(0 ,m_Height);
1 }& w' a4 @ Y$ O; X4 L, Z+ j glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);9 h* C& _% F- e1 ?
glTexCoord2f(1,1);glVertex2f(m_Width,0);9 b/ R A9 O* P) N% D( P _8 |& u
glEnd();! S/ J; j i* w- r7 U7 I1 ?3 a
glPopMatrix();
/ N9 q- `( }: e; {. @/ L glDisable(GL_TEXTURE_2D);: s0 I0 R0 t( _% O- Y4 {9 T
}</P>
, `( J. N. l- R! H2 ?% [< >void Texture::Clear()* @+ W; s2 T8 V* [. Q" h
{8 B7 j# N$ a/ v, }7 J' r6 K
if(m_Empty)return;</P>2 g- u+ I$ B3 b/ {* a; ^; {
< > glDeleteTextures(1,&m_Index);</P>
/ t! g8 \: P: J0 l$ ^< > m_Empty=true;: A. q: g% }- g+ J. Q
}
g; E% u7 T+ i* z7 _+ j% D) [+ d+ W- f9 d1 u4 I4 a% |
7 O$ H, w) p8 B' v0 x4 V
5 o$ p* f# ^6 @& }8 ?7 s% ]
使用也很简单..直接Texture t;</P>
/ H, c% p3 a5 N< >t.LoadFile(FileName);</P>
; ?8 {; w* V- v' U, F8 H< >然后在Draw里,t.draw(x,y);</P>
& R- B Q& ]: p }) N8 y< >就可以了.2 V2 R5 V* d9 g9 T. {
5 B) o" I4 R, C7 p! x: T* f2 X
以下是效果图:</P> |
zan
|