glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glNormalPointer(GL_FLOAT, 0, addr(norm[0,0]));
glClientActiveTextureARB(GL_TEXTURE0_ARB);
glEnableClientState(GL_TextuRE_COORD_ARRAY);
glTexCoordPointer( 2, GL_FLOAT, 0, addr(texvertex[0,0]));
glVertexPointer ( 3, GL_FLOAT, 0, addr(vertex[0,0]));
glNewList (1, GL_Compile);
glDrawElements(GL_TRIANGLEs, n+1, GL_UNSIGNED_INT, addr(indices[0]));
glEndlist;
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TextuRE_COORD_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
norm := nil; // если массивы динамические
texvertex := nil;
vertex := nil;
indices := nil;
Проблема с динамическими массивами (Delphi).
indices являются статическими. Но всё портится, если я их делаю динамическими. Пробовал всё или почти всё. В чём может быть дело ?
Код:
P.S. код на Delphi.
Я правда с DrawList'ами не работал, но насколько я понимаю, они запоминают только указатели на данные которые ты им даешь а не сами данные. Так что когда ты эти данные из памяти убиваешь, а затем пытаешься отрисовать этот DrawList, ГЛ лезет куда попало.
Я уже разобрался в чём дело: я задавал массив как двумерный, т.е. как array of array of glFloat; А нужно было двумерный представить как одномерный, т.е. array of glFloat, т.к. двумерный массив не является непрерывным в памяти.
Спасибо