-
Всем привет. Подскажите пожалуйста, почему при использовании статического массива для передачи координат объекта всё нормально Пример:
var
VertexCoord:array [0..1] of GLSingle;
glBindBuffer(GL_ARRAY_BUFFER, 1);
glBufferData(GL_ARRAY_BUFFER, Sizeof (VertexCoord), @VertexCoord, GL_STATIC_DRAW);
но стоит перейти на динамический, VBO буфер не биндится пример:
var
VertexCoord:array of GLSingle;
glBindBuffer(GL_ARRAY_BUFFER, 1);
glBufferData(GL_ARRAY_BUFFER, Sizeof (VertexCoord[0])*Length(VertexCoord), @VertexCoord[0], GL_STATIC_DRAW);
-
Какая ошибка(glGetError)?
-
> Какая ошибка(glGetError)?
Вообще то пусто, что на ATI, что на nVidia. На nVidia просто предупреждение о компиляции шейдера, типа WARNING: 0:18: implicit cast from int to float, но ето ещё до бинда буфера и вне зависимости от типа массива.
-
> [2] Xan (21.01.09 13:15)
Меня терзают смутные сомнения... ощущение, что вы неправильно заполняете массив..
-
> неправильно заполняете массив
Какие есть предложения поповоду заполнения?
-
> [4] Xan (22.01.09 07:33)
код покажите.
-
Массив заполняю стандартно, ничего особенного:
SetLength(VertexCoord, 2);
VertexCoord[0]:=Random/2-Random/2;
VertexCoord[1]:=Random/2-Random/2;
-
не вижу в чем может быть проблема. два совета: 1) проверить аккуратно, все ли в порядке с памятью. Если где-то поломанный указатель он может так "неудачно" ломать память. Ломанные указатели могут привожить к самому неожиданноу поведению программы. 2) используйте glGenBuffers всеже. Константа 1 - не самое лучше решение и потенциальное место для глюков.
-
> проверить аккуратно, все ли в порядке с памятью
Вот в этом то и есть вся проблема, что стоит динамику заменить на статику, ваще всё бес проблем. Я даже в дебаге (Watches) просматривал и указатель, и типизировал массив, и даже через GetMem пробовал ваще не канает, а как только статичный всё проблем нет.
> используйте glGenBuffers
В данном случае привёл для примера, что биндю под первый буфер.
-
Мош есть какая особенность в хранении статичного массива в памяти, недавно статейку прочёл, что статический массив в три раза быстрее обрабатывается.
Ну или на кройняк мош чё с OpenGL, мошь какие дополнительные команды надо использовать???????????
|