Показать сообщение отдельно
  #7  
Старый 23.09.2009, 23:33
DungeonLords DungeonLords вне форума
Активный
 
Регистрация: 21.07.2008
Сообщения: 257
Репутация: 14
По умолчанию

Цитата:
Сообщение от Nyctos Kasignete
Я так поняла, что человеку надо именно освободить память, отведенную под переменную — «экземпляр типа», если так можно выразиться.
В точку

Но что-то этот код странный:
Цитата:
Сообщение от Nyctos Kasignete
Или же так... =)
Код:
type
  TStaticArray = array[0..255] of Byte;
  PStaticArray = ^TStaticArray;
var
  StaticArray: PStaticArray;
begin
  New(StaticArray);
  StaticArray^[25] := 25;
  StaticArray^[255] := 255;
  ShowMessage(IntToStr(StaticArray^[25] + StaticArray^[30] + StaticArray^[255]));
  Dispose(StaticArray);
end;
Во избежания различных манипуляций приведу полный код!
Код:
var vertexBuffer:array[0..1] of GLInt;
Procedure VBOInit;
begin
  glGenBuffers( 2, @vertexBuffer);

  glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer[0]);
  glBufferData( GL_ARRAY_BUFFER, sizeof(GLFloat)*(high(Vertexes)+1), @Vertexes[0], GL_STATIC_DRAW );
  glVertexPointer( 2, GL_FLOAT, 0, nil);
  glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer[0]);

  glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer[1]);
  glBufferData( GL_ARRAY_BUFFER, sizeof(GLFloat)*(high(TexCoords)+1), @TexCoords[0], GL_STATIC_DRAW );
  glTexCoordPointer(2, GL_FLOAT, 0, nil);
  glBindBuffer( GL_ARRAY_BUFFER, vertexBuffer[1]);

{$Delete vertexBuffer}
end;
Каму очень любопытно, это не что иное, как инициализация буфера вершин и текстурных координат, см. VBO. Но вот в конце мы видим директиву "{$Delete vertexBuffer}", выдуманную разумеется. В этом месте мы по идее должны освободить оперативную память из-под массива vertexBuffer, потому что команда glBufferData уже загрузила его в видео память. Но как удалять такие массивы я не представляю, но ведь Delphi может подчищать их за собой после закрытия приложения (!!).
__________________
Делаем'c разные игры. Искать на glscene.ru
Ответить с цитированием