- 在线时间
- 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头文件.
7 H" k/ P; u2 P6 n9 z看代码吧!</P>7 z" b- }% a- t2 f- g9 T& m% T
< >//头文件
0 D' u0 n- }: E9 Z: N! u; `#ifndef TEXTURE_H
4 v# h" M4 ^: {#define TEXTURE_H</P>
6 }( l8 H3 F: i' Z< >class Texture
2 b! I6 b* e4 Y{
e, E& ?5 V) d. lprivate:3 ~; ?" G4 p4 V& f( ?
unsigned int m_Index;
5 }' k- d. j$ N$ ]: S& Y/ J. m bool m_Empty;
6 d5 u# j1 V0 l float m_Width;5 }, c! p6 q' l! \0 G7 w& p
float m_Height;
9 c7 {8 x9 ? u- \: v) hpublic:
$ Y4 v3 e% q! a! N$ S Texture();* Z, f R- O& J+ u9 L* y% Q
~Texture();</P>. r Z3 r* U6 j r. G h' m# `& [
< > void Clear();
. U" M* Q& }; d7 Q3 s: P" t void LoadFile(char*fn);' @ I: a0 p+ ~2 y, d" E+ a! y1 B
void Draw(float x,float y);( [& k# O0 C t: {, v
};</P>& U4 p/ T) t6 R3 K9 f0 Q4 E) H" v. b
< >#endif//TEXTURE_H9 C. j `2 b" r/ c
; ]9 Y% J& O+ f1 g' m) d: h8 H& Q( p+ L r" m0 A8 P* o" Y; x0 c
7 @/ b2 K+ J/ s6 k& f
//CPP文件
' x- Q1 P7 K% ~( P8 p#include "Texture.h"
|3 V! i9 {6 L% B- X#include <windows.h>
$ c& W6 I+ H- O/ k#include <gl/gl.h>( T* K) o, s5 {- H) H
#include <gl/glaux.h></P>
0 y w% d5 P, E* f6 [/ u3 p< >#pragma comment(lib,"glaux.lib")</P>
1 D) ^; m2 |* I< >Texture::Texture()
2 h1 Y6 r( i' E{
5 j' _0 Z p' U2 F* f/ I* _3 K7 E m_Empty=true;
; D3 D* Z5 x5 ]: l}</P>
0 B5 k- x U% e< >Texture::~Texture()$ l, [ u. a6 a$ ]/ `
{! [4 q; o' r/ E1 b8 b7 X! q8 N, W4 c
Clear();# N3 d+ A9 n7 s4 s' ~ s) V
}</P>, u) D) }- ^# ^% I( W
< >void Texture: oadFile(char*fn)
1 D# @5 ?# S: w! o$ H0 w{
; `' J: }0 }3 m, }- h AUX_RGBImageRec*image;
: E- L6 F: k8 Q' G. m( B, C, U6 k image=NULL;</P>% J- P6 {, t1 L( ~0 e* a
< > image=auxDIBImageLoad(fn);</P>
$ g4 t" W) G4 Y+ c, b1 K< > if(image!=NULL)* x6 D' n# l- _. Y
{
8 a" ?( X( l4 S( `3 N glGenTextures(1,&m_Index);) _# |2 K N$ b8 p2 [' P0 w4 f1 S
glBindTexture(GL_TEXTURE_2D,m_Index);
4 }1 x% x+ n) |+ S# a# {& F glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,
& T1 k/ U3 I4 J image->data);
$ n! K0 d! z3 `. }, X glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);) Q- Z3 d, A/ \% p/ R9 `+ M% n
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>0 L. s J% [) `% u4 b+ |
< > m_Width=image->sizeX;
" }- S0 f. u$ [- k( M; x4 L m_Height=image->sizeY;</P>
; t& X3 U! B! S. \/ P/ J! k! X1 y) d< > if(image)
7 D6 P; O6 T/ | {
& P" R- N4 Z# T: z" C. Y! N if(image->data)2 S: Q: Z( p6 ^7 ~0 N
free(image->data);</P>
; e4 Q7 f' ]" h( u3 b$ U< > free(image);
7 b1 ]& V0 P8 ] T8 b5 \ }</P>
5 W- q7 r1 g: ?< > m_Empty=false;
% ^0 g# F! R( {) c' e }$ Y" w# |9 [8 ]/ S
}</P>3 c3 S9 u8 \7 Z1 Q" E$ a
< >void Texture: raw(float x,float y)
" @* F9 l3 \0 g4 L2 ^3 H{
) J0 t2 S6 p! v5 d( h glEnable(GL_TEXTURE_2D);1 G+ L% O" V* M" R
glBindTexture(GL_TEXTURE_2D,m_Index);</P>8 I/ E- h( D3 l9 d; T
< > glPushMatrix();
) n* R I$ `6 Q% `4 Z6 `# f glTranslatef(x,y,0);# R& z) @' w/ X0 R0 b. ?* B/ y3 R
glBegin(GL_QUADS);
& v; r) R2 E0 r2 L' Y$ r, S glTexCoord2f(0,1);glVertex2f(0 ,0);& U. T8 F; h5 U' ?! W$ K g1 s
glTexCoord2f(0,0);glVertex2f(0 ,m_Height);) @) L; U% ^ {, e# b2 ^
glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);- `: F4 n! D, y4 F" b! D# e
glTexCoord2f(1,1);glVertex2f(m_Width,0);
& l7 ~. j, \: d glEnd();7 Q1 ~0 r8 _8 D7 W0 s+ N
glPopMatrix();
1 T- C0 j% E1 S5 i) [9 r3 E2 W. `9 ? glDisable(GL_TEXTURE_2D);
1 T# Z H8 c+ W+ |) y}</P>
, ~3 h' n& I( F4 b" H3 ~6 N< >void Texture::Clear()) ^. I" V$ C, j! \ h
{! B* W5 L( i3 r$ \9 d
if(m_Empty)return;</P>
; ^4 J6 w4 y* u( p. t" W" y< > glDeleteTextures(1,&m_Index);</P>- h! y% w( h3 u6 _: o* q8 m
< > m_Empty=true;
9 t5 B, l9 `4 U2 R4 u# m0 n5 i}
% s" ^! H. j4 f( y; e3 p' e3 r9 i* z' f; [& O
: K' [# L* }0 c+ ^
) G3 `/ u7 l# H Z! h使用也很简单..直接Texture t;</P>6 C: Z% q( l3 @3 n! ]- h! [
< >t.LoadFile(FileName);</P>
3 V0 l. [8 m6 p1 E4 B2 [; K" D< >然后在Draw里,t.draw(x,y);</P>/ D7 ^4 a5 L5 _
< >就可以了." v2 k' g2 G. {
& W; R2 I2 c# v0 d
以下是效果图:</P> |
zan
|