- 在线时间
- 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头文件.. ~3 X f( ]3 _5 j- k C$ `1 z
看代码吧!</P>; L8 T7 m7 E% S
< >//头文件# y3 W7 M! D/ z1 c
#ifndef TEXTURE_H
5 U w8 Z( d$ Y4 G% V* H#define TEXTURE_H</P>
/ n0 A' d' u4 N9 E0 ?< >class Texture" k4 ^. f0 e$ U9 I5 t [# A! O
{) z+ _' h" u; c% n5 ~4 Z h8 K
private:
; s% \" Z0 G# O/ ^+ J7 ^9 _6 s unsigned int m_Index;
6 [4 R' n. D* n& U( X. L bool m_Empty;1 {) Y, T1 ]% W/ L: N
float m_Width;
+ h% o6 h y7 t' z3 j; h float m_Height;
1 _ w$ o* G8 F" lpublic:
5 V; ^: j/ y. z) s* i Texture();* L" w4 F- m4 O- R8 p
~Texture();</P>: N5 p0 U7 l0 F) K5 C0 A# I% ^
< > void Clear();
+ c. [) J6 G# Y* o: J8 s5 C! S3 R3 H1 ] void LoadFile(char*fn);
9 D% I9 T3 }' n void Draw(float x,float y);8 E, x1 l e6 {
};</P>
# `) @( ^* f4 S1 \< >#endif//TEXTURE_H5 y- ]9 R/ D, \) R; k0 P
9 l+ j) F# I6 j1 G
' z( }$ k! M$ p5 [; V. c; {% A3 k
//CPP文件
$ q: \; P6 ^3 x. s5 v5 J#include "Texture.h"
( O% v+ T) u( a6 h( O, W2 {#include <windows.h>
4 t6 j: ]( e1 N4 j% G2 z5 K' F#include <gl/gl.h># r" R5 _- {2 I% o6 v. u; N6 O- b
#include <gl/glaux.h></P>' U. _! a$ ~* ~' `
< >#pragma comment(lib,"glaux.lib")</P>
$ `5 A1 l q5 c/ w# ~< >Texture::Texture()
# X ~- ?5 y) J& d# R6 _- Q. p{
- e$ `5 K0 T/ b8 h% q m_Empty=true;- z0 u0 d e& V G0 S9 f1 d- l
}</P>
2 N8 `" s% M0 Q% j& M< >Texture::~Texture()
1 Q6 j! }9 ~- Z0 o: h6 m' f9 n* b{% m# { w% V: G* k6 c, n
Clear();
% A* U! W4 `, y}</P>
+ R: n$ v4 B' W1 E: h4 s' F< >void Texture: oadFile(char*fn)4 {' v7 W7 N8 S, y" R3 F
{
1 [# T6 X6 T' x5 ?7 @! G9 [- A6 ^ AUX_RGBImageRec*image;
+ Y( H' C8 _7 ~+ t5 N image=NULL;</P>
* }/ g- P' ^4 b# X$ O& O- b! L( ]< > image=auxDIBImageLoad(fn);</P>) z' O9 X/ }8 d$ q- F* x
< > if(image!=NULL)
& j: i- j9 E; q- j9 \ {
9 @$ u, V4 v2 y9 m glGenTextures(1,&m_Index);/ W% E. v6 r1 U& ~: P
glBindTexture(GL_TEXTURE_2D,m_Index);
d- K5 b3 y' p) @3 J glTexImage2D(GL_TEXTURE_2D,0,3,image->sizeX,image->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,
0 ]8 `: V4 h5 U P/ M image->data);
, `5 g2 G$ v3 I glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
5 m. F2 I, [* K) b% s/ G c glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>
; `0 T7 D8 W$ F+ o* i< > m_Width=image->sizeX;) Q* _' N0 t7 B8 d; x2 f
m_Height=image->sizeY;</P>
0 D* ^5 V$ a1 C, I- G< > if(image)
. i: Y; H; U9 S* q* U' q* D- E {
6 k2 b4 F/ B4 Z/ q, X if(image->data)
9 a O T/ |# ?8 ]3 X# n3 N5 o free(image->data);</P>; D) R& |* a, M0 p; x
< > free(image);2 W9 e. L. [2 I& h
}</P>* N3 z$ M! P' @1 u9 Y7 U
< > m_Empty=false;7 {: ~! y' W" ]! j
}
, t$ q9 b9 X$ X1 z( A}</P>: M; r' p' c8 P k% H
< >void Texture: raw(float x,float y). e F8 v5 D2 t) F
{& D: C' I2 `- i# m
glEnable(GL_TEXTURE_2D);7 R* W9 \% m T o8 k( z5 E
glBindTexture(GL_TEXTURE_2D,m_Index);</P>; H1 @; J0 u- Q( u( |; k! N
< > glPushMatrix();. |4 T0 R0 K. B3 ]' a l
glTranslatef(x,y,0); W. Z+ \0 k" |( ?3 v X+ M; y
glBegin(GL_QUADS);
; w8 @; f1 L: K7 C9 @ glTexCoord2f(0,1);glVertex2f(0 ,0);
. J2 _- K( U/ E4 B$ A) z( }( B glTexCoord2f(0,0);glVertex2f(0 ,m_Height);
7 k) |: l {& Q$ F ~) a glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);" i; H! g2 q4 T
glTexCoord2f(1,1);glVertex2f(m_Width,0);1 T# n7 \3 U1 `- G4 j
glEnd();( c3 ~5 K% d# A" r" S) `9 [6 P
glPopMatrix();# U% }9 N6 W2 P0 ^( g; r
glDisable(GL_TEXTURE_2D);- S5 Y5 K: s& {* o: v2 Y/ ~
}</P>
' q! W: ]" Q6 Z/ E( [+ U$ C9 e3 e/ p* t< >void Texture::Clear()
$ O/ f4 F8 i6 `( U{
% y$ m) S6 s3 P9 Z; p4 r) p if(m_Empty)return;</P>4 d/ t8 b6 ?9 m4 F0 e7 F8 R
< > glDeleteTextures(1,&m_Index);</P>+ E% {; Q" I/ E0 c' R
< > m_Empty=true;
6 l$ E1 e& l+ F: K}$ X2 Y( M* D- X
: F* @2 }7 X4 G& a) ]
; R: o* W/ d# p
1 X$ I& ?0 E/ f9 `/ }2 v+ ~4 O( }2 B
使用也很简单..直接Texture t;</P>
7 |+ |0 g2 ?, o% R4 b, t# y< >t.LoadFile(FileName);</P>( R" V# c! `1 v; a* b) z$ ?
< >然后在Draw里,t.draw(x,y);</P>
2 u$ I2 T& s: f< >就可以了.8 B' p$ ]) E8 [' m
3 m# F$ ^# e+ M( H+ E4 w% ^, g) k, [以下是效果图:</P> |
zan
|