- 在线时间
- 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' d5 \. |6 A4 M
看代码吧!</P>) {5 l9 g8 t1 J7 `0 ?1 o
< >//头文件
6 `" q1 h' c% F) Q! l#ifndef TEXTURE_H
F; |) J: D/ R& R& y1 Y#define TEXTURE_H</P>
: u8 p+ x) l) X2 f# N< >class Texture$ }6 o4 b7 Q- `" W% C* R
{. A3 W' P4 }: k1 x! N9 u; v% C
private:
( Y4 d" x0 Q6 |9 `9 D unsigned int m_Index;
$ k0 u2 o! `4 ]1 [0 y( y bool m_Empty;
* n" U+ ]! L2 G# U4 z/ C3 M" ` float m_Width;7 U: M# l; C6 v! @- o H# ~
float m_Height;
9 w* r" E1 m1 z; Fpublic:7 p5 z' Z8 ^9 E3 K; C& n
Texture();" T6 n5 j% i1 t8 Y
~Texture();</P>6 d4 \3 ?* u1 h& J
< > void Clear();
' v1 N# o& I3 o: V) V, s2 |. Y void LoadFile(char*fn);- x2 B6 Y8 x8 |$ D8 O/ D, G9 l3 B- t% Z( P
void Draw(float x,float y);, V& I @$ y% J6 f) A/ P
};</P>
, M- G8 }6 u( e* E _1 {: E( O. H< >#endif//TEXTURE_H
4 v' J/ |: N9 T+ L2 i6 R4 _) B* x5 q/ h
, q7 ~5 U" Y* O c) w
9 X2 \+ P a/ |3 N+ s% m7 M
//CPP文件
1 F: [7 g2 \" w0 p2 r% e8 I) {$ I#include "Texture.h"
# @% q3 @) z& [* c4 t, g3 p( s) Q: \#include <windows.h>* B4 {+ @# T; u. s4 k) Q/ s% B6 c
#include <gl/gl.h>0 Y' o: e/ `- ]5 P. e% v* }; h
#include <gl/glaux.h></P>9 P* |# w9 G7 w# R) |1 U Z+ _. Z
< >#pragma comment(lib,"glaux.lib")</P>* F: ]% d0 X G* @
< >Texture::Texture()$ e G6 {/ z( |* c! i+ B, w' V
{
# s2 u, X, w" X# }! |/ r- J m_Empty=true;
& ~5 H, d# J: [( _7 Y" V}</P>
$ ?% C0 X9 x$ U+ l- ^8 u" z+ Z< >Texture::~Texture()
( Q# w# e# o& F4 M/ y8 x9 W$ h3 t1 Z{
6 r v1 }: Z; @1 [- i5 i Clear(); B! _8 I5 a5 b; U9 b/ J. A
}</P>
7 U, M% X; U# Q7 ?3 K< >void Texture: oadFile(char*fn)
, p% n$ a! S4 G{; h% F' W! E( E2 W
AUX_RGBImageRec*image;& D2 ^2 ?! l6 c' Q1 `
image=NULL;</P>3 w6 P$ {' z9 V; z! k/ q5 |
< > image=auxDIBImageLoad(fn);</P>
, J/ N7 E0 z1 X- x2 d: q< > if(image!=NULL)7 d* l( E2 b2 |1 S a
{
7 x4 a" R" ]6 u glGenTextures(1,&m_Index);
5 ?2 \7 t1 a1 i& X, { glBindTexture(GL_TEXTURE_2D,m_Index);
8 R2 ~5 V8 j: a( l- Z1 O- t7 [ glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,4 B0 A7 G, p) `! O- A/ R8 |
image->data);
# M4 j( \( j Y$ h- i( V3 n" e glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
! p" V- m8 J: k; J glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>7 w" Q& _! @* }7 W s
< > m_Width=image->sizeX;& \" J* l& C- Z$ t. k+ K4 c
m_Height=image->sizeY;</P>
# P3 |, q9 f9 Y" M; Y< > if(image)( m7 w2 P$ R$ |- w% r
{: M* P) }) x/ W$ Y( V/ ~8 T
if(image->data): h; B! N4 [# L6 R& G d1 ]
free(image->data);</P>
8 }; l& |! ?# L4 [" f< > free(image);
- M6 G; a+ E5 I- O }</P>
- Q; i. W; \, I0 d< > m_Empty=false;
& ]8 U1 y) T8 i4 Y8 q }' Z9 o" A) s' k& c' c
}</P>
$ z2 r* O- `$ v- E/ c+ H< >void Texture: raw(float x,float y). O- l1 n$ `( G7 T) N
{) m6 L; i2 N; @# m; C5 @
glEnable(GL_TEXTURE_2D);7 I( J8 W5 Y+ i+ ^5 \: ~' ~
glBindTexture(GL_TEXTURE_2D,m_Index);</P>
" u5 A( x1 x: E< > glPushMatrix();/ O f3 z) w3 R+ |& Y, U* G. ?
glTranslatef(x,y,0);; x/ l# g( V+ B# M6 R. A" H
glBegin(GL_QUADS);
7 m R3 a8 V9 Y6 O3 Z glTexCoord2f(0,1);glVertex2f(0 ,0);# e+ o Z- R( G% D8 }/ ?5 r7 d& [+ a
glTexCoord2f(0,0);glVertex2f(0 ,m_Height);1 q- W0 s1 f5 D8 }8 ]2 K
glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);+ D1 V1 r( B8 s& _; {% n) n3 m
glTexCoord2f(1,1);glVertex2f(m_Width,0);0 E" O2 l. M6 T) H0 T
glEnd();' D1 d3 D. `4 G5 G( e3 n" z5 t
glPopMatrix();
+ V6 J' c( A# R* [ glDisable(GL_TEXTURE_2D);
1 ^9 m- T2 e. C7 \4 q. S; I}</P>) R t: }% N; Q& b3 @. b* W
< >void Texture::Clear()
6 M, r' h8 b7 L{
8 Q/ W" M: `! u0 D if(m_Empty)return;</P>7 Y- ~9 d- j5 m; k C
< > glDeleteTextures(1,&m_Index);</P>
% ^' u5 h$ V, z D: w C5 U< > m_Empty=true;
7 J1 l# ~( k( Z5 T9 w6 g}
: Z8 b4 ]9 j6 E5 a o
2 F, d' V8 H& N
- K5 [3 `2 Z% Q5 R. k- m$ A# a& d1 B6 E! h$ |* M
使用也很简单..直接Texture t;</P>
; M5 n; ~8 i- ^# p) E< >t.LoadFile(FileName);</P>$ g- ~. T3 @) o
< >然后在Draw里,t.draw(x,y);</P>7 z6 D& \8 s3 S* j
< >就可以了.
+ q* D8 r6 P! R( K/ j1 `! e# d5 V7 Z- e" m' p
以下是效果图:</P> |
zan
|