Changeset 8932:5e604108fc3c in orange


Ignore:
Timestamp:
09/09/11 10:22:15 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
c6163995b3a49554e20f0763cf0d4d1a78cd9385
Message:

Modified uploading and drawing code to support the change in the main shader

File:
1 edited

Legend:

Unmodified
Added
Removed
  • source/orangeqt/plot3d.cpp

    r8894 r8932  
    123123    const float scale = 0.001f; 
    124124 
    125     float* vbo_selected_data   = new float[num_examples * 144 * 13]; 
    126     float* vbo_unselected_data = new float[num_examples * 144 * 13]; 
    127     float* vbo_edges_data      = new float[num_examples * 144 * 13]; 
     125    float* vbo_selected_data   = new float[num_examples * 144 * 14]; 
     126    float* vbo_unselected_data = new float[num_examples * 144 * 14]; 
     127    float* vbo_edges_data      = new float[num_examples * 144 * 14]; 
    128128    float* dests = vbo_selected_data; 
    129129    float* destu = vbo_unselected_data; 
     
    170170        for (int i = 0; i < geometry[symbol].count(); i += 6) { 
    171171            if (selected_indices[index]) 
    172                 sib_selected += 3*13*4; 
     172                sib_selected += 3*14*4; 
    173173            else 
    174                 sib_unselected += 3*13*4; 
     174                sib_unselected += 3*14*4; 
    175175 
    176176            for (int j = 0; j < 3; ++j) 
    177177            { 
    178                 // position 
     178                // position + first part of the index 
    179179                *dest = x_pos; dest++;  
    180180                *dest = y_pos; dest++;  
    181181                *dest = z_pos; dest++;  
    182  
    183                 // offset 
     182                *dest = (float)(index & 0xFF) / 255.f; dest++; 
     183 
     184                // offset + second part of the index 
    184185                *dest = geometry[symbol][i+j].x()*size*scale; dest++; 
    185186                *dest = geometry[symbol][i+j].y()*size*scale; dest++; 
    186187                *dest = geometry[symbol][i+j].z()*size*scale; dest++; 
     188                *dest = (float)((index & 0xFF00) >> 8) / 255.f; dest++; 
    187189 
    188190                // color 
     
    195197                *dest = geometry[symbol][i+3+j].y(); dest++; 
    196198                *dest = geometry[symbol][i+3+j].z(); dest++; 
    197  
    198                 // index 
    199                 *dest = index; dest++; 
    200199            } 
    201200        } 
     
    206205 
    207206        for (int i = 0; i < geometry_edges[symbol].count(); i += 2) { 
    208             sib_edges += 2*13*4; 
     207            sib_edges += 2*14*4; 
    209208 
    210209            for (int j = 0; j < 2; ++j) 
     
    213212                *deste = y_pos; deste++;  
    214213                *deste = z_pos; deste++;  
     214                *deste = (float)(index & 0xFF) / 255.f; deste++; 
    215215 
    216216                *deste = geometry_edges[symbol][i+j].x()*size*scale; deste++; 
    217217                *deste = geometry_edges[symbol][i+j].y()*size*scale; deste++; 
    218218                *deste = geometry_edges[symbol][i+j].z()*size*scale; deste++; 
     219                *deste = (float)((index & 0xFF00) >> 8) / 255.f; deste++; 
    219220 
    220221                *deste = color.redF(); deste++; 
     
    226227                *deste = geometry_edges[symbol][i+j].y(); deste++; 
    227228                *deste = geometry_edges[symbol][i+j].z(); deste++; 
    228  
    229                 *deste = index; deste++; 
    230229            } 
    231230        } 
     
    253252    delete [] vbo_edges_data; 
    254253 
    255     num_selected_vertices = sib_selected / (13*4); 
    256     num_unselected_vertices = sib_unselected / (13*4); 
    257     num_edges_vertices = sib_edges / (13*4); 
     254    num_selected_vertices = sib_selected / (14*4); 
     255    num_unselected_vertices = sib_unselected / (14*4); 
     256    num_edges_vertices = sib_edges / (14*4); 
    258257 
    259258    vbos_generated = true; 
     
    266265 
    267266    glBindBuffer(GL_ARRAY_BUFFER, vbo_selected_id); 
    268     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(0)); 
    269     glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(3*4)); 
    270     glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(6*4)); 
    271     glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(9*4)); 
    272     glVertexAttribPointer(4, 1, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(12*4)); 
     267    int vertex_size = 14; 
     268    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(0)); 
     269    glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(4*4)); 
     270    glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(8*4)); 
     271    glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(11*4)); 
    273272    glEnableVertexAttribArray(0); 
    274273    glEnableVertexAttribArray(1); 
    275274    glEnableVertexAttribArray(2); 
    276275    glEnableVertexAttribArray(3); 
    277     glEnableVertexAttribArray(4); 
    278276 
    279277    glDrawArrays(GL_TRIANGLES, 0, num_selected_vertices); 
     
    283281    glDisableVertexAttribArray(2); 
    284282    glDisableVertexAttribArray(3); 
    285     glDisableVertexAttribArray(4); 
    286283 
    287284    glBindBuffer(GL_ARRAY_BUFFER, vbo_unselected_id); 
    288     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(0)); 
    289     glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(3*4)); 
    290     glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(6*4)); 
    291     glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(9*4)); 
    292     glVertexAttribPointer(4, 1, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(12*4)); 
     285    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(0)); 
     286    glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(4*4)); 
     287    glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(8*4)); 
     288    glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(11*4)); 
    293289    glEnableVertexAttribArray(0); 
    294290    glEnableVertexAttribArray(1); 
    295291    glEnableVertexAttribArray(2); 
    296292    glEnableVertexAttribArray(3); 
    297     glEnableVertexAttribArray(4); 
    298293 
    299294    glDrawArrays(GL_TRIANGLES, 0, num_unselected_vertices); 
     
    303298    glDisableVertexAttribArray(2); 
    304299    glDisableVertexAttribArray(3); 
    305     glDisableVertexAttribArray(4); 
    306300 
    307301    glBindBuffer(GL_ARRAY_BUFFER, 0); 
     
    317311    glDepthMask(GL_TRUE); 
    318312    glBindBuffer(GL_ARRAY_BUFFER, vbo_selected_id); 
    319     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(0)); 
    320     glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(3*4)); 
    321     glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(6*4)); 
    322     glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(9*4)); 
    323     glVertexAttribPointer(4, 1, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(12*4)); 
     313    int vertex_size = 14; 
     314    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(0)); 
     315    glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(4*4)); 
     316    glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(8*4)); 
     317    glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(11*4)); 
    324318    glEnableVertexAttribArray(0); 
    325319    glEnableVertexAttribArray(1); 
    326320    glEnableVertexAttribArray(2); 
    327321    glEnableVertexAttribArray(3); 
    328     glEnableVertexAttribArray(4); 
    329322 
    330323    glDrawArrays(GL_TRIANGLES, 0, num_selected_vertices); 
     
    334327    glDisableVertexAttribArray(2); 
    335328    glDisableVertexAttribArray(3); 
    336     glDisableVertexAttribArray(4); 
    337329 
    338330    // Draw transparent unselected examples (triangles and then edges). 
     
    341333    glDepthMask(GL_FALSE); 
    342334    glBindBuffer(GL_ARRAY_BUFFER, vbo_unselected_id); 
    343     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(0)); 
    344     glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(3*4)); 
    345     glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(6*4)); 
    346     glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(9*4)); 
    347     glVertexAttribPointer(4, 1, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(12*4)); 
     335    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(0)); 
     336    glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(4*4)); 
     337    glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(8*4)); 
     338    glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(11*4)); 
    348339    glEnableVertexAttribArray(0); 
    349340    glEnableVertexAttribArray(1); 
    350341    glEnableVertexAttribArray(2); 
    351342    glEnableVertexAttribArray(3); 
    352     glEnableVertexAttribArray(4); 
    353343 
    354344    glDrawArrays(GL_TRIANGLES, 0, num_unselected_vertices); 
     
    358348    glDisableVertexAttribArray(2); 
    359349    glDisableVertexAttribArray(3); 
    360     glDisableVertexAttribArray(4); 
    361350 
    362351    // Edges 
     
    365354 
    366355    glBindBuffer(GL_ARRAY_BUFFER, vbo_edges_id); 
    367     glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(0)); 
    368     glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(3*4)); 
    369     glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(6*4)); 
    370     glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(9*4)); 
    371     glVertexAttribPointer(4, 1, GL_FLOAT, GL_FALSE, 13*4, BUFFER_OFFSET(12*4)); 
     356    glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(0)); 
     357    glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(4*4)); 
     358    glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(8*4)); 
     359    glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, vertex_size*4, BUFFER_OFFSET(11*4)); 
    372360    glEnableVertexAttribArray(0); 
    373361    glEnableVertexAttribArray(1); 
    374362    glEnableVertexAttribArray(2); 
    375363    glEnableVertexAttribArray(3); 
    376     glEnableVertexAttribArray(4); 
    377364 
    378365    glDrawArrays(GL_LINES, 0, num_edges_vertices); 
     
    382369    glDisableVertexAttribArray(2); 
    383370    glDisableVertexAttribArray(3); 
    384     glDisableVertexAttribArray(4); 
    385371 
    386372    glBindBuffer(GL_ARRAY_BUFFER, 0); 
Note: See TracChangeset for help on using the changeset viewer.