- 在线时间
- 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头文件.
+ D6 K6 p3 E1 y$ F! S看代码吧!</P> i' a6 d: s' E! D, M6 @& u1 w8 ~8 g: Z
< >//头文件! [# a# J; b) T0 |
#ifndef TEXTURE_H
; K& ], k5 q4 x! N2 l9 X' h" I" q#define TEXTURE_H</P>- h; K( o+ _( _! B7 b! J; i
< >class Texture, V$ Z+ r3 e/ w+ t7 Y0 w+ ?, ?
{/ b4 t+ U. c! x
private:! _( `9 I# I# x, v: e* W+ P
unsigned int m_Index;
% S0 u+ F4 j! U& k1 A" y3 x bool m_Empty; E2 i8 p" F9 f* A1 p3 b, A
float m_Width;% [' j. E5 d3 [( `6 d. Z3 E8 t
float m_Height;
( L) J( Y" S! Q7 i# x) kpublic:
( L% E8 B+ M) O% O: ^0 ^; A9 X: i Texture();
' E$ E4 E& i0 p2 I ~Texture();</P>
1 g2 L) Z1 w/ v# b( v0 s8 H< > void Clear();2 `* P* A3 B c6 [" `
void LoadFile(char*fn);8 g' t( e2 W1 ]) h! f$ m
void Draw(float x,float y);
$ A# a9 I& t M};</P>
$ h" {( c' k% a3 \; Y< >#endif//TEXTURE_H
4 O$ _- m7 n3 K! R# W T% A# @* T+ J4 I# S6 d/ G1 b, o% H
1 I% |6 K% p, o `) Q3 u
( J% d$ M6 N( ~0 o) @, M8 x//CPP文件
9 w# g4 w Y( Q, s#include "Texture.h"- t+ E2 N _6 p& q2 | }3 `
#include <windows.h># r: I+ n1 K e3 S
#include <gl/gl.h>; y1 ?" ~# G$ \ _* i
#include <gl/glaux.h></P>! O% S7 c2 b, j# h) m
< >#pragma comment(lib,"glaux.lib")</P>6 E' s8 u% }- l# Z9 a' k! ^9 p* P
< >Texture::Texture()
* c% r: n# I8 i9 p{
; D, Z1 D0 ?) F6 b/ D0 B) r m_Empty=true;
" m }5 V' y5 q0 v% n- ?}</P>$ \# Z$ O( m3 p. _
< >Texture::~Texture()+ Y( c: M$ g5 z' ~
{
# ^) P9 Y2 b2 o9 N( p6 F6 D: g, K/ p Clear();
6 ?$ S; L. L+ S& p1 l}</P>8 U. {8 T4 K% T5 v- d3 n0 m+ ]
< >void Texture: oadFile(char*fn)/ r% R$ O; C5 R, B X h4 l
{
% g! m% M+ e: }6 D) W0 f AUX_RGBImageRec*image;9 f8 Q6 S- h1 }5 z! G5 p
image=NULL;</P>
9 s1 s* ~) ?6 Z1 Z1 Z$ q+ ^< > image=auxDIBImageLoad(fn);</P>
- I6 K3 ? \. N1 N, O* V8 r4 F< > if(image!=NULL): G# C0 ?! ^1 }6 I! _
{
! u7 U+ h$ ^. k5 q* m O glGenTextures(1,&m_Index);
: B( V: I" }/ F7 f; B+ F glBindTexture(GL_TEXTURE_2D,m_Index);
& y) t/ s, F1 L* V glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,2 g( ~6 B9 p2 Y: c9 g* M& A
image->data);
/ l5 u, m* I( a5 r1 Z glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);# r# X3 f* ^6 s5 S
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P># Y( S- R. ? W* d0 W$ {
< > m_Width=image->sizeX;
1 D5 ^0 p6 Q! p m_Height=image->sizeY;</P>
* \8 C: u7 i7 ?4 V0 |( c7 e- ]3 V< > if(image)
" ^4 U9 G* [" l! F {
4 {/ `/ b2 B; \$ M if(image->data)
$ Q, m% C5 F. e V3 R free(image->data);</P>+ k1 R; x6 D4 t1 r0 }
< > free(image);
$ K0 d" Q7 ?. p& g4 h- V }</P>
* b# b7 _0 B) i< > m_Empty=false;) ]" ]! W+ T: W% O
}8 ^, ?! k) e- {9 O9 Z) b6 b T
}</P>8 V; E& Q z( t$ K1 V
< >void Texture: raw(float x,float y)
7 [( t0 ~- a. P# {2 B, L! {{+ r& u4 _- U# G" f
glEnable(GL_TEXTURE_2D);5 p( X% S' P( H: D- Y
glBindTexture(GL_TEXTURE_2D,m_Index);</P>
3 }$ p: ^" f# x- c+ X% M% f< > glPushMatrix();2 i$ o: o" q+ Q+ G ]. `
glTranslatef(x,y,0);
6 l/ H' \" @# h* x glBegin(GL_QUADS);3 p0 J: M: O; Q* `
glTexCoord2f(0,1);glVertex2f(0 ,0);
1 \* k: N5 ^7 l7 g! d- q& @4 i glTexCoord2f(0,0);glVertex2f(0 ,m_Height);
5 m8 s& x4 K8 l0 r* |2 M& Q glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);/ ~2 J7 r t5 x g. J4 r# m3 {
glTexCoord2f(1,1);glVertex2f(m_Width,0);
' V3 J. d5 O3 }1 a: y8 H glEnd();" i0 V% \: F* S2 q
glPopMatrix();
# {9 r' B- V9 P" G4 T glDisable(GL_TEXTURE_2D);
$ I' N; |$ h/ `1 r. ?6 Y}</P>
( J" H" Z; M+ [, u8 V< >void Texture::Clear()
- E7 C8 Z3 h- i{0 y5 z5 ~, A: m( @" y
if(m_Empty)return;</P>& \8 p: r! E; Y; I9 |& W m
< > glDeleteTextures(1,&m_Index);</P>0 k& J) w x0 H8 M; M9 M. L
< > m_Empty=true;- y0 Y3 ^* Q# s
}) c6 G6 V6 F2 h, @7 B; i; @* f( z
3 Y: V+ J4 F. o( r7 Q
5 r% [2 A$ o7 q7 O
; C0 r% s9 x: ?, T3 h使用也很简单..直接Texture t;</P>5 G2 S' R6 w1 S0 K/ g- D4 ^
< >t.LoadFile(FileName);</P>5 j& w$ R1 p" v$ W1 h+ D8 `5 k: H, \7 z
< >然后在Draw里,t.draw(x,y);</P>
! B: J. D5 X A6 `( \' Y! ]< >就可以了.
4 J' K4 _! k$ E. I7 K) a1 S' x( h7 v2 s* l& D
以下是效果图:</P> |
zan
|