Changeset 771
- Timestamp:
- Jun 9, 2011, 1:55:52 AM (10 years ago)
- Location:
- trunk/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/debugquad.cpp
r770 r771 29 29 */ 30 30 31 #define NUM_SHADERS 3 32 31 33 class DebugQuadData 32 34 { … … 39 41 float time; 40 42 GLuint buflist[3]; 41 Shader *shader ;43 Shader *shader[NUM_SHADERS]; 42 44 GLuint texlist[1]; 43 45 uint8_t image[1][32 * 32 * 4]; … … 96 98 " gl_FragColor = vec4(1.0, 1.0, 1.0, 0.0);\n" 97 99 "}\n"; 98 data->shader = Shader::Create(vertexshader, fragmentshader);100 data->shader[0] = Shader::Create(vertexshader, fragmentshader); 99 101 glGenTextures(1, data->texlist); 100 102 … … 116 118 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 117 119 120 /* Quad #4: create texture in fragment shader */ 121 data->shader[0] = Shader::Create( 122 "#version 120\n" 123 "void main()" 124 "{" 125 " gl_Position = gl_Vertex;" 126 "}", 127 128 "#version 120\n" 129 "void main()" 130 "{" 131 " float dx = mod(gl_FragCoord.x * gl_FragCoord.y, 2.0);" 132 " float dy = mod(gl_FragCoord.x * 0.125, 1.0);" 133 " float dz = mod(gl_FragCoord.y * 0.125, 1.0);" 134 " gl_FragColor = vec4(dx, dy, dz, 1.0);" 135 "}"); 136 137 /* Quad #5: pass color from vertex shader to fragment shader */ 138 data->shader[1] = Shader::Create( 139 "#version 120\n" 140 "varying vec4 color;" 141 "void main()" 142 "{" 143 " float r = gl_MultiTexCoord0.x;" 144 " float g = gl_MultiTexCoord0.y;" 145 " color = vec4(1.0 - r, 1.0 - g, r, 1.0);" 146 " gl_Position = gl_Vertex;" 147 "}", 148 149 "#version 120\n" 150 "varying vec4 color;" 151 "void main()" 152 "{" 153 " gl_FragColor = color;" 154 "}"); 155 156 /* Quad #6: apply texture in fragment shader */ 157 data->shader[2] = Shader::Create( 158 "void main()" 159 "{" 160 " gl_TexCoord[0] = gl_MultiTexCoord0;" 161 " gl_Position = gl_Vertex;" 162 "}", 163 164 "uniform sampler2D tex;" 165 "void main()" 166 "{" 167 " gl_FragColor = texture2D(tex, gl_TexCoord[0].xy * 0.25);" 168 "}"); 169 118 170 data->initialised = 1; 119 171 } … … 121 173 { 122 174 glDeleteBuffers(3, data->buflist); 123 Shader::Destroy(data->shader); 175 Shader::Destroy(data->shader[0]); 176 Shader::Destroy(data->shader[1]); 177 Shader::Destroy(data->shader[2]); 124 178 glDeleteTextures(1, data->texlist); 125 179 … … 185 239 glDisableClientState(GL_TEXTURE_COORD_ARRAY); 186 240 #else 187 data->shader ->Bind();241 data->shader[0]->Bind(); 188 242 GLuint attr_pos, attr_col, attr_tex; 189 attr_pos = data->shader ->GetAttribLocation("in_Position");190 attr_col = data->shader ->GetAttribLocation("in_Color");191 attr_tex = data->shader ->GetAttribLocation("in_TexCoord");243 attr_pos = data->shader[0]->GetAttribLocation("in_Position"); 244 attr_col = data->shader[0]->GetAttribLocation("in_Color"); 245 attr_tex = data->shader[0]->GetAttribLocation("in_TexCoord"); 192 246 193 247 glEnableVertexAttribArray(attr_pos); … … 240 294 241 295 /* Quad #1: simple glBegin program */ 242 glColor3f( 1.0f, 1.0f, 1.0f);296 glColor3f(0.8f, 0.5f, 0.2f); 243 297 glBegin(GL_TRIANGLES); 244 298 glVertex3f(data->aa.x, data->bb.y, 0.0f); … … 293 347 Advance(); 294 348 295 /* Quad #4: vertex buffer */ 349 /* Quad #4: set color in fragment shader */ 350 data->shader[0]->Bind(); 351 glColor3f(0.0f, 1.0f, 1.0f); 352 glBegin(GL_TRIANGLES); 353 glVertex3f(data->aa.x, data->bb.y, 0.0f); 354 glVertex3f(data->bb.x, data->bb.y, 0.0f); 355 glVertex3f(data->bb.x, data->aa.y, 0.0f); 356 357 glVertex3f(data->bb.x, data->aa.y, 0.0f); 358 glVertex3f(data->aa.x, data->aa.y, 0.0f); 359 glVertex3f(data->aa.x, data->bb.y, 0.0f); 360 glEnd(); 361 glUseProgram(0); 362 363 Advance(); 364 365 /* Quad #5: pass color from vertex shader to fragment shader */ 366 data->shader[1]->Bind(); 367 glColor3f(0.0f, 1.0f, 1.0f); 368 glBegin(GL_TRIANGLES); 369 glTexCoord2f(f1, f3); 370 glVertex3f(data->aa.x, data->bb.y, 0.0f); 371 glTexCoord2f(f3, f2); 372 glVertex3f(data->bb.x, data->bb.y, 0.0f); 373 glTexCoord2f(f2, f4); 374 glVertex3f(data->bb.x, data->aa.y, 0.0f); 375 376 glTexCoord2f(f2, f4); 377 glVertex3f(data->bb.x, data->aa.y, 0.0f); 378 glTexCoord2f(f4, f1); 379 glVertex3f(data->aa.x, data->aa.y, 0.0f); 380 glTexCoord2f(f1, f3); 381 glVertex3f(data->aa.x, data->bb.y, 0.0f); 382 glEnd(); 383 glUseProgram(0); 384 385 Advance(); 386 387 /* Quad #6: apply texture in fragment shader */ 388 data->shader[2]->Bind(); 389 glColor3f(0.0f, 1.0f, 1.0f); 390 glEnable(GL_TEXTURE_2D); 391 glBindTexture(GL_TEXTURE_2D, data->texlist[0]); 392 glBegin(GL_TRIANGLES); 393 glTexCoord2f(f1, f3); 394 glVertex3f(data->aa.x, data->bb.y, 0.0f); 395 glTexCoord2f(f3, f2); 396 glVertex3f(data->bb.x, data->bb.y, 0.0f); 397 glTexCoord2f(f2, f4); 398 glVertex3f(data->bb.x, data->aa.y, 0.0f); 399 400 glTexCoord2f(f2, f4); 401 glVertex3f(data->bb.x, data->aa.y, 0.0f); 402 glTexCoord2f(f4, f1); 403 glVertex3f(data->aa.x, data->aa.y, 0.0f); 404 glTexCoord2f(f1, f3); 405 glVertex3f(data->aa.x, data->bb.y, 0.0f); 406 glEnd(); 407 glUseProgram(0); 408 409 Advance(); 410 296 411 } 297 412 -
trunk/src/video.cpp
r760 r771 35 35 mat4 proj_matrix, view_matrix, model_matrix; 36 36 37 #define OLD 38 37 39 static char const *vertexshader = 40 #if !defined OLD 38 41 "#version 130\n" 42 #endif 39 43 "\n" 40 44 #if defined HAVE_GLES_2X … … 42 46 "attribute vec2 in_TexCoord;\n" 43 47 "varying vec2 pass_TexCoord;\n" 44 #el se48 #elif !defined OLD 45 49 "in vec3 in_Position;\n" 46 50 "in vec2 in_TexCoord;\n" … … 54 58 "void main()\n" 55 59 "{\n" 60 #if defined OLD 61 " vec3 in_Position = gl_Vertex.xyz;\n" 62 " vec2 in_TexCoord = gl_MultiTexCoord0.xy;\n" 63 #endif 56 64 " gl_Position = proj_matrix * view_matrix * model_matrix" 57 65 " * vec4(in_Position, 1.0);\n" … … 65 73 66 74 static char const *fragmentshader = 75 #if !defined OLD 67 76 "#version 130\n" 77 #endif 68 78 "\n" 69 79 "uniform sampler2D in_Texture;\n"
Note: See TracChangeset
for help on using the changeset viewer.