- 在线时间
- 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头文件.
6 j" ^& a. t7 Q# S* h, o2 ]: a3 n9 V看代码吧!</P>
; Y* T+ n2 w5 Q, C< >//头文件/ h( y* `1 r' y7 I
#ifndef TEXTURE_H
6 ~& d: {/ F" o6 ]5 w#define TEXTURE_H</P> ?: c% K7 T ^) r( E. t" r5 e; S
< >class Texture! h* O- Y8 n5 f A) d4 m: c
{; H6 w4 e) l6 C' R) u
private:
0 L! {+ p& Z, G( {+ J+ u. O unsigned int m_Index;
6 e/ f' s, R% z& H bool m_Empty;
" C* }, S H! n) ]% [, h; e float m_Width;
9 v$ }, T2 @ H" M9 ]! } float m_Height;
6 T# v2 R: V( P) tpublic:; ]- u& V. p2 C+ e
Texture();, e' S$ y" r/ o: D
~Texture();</P>5 H- K: l6 w3 b5 O
< > void Clear();; n+ |8 O7 [2 f' b* B
void LoadFile(char*fn);- {( j$ F" X; ^; v c
void Draw(float x,float y);
: R7 y! _. K% n: I};</P>" }9 D* h& p6 i. y: H' p' _
< >#endif//TEXTURE_H
$ t) E% ]- x5 B! d0 F/ x* }# v4 _9 |/ R: L0 {/ w; @4 |$ p
" P, m( b( v8 r$ F6 F' D$ u
$ }) H9 X: j8 A0 y! Z: j//CPP文件
' n$ {- D% |& [+ ]' g#include "Texture.h"
# @. t* V8 c; g6 z- p1 Q#include <windows.h>
& C: s( o0 [7 O8 }#include <gl/gl.h>
& W; k0 a; J1 R' X#include <gl/glaux.h></P>
0 }3 t8 I( Q9 Q! G/ Q5 e< >#pragma comment(lib,"glaux.lib")</P>0 d- u6 M. w! ^9 n7 }: {: Y
< >Texture::Texture()& f# ]" O# `) ?
{
4 `. D. H! K: j! W' s0 |& ^2 _ m_Empty=true;" k% k1 [5 C3 ^( g1 M$ x
}</P>9 p0 c$ Z: J/ L
< >Texture::~Texture()- a8 F2 F% P6 }8 ]* [ o; ^8 d
{
9 {' Z8 N, g0 W9 ]! q0 f7 T0 H. B4 y Clear();1 u; e6 G, ~' H& ^0 R- G% ]
}</P>
- K( N% @/ B3 L! p% h# x U- M< >void Texture: oadFile(char*fn)
( e. f! w6 C/ _6 y0 d+ Q{
, i: P5 j: ]4 u, e, l AUX_RGBImageRec*image;
4 _4 \: X5 D2 R) o' ]9 x& B image=NULL;</P>
+ m2 b3 F6 g1 u# c& U. i+ S< > image=auxDIBImageLoad(fn);</P>) {: x% b* w/ O1 z
< > if(image!=NULL)( `2 K) a5 y7 N! g9 G6 l
{
! ~9 E3 V- W, t X! j glGenTextures(1,&m_Index);
6 l; _) v: N* K" ` glBindTexture(GL_TEXTURE_2D,m_Index);% \( @/ J9 n1 D/ ? k0 i
glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,
! O+ G c- T8 A' M- M/ @ image->data);
$ D2 t" X& v# i0 ]8 |/ |0 S glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
% y. v% Z5 B+ W s5 j& m glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>7 U) Z' z$ D. n) `" W; s) O
< > m_Width=image->sizeX;
% S8 A A, f& i- H" B) b; h0 E. `/ J m_Height=image->sizeY;</P>
2 y1 Y- e+ _) Q0 I< > if(image)
7 v1 R) M3 s( B6 P$ ` {* t5 m2 ~1 t$ s1 h
if(image->data)* J. C; ]4 H/ W( X9 a/ d C
free(image->data);</P>% k# Y c7 I5 J% Q' l# _. G
< > free(image);. L @# Q1 p4 C
}</P>
6 y/ [2 t/ [: {- r* @# X8 n7 ^+ o< > m_Empty=false;: o. T0 w; X; F. ]
}
' C" I- O/ H- q9 k6 s. v}</P>- W( F8 `- [9 V: r
< >void Texture: raw(float x,float y)7 e0 I0 H2 W' R1 b9 C
{
$ i- b) c/ H3 t2 }1 a5 m6 W2 ? glEnable(GL_TEXTURE_2D);9 f6 }' q4 W( ^0 g
glBindTexture(GL_TEXTURE_2D,m_Index);</P>/ I6 z- R& \+ b6 ]
< > glPushMatrix();
1 `6 H2 `1 c- q+ l0 Z( Y: s; a glTranslatef(x,y,0);
! R8 k Q1 }5 y& K* |) r5 ^* \ glBegin(GL_QUADS);
& x0 ~: v8 \6 `: x) t. @5 r glTexCoord2f(0,1);glVertex2f(0 ,0);
' k6 V, x' `7 g8 e" _/ o glTexCoord2f(0,0);glVertex2f(0 ,m_Height);+ K+ ]+ {% T; I% L7 B5 g* e
glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);
2 r& g) H1 X7 k' L+ I* r4 r X/ L% r glTexCoord2f(1,1);glVertex2f(m_Width,0);. B, ]$ F0 H- a2 N- |9 b5 T' I
glEnd();$ x7 {" d" J2 ^
glPopMatrix();' s; X1 N9 R& l, f( v& c& A
glDisable(GL_TEXTURE_2D);
. y$ O- b* P" a* m/ z! `}</P>' g8 F/ k2 W# B2 z
< >void Texture::Clear()
/ Z+ S9 w! M9 y l4 Z{
; i; O! r" u$ ]+ i4 D9 a; w) o- k if(m_Empty)return;</P>8 y7 X7 f4 @* V7 j$ \$ Q
< > glDeleteTextures(1,&m_Index);</P>
; P7 _, `3 b/ ?) A, ^- u9 `! _< > m_Empty=true;
6 D0 N3 K Z( d6 r}6 l- F+ `0 F( l" f+ N
& n9 n: ^1 @3 p) @8 `9 d
8 Z. S2 \0 K" n1 G6 _# \' b& C9 Z4 G# ?2 u4 I2 E
使用也很简单..直接Texture t;</P>; v9 Z+ A( ^$ v, b
< >t.LoadFile(FileName);</P>5 \* e( i* {( o" E0 y" `: B3 r: \
< >然后在Draw里,t.draw(x,y);</P>
2 i2 x9 {7 \. U& G< >就可以了.+ C8 r. T8 Q0 w; |7 B& d l
" A' U0 Q- J+ o/ c+ _) ^
以下是效果图:</P> |
zan
|