← Архив: Common Lisp

cl-opengl + png-read

Author: · 07.03.2011 19:28
· original author: ScforeveR
Доброго времени суток.  Обращаюсь к тем кто пользовался библиотекой cl-opengl.  При попытке создания двумерной текстуры LispWorks отваливается со следующей ошибкой:cannot be converted to foreign
type (:UNSIGNED-INTEGER-TYPE 32).
Ниже привожу код. Делал по туториалам с сайта nklein.com в какой части ДНК у меня ошибка? :)
(defun im-to-texture (texture)
  (let ((png (png-read:read-png-file texture))
     (png-width (png-read:width png))
       (png-height (png-read:height png))
         (png-data  (make-array (list (* png-width png-height 1))))
)

       (gl:bind-texture :texture-2d png)
                (gl:tex-image-2d :texture-2d
                         0
                         3
                         png-width
                         png-height
                         0
                         :RGB
                         :unsigned-byte
                         png-data
)
)
)
· original author: artem
Предположу, что где-то там конфликт при конвертации во fli.
nklein.com -- он на sbcl сидит, не факт что он свой код запускал на LW, возможно там допиливать что-то нужно. Под LW есть своя библиотека для opengl, идет вместе с LW (включая бесплатый).
· original author: ScforeveR
Хм... то есть скорее всего нужно смотреть где и что пилить в cl-opengl, да?  Просто LW  пользуюсь постольку поскольку начал уже в нём изучать Лисп более подробно, но в силу того, что необходимо ещё и создание .exe то постепенно перебираюсь на clisp и следовательно нужен более универсальный код.
· original author: artem
> то есть скорее всего нужно смотреть где и что пилить в cl-opengl, да?
Не факт. Нужно в дебагере посмотреть, в каком месте ошибка появляется там и смотреть начинать, почему типы привести не может. 
Как вариант, напишите nklein -- не думаю, что он откажет советом.
> но в силу того, что необходимо ещё и создание .exe
LW как раз очень хорошо создает exe файлы, я бы даже сказал лучше всех из текущих реализаций CLов. Но такая штука в LW стоит денег -- что есть, то есть.
clisp мне очень нравится, но не нравится его лицензия; gpl лицензии для динамических языков подходят очень плохо (по мне, вообще не подходят).
· original author: ScforeveR
Как показал дебаггер и насколько я его понял, то он ожидает совсем не тех данных которые ему приходят.  И пока пытаюсь разобраться с тем всё же что и как ему подать, потому как подавал даже развернутое представление данных через png-read::datastream он всё равно не захотел принять.
А пока жду ответа от nklein.
И чтоб не создавать новую тему задам два вопроса, во-первых: в том же примере nklein писал 
(let   ....
      (data-array (make-array (* ww hh cc))....
У меня при почти подобном объявлении LW ругается на Illegal array dimension. Правда я пытался в массив сохранить вывод из datastream и наверное всё же глупо это было,да?)
И второй вопрос:  А если я  напишу на С библиотеку которая открывает и конвертирует файлы в текстуры.  То есть делает то, что не работает у меня сейчас  и напишу соотв. биндинги  к Лиспу. Такой вариант сработает?