Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2009, 12:24   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GLscene используешь?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 27.02.2009, 12:46   #12
Ivin
Пользователь
 
Регистрация: 08.10.2008
Сообщений: 17
По умолчанию

Нет,
Uses ...,OpenGL,...;
и использую функции OpenGL.
Ivin вне форума Ответить с цитированием
Старый 27.02.2009, 20:24   #13
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Вот где ошибка:
Код:
glTexImage2D( GL_TEXTURE_2D, 0, 3, Size, Size, 0, GL_RGB, GL_UNSIGNED_BYTE, @A );
Это проявляется она потом.
Динамические массивы:
array of ... - указатель на массив,
array of array of - не указатель на двумерный массив, а указатель на массив указателей на массивы, соотвестсвенно, указатель @A указывает уже не на то, что нужно. Поэтому надо использовать A : array of array [0..2] GLubyte; при этом индексы в двумерном массиве считать самому.
Somebody вне форума Ответить с цитированием
Старый 27.02.2009, 21:35   #14
Ivin
Пользователь
 
Регистрация: 08.10.2008
Сообщений: 17
По умолчанию

Somebody
Вместо трехмерного массива использовал динамический одномерный массив, индекс пришлось вычислять самому, но сработало
Код:
   For i := 0 to Size-1 do
      For j := 0 to Size-1 do
        begin
        A [j*Size*3+i*3+0] := GetRValue(bitmap.Canvas.Pixels[j,i]);
        A [j*Size*3+i*3+1] := GetGValue(bitmap.Canvas.Pixels[j,i]);
        A [j*Size*3+i*3+2] := GetBValue(bitmap.Canvas.Pixels[j,i]);
        end;
Вот только ошибка осталась.
Т.е. если массив B так:
Код:
B : Array [0..0] of GLUint;
то работает, а если динамический:
Код:
B : Array of GLUint;
то выскакиевает та же ошибка, в той же строке строке
Код:
glBindTexture( GL_TEXTURE_2D, B[TexCol] );
Ivin вне форума Ответить с цитированием
Старый 27.02.2009, 23:22   #15
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

@A - это адрес указателя, надо, наверное, тогда передавать @A[0].
Somebody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамический массив Dimon Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2008 18:08
Динамический массив _ares_ Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2007 23:54
динамический массив Diller Помощь студентам 48 07.10.2007 16:43
Динамический массив. Mickle Помощь студентам 9 21.06.2007 20:31
Динамический массив Mickle Общие вопросы Delphi 8 19.06.2007 06:45