QQ登录

只需要一步,快速开始

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

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

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

43

主题

1

听众

385

积分

升级  28.33%

该用户从未签到

国际赛参赛者

新人进步奖

跳转到指定楼层
1#
发表于 2004-11-20 22:39 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
<>这个类使用了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 &lt;windows.h&gt;
( Q7 F0 X2 A8 a#include &lt;gl/gl.h&gt;
, e5 T# v. R) E#include &lt;gl/glaux.h&gt;</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,&amp;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-&gt;sizeX,image-&gt;sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,7 Z* A7 {9 U8 E$ ]' _3 u- z. A3 {. G
   image-&gt;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-&gt;sizeX;) H0 Q2 M: @7 m, W
  m_Height=image-&gt;sizeY;</P>7 f' }' V* {( p" g. B
<>  if(image)
4 p1 o0 Z& u2 C  {
* }! b7 |' S" Z   if(image-&gt;data)  X7 T" S7 a( F9 l4 X9 y4 r+ z8 ?
    free(image-&gt;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,&amp;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>

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

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

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

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-7-21 02:48 , Processed in 0.376887 second(s), 63 queries .

回顶部