- 在线时间
- 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头文件.
9 @. _9 L" r2 N% q看代码吧!</P> O8 n, c6 N, a& q1 r' q( Z
< >//头文件" O& [# y3 f& x1 J' R) o
#ifndef TEXTURE_H
1 ^( X h' s% n* E+ @4 h, A7 V0 U#define TEXTURE_H</P>" B- F8 Z0 X) \; w& k$ Y. E
< >class Texture) g$ u8 ?3 V+ |. B& O; G( \9 @& x
{
) o1 S. u5 D9 Nprivate:
~, o! D5 D& p+ a5 s& u unsigned int m_Index;$ @0 M. q$ K6 `2 s$ t
bool m_Empty;
# Y3 _: @# l7 t0 M( u float m_Width;( ` c! U0 Z3 `* K
float m_Height;6 v4 }0 z( y n+ F' b9 E; E
public:3 S5 k5 k! |% Q2 n
Texture();
4 L1 g k1 l5 i1 S6 r" u# l+ t+ f ~Texture();</P>/ x& c9 z9 ?8 t# S* e
< > void Clear();
6 C& H+ o2 l8 H0 H8 @ void LoadFile(char*fn);" F4 r$ L, B" \% n, }/ W* n- v
void Draw(float x,float y);
% N* C4 _2 g" G$ O3 W; e P};</P>2 ~2 b9 W5 \/ x# i5 ]$ `$ T2 y
< >#endif//TEXTURE_H
$ l) {: f: @0 N1 y6 h0 v' I# w1 B* Z" v# M
+ r2 ]( q* o. v9 k
! w! b# `( l9 j# \% `
//CPP文件$ Y$ x. u/ O. u" l' W- K/ P% V
#include "Texture.h"
( g- r- p8 J) [7 R0 L#include <windows.h>
( Q7 F0 X2 A8 a#include <gl/gl.h>
, e5 T# v. R) E#include <gl/glaux.h></P>
+ M4 A0 g- u6 S< >#pragma comment(lib,"glaux.lib")</P>
3 z2 ]1 _3 Q3 w. l* S2 w< >Texture::Texture()
8 p: l# m$ S. w# A; G* K{
: x1 H. m9 ^! p' i) W8 Z m_Empty=true;. u. p- }: ~- i$ t" E: v2 [
}</P>. l6 u- G; \+ _. z3 f; n
< >Texture::~Texture()
/ A/ C4 J1 ~1 w5 b& ^3 m{
( q/ G# }: t# G( z! _; \ Clear();
. s8 m0 r3 }. U. h}</P>
& o0 O9 s$ @8 o< >void Texture: oadFile(char*fn)
3 M" t. Y; @% S8 \! s ]{2 I/ a3 Q& s9 b
AUX_RGBImageRec*image;
# p. Z* x7 v2 }% v" E image=NULL;</P>5 f' n! _/ p5 e
< > image=auxDIBImageLoad(fn);</P> V( O3 p& \: y8 b4 l0 o
< > if(image!=NULL)
7 m4 C8 Q% v, P! } {
7 ~/ |5 d! ?8 E glGenTextures(1,&m_Index);
/ i% j6 b! z( r7 I; `4 ~ glBindTexture(GL_TEXTURE_2D,m_Index);
# w7 n/ e- X0 U& N7 Y glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,7 Z* A7 {9 U8 E$ ]' _3 u- z. A3 {. G
image->data);
+ I3 v' T" V# H5 R glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);! P3 ?$ u, S5 _+ y M1 d2 {
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>
$ k6 I8 Q! q& Q7 a- E8 Y) T< > m_Width=image->sizeX;) H0 Q2 M: @7 m, W
m_Height=image->sizeY;</P>7 f' }' V* {( p" g. B
< > if(image)
4 p1 o0 Z& u2 C {
* }! b7 |' S" Z if(image->data) X7 T" S7 a( F9 l4 X9 y4 r+ z8 ?
free(image->data);</P>$ P0 p( A- s& g8 p" Q0 ]7 L
< > free(image);
2 a6 U: O; a W6 i }</P>+ {7 |5 Y! O3 i" w4 ?
< > m_Empty=false;" I/ N: J( T4 l1 j$ V {
}. V# J' W$ R. j2 Z3 o l
}</P>: m" L: v! `- U+ T: ?9 j
< >void Texture: raw(float x,float y)/ _% e% r# Q7 {- t
{
+ Q8 C0 N/ l2 l# A( v( ` glEnable(GL_TEXTURE_2D);3 U* M& Z6 L. j# H0 E) x# Q3 j. N0 c
glBindTexture(GL_TEXTURE_2D,m_Index);</P>
: k7 D' z, `/ o2 }< > glPushMatrix();1 K! C8 T5 i: C4 Z! s5 H6 G
glTranslatef(x,y,0);/ ^1 k, W/ [* E! i
glBegin(GL_QUADS);- R/ O p9 m7 u% |; H2 Z
glTexCoord2f(0,1);glVertex2f(0 ,0);
* H# t! A& Y! h$ @$ \, ` glTexCoord2f(0,0);glVertex2f(0 ,m_Height);
" ?. L; {. @ }4 M: l3 M4 @9 I glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);# h1 ]. O# G L# e; ~( _
glTexCoord2f(1,1);glVertex2f(m_Width,0);0 q! s: J, k0 G1 p2 z% g
glEnd();
! P* _) B& q4 q% s$ y2 }3 i$ E& _& H9 r glPopMatrix();4 l, ]2 z X/ u# g1 e2 \
glDisable(GL_TEXTURE_2D);
7 b* g9 P: H+ g: v}</P>$ b. ^0 _9 I8 Q0 c; E9 e
< >void Texture::Clear()- y4 O* h* y" y3 `
{
p' K& C' {) K& v' \* f if(m_Empty)return;</P>1 y1 [* Y [, S8 U. P3 v: o
< > glDeleteTextures(1,&m_Index);</P>. H7 z# l6 g) Z8 _& }' {; K
< > m_Empty=true;6 K- h' }. R, f! z
}
8 A# z5 |+ s+ N3 H/ g* M& F/ K) {5 L7 Q/ ^0 t1 L' ?" @
9 d+ g4 e3 q- i$ c7 y8 j3 v
, Z4 B2 }- |, ]7 M+ u/ `5 e
使用也很简单..直接Texture t;</P>
# l/ S! _/ K) k" [$ G3 |< >t.LoadFile(FileName);</P>+ [3 ]) V# F' a( [
< >然后在Draw里,t.draw(x,y);</P>. J" K. |; ^ t$ S& z8 n
< >就可以了.& P4 v6 K7 i6 r4 @
& E0 f2 I: {# Q) d Y3 o) J
以下是效果图:</P> |
zan
|