- 在线时间
- 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头文件.
5 j* ~; }( t5 ^. S$ a3 A" ^- s看代码吧!</P> g) P" k/ k6 G) G
< >//头文件
; ^! F% M4 {9 O) _7 p#ifndef TEXTURE_H; Q! _' V2 F3 O1 i
#define TEXTURE_H</P>
8 T4 {; [6 H% W. H& ]5 g" d< >class Texture8 G6 _8 c0 z. Z5 w* _6 W/ F7 H5 B
{
: D( f. k% h ^5 ^" H- y/ e" J! hprivate:4 S/ K% m1 [4 E; X2 x' V
unsigned int m_Index;
4 D7 X9 S ^7 b" U bool m_Empty;
% T+ B* K* X7 `, z9 C7 s/ p float m_Width; F# D9 I& N6 T! V& ]2 Y
float m_Height;
, ?1 L$ u8 Q" p8 k# ypublic:
6 W+ a4 a) Z; G( M Y/ u2 P" p Texture();" t0 ^ E/ p/ z
~Texture();</P>
8 e- g3 j$ H9 N# Q# ]: J+ E< > void Clear();
- P* q1 g# o7 U$ z( p# r8 h( i" \ void LoadFile(char*fn);
' v; U8 \* y1 {" z, [+ ~, ~ void Draw(float x,float y);3 {! r' \+ Q6 S. G2 B4 ?
};</P>* w. k5 {: W! I' s) x5 x
< >#endif//TEXTURE_H' `# z: |1 c3 k" \+ k5 C# F% g
. g1 h4 ^5 |( ^; m2 w
; p! p$ K9 Y! d8 e& ~& l) H2 |( E
: R( A9 F5 A% ] A- _//CPP文件
) Y4 L5 I- d9 N- `5 J#include "Texture.h"
, G2 E) h6 B* k5 j/ H; A! S, d#include <windows.h>$ m+ J* R4 R0 _# d
#include <gl/gl.h>9 l+ s9 A* N# w3 d9 K$ I. h
#include <gl/glaux.h></P> w5 B" z% M" S! g* Z
< >#pragma comment(lib,"glaux.lib")</P>
& d4 E% g, l6 I" E< >Texture::Texture()
f0 \8 x7 w" m2 b{
8 c2 s6 D s$ U4 `& l m_Empty=true;
$ B, z0 ^' {7 i9 N9 q+ k$ b}</P>
9 y6 B8 b. o6 e# |% R# z( Q' ~< >Texture::~Texture(), H- G( F3 S& K
{5 T3 M+ f4 x- g0 H4 C/ d2 ^& X
Clear();
; M4 t- S) l8 D4 p# j3 h6 d" Q}</P>
3 r1 V5 ?7 J9 |% t" U< >void Texture: oadFile(char*fn)0 q. I- |6 J3 t9 Y+ @, D
{2 j/ y d8 N% t/ i* I
AUX_RGBImageRec*image;
% i0 } C0 U% d& ? image=NULL;</P>' ^/ I: w x/ ?% C# F
< > image=auxDIBImageLoad(fn);</P>
& D# ]4 `! B# c. k< > if(image!=NULL)
# r% A. E) K6 t) W$ x {
8 g7 |2 r; t3 Q* Y* ^- z+ F( M glGenTextures(1,&m_Index);- y; Y! v9 I6 K6 D6 {$ D# M
glBindTexture(GL_TEXTURE_2D,m_Index);. r' A- W5 }9 f9 K1 m1 l+ J) e
glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,
- @! o& @; B% Q+ Z image->data);
2 L# G, s. }; I/ |! K glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
6 h0 T3 p# W2 {! p glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>& E/ E* {8 `" K% E* L+ _
< > m_Width=image->sizeX;/ M% \6 }& F( G2 c9 k& r
m_Height=image->sizeY;</P>
0 y+ g, Y7 |/ |* l< > if(image)
8 h, m) C4 U T8 a% d9 A: e# ` {4 h9 f0 x* l$ [8 D+ Z8 s; X
if(image->data)' z; o2 W5 {9 i; \
free(image->data);</P>
7 h+ ?5 k' E7 g8 ` y< > free(image);4 K Z6 H6 d+ p
}</P>0 i% A2 Y$ n- r- i0 {4 ^
< > m_Empty=false;
) W/ l* U. @# I, y9 j0 g: m }
4 `7 j4 q2 O& Y# A+ @! H}</P> ]( z* Y, i! S3 ?( ?& }2 G
< >void Texture: raw(float x,float y)
/ ^5 a. ?' j. b{/ V) H, W0 t. G3 K( T5 r
glEnable(GL_TEXTURE_2D);
" {1 ?8 _/ e- |; t/ \9 p glBindTexture(GL_TEXTURE_2D,m_Index);</P>( l+ Y) Y& `- ~1 e
< > glPushMatrix();1 s& \. |9 {* r1 b; A7 a$ W
glTranslatef(x,y,0);
6 g) }( H$ w! d7 {4 j1 Y9 f glBegin(GL_QUADS);
* G7 V% v1 o# l- T7 G: {+ V glTexCoord2f(0,1);glVertex2f(0 ,0);" J0 ?6 Z, d& z y
glTexCoord2f(0,0);glVertex2f(0 ,m_Height);
& a- \2 }3 `9 [4 I4 f2 s glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);. |" k6 C1 R! C( B+ M, e
glTexCoord2f(1,1);glVertex2f(m_Width,0);" Z* l" x* @9 d( t
glEnd();
' s; B- x o! a- W9 W# d glPopMatrix();
" o/ i+ o1 I; Y7 v& ]! \ glDisable(GL_TEXTURE_2D);
g, ~% T2 c' o' ?1 ?0 A* S}</P>! E/ h# F! C0 X
< >void Texture::Clear()
8 g' X2 P' H W6 c* P8 ?{
! W# _2 k/ {4 h. f$ l if(m_Empty)return;</P>3 S0 }+ H% L! C# t: V" A. m
< > glDeleteTextures(1,&m_Index);</P>
! ^: S0 T* g3 c< > m_Empty=true;
6 u3 F) }; W ]. G# l6 P4 O, a}3 {7 x4 q T1 K% D" n! |% s
! C8 J1 J( ]4 ^0 P# z) d6 Q" y) }* ^" Q8 y% ~; @7 e* C3 s
/ s! R2 L. M* g( _" I4 H使用也很简单..直接Texture t;</P>
, M/ ^( B6 P% G" i* o1 v. k< >t.LoadFile(FileName);</P>
; u1 t+ k+ E3 ^! X: c' p7 `/ y< >然后在Draw里,t.draw(x,y);</P>6 k3 E! V8 g" r% @9 R
< >就可以了.
: l/ s1 v5 j2 J, B! ]7 n
' e) ?- y) k6 g以下是效果图:</P> |
zan
|