Changeset 774


Ignore:
Timestamp:
Jun 13, 2011, 9:35:33 PM (8 years ago)
Author:
sam
Message:

debug: more complex vertex buffer test.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/debugquad.cpp

    r773 r774  
    2929 */
    3030
    31 #define NUM_SHADERS 3
     31#define NUM_SHADERS 4
    3232
    3333class DebugQuadData
     
    7272    if (!data->initialised && !IsDestroying())
    7373    {
     74#if 0
    7475        glGenBuffers(3, data->buflist);
    7576
     
    100101        data->shader[0] = Shader::Create(vertexshader, fragmentshader);
    101102        glGenTextures(1, data->texlist);
    102 
     103#endif
     104
     105        /* Checkerboard texture */
    103106        glEnable(GL_TEXTURE_2D);
    104107        glBindTexture(GL_TEXTURE_2D, data->texlist[0]);
     
    155158
    156159        /* Quad #6: apply texture in fragment shader */
    157         /* Quad #8: vertex buffer, apply texture in fragment shader */
    158160        data->shader[2] = Shader::Create(
     161            "#version 120\n"
    159162            "void main()"
    160163            "{"
     
    163166            "}",
    164167
     168            "#version 120\n"
    165169            "uniform sampler2D tex;"
    166170            "void main()"
     
    168172            "    gl_FragColor = texture2D(tex, gl_TexCoord[0].xy * 0.25);"
    169173            "}");
     174
     175        /* Quad #8: vertex buffer, apply texture in fragment shader */
     176        data->shader[3] = Shader::Create(
     177            "#version 120\n"
     178            "varying vec4 color;"
     179            "void main()"
     180            "{"
     181            "    gl_TexCoord[0] = gl_MultiTexCoord0;"
     182            "    color = gl_Color;"
     183            "    gl_Position = gl_Vertex;"
     184            "}",
     185
     186            "#version 120\n"
     187            "varying vec4 color;"
     188            "uniform sampler2D tex;"
     189            "void main()"
     190            "{"
     191            "    vec4 tmp = texture2D(tex, gl_TexCoord[0].xy * 0.25);"
     192            "    gl_FragColor = vec4(abs(tmp.xyz - color.xyz), 1.0);"
     193            "}");
     194
    170195
    171196        data->initialised = 1;
     
    173198    else if (data->initialised && IsDestroying())
    174199    {
     200#if 0
    175201        glDeleteBuffers(3, data->buflist);
     202#endif
    176203        Shader::Destroy(data->shader[0]);
    177204        Shader::Destroy(data->shader[1]);
    178205        Shader::Destroy(data->shader[2]);
     206        Shader::Destroy(data->shader[3]);
    179207        glDeleteTextures(1, data->texlist);
    180208
     
    182210    }
    183211
     212#if 0
    184213    float const st = sinf(0.0005f * data->time);
    185214    float const ct = cosf(0.0005f * data->time);
     
    274303    glDisableVertexAttribArray(attr_tex);
    275304#endif
     305#endif
    276306
    277307    /* Reset GL states */
     
    285315
    286316    /* Prepare our quad coordinates */
    287     vec2i const layout(4, 3);
     317    vec2i const layout(3, 3);
    288318    data->step = vec2(2.0f, -2.0f) / (3 * layout + vec2i(1));
    289319    data->orig = vec2(-1.0f, 1.0f) + data->step;
     
    296326    float f3 = 0.5f + 0.5f * sinf(0.00072f * data->time + 4.0f);
    297327    float f4 = 0.5f + 0.5f * sinf(0.00091f * data->time + 8.0f);
     328
     329    GLfloat const colors[] = { f1, f2, f3, f4, f2, f1, f3, f1, f4,
     330                               f3, f1, f4, f4, f3, f2, f1, f2, f3 };
     331    GLfloat const texcoords[] = { f1, f3, f3, f2, f2, f4,
     332                                  f2, f4, f4, f1, f1, f3 };
    298333
    299334    /* Quad #1: simple glBegin program */
     
    416451
    417452    /* Quad #7: simple vertex buffer */
    418     GLfloat const v1[] = { data->aa.x, data->bb.y, 0.0f,
    419                            data->bb.x, data->bb.y, 0.0f,
    420                            data->bb.x, data->aa.y, 0.0f,
    421                            data->bb.x, data->aa.y, 0.0f,
    422                            data->aa.x, data->aa.y, 0.0f,
    423                            data->aa.x, data->bb.y, 0.0f };
    424     GLfloat const c1[] = { f1, f2, f3, f4, f2, f1, f3, f1, f4,
    425                            f3, f1, f4, f4, f3, f2, f1, f2, f3 };
     453    GLfloat const vertices1[] = { data->aa.x, data->bb.y, 0.0f,
     454                                  data->bb.x, data->bb.y, 0.0f,
     455                                  data->bb.x, data->aa.y, 0.0f,
     456                                  data->bb.x, data->aa.y, 0.0f,
     457                                  data->aa.x, data->aa.y, 0.0f,
     458                                  data->aa.x, data->bb.y, 0.0f };
    426459
    427460    glEnableClientState(GL_COLOR_ARRAY);
    428461    glEnableClientState(GL_VERTEX_ARRAY);
    429462
    430     glColorPointer(3, GL_FLOAT, 0, c1);
    431     glVertexPointer(3, GL_FLOAT, 0, v1);
     463    glColorPointer(3, GL_FLOAT, 0, colors);
     464    glVertexPointer(3, GL_FLOAT, 0, vertices1);
    432465    glDrawArrays(GL_TRIANGLES, 0, 6);
    433466
     
    437470    Advance();
    438471
    439     /* Quad #8: vertex buffer, apply texture in fragment shader */
    440     data->shader[2]->Bind();
    441     GLfloat const v2[] = { data->aa.x, data->bb.y, 0.0f,
    442                            data->bb.x, data->bb.y, 0.0f,
    443                            data->bb.x, data->aa.y, 0.0f,
    444                            data->bb.x, data->aa.y, 0.0f,
    445                            data->aa.x, data->aa.y, 0.0f,
    446                            data->aa.x, data->bb.y, 0.0f };
    447     GLfloat const t2[] = { f1, f3, f3, f2, f2, f4, f2, f4, f4, f1, f1, f3 };
    448 
     472    /* Quad #8: vertex buffer, apply texture and color in fragment shader */
     473    data->shader[3]->Bind();
     474    GLfloat const vertices2[] = { data->aa.x, data->bb.y, 0.0f,
     475                                  data->bb.x, data->bb.y, 0.0f,
     476                                  data->bb.x, data->aa.y, 0.0f,
     477                                  data->bb.x, data->aa.y, 0.0f,
     478                                  data->aa.x, data->aa.y, 0.0f,
     479                                  data->aa.x, data->bb.y, 0.0f };
     480
     481    glEnableClientState(GL_VERTEX_ARRAY);
     482    glEnableClientState(GL_COLOR_ARRAY);
    449483    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
    450     glEnableClientState(GL_VERTEX_ARRAY);
    451 
    452     glTexCoordPointer(2, GL_FLOAT, 0, t2);
    453     glVertexPointer(3, GL_FLOAT, 0, v2);
     484
     485    glVertexPointer(3, GL_FLOAT, 0, vertices2);
     486    glColorPointer(3, GL_FLOAT, 0, colors);
     487    glTexCoordPointer(2, GL_FLOAT, 0, texcoords);
    454488    glDrawArrays(GL_TRIANGLES, 0, 6);
    455489
    456490    glDisableClientState(GL_VERTEX_ARRAY);
     491    glDisableClientState(GL_COLOR_ARRAY);
    457492    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
    458493
    459494    Advance();
    460 
    461495}
    462496
Note: See TracChangeset for help on using the changeset viewer.