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

Ваш аккаунт

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

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

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

OpenGL, glDrawPixels

19K
20 июля 2006 года
snus
1 / / 19.07.2006
Здравствуйте. Функция glDrawPixels(width,height,format,type,@pixels) @pixels - поинтер на массив пикселей. Если этот массив постоянного размера, то всё работает отлично. Если он динамический - облом. Пример:
type
tsprite =array[0..49,0..49,0..3] of GLUbyte ;
var
Sprite : tsprite;
...
//заполняем массив пикселей
glDrawPixels(50, 50, GL_rgba, GL_UNSIGNED_BYTE, @Sprite); // всё OK
-----------------------
Type
tsprite =packed array of packed array of packed array [0..3] of GLUbyte ;
var
Sprite : tsprite;
...
setlength(Sprite,50,50);
//заполняем массив пикселей
glDrawPixels(50, 50, GL_rgba, GL_UNSIGNED_BYTE, @Sprite); // выдаёт на экран чушь, неизвестно из какой области памяти, иногда access violation.
-----------------------
Если так:
glDrawPixels(50, 50, GL_rgba, GL_UNSIGNED_BYTE, @Sprite[0]); // выдаёт тоже чушь, но уже из нужной области памяти, где картинка находится. access violation нету.

-----------------------
Если второй уровень массива постоянного размера, то работает нормально:
Type
tsprite =packed array of packed array[0..49] of packed array [0..3] of GLUbyte ;
var
Sprite : tsprite;
...
setlength(Sprite,50);
//заполняем массив пикселей
glDrawPixels(50, 50, GL_rgba, GL_UNSIGNED_BYTE, @Sprite[0]); //работает нормально! Но это всё же не динамический массив... точнее наполовину динамический 8)


Естественно пробовал "setlength(Sprite,50,50);" переписать ручками:
var a:integer;
setlength(Sprite,50);
for a:=0 to 49 do setlength(Sprite[a],50);
Тоже самое.


Как решить проблему? Благодарю.
247
21 июля 2006 года
wanja
1.2K / / 03.02.2003
Так еще бы! OpenGL - штука не Борландовская, динамические массивы кушать не умеет.
339
24 июля 2006 года
verybadbug
619 / / 12.09.2005
Цитата:
...@Sprite...


почемуто мне раньше казалось, что динамические массивы являются Pointer и передаются как Sprite^...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог