Have problem with code below , it allows to draw about 30 trianagles but if declare more they fail.
How to make code correct to allow drawing more than ~30 triangles to be drawn?
void TriangleWindow::render()//rend
{
const qreal retinaScale = devicePixelRatio();
glViewport( 0 , 0 ,width() * retinaScale,height() * retinaScale);
glClear(GL_COLOR_BUFFER_BIT);
m_program->bind();
QMatrix4x4 matrix;
matrix.perspective(60, 4.0f/3.0f, 0.1f, 100.0f);
if(zoom > 594){zoom = 594;}
matrix.translate(move_LEFT_RIGHT/100-shift_for_stabilisation, -3+move_UP_DOWN/100, -10+(zoom/60));
m_program->setUniformValue(m_matrixUniform, matrix);
GLfloat kastID[] = {
//kast alu
kast_lopp , kasti_sisenemis_vaartus ,
kasti_koht , kasti_sisenemis_vaartus-kast_korgus ,
kast_lopp , kasti_sisenemis_vaartus-kast_korgus ,
kast_lopp , kasti_sisenemis_vaartus ,
kasti_koht , kasti_sisenemis_vaartus-kast_korgus ,
kasti_koht , kasti_sisenemis_vaartus ,
//kast üle
kast_lopp , kasti_sisenemis_vaartus+kast_korgus ,
kasti_koht , kasti_sisenemis_vaartus ,
kast_lopp , kasti_sisenemis_vaartus ,
kast_lopp , kasti_sisenemis_vaartus+kast_korgus ,
kasti_koht , kasti_sisenemis_vaartus ,
kasti_koht , kasti_sisenemis_vaartus+kast_korgus
};
GLfloat vertices[] = {
//lauis , kõrgus
//jooned kolmunukrkadest
SHIFTright + laius , TASE + korgus2 ,
eelmineAEG - laius , eelmineTASE ,
eelmineAEG + laius , eelmineTASE +korgus2 ,
SHIFTright + laius , TASE + korgus2 ,
eelmineAEG - laius , eelmineTASE ,
SHIFTright - laius , TASE ,
SHIFTright + laius , TASE ,
eelmineAEG - laius , eelmineTASE ,
eelmineAEG + laius , eelmineTASE ,
SHIFTright + laius , TASE ,
eelmineAEG - laius , eelmineTASE ,
SHIFTright - laius , TASE,
-50000.0f , sl+laius ,
-50000.0f , sl-laius ,
50000.0f , sl-laius ,
//rg
-50000.0f ,kastist_valjumise_vaartus+laius,
-50000.0f ,kastist_valjumise_vaartus-laius,
50000.0f ,kastist_valjumise_vaartus-laius,
};
GLfloat KASTcolors[] = {
//kast alumine
0.3f, 0.0f, 0.0f,
0.3f, 0.0f, 0.0f,
0.3f, 0.0f, 0.0f,
0.3f, 0.0f, 0.0f,
0.3f, 0.0f, 0.0f,
0.3f, 0.0f, 0.0f,
//kast ülemine
0.0f, 0.3f, 0.0f,
0.0f, 0.3f, 0.0f,
0.0f, 0.3f, 0.0f,
0.0f, 0.3f, 0.0f,
0.0f, 0.3f, 0.0f,
0.0f, 0.3f, 0.0f,
};
GLfloat colors[] = {
//valged jooned
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
//sl värvid
0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 1.0f,
0.0f, 0.0f, 1.0f,
//rg värvid
RED_for_line, GREEN_for_line, 0.0f,
RED_for_line, GREEN_for_line, 0.0f,
RED_for_line, GREEN_for_line, 0.0f,
};
glVertexAttribPointer(m_posAttr, 2, GL_FLOAT, GL_FALSE, 0, vertices);
glVertexAttribPointer(m_colAttr, 3, GL_FLOAT, GL_FALSE, 0, colors);
glVertexAttribPointer(m_posAttr, 2, GL_FLOAT, GL_FALSE, 0, kastID);
glVertexAttribPointer(m_colAttr, 3, GL_FLOAT, GL_FALSE, 0, KASTcolors);
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glDrawArrays(GL_TRIANGLES, 0, 30);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(0);
eelmineAEG = SHIFTright;
eelmineTASE = TASE;
}//for end
TriangleWindow::setTitle("Tulemus="+QString::number(tulemus)+" K="+QString::number(KASTkorgus_plus_minus)+" L="+
QString::number(KASTlaius_plus_minus)+" Sl="+QString::number(sl_multiplier)+" len="+
QString::number(lugemis_tagasi_max));
}//if end +++++++++++++++++++++++++++++++++++
m_program->release();
++m_frame;
}