QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 3204|回复: 1
打印 上一主题 下一主题

一个纹理类,简单封装,为方便使用的.

[复制链接]
字体大小: 正常 放大
xShandow        

43

主题

1

听众

385

积分

升级  28.33%

该用户从未签到

国际赛参赛者

新人进步奖

跳转到指定楼层
1#
发表于 2004-11-20 22:39 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>这个类使用了Glu.h头文件.' t2 E' K) O6 M
看代码吧!</P>, I- `( X5 m- z  }4 c4 o  C3 w6 ^
<>//头文件  H: b+ E8 s& n" P- \3 J# c
#ifndef TEXTURE_H
% k% _9 r) l) s5 e, d. G& T) `#define TEXTURE_H</P>- i$ e" e! G, f& Z& i5 o' O
<>class Texture2 w- t# Z* s2 ?; p
{
/ `* x- J6 J; }3 dprivate:3 I6 @/ f2 c* q' O
unsigned int    m_Index;
* C3 W1 r& ~1 f% x bool   m_Empty;
. Q6 L  G1 _% V# C4 T float   m_Width;
' L& v) r3 i# X; l float   m_Height;
( E' y/ T6 c& x+ q! F( kpublic:( T5 S7 J. Y* e' O- Z
Texture();
, f: W& }  ^8 H0 B* }4 S; l ~Texture();</P>
( o9 D. J2 `$ D% L$ p, G<> void Clear();' G# ]" }, a( L" g  H$ ]! a: h
void LoadFile(char*fn);9 \/ ?1 D8 `# ?; E% A6 Y
void Draw(float x,float y);
3 b& M: k3 r/ s( k' B. K" U};</P>3 W3 n) q( r7 @/ I* W/ R8 e
<>#endif//TEXTURE_H
& p; t6 B4 i) V2 z
- b( W; S2 F% m
6 ~% A# Y0 U( M% ~  I, _6 o: O
: Q( ^  Z) W2 C: v1 G) }2 z2 c//CPP文件
  o1 k& f: X& B2 Z0 A+ q$ V/ I#include "Texture.h"
/ z1 ^; X  y/ |) u#include &lt;windows.h&gt;2 u. v: v! n! n+ j5 \0 }+ W2 n
#include &lt;gl/gl.h&gt;
% M$ ?, a& k. _5 U#include &lt;gl/glaux.h&gt;</P>' n* H6 ^- S2 Y) }" f! Y5 Z# ^
<>#pragma comment(lib,"glaux.lib")</P>7 y4 ]: S1 t# [) r  @( N
<>Texture::Texture(); h; o) H, g" W8 y: y! r
{; Y3 i# q# ]! ~8 \; i
m_Empty=true;
8 ^* ^' ], s3 @}</P>8 {9 Y% Z6 N4 e5 }7 Y; `# B
<>Texture::~Texture()
, I) ]' h5 k( l4 b+ ?" i{8 d& x% x" r1 S9 s
Clear();
. i4 |4 e* a* W% q' \}</P>
1 v/ W& Z. i- X# u2 t<>void Texture:oadFile(char*fn)0 {  z: X- y9 D( Y) q/ i: ^1 T
{& k! ]  L9 h4 Z; R- M7 x  ?
AUX_RGBImageRec*image;
! U$ K  r) ~$ S8 E4 h! C7 L image=NULL;</P>
( C$ I5 N5 ?, u7 [! `6 ?<> image=auxDIBImageLoad(fn);</P>8 f% h& Q+ w% O. [* [# e
<> if(image!=NULL)
  v1 ~* n2 e0 z/ e' D {
) w& a; \; W: E  L2 r6 M  glGenTextures(1,&amp;m_Index);: I- L4 g3 {1 K+ p# X
  glBindTexture(GL_TEXTURE_2D,m_Index);5 r- `8 m. D" b' t
  glTexImage2D(GL_TEXTURE_2D,0,3,image-&gt;sizeX,image-&gt;sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,
& r5 l) |% Z6 r  h9 ~0 t8 y   image-&gt;data);8 E* S9 o8 \' {0 G" I( \
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);# O' R/ ?2 a9 ]" I
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>" S1 O5 Z# m' ?" @$ m
<>  m_Width=image-&gt;sizeX;
0 @) `, O& J- O! o2 |/ |1 Y  m_Height=image-&gt;sizeY;</P>
' Y" b. K7 {2 {<>  if(image)
: c; m; y% Z6 U- u; T" `9 [  {5 j7 s! ~0 i8 c. O
   if(image-&gt;data)  o' m  H3 {9 W1 I$ T. V1 e
    free(image-&gt;data);</P>! t; @9 T3 q) Z3 ]
<>   free(image);# ^5 g! g% ?7 p; F0 S6 Y5 }
  }</P>
  e* g" J' \7 s<>  m_Empty=false;
+ s: o& o" ^' S }
" Z4 r: E6 a7 V  _5 g6 J}</P>
, Z1 K( }. q( l& K' K+ E<>void Texture:raw(float x,float y)
! g/ k: V5 Z! q0 q+ [1 p% z{" T& I" S7 k& i/ k  J3 }- ~
glEnable(GL_TEXTURE_2D);/ X' {3 }2 j0 p- I; J: U0 U3 _3 W7 O
    glBindTexture(GL_TEXTURE_2D,m_Index);</P>" O7 F2 {3 x: {( b- _
<>    glPushMatrix();- G$ [3 i/ P- K6 E' E
    glTranslatef(x,y,0);4 t( I5 F6 D  @" t
glBegin(GL_QUADS);2 @* T" A3 I! C
        glTexCoord2f(0,1);glVertex2f(0     ,0);
9 F; ~) R1 i2 G; t  p; C        glTexCoord2f(0,0);glVertex2f(0     ,m_Height);
' ^& W/ K$ L2 T" [        glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);
$ \2 |; {+ w1 q5 r, E1 K        glTexCoord2f(1,1);glVertex2f(m_Width,0);
. e9 J. m) ~; N" b  e" i    glEnd();+ J3 j* P! T8 x- k- w- f6 `9 J
glPopMatrix();
  i, k, e' n  v. X+ a    glDisable(GL_TEXTURE_2D);- h4 K# |; B( D9 N% _
}</P>
, k( e) F3 D9 J+ p<>void Texture::Clear()
+ e- J/ y# D0 u/ J, a' _{
+ V) ]+ X0 c) L) x1 ~ if(m_Empty)return;</P>2 K' K6 z0 p3 a
<>    glDeleteTextures(1,&amp;m_Index);</P>4 D+ j6 X7 y) p( P4 z- S4 o9 n
<> m_Empty=true;! A6 t7 e, ^( _; V+ P( Z- F
}
0 u8 d3 U% I  ^0 f6 U# t$ h
3 d4 E! b: p* d; Q  G
( V# E. P1 [$ A
5 g+ l6 D. D! T7 N' |3 }9 ^使用也很简单..直接Texture t;</P>, Z, n+ @- G; C2 Q1 y1 f- A
<>t.LoadFile(FileName);</P>+ }* @/ E2 J5 [% U
<>然后在Draw里,t.draw(x,y);</P>
& l& P8 {2 t) s$ v# J<>就可以了.
9 ]2 Y% w1 }7 e; d+ r$ q; a  D! l# M9 V+ ?& m/ m5 c" k; [
以下是效果图:</P>

一个纹理类,简单封装,为方便使用的..jpg (87.31 KB, 下载次数: 236)

一个纹理类,简单封装,为方便使用的.

一个纹理类,简单封装,为方便使用的.

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
xyjuzhen        

0

主题

2

听众

80

积分

升级  78.95%

该用户从未签到

新人进步奖

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-10-27 08:43 , Processed in 0.722508 second(s), 61 queries .

回顶部