Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с динамическими массивами (Delphi).

7.5K
08 сентября 2004 года
andycount
5 / / 09.08.2004
Давно хотел разобраться с проблемой. Нижеприведённый код нормально работает, если массивы norm, texvertex, vertex,
indices являются статическими. Но всё портится, если я их делаю динамическими. Пробовал всё или почти всё. В чём может быть дело ?
Код:
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;

P.S. код на Delphi.
8.2K
08 сентября 2004 года
DigitalWolF
12 / / 28.08.2004
Я правда с DrawList'ами не работал, но насколько я понимаю, они запоминают только указатели на данные которые ты им даешь а не сами данные. Так что когда ты эти данные из памяти убиваешь, а затем пытаешься отрисовать этот DrawList, ГЛ лезет куда попало.
7.5K
09 сентября 2004 года
andycount
5 / / 09.08.2004
DigitalWolF
Я уже разобрался в чём дело: я задавал массив как двумерный, т.е. как array of array of glFloat; А нужно было двумерный представить как одномерный, т.е. array of glFloat, т.к. двумерный массив не является непрерывным в памяти.
Спасибо
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог