Changeset 770
- Timestamp:
- Jun 7, 2011, 12:39:21 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/debugquad.cpp
r764 r770 14 14 15 15 #include <cmath> 16 #include <cstdio> 16 17 17 18 #include "core.h" … … 33 34 34 35 private: 36 vec2 orig, step, aa, bb; 37 35 38 int initialised; 36 39 float time; … … 65 68 Entity::TickDraw(deltams); 66 69 67 if (IsDestroying()) 68 { 69 if (data->initialised) 70 { 71 glDeleteBuffers(3, data->buflist); 72 Shader::Destroy(data->shader); 73 glDeleteTextures(1, data->texlist); 74 data->initialised = 0; 75 } 76 } 77 else if (!data->initialised) 70 if (!data->initialised && !IsDestroying()) 78 71 { 79 72 glGenBuffers(3, data->buflist); 80 73 81 74 static char const *vertexshader = 82 " #version 130\n"83 " invec2 in_Position;\n"84 " invec4 in_Color;\n"85 " invec2 in_TexCoord;\n"86 " outvec4 pass_Color;\n"75 "//#version 130\n" 76 "varying vec2 in_Position;\n" 77 "varying vec4 in_Color;\n" 78 "varying vec2 in_TexCoord;\n" 79 "varying vec4 pass_Color;\n" 87 80 "void main()\n" 88 81 "{\n" 82 "gl_TexCoord[0] = gl_MultiTexCoord0;\n" 89 83 " gl_Position = vec4(in_Position, 0.0f, 1.0f);\n" 90 84 " gl_TexCoord[0] = vec4(in_TexCoord, 0.0, 0.0);\n" … … 92 86 "}\n"; 93 87 static char const *fragmentshader = 94 " #version 130\n"95 " invec4 pass_Color;\n"88 "//#version 130\n" 89 "varying vec4 pass_Color;\n" 96 90 "uniform sampler2D in_Texture;\n" 97 91 "void main()\n" … … 100 94 " vec4 tex = texture2D(in_Texture, vec2(gl_TexCoord[0]));\n" 101 95 " gl_FragColor = col * tex;\n" 96 " gl_FragColor = vec4(1.0, 1.0, 1.0, 0.0);\n" 102 97 "}\n"; 103 98 data->shader = Shader::Create(vertexshader, fragmentshader); … … 123 118 data->initialised = 1; 124 119 } 120 else if (data->initialised && IsDestroying()) 121 { 122 glDeleteBuffers(3, data->buflist); 123 Shader::Destroy(data->shader); 124 glDeleteTextures(1, data->texlist); 125 126 data->initialised = 0; 127 } 125 128 126 129 float const st = sinf(0.0005f * data->time); … … 214 217 glDisableVertexAttribArray(attr_tex); 215 218 #endif 219 220 /* Reset GL states */ 221 glMatrixMode(GL_PROJECTION); 222 glLoadIdentity(); 223 glMatrixMode(GL_MODELVIEW); 224 glLoadIdentity(); 225 glDisable(GL_TEXTURE_2D); 226 glUseProgram(0); 227 228 /* Prepare our quad coordinates */ 229 vec2i const layout(4, 3); 230 data->step = vec2(2.0f, -2.0f) / (2 * layout + vec2i(1)); 231 data->orig = vec2(-1.0f, 1.0f) + data->step; 232 data->aa = data->orig; 233 data->bb = data->orig + data->step; 234 235 /* Generate a few random numbers */ 236 float f1 = 0.5f + 0.5f * sinf(0.00034f * data->time); 237 float f2 = 0.5f + 0.5f * sinf(0.00053f * data->time + 1.0f); 238 float f3 = 0.5f + 0.5f * sinf(0.00072f * data->time + 4.0f); 239 float f4 = 0.5f + 0.5f * sinf(0.00091f * data->time + 8.0f); 240 241 /* Quad #1: simple glBegin program */ 242 glColor3f(1.0f, 1.0f, 1.0f); 243 glBegin(GL_TRIANGLES); 244 glVertex3f(data->aa.x, data->bb.y, 0.0f); 245 glVertex3f(data->bb.x, data->bb.y, 0.0f); 246 glVertex3f(data->bb.x, data->aa.y, 0.0f); 247 248 glVertex3f(data->bb.x, data->aa.y, 0.0f); 249 glVertex3f(data->aa.x, data->aa.y, 0.0f); 250 glVertex3f(data->aa.x, data->bb.y, 0.0f); 251 glEnd(); 252 253 Advance(); 254 255 /* Quad #2: glBegin program with varying color */ 256 glBegin(GL_TRIANGLES); 257 glColor3f(f1, f2, f3); 258 glVertex3f(data->aa.x, data->bb.y, 0.0f); 259 glColor3f(f4, f2, f1); 260 glVertex3f(data->bb.x, data->bb.y, 0.0f); 261 glColor3f(f3, f1, f4); 262 glVertex3f(data->bb.x, data->aa.y, 0.0f); 263 264 glVertex3f(data->bb.x, data->aa.y, 0.0f); 265 glColor3f(f4, f3, f2); 266 glVertex3f(data->aa.x, data->aa.y, 0.0f); 267 glColor3f(f1, f2, f3); 268 glVertex3f(data->aa.x, data->bb.y, 0.0f); 269 glEnd(); 270 271 Advance(); 272 273 /* Quad #3: textured quad */ 274 glEnable(GL_TEXTURE_2D); 275 glBindTexture(GL_TEXTURE_2D, data->texlist[0]); 276 glColor3f(1.0f, 1.0f, 1.0f); 277 glBegin(GL_TRIANGLES); 278 glTexCoord2f(f1, f3); 279 glVertex3f(data->aa.x, data->bb.y, 0.0f); 280 glTexCoord2f(f3, f2); 281 glVertex3f(data->bb.x, data->bb.y, 0.0f); 282 glTexCoord2f(f2, f4); 283 glVertex3f(data->bb.x, data->aa.y, 0.0f); 284 285 glTexCoord2f(f2, f4); 286 glVertex3f(data->bb.x, data->aa.y, 0.0f); 287 glTexCoord2f(f4, f1); 288 glVertex3f(data->aa.x, data->aa.y, 0.0f); 289 glTexCoord2f(f1, f3); 290 glVertex3f(data->aa.x, data->bb.y, 0.0f); 291 glEnd(); 292 293 Advance(); 294 295 /* Quad #4: vertex buffer */ 296 } 297 298 void DebugQuad::Advance() 299 { 300 data->aa.x += 2.0f * data->step.x; 301 data->bb.x += 2.0f * data->step.x; 302 if (data->bb.x > 1.0f) 303 { 304 data->aa.x = data->orig.x; 305 data->bb.x = data->orig.x + data->step.x; 306 data->aa.y += 2.0f * data->step.y; 307 data->bb.y += 2.0f * data->step.y; 308 } 216 309 } 217 310 -
trunk/src/debugquad.h
r748 r770 35 35 36 36 private: 37 void Advance(); 38 37 39 DebugQuadData *data; 38 40 }; -
trunk/test/debug/quad.cpp
r769 r770 47 47 new SdlInput(); 48 48 #endif 49 new DebugFps(20, 20);49 //new DebugFps(20, 20); 50 50 new DebugQuad(); 51 51
Note: See TracChangeset
for help on using the changeset viewer.