\r
#define _IN_TEXTURE\r
\r
-#ifdef _WINDOWS\r
-#include "stdafx.h"\r
-\r
-#include "externals.h"\r
-#include "texture.h"\r
-#include "gpu.h"\r
-#include "prim.h"\r
-#else\r
#include "gpuStdafx.h"\r
\r
#include "gpuDraw.h"\r
#include "gpuTexture.h"\r
#include "gpuPlugin.h"\r
#include "gpuPrim.h"\r
-#endif\r
+\r
#define CLUTCHK 0x00060000\r
#define CLUTSHIFT 17\r
\r
int iTexGarbageCollection=1;\r
unsigned long dwTexPageComp=0;\r
int iVRamSize=0;\r
-#ifdef _WINDOWS\r
-int iClampType=GL_CLAMP;\r
-#else\r
int iClampType=GL_CLAMP_TO_EDGE;\r
-#endif\r
int iFilter = GL_LINEAR;\r
void (*LoadSubTexFn) (int,int,short,short);\r
unsigned long (*PalTexturedColourFn) (unsigned long);\r
// texture cache implementation\r
////////////////////////////////////////////////////////////////////////\r
\r
-#ifdef _WINDOWS\r
-#pragma pack(1)\r
-#endif\r
-\r
// "texture window" cache entry\r
\r
typedef struct textureWndCacheEntryTag\r
unsigned char Opaque;\r
} textureSubCacheEntryS;\r
\r
-#ifdef _WINDOWS\r
-#pragma pack()\r
-#endif\r
\r
//---------------------------------------------\r
\r
return;\r
}\r
\r
+#if 1\r
+ iSortTexCnt=MAXSORTTEX;\r
+#else // below vram detector supposedly crashes some drivers\r
\r
iTSize=256;\r
p=(char *)malloc(iTSize*iTSize*4);\r
else iSortTexCnt=iCnt-3+min(1,0); // place for menu&texwnd\r
\r
if(iSortTexCnt<8) iSortTexCnt=8;\r
+#endif\r
} \r
\r
////////////////////////////////////////////////////////////////////////\r
int i,j;textureWndCacheEntry * tsx;\r
//----------------------------------------------------//\r
glBindTexture(GL_TEXTURE_2D,0);\r
+ glError();\r
//----------------------------------------------------//\r
free(texturepart); // free tex part\r
texturepart=0;\r
{\r
if(tsx->texname) // -> some tex?\r
glDeleteTextures(1,&tsx->texname); // --> delete it\r
+ glError();\r
}\r
iMaxTexWnds=0; // no more tex wnds\r
//----------------------------------------------------//\r
if(gTexMovieName!=0) // some movie tex?\r
glDeleteTextures(1, &gTexMovieName); // -> delete it\r
+ glError();\r
gTexMovieName=0; // no more movie tex\r
//----------------------------------------------------//\r
if(gTexFrameName!=0) // some 15bit framebuffer tex?\r
glDeleteTextures(1, &gTexFrameName); // -> delete it\r
+ glError();\r
gTexFrameName=0; // no more movie tex\r
//----------------------------------------------------//\r
if(gTexBlurName!=0) // some 15bit framebuffer tex?\r
glDeleteTextures(1, &gTexBlurName); // -> delete it\r
+ glError();\r
gTexBlurName=0; // no more movie tex\r
//----------------------------------------------------//\r
for(i=0;i<3;i++) // -> loop\r
for(j=0;j<MAXTPAGES;j++) // loop tex pages\r
{\r
free(pscSubtexStore[i][j]); // -> clean mem\r
+ pscSubtexStore[i][j]=0;\r
}\r
for(i=0;i<MAXSORTTEX;i++)\r
{\r
if(uiStexturePage[i]) // --> tex used ?\r
{\r
glDeleteTextures(1,&uiStexturePage[i]);\r
+ glError();\r
uiStexturePage[i]=0; // --> delete it\r
}\r
free(pxSsubtexLeft[i]); // -> clean mem\r
+ pxSsubtexLeft[i]=0;\r
}\r
//----------------------------------------------------//\r
}\r
dwTexPageComp=0;\r
\r
//----------------------------------------------------//\r
- if(bDelTex) {glBindTexture(GL_TEXTURE_2D,0);gTexName=0;}\r
+ if(bDelTex) {glBindTexture(GL_TEXTURE_2D,0); glError();gTexName=0;}\r
//----------------------------------------------------//\r
tsx=wcWndtexStore;\r
for(i=0;i<MAXWNDTEXCACHE;i++,tsx++)\r
tsx->used=0;\r
if(bDelTex && tsx->texname)\r
{\r
- glDeleteTextures(1,&tsx->texname);\r
+ glDeleteTextures(1,&tsx->texname); glError();\r
tsx->texname=0;\r
}\r
}\r
lu=pxSsubtexLeft[i];\r
lu->l=0;\r
if(bDelTex && uiStexturePage[i])\r
- {glDeleteTextures(1,&uiStexturePage[i]);uiStexturePage[i]=0;}\r
+ {glDeleteTextures(1,&uiStexturePage[i]); glError();uiStexturePage[i]=0;}\r
}\r
}\r
\r
{\r
if(gTexName==0)\r
glGenTextures(1, &gTexName);\r
-\r
+ glError();\r
glBindTexture(GL_TEXTURE_2D, gTexName);\r
-\r
+ glError();\r
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\r
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\r
- \r
+ glError(); \r
{\r
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+ glError();\r
}\r
\r
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, \r
TWin.Position.x1, \r
TWin.Position.y1, \r
0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+ glError();\r
+ //LOGE("DefineTextureWnd x:%d y:%d",TWin.Position.x1,TWin.Position.y1);\r
+\r
}\r
\r
////////////////////////////////////////////////////////////////////////\r
{\r
if(gTexName==0)\r
glGenTextures(1, &gTexName);\r
-\r
+ glError();\r
glBindTexture(GL_TEXTURE_2D, gTexName);\r
-\r
+ glError();\r
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);\r
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);\r
- \r
+ glError();\r
{\r
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
}\r
-\r
+ glError();\r
glTexImage2D(GL_TEXTURE_2D, 0,GL_RGBA, \r
TWin.Position.x1, \r
TWin.Position.y1, \r
0, GL_RGBA, GL_UNSIGNED_BYTE,texturepart);\r
+ glError();\r
+ //LOGE("DefinePalTextureWnd x:%d y:%d",TWin.Position.x1,TWin.Position.y1);\r
}\r
\r
///////////////////////////////////////////////////////\r
{\r
if(gTexMovieName==0)\r
{\r
- glGenTextures(1, &gTexMovieName);\r
+ glEnable(GL_TEXTURE_2D);\r
+ glGenTextures(1, &gTexMovieName); glError();\r
gTexName=gTexMovieName;\r
- glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
\r
if(!bUseFastMdec) \r
{\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glError();\r
}\r
else\r
{\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
}\r
\r
glTexImage2D(GL_TEXTURE_2D, 0, //giWantedRGBA, \r
GL_RGBA,\r
- 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+ 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
}\r
else \r
{\r
- gTexName=gTexMovieName;glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ gTexName=gTexMovieName;glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
}\r
\r
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,\r
(xrMovieArea.y1-xrMovieArea.y0), \r
GL_RGBA,\r
GL_UNSIGNED_SHORT,\r
- texturepart);\r
+ texturepart); glError();\r
+ //LOGE("DefinePackedTextureMovie x:%d y:%d",(xrMovieArea.x1-xrMovieArea.x0),(xrMovieArea.y1-xrMovieArea.y0));\r
+\r
}\r
\r
////////////////////////////////////////////////////////////////////////\r
{\r
if(gTexMovieName==0)\r
{\r
- glGenTextures(1, &gTexMovieName);\r
+ glGenTextures(1, &gTexMovieName); glError();\r
gTexName=gTexMovieName;\r
- glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
\r
if(!bUseFastMdec) \r
{\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glError();\r
}\r
else\r
{\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
}\r
\r
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
}\r
else \r
{\r
- gTexName=gTexMovieName;glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ gTexName=gTexMovieName;glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
}\r
\r
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0,\r
(xrMovieArea.x1-xrMovieArea.x0), \r
(xrMovieArea.y1-xrMovieArea.y0), \r
- GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+ GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
+ //LOGE("DefineTextureMovie x:%d y:%d",(xrMovieArea.x1-xrMovieArea.x0),(xrMovieArea.y1-xrMovieArea.y0));\r
}\r
\r
////////////////////////////////////////////////////////////////////////\r
{\r
if(!gTexFrameName)\r
{\r
- glGenTextures(1, &gTexFrameName);\r
+ glGenTextures(1, &gTexFrameName); glError();\r
gTexName=gTexFrameName;\r
- glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
\r
{\r
unsigned long * ta=(unsigned long *)texturepart;\r
for(x1=0;x1<=4;x1++)\r
*ta++=0xff000000;\r
}\r
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
+\r
}\r
else\r
{\r
gTexName=gTexFrameName;\r
- glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
}\r
-\r
+ //LOGE("BlackFake15BitTexture x:%d y:%d",4,4);\r
ubOpaqueDraw=0;\r
\r
return (GLuint)gTexName;\r
if(iResX>640 || iResY>480) iFTex=1024;\r
else iFTex=512; \r
\r
- glGenTextures(1, &gTexFrameName);\r
+ glGenTextures(1, &gTexFrameName); glError();\r
gTexName=gTexFrameName;\r
- glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
\r
p=(char *)malloc(iFTex*iFTex*4);\r
memset(p,0,iFTex*iFTex*4);\r
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, iFTex, iFTex, 0, GL_RGBA, GL_UNSIGNED_BYTE, p);\r
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, iFTex, iFTex, 0, GL_RGBA, GL_UNSIGNED_BYTE, p); glError();\r
free(p);\r
\r
glGetError();\r
else \r
{\r
gTexName=gTexFrameName;\r
- glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
}\r
-\r
+ //LOGE("Fake15BitTexture x:%d y:%d",iFTex,iFTex);\r
x1+=PreviousPSXDisplay.Range.x0;\r
y1+=PreviousPSXDisplay.Range.y0;\r
\r
iYAdjust,\r
rSrc.left+rRatioRect.left,\r
iResY-rSrc.bottom-rRatioRect.top,\r
- x1,y1);\r
+ x1,y1); glError();\r
\r
if(glGetError()) \r
{\r
char * p=(char *)malloc(iFTex*iFTex*4);\r
memset(p,0,iFTex*iFTex*4);\r
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, iFTex, iFTex,\r
- GL_RGBA, GL_UNSIGNED_BYTE, p);\r
+ GL_RGBA, GL_UNSIGNED_BYTE, p); glError();\r
free(p);\r
}\r
\r
\r
if(!gTexName) \r
{\r
- glGenTextures(1, &gTexName);\r
- glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ glGenTextures(1, &gTexName); glError();\r
+ glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
\r
if(iFilterType)\r
{\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glError();\r
}\r
else\r
{ \r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
} \r
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturebuffer);\r
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturebuffer); glError();\r
}\r
- else glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ else glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
\r
glTexSubImage2D(GL_TEXTURE_2D, 0, XTexS<<1, YTexS<<1,\r
DXTexS<<1, DYTexS<<1,\r
- GL_RGBA, GL_UNSIGNED_BYTE, texturebuffer);\r
+ GL_RGBA, GL_UNSIGNED_BYTE, texturebuffer); glError();\r
+ //LOGE("DefineSubTextureSortHiRes x:%d y:%d",XTexS<<1,YTexS<<1);\r
}\r
\r
/////////////////////////////////////////////////////////////////////////////\r
\r
if(!gTexName)\r
{\r
- glGenTextures(1, &gTexName);\r
- glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ glGenTextures(1, &gTexName); glError();\r
+ glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, iClampType); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, iClampType); glError();\r
\r
if(iFilterType)\r
{\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glError();\r
}\r
else\r
{\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter);\r
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter);\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, iFilter); glError();\r
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, iFilter); glError();\r
}\r
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0,GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 256, 256, 0,GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
}\r
- else glBindTexture(GL_TEXTURE_2D, gTexName);\r
+ else glBindTexture(GL_TEXTURE_2D, gTexName); glError();\r
\r
glTexSubImage2D(GL_TEXTURE_2D, 0, XTexS, YTexS,\r
DXTexS, DYTexS,\r
- GL_RGBA, GL_UNSIGNED_BYTE, texturepart);\r
+ GL_RGBA, GL_UNSIGNED_BYTE, texturepart); glError();\r
+ //LOGE("DefineSubTextureSort x:%d y:%d w:%d h:%d",XTexS,YTexS,DXTexS,DYTexS);\r
}\r
\r
/////////////////////////////////////////////////////////////////////////////\r