![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Vetos |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 1 Всего: 4 |
Здравствуйте программисты!
Появилась проблема в заполнении такого массива
Вот заполнение
Вродебы на первый взгляд все правильно(ну незнаю это на мой взгляд Однако если явно описать массив
Просто картинка 256х256, это я точно знаю)) И опустить строки с SetLength то картинка отображается нормально. Немогу понять глюка.В приклепленном файле скриншоты. Если скажете что не по адресу, это в графику, то эт не так, с графикой проблем нет, динамический массив неправильно заполняется, помогите пожалуйсто!!! Присоединённый файл ( Кол-во скачиваний: 8 )
________.rar 101,37 Kb-------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
||||||
|
|||||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Vetos, вместо массива указателей сделай матрицу
Должно помочь. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 1 Всего: 4 |
Неа я вначале так и делал, потом хотел тему написать поискал по сайту нашел второй вариант, такая же история, незнаю уже что делать, можно былобы и статический массив сделать но кадрировать текстуры чот не охота))
-------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Vetos, может быть еще перепутал размеры строк и столбцов. Попробуй наоборот поменять размерности.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 1 Всего: 4 |
Так текстура квадратная я уже и ShowMessage проверял Width и Height. Уже в голову ничего не лезет
-------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 1 Всего: 4 |
Короче я после загрузки массива записывал его в файл, получил два файла с массивами, сравнил их, они идентичны, тоесть все норм, дело в самой OpenGL, чот ненравится ей динамический массив.
-------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 29 Всего: 89 |
Учли, что переменная динамического массива - это не указатель на первый элемент данных?
Как передаёте его в функцию? А как сохраняли массивы? Если в функцию сохранения вы два раза передали одинаковые даные с разных массивов, то (при условии, что в OGL так же передаёте) и разницы при их выводе быть не должно. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Alexeis |
|
||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Точно! Ведь опенгл ждет что к нему прийдет матрица единым блоком, а не массив указателей на строки. Нужно переписать строки в непрерывный блок в памяти. Примерно так
Нужная текстура будет в указателе pTexture . -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 1 Всего: 4 |
Alexeis, большое спасибо+
Теперь хочу немного разобраться как оно работает Получается трехмерный массив строится в памяти строкой за строку, я это понял из того что процедура Move копирует участок памяти из Texture в pTmp начиная с LSize. Так получается последовательность, что собсвенно и есть массив. Если это я правильно понял. Есть несколько вопросов: 1)Что такое PAnsiChar? Почемуто Ctrl+Левая мыша просто указывает мне на модуль System. Как оно описано? 2)Чем отличается динамический массив от обычного(я имею ввиду в памяти). 3)Что значит удалить pTexture после использования? Спасибо! Это сообщение отредактировал(а) Vetos - 19.9.2008, 20:13 -------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
| Alexeis |
|
||||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Ну почти, строка за строкой это двумерный массив, но каждый элемент строки тоже массивчик из 4 элементов, поскольку он не динамической размерности то элементы строки идут непрерывным блоком. Если бы 3я размерность была динамической то каждый элемент строки был бы тоже указателем.
Простой типизировнный указатель. Указатель на символ. В данном случае удобно интерпретировать байты как символы, потому что над указателями типа PAnsiChar можно производить арифметические операции (над другими нельзя, нужно дополнительное приведение). Раньше использовали PChar, но это уже не прокатывает в 2009й делфе так как там юникод, потому именно PAnsiChar.
Одномерный динамический массив почти такой же как и простой, элементы идут друг за другом. Статическая матрица, это строки идущие одна за другой, динамическая матрица это массив указателей, каждый из которых указывает на свою строку. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||||
|
|||||||
| Vetos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 312 Регистрация: 4.4.2005 Репутация: 1 Всего: 4 |
Спасибо
-------------------- Строить нужно так, чтоб никто не сломал! А ломать, чтоб никто не знал 8) :ne_huliganit |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |