QQ登录

只需要一步,快速开始

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

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

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

43

主题

1

听众

385

积分

升级  28.33%

该用户从未签到

国际赛参赛者

新人进步奖

跳转到指定楼层
1#
发表于 2004-11-20 22:39 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>这个类使用了Glu.h头文件.( A7 V/ |2 d1 m  P
看代码吧!</P>: H1 @/ i$ p! N: i/ T/ p* L
<>//头文件8 N7 g7 D5 c2 M6 k6 [
#ifndef TEXTURE_H* V& `- M5 E3 L1 `' ]/ A
#define TEXTURE_H</P>* a4 a2 c2 T3 {2 d9 Q: ?
<>class Texture
$ @+ S; v& e" `& e{( ]6 p8 {) k# Z! ~
private:, B  M( ~' C4 E5 i3 U' s2 A
unsigned int    m_Index;
5 \, W/ A: o! u bool   m_Empty;, h# ^  l1 H7 }, y1 k
float   m_Width;
  a7 N1 N; i9 G: V+ \1 Z3 D1 X float   m_Height;
! u; ~0 T, J* }4 w$ [public:
' ?; q$ e! y" |6 t7 M" V' ] Texture();, h+ x% p( W& H. g
~Texture();</P>6 J8 b" {8 }; B% x5 R% J- n
<> void Clear();
4 U' \- N- S) ~ void LoadFile(char*fn);
* U) ]2 N+ L4 v7 @3 B1 y void Draw(float x,float y);9 z3 G  D/ N8 q; Q
};</P>3 l% t, q7 h( C1 c) O
<>#endif//TEXTURE_H
0 l5 y0 o2 g2 }5 ~8 ]2 M. E; r& [. y% @; A4 z) T/ F( D5 ?

9 O& r, Z0 G, [7 }, _8 f. m6 x6 A2 ^
//CPP文件
+ x7 f( o: z3 _#include "Texture.h"
# E# y) H( d6 x, v#include &lt;windows.h&gt;
5 r$ z* l) Q2 O5 ?) A! v#include &lt;gl/gl.h&gt;& C9 |3 o7 R5 @  q, k* ]
#include &lt;gl/glaux.h&gt;</P>5 V2 t, h7 w; b0 z
<>#pragma comment(lib,"glaux.lib")</P>
8 r) ~5 ^/ H8 `8 u7 u<>Texture::Texture()
9 e/ E+ i" G' w1 Z4 D{3 J7 k' S* \4 r8 X
m_Empty=true;
1 a! s5 E; r$ u. G}</P>6 Y6 R8 d& H7 P+ A* n( {- v
<>Texture::~Texture()
5 S0 U% E! D. D+ T, T{$ ?" h. R# n' c3 _3 \  w
Clear();: e% B) s( E' B* }$ Y0 A+ a1 C
}</P>
. h0 W; \- ^) M+ w<>void Texture:oadFile(char*fn)
2 H- d5 s+ N& E  V3 i8 s* Y/ M7 w9 D{
& _/ g" o) d5 M& \$ y7 Y AUX_RGBImageRec*image;
7 V7 S' ]6 d2 Y" K. c( R5 T image=NULL;</P>6 |/ A9 U* j* T: W
<> image=auxDIBImageLoad(fn);</P>; u; ^3 @5 Z$ U
<> if(image!=NULL)" ?, I  u. }' f% }
{
- g0 b) n- p0 w8 P2 q% ]  glGenTextures(1,&amp;m_Index);3 I! ^% _* `; l5 O
  glBindTexture(GL_TEXTURE_2D,m_Index);
7 b3 h! S  d. j) [; [# F! k  glTexImage2D(GL_TEXTURE_2D,0,3,image-&gt;sizeX,image-&gt;sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,
$ z! m8 J! t% f. [9 d   image-&gt;data);
9 u+ ^' L* o/ }. ~$ p5 ^7 j5 M3 ?  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
! Y: V7 x6 J% t: l. t  U% J! ]  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);</P>8 Q+ y$ q+ Q( ^8 X9 Z) ^% I2 v# d) ]
<>  m_Width=image-&gt;sizeX;2 y7 Q& i" T. X" v$ C, v* y. f
  m_Height=image-&gt;sizeY;</P>
) p+ b" C1 |4 F% d  M<>  if(image)% H+ F# O' W/ y8 p
  {3 b  @( {  \- B) D% a/ Q1 U
   if(image-&gt;data)
: T7 q8 u, J  C3 K    free(image-&gt;data);</P>
- X) x+ p# H. e% O7 \* w! [<>   free(image);, I2 d' s; y; E# y
  }</P>
+ q# B6 `. z! w/ }<>  m_Empty=false;
/ v0 k- Z% ?/ D" G2 {. F$ S }2 V: u/ D/ p& Y9 z( [0 D  |
}</P>+ G+ C9 B& ]8 ]1 V, @8 r7 M
<>void Texture:raw(float x,float y)) `( y6 A6 Q6 T" O# C0 a, R
{9 D' J$ C9 v6 a9 k
glEnable(GL_TEXTURE_2D);
* ^) Y3 v6 g6 E7 U4 I! b$ H    glBindTexture(GL_TEXTURE_2D,m_Index);</P>
9 y# w/ F4 ~. C  F<>    glPushMatrix();
4 e9 m# e0 P- E) w7 D! t5 k    glTranslatef(x,y,0);
2 a6 j4 c) l2 H% g6 T glBegin(GL_QUADS);
1 u% v" }. n8 Q9 L; W& U7 Z        glTexCoord2f(0,1);glVertex2f(0     ,0);
# H4 g; t* |9 T% }/ ]        glTexCoord2f(0,0);glVertex2f(0     ,m_Height);. O! Y, {8 l$ Q2 G
        glTexCoord2f(1,0);glVertex2f(m_Width,m_Height);
2 {$ [) U0 k$ q% k, b: y        glTexCoord2f(1,1);glVertex2f(m_Width,0);/ D$ s7 n( ?2 M/ [( F. z
    glEnd();0 Q1 V/ f" I& K& S6 q7 w
glPopMatrix();, v9 e8 r/ R+ s9 h; S
    glDisable(GL_TEXTURE_2D);
* C% t& \' f5 U% t}</P>! G, R. r$ o9 F) B1 Y3 p
<>void Texture::Clear()
  Z: m0 [7 ]- X9 ]$ ~; W{
' O8 v4 ~. k. z- x5 c if(m_Empty)return;</P>
5 T3 l3 s: w7 Z  p$ L$ s# v5 G<>    glDeleteTextures(1,&amp;m_Index);</P>
8 ]9 B; |7 s2 x, D4 |& y<> m_Empty=true;
* c# h8 [. Q7 z% a6 ^}
4 b  p1 d7 d+ @& p
4 M0 J4 m6 a; ?* c
" W4 p# N- R8 T! }- N9 j6 n
, I3 u: ?' H) f/ s使用也很简单..直接Texture t;</P>
0 V/ C0 b8 A9 }) F5 D5 [<>t.LoadFile(FileName);</P>/ G0 z. G" |9 u. D  O/ G
<>然后在Draw里,t.draw(x,y);</P>" [  z7 [! m+ j, v3 r3 G
<>就可以了.
% y! y9 f( ]* l6 r$ Z9 f
$ I# h+ V* [0 W( ~以下是效果图:</P>

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

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

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

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-4-21 04:40 , Processed in 0.427413 second(s), 61 queries .

回顶部