comparison sgoex.c @ 27:8b80f670cf1c

cordinate fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 14 Dec 2010 12:58:20 +0900
parents 6a8cb917e0ad
children 3b92a4b17049
comparison
equal deleted inserted replaced
26:6a8cb917e0ad 27:8b80f670cf1c
55 55
56 /*------------------------------------------------------------- 56 /*-------------------------------------------------------------
57 関数プロトタイプ 57 関数プロトタイプ
58 ---------------------------------------------------------------*/ 58 ---------------------------------------------------------------*/
59 59
60 void DefSpriteEx(int number, short middlex, short middley)
61 {
62 sptable[number].mx = middlex;
63 sptable[number].my = middley;
64 }
65
66
67 void SDL_GL_Enter2DMode() 60 void SDL_GL_Enter2DMode()
68 { 61 {
69 // SDL_Surface *sc = SDL_GetVideoSurface(); 62 // SDL_Surface *sc = SDL_GetVideoSurface();
70 63
71 /* Note, there may be other things you need to change, 64 /* Note, there may be other things you need to change,
117 value <<= 1; 110 value <<= 1;
118 } 111 }
119 return value; 112 return value;
120 } 113 }
121 114
122 115 void
123 void DefSprite(int number, const char *name, float w, float h, int color, OBJECT *obj) 116 DefSpriteEx(int number, short middlex, short middley)
117 {
118 sptable[number].mx = middlex;
119 sptable[number].my = middley;
120 }
121
122 void
123 DefSprite(int number, const char *name, float w, float h, int color, OBJECT *obj)
124 { 124 {
125 SURFACE *surfaces; 125 SURFACE *surfaces;
126 surfaces = search_node(obj, name); 126 surfaces = search_node(obj, name);
127 if(surfaces == NULL) 127 if(surfaces == NULL)
128 { 128 {
140 sptable[number].tex_h = power_of_two(sptable[number].h); 140 sptable[number].tex_h = power_of_two(sptable[number].h);
141 texMinX[number] = 0.0f; 141 texMinX[number] = 0.0f;
142 texMinY[number] = 0.0f; 142 texMinY[number] = 0.0f;
143 texMaxX[number] = (GLfloat)sptable[number].w / sptable[number].tex_w; 143 texMaxX[number] = (GLfloat)sptable[number].w / sptable[number].tex_w;
144 texMaxY[number] = (GLfloat)sptable[number].h / sptable[number].tex_h; 144 texMaxY[number] = (GLfloat)sptable[number].h / sptable[number].tex_h;
145 printf("texMaxX = %f, w = %d, tex_w = %d\n", 145 // printf("texMaxX = %f, w = %d, tex_w = %d\n", texMaxX[number], sptable[number].w, sptable[number].tex_w);
146 texMaxX[number], sptable[number].w, sptable[number].tex_w);
147 sptable[number].texture = surfaces->texture; 146 sptable[number].texture = surfaces->texture;
148 } 147 }
149 148
150 void PutSprite(int zorder, short x, short y, int number) 149 void
150 PutSprite(int zorder, short x, short y, int number)
151 { 151 {
152 glBindTexture(GL_TEXTURE_2D, (GLuint&)sptable[number].texture); 152 glBindTexture(GL_TEXTURE_2D, (GLuint&)sptable[number].texture);
153 glEnable(GL_BLEND); 153 glEnable(GL_BLEND);
154 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 154 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
155 glBegin(GL_QUADS); 155 glBegin(GL_QUADS);
159 glTexCoord2f(texMaxX[number],texMinY[number]); glVertex2i((GLuint)(x+sptable[number].tex_w), (GLuint)y); 159 glTexCoord2f(texMaxX[number],texMinY[number]); glVertex2i((GLuint)(x+sptable[number].tex_w), (GLuint)y);
160 glEnd(); 160 glEnd();
161 glDisable(GL_BLEND); 161 glDisable(GL_BLEND);
162 } 162 }
163 163
164 void PutSpriteEx(int number, int x, int y, float scalex, float scaley, float angle) 164 void
165 PutSpriteEx(int number, int x, int y, float scalex, float scaley, float angle)
165 { 166 {
166 SpriteTable *m = &sptable[number]; 167 SpriteTable *m = &sptable[number];
167 x -= m->w; 168 x -= m->w;
168 y -= m->h; 169 y -= m->h;
169 170